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/stats.dm b/code/__DEFINES/stats.dm index 1810d01e1d..bc7cbfc4a4 100644 --- a/code/__DEFINES/stats.dm +++ b/code/__DEFINES/stats.dm @@ -8,7 +8,11 @@ #define FACEHUG_TIER_3 100 #define FACEHUG_TIER_4 1000 +/// Consecutive rounds this player has readied up and failed to get a slot. +#define PLAYER_STAT_UNASSIGNED_ROUND_STREAK "unassigned_round_streak" + // Stat Categories #define STAT_CATEGORY_MARINE "marine" #define STAT_CATEGORY_XENO "xeno" #define STAT_CATEGORY_YAUTJA "yautja" +#define STAT_CATEGORY_MISC "misc" 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/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index e2c89df90e..4766b3dfe6 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,18 +1,19 @@ // tgstation-server DMAPI +// The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119. -#define TGS_DMAPI_VERSION "7.1.2" +#define TGS_DMAPI_VERSION "7.2.1" // All functions and datums outside this document are subject to change with any version and should not be relied on. // CONFIGURATION -/// Create this define if you want to do TGS configuration outside of this file. +/// Consumers SHOULD create this define if you want to do TGS configuration outside of this file. #ifndef TGS_EXTERNAL_CONFIGURATION -// Comment this out once you've filled in the below. +// Consumers MUST comment this out once you've filled in the below and are not using [TGS_EXTERNAL_CONFIGURATION]. #error TGS API unconfigured -// Uncomment this if you wish to allow the game to interact with TGS 3.. +// Consumers MUST uncomment this if you wish to allow the game to interact with TGS version 3. // This will raise the minimum required security level of your game to TGS_SECURITY_TRUSTED due to it utilizing call()(). //#define TGS_V3_API @@ -52,7 +53,7 @@ #ifndef TGS_FILE2TEXT_NATIVE #ifdef file2text -#error Your codebase is re-defining the BYOND proc file2text. The DMAPI requires the native version to read the result of world.Export(). You can fix this by adding "#define TGS_FILE2TEXT_NATIVE file2text" before your override of file2text to allow the DMAPI to use the native version. This will only be used for world.Export(), not regular file accesses +#error Your codebase is re-defining the BYOND proc file2text. The DMAPI requires the native version to read the result of world.Export(). You SHOULD fix this by adding "#define TGS_FILE2TEXT_NATIVE file2text" before your override of file2text to allow the DMAPI to use the native version. This will only be used for world.Export(), not regular file accesses #endif #define TGS_FILE2TEXT_NATIVE file2text #endif @@ -152,16 +153,17 @@ //REQUIRED HOOKS /** - * Call this somewhere in [/world/proc/New] that is always run. This function may sleep! + * Consumers MUST call this somewhere in [/world/proc/New] that is always run. This function may sleep! * * * event_handler - Optional user defined [/datum/tgs_event_handler]. * * minimum_required_security_level: The minimum required security level to run the game in which the DMAPI is integrated. Can be one of [TGS_SECURITY_ULTRASAFE], [TGS_SECURITY_SAFE], or [TGS_SECURITY_TRUSTED]. + * * http_handler - Optional user defined [/datum/tgs_http_handler]. */ -/world/proc/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE) +/world/proc/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE, datum/tgs_http_handler/http_handler) return /** - * Call this when your initializations are complete and your game is ready to play before any player interactions happen. + * Consumers MUST call this when world initializations are complete and the game is ready to play before any player interactions happen. * * This may use [/world/var/sleep_offline] to make this happen so ensure no changes are made to it while this call is running. * Afterwards, consider explicitly setting it to what you want to avoid this BYOND bug: http://www.byond.com/forum/post/2575184 @@ -170,12 +172,10 @@ /world/proc/TgsInitializationComplete() return -/// Put this at the start of [/world/proc/Topic]. +/// Consumers MUST run this macro at the start of [/world/proc/Topic]. #define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return -/** - * Call this as late as possible in [world/proc/Reboot] (BEFORE ..()). - */ +/// Consumers MUST call this as late as possible in [world/proc/Reboot] (BEFORE ..()). /world/proc/TgsReboot() return @@ -269,7 +269,7 @@ /// The [/datum/tgs_chat_channel] the user was from. var/datum/tgs_chat_channel/channel -/// User definable handler for TGS events. +/// User definable handler for TGS events This abstract version SHOULD be overridden to be used. /datum/tgs_event_handler /// If the handler receieves [TGS_EVENT_HEALTH_CHECK] events. var/receive_health_checks = FALSE @@ -283,7 +283,41 @@ set waitfor = FALSE return -/// User definable chat command. +/// User definable handler for HTTP calls. This abstract version MUST be overridden to be used. +/datum/tgs_http_handler + +/** + * User definable callback for executing HTTP GET requests. + * MUST perform BYOND sleeps while the request is in flight. + * MUST return a [/datum/tgs_http_result]. + * SHOULD log its own errors + * + * url - The full URL to execute the GET request for including query parameters. + */ +/datum/tgs_http_handler/proc/PerformGet(url) + CRASH("[type]/PerformGet not implemented!") + +/// Result of a [/datum/tgs_http_handler] call. MUST NOT be overridden. +/datum/tgs_http_result + /// HTTP response as text + var/response_text + /// Boolean request success flag. Set for any 2XX response code. + var/success + +/** + * Create a [/datum/tgs_http_result]. + * + * * response_text - HTTP response as text. Must be provided in New(). + * * success - Boolean request success flag. Set for any 2XX response code. Must be provided in New(). + */ +/datum/tgs_http_result/New(response_text, success) + if(response_text && !istext(response_text)) + CRASH("response_text was not text!") + + src.response_text = response_text + src.success = success + +/// User definable chat command. This abstract version MUST be overridden to be used. /datum/tgs_chat_command /// The string to trigger this command on a chat bot. e.g `@bot name ...` or `!tgs name ...`. var/name = "" @@ -296,21 +330,27 @@ /** * Process command activation. Should return a [/datum/tgs_message_content] to respond to the issuer with. + * MUST be implemented * - * sender - The [/datum/tgs_chat_user] who issued the command. - * params - The trimmed string following the command `/datum/tgs_chat_command/var/name]. + * * sender - The [/datum/tgs_chat_user] who issued the command. + * * params - The trimmed string following the command `/datum/tgs_chat_command/var/name]. */ /datum/tgs_chat_command/proc/Run(datum/tgs_chat_user/sender, params) CRASH("[type] has no implementation for Run()") -/// User definable chat message. +/// User definable chat message. MUST NOT be overridden. /datum/tgs_message_content - /// The tring content of the message. Must be provided in New(). + /// The string content of the message. Must be provided in New(). var/text /// The [/datum/tgs_chat_embed] to embed in the message. Not supported on all chat providers. var/datum/tgs_chat_embed/structure/embed +/** + * Create a [/datum/tgs_message_content]. + * + * * text - The string content of the message. + */ /datum/tgs_message_content/New(text) ..() if(!istext(text)) @@ -319,7 +359,7 @@ src.text = text -/// User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/channel#embed-object-embed-structure for details. +/// User definable chat embed. Currently mirrors Discord chat embeds. See https://discord.com/developers/docs/resources/message#embed-object for details. /datum/tgs_chat_embed/structure var/title var/description @@ -331,13 +371,13 @@ /// Colour must be #AARRGGBB or #RRGGBB hex string. var/colour - /// See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details. + /// See https://discord.com/developers/docs/resources/message#embed-object-embed-image-structure for details. var/datum/tgs_chat_embed/media/image - /// See https://discord.com/developers/docs/resources/channel#embed-object-embed-thumbnail-structure for details. + /// See https://discord.com/developers/docs/resources/message#embed-object-embed-thumbnail-structure for details. var/datum/tgs_chat_embed/media/thumbnail - /// See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details. + /// See https://discord.com/developers/docs/resources/message#embed-object-embed-video-structure for details. var/datum/tgs_chat_embed/media/video var/datum/tgs_chat_embed/footer/footer @@ -346,7 +386,7 @@ var/list/datum/tgs_chat_embed/field/fields -/// Common datum for similar discord embed medias. +/// Common datum for similar Discord embed medias. /datum/tgs_chat_embed/media /// Must be set in New(). var/url @@ -354,6 +394,7 @@ var/height var/proxy_url +/// Create a [/datum/tgs_chat_embed]. /datum/tgs_chat_embed/media/New(url) ..() if(!istext(url)) @@ -361,13 +402,14 @@ src.url = url -/// See https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure for details. +/// See https://discord.com/developers/docs/resources/message#embed-object-embed-footer-structure for details. /datum/tgs_chat_embed/footer /// Must be set in New(). var/text var/icon_url var/proxy_icon_url +/// Create a [/datum/tgs_chat_embed/footer]. /datum/tgs_chat_embed/footer/New(text) ..() if(!istext(text)) @@ -375,16 +417,17 @@ src.text = text -/// See https://discord.com/developers/docs/resources/channel#embed-object-embed-provider-structure for details. +/// See https://discord.com/developers/docs/resources/message#embed-object-embed-provider-structure for details. /datum/tgs_chat_embed/provider var/name var/url -/// See https://discord.com/developers/docs/resources/channel#embed-object-embed-author-structure for details. Must have name set in New(). +/// See https://discord.com/developers/docs/resources/message#embed-object-embed-author-structure for details. Must have name set in New(). /datum/tgs_chat_embed/provider/author var/icon_url var/proxy_icon_url +/// Create a [/datum/tgs_chat_embed/footer]. /datum/tgs_chat_embed/provider/author/New(name) ..() if(!istext(name)) @@ -392,12 +435,15 @@ src.name = name -/// See https://discord.com/developers/docs/resources/channel#embed-object-embed-field-structure for details. Must have name and value set in New(). +/// See https://discord.com/developers/docs/resources/message#embed-object-embed-field-structure for details. /datum/tgs_chat_embed/field + /// Must be set in New(). var/name + /// Must be set in New(). var/value var/is_inline +/// Create a [/datum/tgs_chat_embed/field]. /datum/tgs_chat_embed/field/New(name, value) ..() if(!istext(name)) diff --git a/code/__DEFINES/xeno_ai.dm b/code/__DEFINES/xeno_ai.dm index 9095f56ad9..d7cbe1bf22 100644 --- a/code/__DEFINES/xeno_ai.dm +++ b/code/__DEFINES/xeno_ai.dm @@ -13,6 +13,7 @@ #define FIRE_PENALTY 25 #define SENTRY_PENALTY 25 #define VEHICLE_PENALTY 25 +#define LOCKED_DOOR_PENALTY 25 #define WINDOW_FRAME_PENALTY 25 #define BARRICADE_PENALTY 50 #define WALL_PENALTY 100 diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index fe15e6d84c..ff63e33beb 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -143,6 +143,43 @@ return null +/** + * Shuffles a provided list based on the weight of each element. + * + * Higher weight elements have a higher probability of being picked and tend to appear earlier in the list. + * Unweighted elements are never picked and are discarded. + * + * Arguments: + * * list_to_pick - assoc list in the form of: element = weight + * + * Returns list of shuffled weighted elements + */ +/proc/shuffle_weight(list/list_to_pick) + list_to_pick = list_to_pick.Copy() //not inplace + + var/total_weight = 0 + for(var/item in list_to_pick) + if(list_to_pick[item]) + total_weight += list_to_pick[item] + else + list_to_pick -= item //discard unweighted + + var/list_to_return = list() + + while(length(list_to_pick)) + var/target_weight = rand(1, total_weight) + for(var/item in list_to_pick) + var/item_weight = list_to_pick[item] + target_weight -= item_weight + + if(target_weight <= 0) + list_to_return += item + list_to_pick -= item + total_weight -= item_weight + break + + return list_to_return + /** * Removes any null entries from the list * Returns TRUE if the list had nulls, FALSE otherwise diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index eedfcd6f92..d3f533c687 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -414,6 +414,7 @@ DEFINE_BITFIELD(flags_round_type, list( "MODE_RANDOM_HIVE" = MODE_RANDOM_HIVE, "MODE_THUNDERSTORM" = MODE_THUNDERSTORM, "MODE_FACTION_CLASH" = MODE_FACTION_CLASH, + "MODE_NO_XENO_EVOLVE" = MODE_NO_XENO_EVOLVE, )) DEFINE_BITFIELD(toggleable_flags, list( @@ -426,8 +427,10 @@ DEFINE_BITFIELD(toggleable_flags, list( "MODE_NO_COMBAT_CAS" = MODE_NO_COMBAT_CAS, "MODE_LZ_PROTECTION" = MODE_LZ_PROTECTION, "MODE_SHIPSIDE_SD" = MODE_SHIPSIDE_SD, + "MODE_HARDCORE_PERMA" = MODE_HARDCORE_PERMA, "MODE_DISPOSABLE_MOBS" = MODE_DISPOSABLE_MOBS, "MODE_BYPASS_JOE" = MODE_BYPASS_JOE, + "MODE_NO_JOIN_AS_XENO" = MODE_NO_JOIN_AS_XENO, )) DEFINE_BITFIELD(state, list( 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/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index d3cb19c40e..886799be34 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -119,6 +119,7 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/request_start() if(current_state == GAME_STATE_PREGAME) time_left = 0 + delay_start = FALSE // Killswitch if hanging or interrupted if(SSnightmare.stat != NIGHTMARE_STATUS_DONE) diff --git a/code/controllers/subsystem/xeno_ai.dm b/code/controllers/subsystem/xeno_ai.dm index 9cd608f211..6f22d17e42 100644 --- a/code/controllers/subsystem/xeno_ai.dm +++ b/code/controllers/subsystem/xeno_ai.dm @@ -11,6 +11,43 @@ SUBSYSTEM_DEF(xeno_ai) var/ai_kill = FALSE + //currently the only caste that has an actual targeting difference is facehugger + /// Assoc list of valid targets by hive & caste, in the form of: hive = (/caste = targets) + var/list/target_cache = list() + +/datum/controller/subsystem/xeno_ai/proc/get_valid_targets(mob/living/carbon/xenomorph/xeno) + var/datum/hive_status/hive = xeno.hive + LAZYINITLIST(target_cache[hive]) + + var/caste = xeno.type + if(target_cache[hive][caste]) + return target_cache[hive][caste] + + var/list/valid_targets = list() + target_cache[hive][caste] = valid_targets + + for(var/mob/living/carbon/potential_target in GLOB.alive_mob_list) + if(!potential_target.ai_can_target(xeno)) + continue + + valid_targets += potential_target + + for(var/obj/vehicle/multitile/potential_vehicle_target as anything in GLOB.all_multi_vehicles) + if(potential_vehicle_target.health <= 0) + continue + + if(hive.faction_is_ally(potential_vehicle_target.vehicle_faction)) + continue + + if(!length(valid_targets & potential_vehicle_target.interior.get_passengers())) + continue + + valid_targets += potential_vehicle_target + + valid_targets += GLOB.all_active_defenses + + return valid_targets + /datum/controller/subsystem/xeno_ai/stat_entry(msg) msg = "P:[length(ai_mobs)]" return ..() @@ -26,6 +63,10 @@ SUBSYSTEM_DEF(xeno_ai) message_admins("[key_name_admin(usr)] [SSxeno_ai.ai_kill? "killed" : "revived"] all xeno AI.") /datum/controller/subsystem/xeno_ai/fire(resumed = FALSE) + for(var/datum/hive_status/hive as anything in target_cache) + for(var/caste as anything in target_cache[hive]) + target_cache[hive][caste] = null + if(ai_kill) return diff --git a/code/datums/ammo/bullet/pistol.dm b/code/datums/ammo/bullet/pistol.dm index 3ce778bb1f..d4bdbc3ae4 100644 --- a/code/datums/ammo/bullet/pistol.dm +++ b/code/datums/ammo/bullet/pistol.dm @@ -100,7 +100,7 @@ headshot_state = HEADSHOT_OVERLAY_MEDIUM accuracy = HIT_ACCURACY_TIER_3 accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 - damage = 55 + damage = 45 penetration = ARMOR_PENETRATION_TIER_3 shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 diff --git a/code/datums/ammo/bullet/shotgun.dm b/code/datums/ammo/bullet/shotgun.dm index cf13fb9b01..b2bbf607ce 100644 --- a/code/datums/ammo/bullet/shotgun.dm +++ b/code/datums/ammo/bullet/shotgun.dm @@ -11,28 +11,30 @@ name = "shotgun slug" handful_state = "slug_shell" - accurate_range = 6 - max_range = 8 - damage = 70 - penetration = ARMOR_PENETRATION_TIER_4 + accurate_range = 7 + max_range = 14 + damage = 90 + penetration = ARMOR_PENETRATION_TIER_6 + damage_var_low = PROJECTILE_VARIANCE_TIER_10 + damage_var_high = PROJECTILE_VARIANCE_TIER_1 damage_armor_punch = 2 handful_state = "slug_shell" /datum/ammo/bullet/shotgun/slug/on_hit_mob(mob/M,obj/projectile/P) - knockback(M, P, 6) + knockback(M, P, 8) /datum/ammo/bullet/shotgun/slug/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) if(iscarbonsizexeno(living_mob)) var/mob/living/carbon/xenomorph/target = living_mob to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) - target.KnockDown(0.5) // If you ask me the KD should be left out, but players like their visual cues - target.Stun(0.5) - target.apply_effect(1, SUPERSLOW) - target.apply_effect(3, SLOW) + target.KnockDown(3.5) + target.Stun(3.5) + target.Slow(5) else if(!isyautja(living_mob)) //Not predators. - living_mob.apply_effect(1, SUPERSLOW) - living_mob.apply_effect(2, SLOW) + living_mob.KnockDown(2) + living_mob.Stun(2) + living_mob.Superslow(5) to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) @@ -42,11 +44,9 @@ handful_state = "beanbag_slug" icon_state = "beanbag" flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST - sound_override = 'sound/weapons/gun_shotgun_riot.ogg' - max_range = 12 shrapnel_chance = 0 - damage = 0 + damage = 20 stamina_damage = 45 accuracy = HIT_ACCURACY_TIER_3 shell_speed = AMMO_SPEED_TIER_3 @@ -127,19 +127,36 @@ accuracy_var_low = PROJECTILE_VARIANCE_TIER_5 accuracy_var_high = PROJECTILE_VARIANCE_TIER_5 - accurate_range = 4 - max_range = 4 - damage = 65 - damage_var_low = PROJECTILE_VARIANCE_TIER_8 - damage_var_high = PROJECTILE_VARIANCE_TIER_8 + accurate_range = 7 + max_range = 9 + damage = 50 + damage_var_low = PROJECTILE_VARIANCE_TIER_10 + damage_var_high = PROJECTILE_VARIANCE_TIER_1 penetration = ARMOR_PENETRATION_TIER_1 - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_7 shell_speed = AMMO_SPEED_TIER_2 damage_armor_punch = 0 pen_armor_punch = 0 handful_state = "buckshot_shell" multiple_handful_name = TRUE +/datum/ammo/bullet/shotgun/buckshot/on_hit_mob(mob/M,obj/projectile/P) + knockback(M, P, 4) +/datum/ammo/bullet/shotgun/buckshot/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) + target.KnockDown(2.5) + target.Stun(2.5) + target.Slow(4) + else + if(!isyautja(living_mob)) //Not predators. + living_mob.KnockDown(3) + living_mob.Stun(3) + living_mob.Slow(5) + to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + /datum/ammo/bullet/shotgun/buckshot/incendiary name = "incendiary buckshot shell" handful_state = "incen_buckshot" @@ -178,8 +195,8 @@ accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 accurate_range = 4 - max_range = 4 - damage = 65 + max_range = 6 + damage = 50 damage_var_low = PROJECTILE_VARIANCE_TIER_8 damage_var_high = PROJECTILE_VARIANCE_TIER_8 penetration = ARMOR_PENETRATION_TIER_1 @@ -191,6 +208,23 @@ /datum/ammo/bullet/shotgun/spread/masterkey damage = 20 +/datum/ammo/bullet/shotgun/spread/on_hit_mob(mob/M,obj/projectile/P) + knockback(M, P, 4) +/datum/ammo/bullet/shotgun/spread/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) + target.KnockDown(2.5) + target.Stun(2.5) + target.Slow(4) + else + if(!isyautja(living_mob)) //Not predators. + living_mob.KnockDown(3) + living_mob.Stun(3) + living_mob.Slow(5) + to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + /datum/ammo/bullet/shotgun/spread/special name = "additional buckshot, USCM special type" @@ -209,24 +243,53 @@ handful_state = "heavy_buckshot" multiple_handful_name = TRUE bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/spread - bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 - accurate_range = 3 - max_range = 3 + bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_8 + accurate_range = 8 + max_range = 10 damage = 75 - penetration = 0 + penetration = ARMOR_PENETRATION_TIER_2 shell_speed = AMMO_SPEED_TIER_2 damage_armor_punch = 0 pen_armor_punch = 0 /datum/ammo/bullet/shotgun/heavy/buckshot/on_hit_mob(mob/M,obj/projectile/P) - knockback(M,P) + knockback(M,P,5) +/datum/ammo/bullet/shotgun/heavy/buckshot/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) + target.KnockDown(5) + target.Stun(5) + target.Slow(8) + else + if(!isyautja(living_mob)) //Not predators. + living_mob.KnockDown(2) + living_mob.Stun(2) + living_mob.Slow(6) + to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) /datum/ammo/bullet/shotgun/heavy/buckshot/spread name = "additional heavy buckshot" - max_range = 4 + max_range = 7 scatter = SCATTER_AMOUNT_TIER_1 bonus_projectiles_amount = 0 +/datum/ammo/bullet/shotgun/heavy/buckshot/spread/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) + target.KnockDown(5) + target.Stun(5) + target.Slow(8) + else + if(!isyautja(living_mob)) //Not predators. + living_mob.KnockDown(2) + living_mob.Stun(2) + living_mob.Slow(6) + to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + /datum/ammo/bullet/shotgun/heavy/buckshot/special bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/spread/special bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_8 @@ -251,8 +314,8 @@ multiple_handful_name = TRUE damage_type = BURN damage = 60 - accurate_range = 3 - max_range = 4 + accurate_range = 4 + max_range = 6 bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread /datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/set_bullet_traits() @@ -264,9 +327,7 @@ /datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread name = "additional dragon's breath" bonus_projectiles_amount = 0 - accurate_range = 4 - max_range = 5 //make use of the ablaze property - shell_speed = AMMO_SPEED_TIER_4 // so they hit before the main shell stuns + shell_speed = AMMO_SPEED_TIER_4 /datum/ammo/bullet/shotgun/heavy/slug @@ -274,26 +335,26 @@ handful_state = "heavy_slug" accurate_range = 7 - max_range = 8 - damage = 90 //ouch. - penetration = ARMOR_PENETRATION_TIER_6 + max_range = 17 + damage = 120 //ouch. + penetration = ARMOR_PENETRATION_TIER_9 damage_armor_punch = 2 /datum/ammo/bullet/shotgun/heavy/slug/on_hit_mob(mob/M,obj/projectile/P) - knockback(M, P, 7) + knockback(M, P, 8) /datum/ammo/bullet/shotgun/heavy/slug/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile) if(iscarbonsizexeno(living_mob)) var/mob/living/carbon/xenomorph/target = living_mob to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!")) - target.KnockDown(0.5) // If you ask me the KD should be left out, but players like their visual cues - target.Stun(0.5) - target.apply_effect(2, SUPERSLOW) - target.apply_effect(5, SLOW) + target.KnockDown(7) + target.Stun(7) + target.Slow(10) else if(!isyautja(living_mob)) //Not predators. - living_mob.apply_effect(1, SUPERSLOW) - living_mob.apply_effect(2, SLOW) + living_mob.KnockDown(8) + living_mob.Stun(8) + living_mob.Superslow(15) to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!")) living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) @@ -303,14 +364,13 @@ headshot_state = HEADSHOT_OVERLAY_MEDIUM handful_state = "heavy_beanbag" flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST - sound_override = 'sound/weapons/gun_shotgun_riot.ogg' max_range = 7 shrapnel_chance = 0 - damage = 0 + damage = 25 stamina_damage = 100 - accuracy = HIT_ACCURACY_TIER_2 - shell_speed = AMMO_SPEED_TIER_2 + accuracy = HIT_ACCURACY_TIER_6 + shell_speed = 3 /datum/ammo/bullet/shotgun/heavy/beanbag/on_hit_mob(mob/M, obj/projectile/P) if(!M || M == P.firer) diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index 5f888efb1d..d8d751ca40 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -128,7 +128,7 @@ /datum/ammo/bullet/sniper/anti_materiel/vulture damage = 400 // Fully intended to vaporize anything smaller than a mini cooper - accurate_range_min = 10 + accurate_range_min = 0 handful_state = "vulture_bullet" sound_hit = 'sound/bullets/bullet_vulture_impact.ogg' flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER|AMMO_ANTIVEHICLE diff --git a/code/datums/components/xeno/ai_behavior_overrides/capture_override_behavior.dm b/code/datums/components/xeno/ai_behavior_overrides/capture_override_behavior.dm index 96eaa7d8fb..1f84842e54 100644 --- a/code/datums/components/xeno/ai_behavior_overrides/capture_override_behavior.dm +++ b/code/datums/components/xeno/ai_behavior_overrides/capture_override_behavior.dm @@ -22,7 +22,7 @@ if(isfacehugger(checked_xeno)) return FALSE - var/mob/parent_mob = parent + var/mob/living/parent_mob = parent var/captee_stat = parent_mob.stat var/mob/pulledby = parent_mob.pulledby @@ -45,7 +45,7 @@ if(distance > 10) return FALSE - if(captee_stat == CONSCIOUS) + if(captee_stat == CONSCIOUS && !(locate(/datum/effects/crit) in parent_mob.effects_list)) return FALSE if(isxeno(pulledby) && pulledby != checked_xeno) diff --git a/code/datums/effects/mob_crit/human_crit.dm b/code/datums/effects/mob_crit/human_crit.dm index ff4d0eeda0..8b25b2bc2a 100644 --- a/code/datums/effects/mob_crit/human_crit.dm +++ b/code/datums/effects/mob_crit/human_crit.dm @@ -8,7 +8,8 @@ qdel(src) return FALSE - affected_mob.apply_effect(3, PARALYZE) + affected_mob.KnockDown(3) + affected_mob.Stun(3) if(!affected_mob.reagents || !affected_mob.reagents.has_reagent("inaprovaline")) affected_mob.apply_damage(1, OXY) diff --git a/code/datums/effects/pain/human_pain.dm b/code/datums/effects/pain/human_pain.dm index 9c8070596b..bddd793077 100644 --- a/code/datums/effects/pain/human_pain.dm +++ b/code/datums/effects/pain/human_pain.dm @@ -58,7 +58,8 @@ var/mob/living/carbon/affected_mob = affected_atom if(do_once) - affected_mob.apply_effect(3, PARALYZE) + affected_mob.KnockDown(3) + affected_mob.Stun(3) do_once = FALSE affected_mob.EyeBlur(2) @@ -83,7 +84,8 @@ affected_mob.EyeBlur(2) if(affected_mob.pain && affected_mob.pain.feels_pain) affected_mob.TalkStutter(2) - affected_mob.apply_effect(2, PARALYZE) + affected_mob.KnockDown(2) + affected_mob.Stun(2) if(!affected_mob.reagents || !affected_mob.reagents.has_reagent("inaprovaline")) affected_mob.apply_damage(0.5, OXY) 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/datums/factions/clf.dm b/code/datums/factions/clf.dm index 5456084b1a..8cd3756c41 100644 --- a/code/datums/factions/clf.dm +++ b/code/datums/factions/clf.dm @@ -58,19 +58,19 @@ list("MP5 Magazine (9mm)", 5, /obj/item/ammo_magazine/smg/mp5, null, VENDOR_ITEM_REGULAR), list("SIDEARMS", 0, null, null, null), - list("88 Mod 4 Combat Pistol", 15, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 15, /obj/item/weapon/gun/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("Beretta 92FS Pistol", 15, /obj/item/weapon/gun/pistol/b92fs, null, VENDOR_ITEM_REGULAR), - list("CMB Spearhead Autorevolver", 15, /obj/item/weapon/gun/revolver/cmb, null, VENDOR_ITEM_REGULAR), + list("CMB Spearhead Autorevolver", 15, /obj/item/weapon/gun/revolver/spearhead, null, VENDOR_ITEM_REGULAR), list("Holdout Pistol", 10, /obj/item/weapon/gun/pistol/holdout, null, VENDOR_ITEM_REGULAR), list("KT-42 Automag", 15, /obj/item/weapon/gun/pistol/kt42, null, VENDOR_ITEM_REGULAR), list("S&W .357 Revolver", 15, /obj/item/weapon/gun/revolver/small, null, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", 0, null, null, null), - list("88M4 Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/mod88/normalpoint, null, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("Beretta 92FS Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/b92fs, null, VENDOR_ITEM_REGULAR), list("KT-42 Magazine (.44)", 5, /obj/item/ammo_magazine/pistol/kt42, null, VENDOR_ITEM_REGULAR), - list("Spearhead Speed Loader (.357)", 10, /obj/item/ammo_magazine/revolver/cmb/normalpoint, VENDOR_ITEM_REGULAR), - list("Hollowpoint Spearhead Speed Loader (.357)", 5, /obj/item/ammo_magazine/revolver/cmb, VENDOR_ITEM_REGULAR), + list("Spearhead Speed Loader (.357)", 10, /obj/item/ammo_magazine/revolver/spearhead, VENDOR_ITEM_REGULAR), + list("Hollowpoint Spearhead Speed Loader (.357)", 5, /obj/item/ammo_magazine/revolver/spearhead, VENDOR_ITEM_REGULAR), list("S&W Speed Loader (.357)", 5, /obj/item/ammo_magazine/revolver/small, null, VENDOR_ITEM_REGULAR), list("Tiny Pistol Magazine (.22)", 5, /obj/item/ammo_magazine/pistol/holdout, null, VENDOR_ITEM_REGULAR), @@ -126,19 +126,19 @@ list("MP5 Magazine (9mm)", 60, /obj/item/ammo_magazine/smg/mp5, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", 20, /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 20, /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("Beretta 92FS Pistol", 20, /obj/item/weapon/gun/pistol/b92fs, VENDOR_ITEM_REGULAR), - list("CMB Spearhead Autorevolver", 20, /obj/item/weapon/gun/revolver/cmb, VENDOR_ITEM_REGULAR), + list("CMB Spearhead Autorevolver", 20, /obj/item/weapon/gun/revolver/spearhead, VENDOR_ITEM_REGULAR), list("Holdout Pistol", 20, /obj/item/weapon/gun/pistol/holdout, VENDOR_ITEM_REGULAR), list("KT-42 Automag", 20, /obj/item/weapon/gun/pistol/kt42, VENDOR_ITEM_REGULAR), list("S&W .357 Revolver", 20, /obj/item/weapon/gun/revolver/small, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", -1, null, null), - list("88M4 Magazine (9mm)", 40, /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", 40, /obj/item/ammo_magazine/pistol/vp70, VENDOR_ITEM_REGULAR), list("Beretta 92FS Magazine (9mm)", 40, /obj/item/ammo_magazine/pistol/b92fs, VENDOR_ITEM_REGULAR), list("KT-42 Magazine (.44)", 40, /obj/item/ammo_magazine/pistol/kt42, VENDOR_ITEM_REGULAR), - list("Spearhead Speed Loader (.357)", 40, /obj/item/ammo_magazine/revolver/cmb/normalpoint, VENDOR_ITEM_REGULAR), - list("Hollowpoint Spearhead Speed Loader (.357)", 40, /obj/item/ammo_magazine/revolver/cmb, VENDOR_ITEM_REGULAR), + list("Spearhead Speed Loader (.357)", 40, /obj/item/ammo_magazine/revolver/spearhead, VENDOR_ITEM_REGULAR), + list("Hollowpoint Spearhead Speed Loader (.357)", 40, /obj/item/ammo_magazine/revolver/spearhead, VENDOR_ITEM_REGULAR), list("S&W Speed Loader (.357)", 40, /obj/item/ammo_magazine/revolver/small, VENDOR_ITEM_REGULAR), list("Tiny Pistol Magazine (.22)", 40, /obj/item/ammo_magazine/pistol/holdout, VENDOR_ITEM_REGULAR), diff --git a/code/datums/factions/pmc.dm b/code/datums/factions/pmc.dm index 0b48fc63eb..51747807f3 100644 --- a/code/datums/factions/pmc.dm +++ b/code/datums/factions/pmc.dm @@ -43,11 +43,11 @@ list("SIDEARMS", 0, null, null, null), list("VP78 pistol", 20, /obj/item/weapon/gun/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("88 Mod 4 Combat Pistol", 15, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 15, /obj/item/weapon/gun/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", 0, null, null, null), list("VP78 magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("88M4 Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/mod88/normalpoint, null, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), @@ -83,11 +83,11 @@ list("SIDEARMS", 0, null, null, null), list("VP78 pistol", 20, /obj/item/weapon/gun/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("88 Mod 4 Combat Pistol", 30, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 30, /obj/item/weapon/gun/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", 0, null, null, null), list("VP78 magazine (9mm)", 50, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("88M4 Magazine (9mm)", 50, /obj/item/ammo_magazine/pistol/mod88/normalpoint, null, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", 50, /obj/item/ammo_magazine/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("UTILITIES", 0, null, null, null), list("M94 Marking Flare Pack", 30, /obj/item/storage/box/m94, null, VENDOR_ITEM_RECOMMENDED), diff --git a/code/datums/factions/royalmarinescommando.dm b/code/datums/factions/royalmarinescommando.dm index b5605ea61f..aa9db0f5f2 100644 --- a/code/datums/factions/royalmarinescommando.dm +++ b/code/datums/factions/royalmarinescommando.dm @@ -40,11 +40,11 @@ list("SIDEARMS", 0, null, null, null), list("VP78 Pistol", 20, /obj/item/weapon/gun/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("88 Mod 4 Combat Pistol", 15, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 15, /obj/item/weapon/gun/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", 0, null, null, null), list("VP78 magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("88M4 Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/mod88/normalpoint, null, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), @@ -79,11 +79,11 @@ list("SIDEARMS", -1, null, null), list("VP78 Pistol", 20, /obj/item/weapon/gun/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("88 Mod 4 Combat Pistol", 15, /obj/item/weapon/gun/pistol/mod88, null, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 15, /obj/item/weapon/gun/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", -1, null, null), list("VP78 magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), - list("88M4 Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/mod88/normalpoint, null, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/vp70, null, VENDOR_ITEM_REGULAR), list("UTILITIES", -1, null, null), list("M94 Marking Flare Pack", 3, /obj/item/storage/box/m94, null, VENDOR_ITEM_RECOMMENDED), diff --git a/code/datums/supply_packs/ammo.dm b/code/datums/supply_packs/ammo.dm index 164511c25c..6fdb2b4f09 100644 --- a/code/datums/supply_packs/ammo.dm +++ b/code/datums/supply_packs/ammo.dm @@ -240,16 +240,16 @@ containername = "\improper shotgun flechette crate" group = "Ammo" -//------------------------For 88M4 ---------------- +//------------------------For vp70 ---------------- -/datum/supply_packs/ammo_mod88_mag_box_ap - name = "Magazine box (88 Mod 4 AP, 16x mags)" +/datum/supply_packs/ammo_vp70_mag_box_ap + name = "Magazine box (VP70, 16x mags)" contains = list( - /obj/item/ammo_box/magazine/mod88, + /obj/item/ammo_box/magazine/vp70, ) cost = 20 containertype = /obj/structure/closet/crate/ammo - containername = "\improper 88 Mod 4 AP magazines crate" + containername = "\improper VP70 magazines crate" group = "Ammo" //------------------------Special or non common magazines---------------- diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm index e70d47c6be..16811680f2 100644 --- a/code/datums/supply_packs/black_market.dm +++ b/code/datums/supply_packs/black_market.dm @@ -151,7 +151,7 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. new /obj/item/ammo_magazine/smg/mac15(src) new /obj/item/ammo_magazine/smg/mac15(src) if(4) //upp - new /obj/item/weapon/gun/shotgun/type23/riot_control(src) + new /obj/item/weapon/gun/shotgun/type23/riot(src) new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src) new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src) @@ -410,12 +410,12 @@ Additionally, weapons that are way too good to put in the basically-flavor black /datum/supply_packs/contraband/seized/cmb name = "CMB Spearhead revolver (x5 magazines included)" contains = list( - /obj/item/weapon/gun/revolver/cmb, - /obj/item/ammo_magazine/revolver/cmb, - /obj/item/ammo_magazine/revolver/cmb, - /obj/item/ammo_magazine/revolver/cmb, - /obj/item/ammo_magazine/revolver/cmb, - /obj/item/ammo_magazine/revolver/cmb, + /obj/item/weapon/gun/revolver/spearhead, + /obj/item/ammo_magazine/revolver/spearhead, + /obj/item/ammo_magazine/revolver/spearhead, + /obj/item/ammo_magazine/revolver/spearhead, + /obj/item/ammo_magazine/revolver/spearhead, + /obj/item/ammo_magazine/revolver/spearhead, ) dollar_cost = 20 containertype = /obj/structure/largecrate/black_market @@ -683,7 +683,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted contains = list( /obj/item/ammo_magazine/smg/m39/rubber, /obj/item/ammo_magazine/pistol/rubber, - /obj/item/ammo_magazine/pistol/mod88/rubber, + /obj/item/ammo_magazine/pistol/vp70/rubber, /obj/item/ammo_magazine/rifle/rubber, /obj/item/ammo_magazine/rifle/m4ra/rubber, /obj/item/ammo_magazine/shotgun/beanbag, @@ -694,9 +694,9 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted /* - Misc. USCM weaponry - */ /datum/supply_packs/contraband/surplus/mk45_automag - name = "surplus MK-45 Automagnum case" + name = "surplus HG 45 case" dollar_cost = 35 - contains = list(/obj/item/storage/box/guncase/mk45_automag) + contains = list(/obj/item/storage/box/guncase/hg45) containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/surplus/nsg23_marine @@ -927,13 +927,13 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t /datum/supply_packs/contraband/deep_storage/cartridge_bayonet name = "M8 Cartridge Bayonet Kit" - contains = list(/obj/item/storage/box/co2_knife) + contains = list(/obj/item/storage/box/loadout/co2_knife) dollar_cost = 10 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/clf_holdout name = "D18 Holdout Pistol" - contains = list(/obj/item/storage/box/clf) + contains = list(/obj/item/storage/box/loadout/clf) dollar_cost = 10 crate_heat = 2 containertype = /obj/structure/largecrate/black_market diff --git a/code/datums/weather/weather_events/long.dm b/code/datums/weather/weather_events/long.dm new file mode 100644 index 0000000000..9e569dd172 --- /dev/null +++ b/code/datums/weather/weather_events/long.dm @@ -0,0 +1,48 @@ +// Weather events for Big Red +/datum/weather_event/dust/infinite + name = "Duststorm (Infinite)" + length = INFINITY + +/datum/weather_event/sand/infinite + name = "Sandstorm (Infinite)" + length = INFINITY + +/datum/weather_event/rock/infinite + name = "Rockstorm (Infinite)" + length = INFINITY + +// Weather events for Chances Claim +/datum/weather_event/light_rain/lv522/infinite + name = "LV522 Light Rain (Infinite)" + length = INFINITY + +// Weather events for LV624 +/datum/weather_event/light_rain/infinite + name = "Light Rain (Infinite)" + length = INFINITY + +/datum/weather_event/heavy_rain/infinite + name = "Heavy Rain (Infinite)" + length = INFINITY + +// Weather events for New Varadero +/datum/weather_event/light_rain/varadero/infinite + name = "Tropical Storm (Infinite)" + length = INFINITY + +/datum/weather_event/monsoon/infinite + name = "Monsoon Warning (Infinite)" + length = INFINITY + +// Weather events for Sorokyne +/datum/weather_event/snow/infinite + name = "Snow (Infinite)" + length = INFINITY + +/datum/weather_event/snowstorm/infinite + name = "Snowstorm (Infinite)" + length = INFINITY + +/datum/weather_event/blizzard/infinite + name = "Blizzard (Infinite)" + length = INFINITY diff --git a/code/datums/weather/weather_events/lv522_chances_claim.dm b/code/datums/weather/weather_events/lv522_chances_claim.dm index 6b7b296b8c..9d1ec84d71 100644 --- a/code/datums/weather/weather_events/lv522_chances_claim.dm +++ b/code/datums/weather/weather_events/lv522_chances_claim.dm @@ -1,4 +1,6 @@ /datum/weather_event/light_rain/lv522 + name = "LV522 Light Rain" + display_name = "Light Rain" length = 3 MINUTES lightning_chance = 4 diff --git a/code/datums/weather/weather_events/new_varadero.dm b/code/datums/weather/weather_events/new_varadero.dm index f2af23c3f1..36845a2940 100644 --- a/code/datums/weather/weather_events/new_varadero.dm +++ b/code/datums/weather/weather_events/new_varadero.dm @@ -1,22 +1,13 @@ -/datum/weather_event/light_rain +/datum/weather_event/light_rain/varadero name = "Tropical Storm" display_name = "Tropical Storm" length = 4 MINUTES - fullscreen_type = /atom/movable/screen/fullscreen/weather/low - turf_overlay_icon_state = "strata_storm" turf_overlay_alpha = 40 - effect_message = null - damage_per_tick = 0 - has_process = TRUE lightning_chance = 1 - ambience = 'sound/ambience/rainforest.ogg' - - fire_smothering_strength = 1 - /datum/weather_event/monsoon name = "Monsoon Warning" display_name = "Monsoon Warning" diff --git a/code/datums/weather/weather_map_holders/new_varadero.dm b/code/datums/weather/weather_map_holders/new_varadero.dm index 8222001f47..1edb2c42c8 100644 --- a/code/datums/weather/weather_map_holders/new_varadero.dm +++ b/code/datums/weather/weather_map_holders/new_varadero.dm @@ -5,7 +5,7 @@ no_weather_turf_icon_state = "strata_clearsky" potential_weather_events = list( - /datum/weather_event/light_rain, + /datum/weather_event/light_rain/varadero, /datum/weather_event/monsoon, ) 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/jobs/job/antag/xeno/queen.dm b/code/game/jobs/job/antag/xeno/queen.dm index 5702f9b1a6..62425e38b8 100644 --- a/code/game/jobs/job/antag/xeno/queen.dm +++ b/code/game/jobs/job/antag/xeno/queen.dm @@ -17,9 +17,3 @@ to_chat(new_queen, "Your job is to spread the hive.") to_chat(new_queen, "You should start by building a hive core.") to_chat(new_queen, "Talk in Hivemind using ; (e.g. ';Hello my children!')") - -AddTimelock(/datum/job/antag/xenos/queen, list( - JOB_XENO_ROLES = 10 HOURS, - JOB_DRONE_ROLES = 5 HOURS, - JOB_T3_ROLES = 3 HOURS, -)) diff --git a/code/game/jobs/job/civilians/other/liaison.dm b/code/game/jobs/job/civilians/other/liaison.dm index cbbb871249..d34c5fd6bc 100644 --- a/code/game/jobs/job/civilians/other/liaison.dm +++ b/code/game/jobs/job/civilians/other/liaison.dm @@ -22,7 +22,3 @@ name = JOB_CORPORATE_LIAISON icon_state = "cl_spawn" job = /datum/job/civilian/liaison - -AddTimelock(/datum/job/civilian/liaison, list( - JOB_HUMAN_ROLES = 10 HOURS, -)) diff --git a/code/game/jobs/job/civilians/other/reporter.dm b/code/game/jobs/job/civilians/other/reporter.dm index c681768f93..d3883f4742 100644 --- a/code/game/jobs/job/civilians/other/reporter.dm +++ b/code/game/jobs/job/civilians/other/reporter.dm @@ -33,7 +33,3 @@ This could be the story of the sector! 'Brave Marines responding to dangerous di /obj/effect/landmark/start/reporter name = JOB_COMBAT_REPORTER job = /datum/job/civilian/reporter - -AddTimelock(/datum/job/civilian/reporter, list( - JOB_HUMAN_ROLES = 10 HOURS, -)) diff --git a/code/game/jobs/job/civilians/other/survivors.dm b/code/game/jobs/job/civilians/other/survivors.dm index 07598483b8..685ca3d968 100644 --- a/code/game/jobs/job/civilians/other/survivors.dm +++ b/code/game/jobs/job/civilians/other/survivors.dm @@ -139,12 +139,6 @@ SSticker.mode.survivors_by_type_amounts[preferred_variant] += 1 -AddTimelock(/datum/job/civilian/survivor, list( - JOB_SQUAD_ROLES = 5 HOURS, - JOB_ENGINEER_ROLES = 5 HOURS, - JOB_MEDIC_ROLES = 5 HOURS -)) - /datum/job/civilian/survivor/synth title = JOB_SYNTH_SURVIVOR selection_class = "job_synth" diff --git a/code/game/jobs/job/civilians/support/cmo.dm b/code/game/jobs/job/civilians/support/cmo.dm index 835f16f7d8..930c1eb492 100644 --- a/code/game/jobs/job/civilians/support/cmo.dm +++ b/code/game/jobs/job/civilians/support/cmo.dm @@ -8,10 +8,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/cmo entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overriden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." -AddTimelock(/datum/job/civilian/professor, list( - JOB_MEDIC_ROLES = 10 HOURS -)) - /obj/effect/landmark/start/professor name = JOB_CMO icon_state = "cmo_spawn" diff --git a/code/game/jobs/job/civilians/support/doctor.dm b/code/game/jobs/job/civilians/support/doctor.dm index ff1b2146be..7c05985b23 100644 --- a/code/game/jobs/job/civilians/support/doctor.dm +++ b/code/game/jobs/job/civilians/support/doctor.dm @@ -51,10 +51,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/civilian/doctor, list( - JOB_MEDIC_ROLES = 1 HOURS -)) - /obj/effect/landmark/start/doctor name = JOB_DOCTOR icon_state = "doc_spawn" diff --git a/code/game/jobs/job/civilians/support/nurse.dm b/code/game/jobs/job/civilians/support/nurse.dm index 8912011298..1848dd9d93 100644 --- a/code/game/jobs/job/civilians/support/nurse.dm +++ b/code/game/jobs/job/civilians/support/nurse.dm @@ -12,7 +12,3 @@ name = JOB_NURSE icon_state = "nur_spawn" job = /datum/job/civilian/nurse - -AddTimelock(/datum/job/civilian/nurse, list( - JOB_HUMAN_ROLES = 1 HOURS -)) diff --git a/code/game/jobs/job/civilians/support/researcher.dm b/code/game/jobs/job/civilians/support/researcher.dm index 21163f2795..cd875cf550 100644 --- a/code/game/jobs/job/civilians/support/researcher.dm +++ b/code/game/jobs/job/civilians/support/researcher.dm @@ -27,10 +27,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/civilian/researcher, list( - JOB_MEDIC_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/researcher name = JOB_RESEARCHER icon_state = "res_spawn" diff --git a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm index 5f62930003..8adc20786a 100644 --- a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm +++ b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm @@ -7,13 +7,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/auxiliary_officer entry_message_body = "Your job is to oversee the hangar crew, the intel officers, the engineering department, and requisition department. You have many responsibilities and a few plates to keep spinning but your subordinates are mostly self-reliant. Assist where you can and make sure command personnel are confident the auxiliary departments are operating at peak efficiency." -AddTimelock(/datum/job/command/auxiliary_officer, list( - JOB_SQUAD_ROLES = 5 HOURS, - JOB_REQUISITION_ROLES = 5 HOURS, - JOB_ENGINEER_ROLES = 5 HOURS, - JOB_AUXILIARY_ROLES = 5 HOURS, -)) - /obj/effect/landmark/start/auxiliary_officer name = JOB_AUXILIARY_OFFICER job = /datum/job/command/auxiliary_officer diff --git a/code/game/jobs/job/command/auxiliary/crew_chief.dm b/code/game/jobs/job/command/auxiliary/crew_chief.dm index 0770bcd60f..9c2f7522b8 100644 --- a/code/game/jobs/job/command/auxiliary/crew_chief.dm +++ b/code/game/jobs/job/command/auxiliary/crew_chief.dm @@ -9,10 +9,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/dcc entry_message_body = "Your job is to assist the pilot officer maintain the ship's dropship. You have authority only on the dropship, but you are expected to maintain order, as not to disrupt the pilot." -AddTimelock(/datum/job/command/crew_chief, list( - JOB_SQUAD_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/crew_chief name = JOB_DROPSHIP_CREW_CHIEF icon_state = "dcc_spawn" diff --git a/code/game/jobs/job/command/auxiliary/intel.dm b/code/game/jobs/job/command/auxiliary/intel.dm index 9905bc9d37..b216d40dff 100644 --- a/code/game/jobs/job/command/auxiliary/intel.dm +++ b/code/game/jobs/job/command/auxiliary/intel.dm @@ -23,10 +23,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/command/intel, list( - JOB_SQUAD_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/intel name = JOB_INTEL icon_state = "io_spawn" diff --git a/code/game/jobs/job/command/auxiliary/pilot.dm b/code/game/jobs/job/command/auxiliary/pilot.dm index 1a7a7c21d5..f03ef877d9 100644 --- a/code/game/jobs/job/command/auxiliary/pilot.dm +++ b/code/game/jobs/job/command/auxiliary/pilot.dm @@ -9,11 +9,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/po entry_message_body = "Your job is to fly, protect, and maintain the ship's dropship. While you are an officer, your authority is limited to the dropship, where you have authority over the enlisted personnel. If you are not piloting, there is an autopilot fallback for command, but don't leave the dropship without reason." -// Dropship Roles is both PO and DCC combined to not force people to backtrack -AddTimelock(/datum/job/command/pilot, list( - JOB_DROPSHIP_ROLES = 2 HOURS -)) - /obj/effect/landmark/start/pilot name = JOB_PILOT icon_state = "po_spawn" diff --git a/code/game/jobs/job/command/auxiliary/senior.dm b/code/game/jobs/job/command/auxiliary/senior.dm index 014db9569b..308279199e 100644 --- a/code/game/jobs/job/command/auxiliary/senior.dm +++ b/code/game/jobs/job/command/auxiliary/senior.dm @@ -27,16 +27,6 @@ return filtered_job_options -AddTimelock(/datum/job/command/senior, list( - JOB_SQUAD_ROLES = 15 HOURS, - - JOB_ENGINEER_ROLES = 10 HOURS, - JOB_POLICE_ROLES = 10 HOURS, - JOB_MEDIC_ROLES = 10 HOURS, - - JOB_COMMAND_ROLES = 5 HOURS, -)) - /obj/effect/landmark/start/senior name = JOB_SEA icon_state = "sea_spawn" diff --git a/code/game/jobs/job/command/cic/executive.dm b/code/game/jobs/job/command/cic/executive.dm index f717a03e12..0407215829 100644 --- a/code/game/jobs/job/command/cic/executive.dm +++ b/code/game/jobs/job/command/cic/executive.dm @@ -17,10 +17,6 @@ SIGNAL_HANDLER GLOB.marine_leaders -= JOB_XO -AddTimelock(/datum/job/command/executive, list( - JOB_COMMAND_ROLES = 5 HOURS, -)) - /obj/effect/landmark/start/executive name = JOB_XO icon_state = "xo_spawn" diff --git a/code/game/jobs/job/command/cic/staffofficer.dm b/code/game/jobs/job/command/cic/staffofficer.dm index 8e4e7c0cfa..c9c1cf7d8a 100644 --- a/code/game/jobs/job/command/cic/staffofficer.dm +++ b/code/game/jobs/job/command/cic/staffofficer.dm @@ -39,9 +39,8 @@ else gear_preset = initial(gear_preset) -AddTimelock(/datum/job/command/bridge, list( - JOB_SQUAD_LEADER = 1 HOURS, - JOB_HUMAN_ROLES = 15 HOURS +OverrideTimelock(/datum/job/command/bridge, list( + JOB_SQUAD_ROLES = 1 HOURS )) /obj/effect/landmark/start/bridge diff --git a/code/game/jobs/job/command/police/chief_police.dm b/code/game/jobs/job/command/police/chief_police.dm index 63e6d8023f..3cec89ee64 100644 --- a/code/game/jobs/job/command/police/chief_police.dm +++ b/code/game/jobs/job/command/police/chief_police.dm @@ -6,11 +6,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/cmp entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" -AddTimelock(/datum/job/command/warrant, list( - JOB_POLICE_ROLES = 15 HOURS, - JOB_COMMAND_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/warrant name = JOB_CHIEF_POLICE icon_state = "cmp_spawn" diff --git a/code/game/jobs/job/command/police/police.dm b/code/game/jobs/job/command/police/police.dm index e05bc2e962..95eaf7c1b9 100644 --- a/code/game/jobs/job/command/police/police.dm +++ b/code/game/jobs/job/command/police/police.dm @@ -25,10 +25,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/command/police, list( - JOB_SQUAD_ROLES = 10 HOURS -)) - /obj/effect/landmark/start/police name = JOB_POLICE icon_state = "mp_spawn" diff --git a/code/game/jobs/job/command/police/warden.dm b/code/game/jobs/job/command/police/warden.dm index d2775e1975..50e1a36ce8 100644 --- a/code/game/jobs/job/command/police/warden.dm +++ b/code/game/jobs/job/command/police/warden.dm @@ -7,10 +7,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/warden entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the mainting security records and overwatching any prisoners in Brig." -AddTimelock(/datum/job/command/warden, list( - JOB_POLICE_ROLES = 10 HOURS -)) - /obj/effect/landmark/start/warden name = JOB_WARDEN icon_state = "wmp_spawn" diff --git a/code/game/jobs/job/logistics/cargo/chief_req.dm b/code/game/jobs/job/logistics/cargo/chief_req.dm index 5d5123e687..6fbf6b8864 100644 --- a/code/game/jobs/job/logistics/cargo/chief_req.dm +++ b/code/game/jobs/job/logistics/cargo/chief_req.dm @@ -5,10 +5,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/qm entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Your cargo techs can help you out, but you have final say in your department. Make sure they're not goofing off. While you may request paperwork for supplies, do not go out of your way to screw with marines, unless you want to get deposed. A happy ship is a well-functioning ship." -AddTimelock(/datum/job/logistics/requisition, list( - JOB_REQUISITION_ROLES = 10 HOURS, -)) - /obj/effect/landmark/start/requisition name = JOB_CHIEF_REQUISITION icon_state = "ro_spawn" diff --git a/code/game/jobs/job/logistics/engi/chief_engineer.dm b/code/game/jobs/job/logistics/engi/chief_engineer.dm index b6aa23f9c4..a9a18165d9 100644 --- a/code/game/jobs/job/logistics/engi/chief_engineer.dm +++ b/code/game/jobs/job/logistics/engi/chief_engineer.dm @@ -5,10 +5,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/chief_engineer entry_message_body = "Your job is to maintain your department and keep your technicians in check. You are responsible for engineering, power, ordnance, and the orbital cannon. Should the commanding and executive officer be unavailable, you are next in the chain of command." -AddTimelock(/datum/job/logistics/engineering, list( - JOB_ENGINEER_ROLES = 10 HOURS, -)) - /obj/effect/landmark/start/engineering name = JOB_CHIEF_ENGINEER icon_state = "ce_spawn" diff --git a/code/game/jobs/job/logistics/engi/ordnance_tech.dm b/code/game/jobs/job/logistics/engi/ordnance_tech.dm index 43a8a7122a..df55013cda 100644 --- a/code/game/jobs/job/logistics/engi/ordnance_tech.dm +++ b/code/game/jobs/job/logistics/engi/ordnance_tech.dm @@ -26,10 +26,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/logistics/otech, list( - JOB_ENGINEER_ROLES = 1 HOURS -)) - /obj/effect/landmark/start/otech name = JOB_ORDNANCE_TECH icon_state = "ot_spawn" diff --git a/code/game/jobs/job/marine/squad/engineer.dm b/code/game/jobs/job/marine/squad/engineer.dm index 1910248a61..5b93e5f6cf 100644 --- a/code/game/jobs/job/marine/squad/engineer.dm +++ b/code/game/jobs/job/marine/squad/engineer.dm @@ -32,10 +32,6 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/engineer -AddTimelock(/datum/job/marine/engineer, list( - JOB_SQUAD_ROLES = 1 HOURS -)) - /obj/effect/landmark/start/marine/engineer name = JOB_SQUAD_ENGI icon_state = "engi_spawn" diff --git a/code/game/jobs/job/marine/squad/leader.dm b/code/game/jobs/job/marine/squad/leader.dm index ebb0cd25a9..e856164f87 100644 --- a/code/game/jobs/job/marine/squad/leader.dm +++ b/code/game/jobs/job/marine/squad/leader.dm @@ -25,8 +25,8 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/sl -AddTimelock(/datum/job/marine/leader, list( - JOB_SQUAD_ROLES = 10 HOURS +OverrideTimelock(/datum/job/marine/leader, list( + JOB_SQUAD_ROLES = 1 HOURS )) /obj/effect/landmark/start/marine/leader diff --git a/code/game/jobs/job/marine/squad/medic.dm b/code/game/jobs/job/marine/squad/medic.dm index 02b438c048..5c379c1121 100644 --- a/code/game/jobs/job/marine/squad/medic.dm +++ b/code/game/jobs/job/marine/squad/medic.dm @@ -45,11 +45,6 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/medic -AddTimelock(/datum/job/marine/medic, list( - JOB_MEDIC_ROLES = 1 HOURS, - JOB_SQUAD_ROLES = 1 HOURS -)) - /obj/effect/landmark/start/marine/medic name = JOB_SQUAD_MEDIC icon_state = "medic_spawn" diff --git a/code/game/jobs/job/marine/squad/smartgunner.dm b/code/game/jobs/job/marine/squad/smartgunner.dm index 6c27f5ec27..861d5fd905 100644 --- a/code/game/jobs/job/marine/squad/smartgunner.dm +++ b/code/game/jobs/job/marine/squad/smartgunner.dm @@ -41,10 +41,6 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/sg -AddTimelock(/datum/job/marine/smartgunner, list( - JOB_SQUAD_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/marine/smartgunner name = JOB_SQUAD_SMARTGUN icon_state = "smartgunner_spawn" diff --git a/code/game/jobs/job/marine/squad/specialist.dm b/code/game/jobs/job/marine/squad/specialist.dm index e69241cdc7..3e4d0600c2 100644 --- a/code/game/jobs/job/marine/squad/specialist.dm +++ b/code/game/jobs/job/marine/squad/specialist.dm @@ -29,10 +29,6 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/spec -AddTimelock(/datum/job/marine/specialist, list( - JOB_SQUAD_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/marine/spec name = JOB_SQUAD_SPECIALIST icon_state = "spec_spawn" diff --git a/code/game/jobs/job/marine/squad/tl.dm b/code/game/jobs/job/marine/squad/tl.dm index be876dc0b3..d074dfd182 100644 --- a/code/game/jobs/job/marine/squad/tl.dm +++ b/code/game/jobs/job/marine/squad/tl.dm @@ -16,10 +16,6 @@ . = ..() spawning_human.important_radio_channels += JTAC_FREQ -AddTimelock(/datum/job/marine/tl, list( - JOB_SQUAD_ROLES = 8 HOURS -)) - /obj/effect/landmark/start/marine/tl name = JOB_SQUAD_TEAM_LEADER icon_state = "tl_spawn" diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm index 42ffc22570..de2fb256ef 100644 --- a/code/game/jobs/role_authority.dm +++ b/code/game/jobs/role_authority.dm @@ -206,18 +206,46 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou //PART II: Setting up our player variables and lists, to see if we have anyone to destribute. unassigned_players = list() - for(var/mob/new_player/M in GLOB.player_list) //Get all players who are ready. - if(!M.ready || M.job) + for(var/mob/new_player/player as anything in GLOB.new_player_list) + if(!player.ready || player.job) //get only players who are ready and unassigned continue - unassigned_players += M + var/datum/preferences/prefs = player.client?.prefs + if(!prefs) //either no client to play, or no preferences + continue + + if(prefs.alternate_option == RETURN_TO_LOBBY && !prefs.has_job_priorities()) //only try to assign players that could possibly be assigned + continue + + unassigned_players += player if(!length(unassigned_players)) //If we don't have any players, the round can't start. unassigned_players = null return - unassigned_players = shuffle(unassigned_players, 1) //Shuffle the players. + var/list/player_weights = list() + var/debug_total_weight = 0 + for(var/mob/new_player/cycled_unassigned as anything in unassigned_players) + var/base_weight = 1 //baseline weighting + var/new_bonus = 0 + switch(cycled_unassigned.client.get_total_human_playtime()) //+1 for new players, +2 for really new players + if(0 to 2 HOURS) + new_bonus = 2 + if(2 HOURS to 5 HOURS) + new_bonus = 1 + + var/streak_bonus = max(get_client_stat(cycled_unassigned.client, PLAYER_STAT_UNASSIGNED_ROUND_STREAK) - 2, 0) //+1 per missed round after 2 + + player_weights[cycled_unassigned] = base_weight + new_bonus + streak_bonus + debug_total_weight += player_weights[cycled_unassigned] + log_debug("ASSIGNMENT: player_weights generated with [length(player_weights)] players and [debug_total_weight] total weight.") + + unassigned_players = shuffle_weight(player_weights) + var/list/debug_weight_order = list() + for(var/mob/new_player/cycled_unassigned as anything in unassigned_players) + debug_weight_order += player_weights[cycled_unassigned] + log_debug("ASSIGNMENT: unassigned_players by entry weight: ([debug_weight_order.Join(", ")])") // How many positions do we open based on total pop for(var/i in roles_by_name) @@ -247,11 +275,11 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou return log_debug("ASSIGNMENT: Starting prime priority assignments.") - for(var/mob/new_player/cycled_unassigned in shuffle(unassigned_players)) + for(var/mob/new_player/cycled_unassigned in unassigned_players) assign_role_to_player_by_priority(cycled_unassigned, roles_to_assign, unassigned_players, PRIME_PRIORITY) log_debug("ASSIGNMENT: Starting regular priority assignments.") - for(var/mob/new_player/cycled_unassigned in shuffle(unassigned_players)) + for(var/mob/new_player/cycled_unassigned in unassigned_players) var/player_assigned_job = FALSE for(var/priority in HIGH_PRIORITY to LOW_PRIORITY) @@ -264,20 +292,17 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou break if(!player_assigned_job) - log_debug("ASSIGNMENT: [cycled_unassigned] was unable to be assigned a job based on preferences and roles to assign. Attempting alternate options.") - switch(cycled_unassigned.client.prefs.alternate_option) if(GET_RANDOM_JOB) - log_debug("ASSIGNMENT: [cycled_unassigned] has opted for random job alternate option. Finding random job.") var/iterator = 0 while((cycled_unassigned in unassigned_players) || iterator >= 5) iterator++ var/random_job_name = pick(roles_to_assign) var/datum/job/random_job = roles_to_assign[random_job_name] - log_debug("ASSIGNMENT: [cycled_unassigned] is attempting to be assigned to [random_job_name].") if(assign_role(cycled_unassigned, random_job)) log_debug("ASSIGNMENT: We have randomly assigned [random_job_name] to [cycled_unassigned]") + cycled_unassigned.client.player_data.adjust_stat(PLAYER_STAT_UNASSIGNED_ROUND_STREAK, STAT_CATEGORY_MISC, 0, TRUE) unassigned_players -= cycled_unassigned if(random_job.spawn_positions != -1 && random_job.current_positions >= random_job.spawn_positions) @@ -288,10 +313,10 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou log_debug("ASSIGNMENT: [cycled_unassigned] was unable to be randomly assigned a job. Something has gone wrong.") if(BE_MARINE) - log_debug("ASSIGNMENT: [cycled_unassigned] has opted for marine alternate option. Checking if slot is available.") var/datum/job/marine_job = GET_MAPPED_ROLE(JOB_SQUAD_MARINE) if(assign_role(cycled_unassigned, marine_job)) log_debug("ASSIGNMENT: We have assigned [marine_job.title] to [cycled_unassigned] via alternate option.") + cycled_unassigned.client.player_data.adjust_stat(PLAYER_STAT_UNASSIGNED_ROUND_STREAK, STAT_CATEGORY_MISC, 0, TRUE) unassigned_players -= cycled_unassigned if(marine_job.spawn_positions != -1 && marine_job.current_positions >= marine_job.spawn_positions) @@ -305,22 +330,22 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou cycled_unassigned.ready = 0 log_debug("ASSIGNMENT: Assignment complete. Players unassigned: [length(unassigned_players)] Jobs unassigned: [length(roles_to_assign)]") + for(var/mob/new_player/cycled_unassigned in unassigned_players) + cycled_unassigned.client.player_data.adjust_stat(PLAYER_STAT_UNASSIGNED_ROUND_STREAK, STAT_CATEGORY_MISC, 1) return roles_to_assign /datum/authority/branch/role/proc/assign_role_to_player_by_priority(mob/new_player/cycled_unassigned, list/roles_to_assign, list/unassigned_players, priority) - log_debug("ASSIGNMENT: We have started cycled through priority [priority] for [cycled_unassigned].") - var/wanted_jobs_by_name = shuffle(cycled_unassigned.client?.prefs?.get_jobs_by_priority(priority)) + var/wanted_jobs_by_name = shuffle(cycled_unassigned.client.prefs.get_jobs_by_priority(priority)) var/player_assigned_job = FALSE for(var/job_name in wanted_jobs_by_name) - log_debug("ASSIGNMENT: We are cycling through wanted jobs and are at [job_name] for [cycled_unassigned].") if(job_name in roles_to_assign) - log_debug("ASSIGNMENT: We have found [job_name] in roles to assign for [cycled_unassigned].") var/datum/job/actual_job = roles_to_assign[job_name] if(assign_role(cycled_unassigned, actual_job)) - log_debug("ASSIGNMENT: We have assigned [job_name] to [cycled_unassigned].") + log_debug("ASSIGNMENT: We have assigned [job_name] to [cycled_unassigned] at priority [priority].") + cycled_unassigned.client.player_data?.adjust_stat(PLAYER_STAT_UNASSIGNED_ROUND_STREAK, STAT_CATEGORY_MISC, 0, TRUE) unassigned_players -= cycled_unassigned if(actual_job.spawn_positions != -1 && actual_job.current_positions >= actual_job.spawn_positions) @@ -331,10 +356,8 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou break if(player_assigned_job) - log_debug("ASSIGNMENT: [cycled_unassigned] has been assigned a job.") return player_assigned_job - log_debug("ASSIGNMENT: [cycled_unassigned] did not get a job at priority [priority].") return player_assigned_job /** 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/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index da904f255c..4c9b7beb21 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -72,6 +72,13 @@ /obj/structure/machinery/door/poddoor/shutters/finish_close() operating = FALSE +/obj/structure/machinery/door/poddoor/shutters/attack_alien(mob/living/carbon/xenomorph/M) + if(density && !operating) + INVOKE_ASYNC(src, PROC_REF(pry_open), M) + return XENO_ATTACK_ACTION + else + . = ..(M) + /obj/structure/machinery/door/poddoor/shutters/almayer icon = 'icons/obj/structures/doors/blastdoors_shutters.dmi' openspeed = 4 //shorter open animation. @@ -101,13 +108,6 @@ /obj/structure/machinery/door/poddoor/shutters/almayer/containment unacidable = TRUE -/obj/structure/machinery/door/poddoor/shutters/almayer/containment/attack_alien(mob/living/carbon/xenomorph/M) - if(isqueen(M) && density && !operating) - INVOKE_ASYNC(src, PROC_REF(pry_open), M) - return XENO_ATTACK_ACTION - else - . = ..(M) - /obj/structure/machinery/door/poddoor/shutters/almayer/containment/pry_open(mob/living/carbon/xenomorph/X, time = 4 SECONDS) . = ..() if(. && !(stat & BROKEN)) diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index fee6f9a53c..9fd775b64f 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -1012,7 +1012,7 @@ GLOBAL_LIST_EMPTY(vending_products) //---helper glob data GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( - /obj/item/ammo_box/magazine/mod88/empty = /obj/item/ammo_box/magazine/mod88, + /obj/item/ammo_box/magazine/vp70/empty = /obj/item/ammo_box/magazine/vp70, /obj/item/ammo_box/magazine/m4a3/empty = /obj/item/ammo_box/magazine/m4a3, /obj/item/ammo_box/magazine/m4a3/ap/empty = /obj/item/ammo_box/magazine/m4a3/ap, /obj/item/ammo_box/magazine/m4a3/hp/empty = /obj/item/ammo_box/magazine/m4a3/hp, diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm index 445a5c5b9f..6839dc4afc 100644 --- a/code/game/machinery/vending/vending_types.dm +++ b/code/game/machinery/vending/vending_types.dm @@ -270,7 +270,7 @@ products = list( /obj/item/ammo_magazine/smg/m39/rubber = 20, /obj/item/ammo_magazine/pistol/rubber = 20, - /obj/item/ammo_magazine/pistol/mod88/rubber = 20, + /obj/item/ammo_magazine/pistol/vp70/rubber = 20, /obj/item/ammo_magazine/rifle/rubber = 20, /obj/item/ammo_magazine/rifle/m4ra/rubber = 20, /obj/item/ammo_magazine/shotgun/beanbag = 20, diff --git a/code/game/machinery/vending/vendor_types/crew/mp.dm b/code/game/machinery/vending/vendor_types/crew/mp.dm index b63a022481..f9dc3d45f2 100644 --- a/code/game/machinery/vending/vendor_types/crew/mp.dm +++ b/code/game/machinery/vending/vendor_types/crew/mp.dm @@ -15,7 +15,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_military_police, list( list("MP Beret", 0, /obj/item/clothing/head/beret/marine/mp, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("HANDGUN CASE (CHOOSE 1)", 0, null, null, null), - list("88 mod 4 Combat Pistol Case", 0, /obj/item/storage/box/guncase/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("VP70 Combat Pistol Case", 0, /obj/item/storage/box/guncase/vp70, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), list("M44 Combat Revolver Case", 0, /obj/item/storage/box/guncase/m44, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), list("M4A3 Service Pistol Case", 0, /obj/item/storage/box/guncase/m4a3, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), @@ -73,7 +73,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_military_police_warden, list( list("Warden Peaked Cap", 0, /obj/item/clothing/head/beret/marine/mp/warden, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("HANDGUN CASE (CHOOSE 1)", 0, null, null, null), - list("88 mod 4 Combat Pistol Case", 0, /obj/item/storage/box/guncase/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("VP70 Combat Pistol Case", 0, /obj/item/storage/box/guncase/vp70, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), list("M44 Combat Revolver Case", 0, /obj/item/storage/box/guncase/m44, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), list("M4A3 Service Pistol Case", 0, /obj/item/storage/box/guncase/m4a3, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), diff --git a/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm b/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm index 14691dbe27..d3935a3bcc 100644 --- a/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm @@ -24,13 +24,13 @@ list("M41A Magazine (10x24mm)", 24, /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", 4, /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 4, /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Combat Revolver", 4, /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", 4, /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), list("M82F Flare Gun", 4, /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", -1, null, null), - list("88M4 Magazine (9mm)", 20, /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", 20, /obj/item/ammo_magazine/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Speedloader (.44)", 20, /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), list("M4A3 Magazine (9mm)", 20, /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), list("M4A3 AP Magazine (9mm)", 12, /obj/item/ammo_magazine/pistol/ap, VENDOR_ITEM_REGULAR), @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_pilot_officer, list( list("M3-VL Pattern Flak Vest", 0, /obj/item/clothing/suit/storage/marine/light/vest/dcc, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), - list("88 Mod 4 Combat Pistol", 0, /obj/item/weapon/gun/pistol/mod88, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 0, /obj/item/weapon/gun/pistol/vp70, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("VP78 Pistol", 0, /obj/item/weapon/gun/pistol/vp78, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("BELT (CHOOSE 1)", 0, null, null, null), @@ -160,7 +160,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_dropship_crew_chief, list( list("M3-VL Pattern Flak Vest", 0, /obj/item/clothing/suit/storage/marine/light/vest/dcc, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), - list("88 Mod 4 Combat Pistol", 0, /obj/item/weapon/gun/pistol/mod88, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 0, /obj/item/weapon/gun/pistol/vp70, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("VP78 Pistol", 0, /obj/item/weapon/gun/pistol/vp78, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("BELT (CHOOSE 1)", 0, null, null, null), diff --git a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm index b5bc42eabb..a0d37fb154 100644 --- a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm +++ b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm @@ -45,7 +45,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_military_police_chief, list( list("CMP Beret", 0, /obj/item/clothing/head/beret/marine/mp/cmp, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("HANDGUN CASE (CHOOSE 1)", 0, null, null, null), - list("88 mod 4 Combat Pistol Case", 0, /obj/item/storage/box/guncase/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("VP70 Combat Pistol Case", 0, /obj/item/storage/box/guncase/vp70, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), list("M44 Combat Revolver Case", 0, /obj/item/storage/box/guncase/m44, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), list("M4A3 Service Pistol Case", 0, /obj/item/storage/box/guncase/m4a3, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), @@ -132,7 +132,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_chief_engineer, list( list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), - list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("VP70 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp70, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), @@ -158,7 +158,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_chief_engineer, list( list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("PRIMARY FIREARMS (CHOOSE 1)", 0, null, null, null), - list("M37A2 Pump Shotgun", 0, /obj/item/storage/box/guncase/pumpshotgun, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_REGULAR), + list("M120 Tactical Shotgun", 0, /obj/item/storage/box/guncase/shotguncombat, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_REGULAR), list("M41A Pulse Rifle MK2", 0, /obj/item/storage/box/guncase/m41a, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_REGULAR), list("M240 Incinerator Unit", 0, /obj/item/storage/box/guncase/flamer, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_REGULAR), @@ -181,7 +181,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_req_officer, list( list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), - list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("VP70 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp70, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("M44 Custom Revolver", 0, /obj/item/storage/belt/gun/m44/custom, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), @@ -234,7 +234,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), - list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + list("VP70 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp70, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), @@ -283,7 +283,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("PERSONAL WEAPON (CHOOSE 1)", 0, null, null, null), list("VP78 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp78, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/commander, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), - list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + list("VP70 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp70, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), @@ -342,7 +342,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_auxiliary_officer, list( list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), - list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("VP70 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp70, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("M44 Custom Revolver", 0, /obj/item/storage/belt/gun/m44/custom, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), diff --git a/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm b/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm index 55046eaa2b..76b8eb6301 100644 --- a/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm +++ b/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm @@ -272,13 +272,13 @@ GLOBAL_LIST_INIT(cm_vending_vehicle_crew_apc_spare, list( list("M41A Magazine (10x24mm)", 12, /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", 2, /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 2, /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Combat Revolver", 2, /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", 2, /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), list("M82F Flare Gun", 2, /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", -1, null, null), - list("88M4 Magazine (9mm)", 10, /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", 10, /obj/item/ammo_magazine/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Speedloader (.44)", 10, /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), list("M4A3 Magazine (9mm)", 10, /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), list("M4A3 AP Magazine (9mm)", 6, /obj/item/ammo_magazine/pistol/ap, VENDOR_ITEM_REGULAR), @@ -313,7 +313,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_vehicle_crew, list( list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), - list("88 Mod 4 Combat Pistol", 0, /obj/item/weapon/gun/pistol/mod88, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", 0, /obj/item/weapon/gun/pistol/vp70, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("VP78 Pistol", 0, /obj/item/weapon/gun/pistol/vp78, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("BELT (CHOOSE 1)", 0, null, null, null), diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index f3c4973c3f..1717d1e9de 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -30,7 +30,7 @@ list("M4RA Battle Rifle", round(scale * 20), /obj/item/weapon/gun/rifle/m4ra, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 50), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", round(scale * 50), /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Combat Revolver", round(scale * 50), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", round(scale * 50), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), list("M82F Flare Gun", round(scale * 20), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), @@ -224,7 +224,7 @@ list("M39 HV Magazine (10x20mm)", round(scale * 50), /obj/item/ammo_magazine/smg/m39, VENDOR_ITEM_REGULAR), list("M44 Speed Loader (.44)", round(scale * 40), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), list("M4A3 Magazine (9mm)", round(scale * 50), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), - list("88 Mod 4 Magazine (9mm)", round(scale * 50), /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", round(scale * 50), /obj/item/ammo_magazine/pistol/vp70, VENDOR_ITEM_REGULAR), list("ARMOR-PIERCING AMMUNITION", -1, null, null), list("M4RA AP Magazine (10x24mm)", round(scale * 15.7), /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), @@ -497,11 +497,11 @@ list("M41A Rubber Magazine (10x24mm)", round(scale * 25), /obj/item/ammo_magazine/rifle/rubber, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), list("SIDEARM NONLETHAL AMMUNITION", -1, null, null), - list("88M4 Rubber Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol/mod88/rubber, VENDOR_ITEM_REGULAR), + list("VP70 Rubber Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol/vp70/rubber, VENDOR_ITEM_REGULAR), list("M4A3 Rubber Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol/rubber, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", -1, null, null), 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..8ec93ab581 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 @@ -31,13 +31,13 @@ list("M41A Magazine (10x24mm)", round(scale * 25), /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Combat Revolver", round(scale * 25), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), list("M82F Flare Gun", round(scale * 10), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", -1, null, null), - list("88M4 Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Speedloader (.44)", round(scale * 20), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), list("M4A3 Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), @@ -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), @@ -140,7 +140,7 @@ 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 Camouflage Wrap", round(scale * 10), /obj/item/prop/helmetgarb/camocover, 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), @@ -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), @@ -433,18 +425,10 @@ list("M89-S Signal Flare Pack", round(scale * 1), /obj/item/storage/box/m94/signal, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 2), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), - list("M44 Combat Revolver", round(scale * 2), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", round(scale * 2), /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", round(scale * 2), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), - list("VP78 pistol", round(scale * 2), /obj/item/weapon/gun/pistol/vp78, VENDOR_ITEM_REGULAR), list("M82F Flare Gun", round(scale * 1), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), - list("SIDEARM AMMUNITION", -1, null, null), - list("88M4 Magazine (9mm)", round(scale * 20), /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), - list("M44 Speedloader (.44)", round(scale * 20), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), - list("M4A3 Magazine (9mm)", round(scale * 20), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), - list("VP78 magazine (9mm)", round(scale * 20), /obj/item/ammo_magazine/pistol/vp78, VENDOR_ITEM_REGULAR), - list("MISCELLANEOUS", -1, null, null), list("Extinguisher", round(scale * 5), /obj/item/tool/extinguisher, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", round(scale * 1), /obj/item/tool/extinguisher/mini, VENDOR_ITEM_REGULAR), @@ -452,8 +436,9 @@ list("Machete Scabbard (Full)", round(scale * 5), /obj/item/storage/large_holster/machete/full, VENDOR_ITEM_REGULAR), list("Binoculars", round(scale * 1), /obj/item/device/binoculars, VENDOR_ITEM_REGULAR), list("AN/PSQ-55 Sentry Console", round(scale * 1), /obj/item/device/sentry_computer, VENDOR_ITEM_REGULAR), - list("Spare PDT/L Battle Buddy Kit", round(scale * 3), /obj/item/storage/box/pdt_kit, VENDOR_ITEM_REGULAR), + list("Spare PDT/L Battle Buddy Kit", round(scale * 3), /obj/item/storage/box/pdt_kit/advanced, VENDOR_ITEM_REGULAR), list("Rail Flashlight", round(scale * 5), /obj/item/attachable/flashlight, VENDOR_ITEM_REGULAR), + list("M5 'Night Raider' bayonet", round(scale * 5), /obj/item/attachable/bayonet, VENDOR_ITEM_REGULAR), ) /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad/upp @@ -510,8 +495,9 @@ list("Roller Bed", round(scale * 2), /obj/item/roller, VENDOR_ITEM_REGULAR), list("Machete Scabbard (Full)", round(scale * 5), /obj/item/storage/large_holster/machete/full, VENDOR_ITEM_REGULAR), list("Binoculars", round(scale * 1), /obj/item/device/binoculars, VENDOR_ITEM_REGULAR), - list("Spare PDT/L Battle Buddy Kit", round(scale * 3), /obj/item/storage/box/pdt_kit, VENDOR_ITEM_REGULAR), + list("Spare PDT/L Battle Buddy Kit", round(scale * 3), /obj/item/storage/box/pdt_kit/advanced, VENDOR_ITEM_REGULAR), list("Rail Flashlight", round(scale * 5), /obj/item/attachable/flashlight, VENDOR_ITEM_REGULAR), + list("Type 80 Bayonet", round(scale * 5), /obj/item/attachable/bayonet/upp, null, VENDOR_ITEM_REGULAR), list("CLOTHING", -1, null, null), list("Cap", round(scale * 5), /obj/item/clothing/head/uppcap, VENDOR_ITEM_REGULAR), @@ -552,7 +538,7 @@ list("SIDEARMS", -1, null, null), //forecon loves their pistols list("M48A4 Service Pistol", round(scale * 5), /obj/item/weapon/gun/pistol/m1911/socom, VENDOR_ITEM_REGULAR), - list("88 Mod 4 Combat Pistol", round(scale * 5), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", round(scale * 5), /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Combat Revolver", round(scale * 5), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", round(scale * 5), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), list("VP78 pistol", round(scale * 5), /obj/item/weapon/gun/pistol/vp78, VENDOR_ITEM_REGULAR), @@ -560,7 +546,7 @@ list("SIDEARM AMMUNITION", -1, null, null), list("M1911 Magazine (.45)", round(scale * 20), /obj/item/ammo_magazine/pistol/m1911, VENDOR_ITEM_REGULAR), - list("88M4 Magazine (9mm)", round(scale * 20), /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", round(scale * 20), /obj/item/ammo_magazine/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Speedloader (.44)", round(scale * 20), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), list("M4A3 Magazine (9mm)", round(scale * 20), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), list("VP78 magazine (9mm)", round(scale * 20), /obj/item/ammo_magazine/pistol/vp78, VENDOR_ITEM_REGULAR), @@ -571,8 +557,9 @@ list("Roller Bed", round(scale * 2), /obj/item/roller, VENDOR_ITEM_REGULAR), list("Machete Scabbard (Full)", round(scale * 5), /obj/item/storage/large_holster/machete/full, VENDOR_ITEM_REGULAR), list("Binoculars", round(scale * 1), /obj/item/device/binoculars, VENDOR_ITEM_REGULAR), - list("Spare PDT/L Battle Buddy Kit", round(scale * 3), /obj/item/storage/box/pdt_kit, VENDOR_ITEM_REGULAR), + list("Spare PDT/L Battle Buddy Kit", round(scale * 3), /obj/item/storage/box/pdt_kit/advanced, VENDOR_ITEM_REGULAR), list("Rail Flashlight", round(scale * 5), /obj/item/attachable/flashlight, VENDOR_ITEM_REGULAR), + list("M5 'Night Raider' bayonet", round(scale * 5), /obj/item/attachable/bayonet, VENDOR_ITEM_REGULAR), list("CLOTHING", -1, null, null), list("Poncho (green)", round(scale * 10), /obj/item/clothing/accessory/poncho/green, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/wo_vendors.dm b/code/game/machinery/vending/vendor_types/wo_vendors.dm index 37e5aa1c27..f12d787024 100644 --- a/code/game/machinery/vending/vendor_types/wo_vendors.dm +++ b/code/game/machinery/vending/vendor_types/wo_vendors.dm @@ -87,13 +87,13 @@ list("M41A MK2 Magazine (10x24mm)", round(scale * 25), /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Combat Revolver", round(scale * 25), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", round(scale * 25), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), list("M82F Flare Gun", round(scale * 5), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", -1, null, null), - list("88M4 Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Speedloader (.44)", round(scale * 20), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), list("M4A3 Magazine (9mm)", round(scale * 25), /obj/item/ammo_magazine/pistol, 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/effects/spawners/faction_spawners.dm b/code/game/objects/effects/spawners/faction_spawners.dm index eb634e383d..6c80260d44 100644 --- a/code/game/objects/effects/spawners/faction_spawners.dm +++ b/code/game/objects/effects/spawners/faction_spawners.dm @@ -134,7 +134,7 @@ mags_min = 1 guns = list( /obj/item/weapon/gun/pistol/vp78 = /obj/item/ammo_magazine/pistol/vp78, - /obj/item/weapon/gun/pistol/mod88 = /obj/item/ammo_magazine/pistol/mod88/normalpoint + /obj/item/weapon/gun/pistol/vp70 = /obj/item/ammo_magazine/pistol/vp70 ) /obj/effect/spawner/random/gun/pmc_secondary/lowchance diff --git a/code/game/objects/effects/spawners/random.dm b/code/game/objects/effects/spawners/random.dm index d302e7794f..82192a9ca3 100644 --- a/code/game/objects/effects/spawners/random.dm +++ b/code/game/objects/effects/spawners/random.dm @@ -329,7 +329,7 @@ var/mags_min = 1 var/list/guns = list( /obj/item/weapon/gun/pistol/b92fs = /obj/item/ammo_magazine/pistol/b92fs, - /obj/item/weapon/gun/revolver/cmb = /obj/item/ammo_magazine/revolver/cmb, + /obj/item/weapon/gun/revolver/spearhead = /obj/item/ammo_magazine/revolver/spearhead, /obj/item/weapon/gun/pistol/highpower = /obj/item/ammo_magazine/pistol/highpower, /obj/item/weapon/gun/pistol/m1911 = /obj/item/ammo_magazine/pistol/m1911, /obj/item/weapon/gun/revolver/small = /obj/item/ammo_magazine/revolver/small, @@ -388,9 +388,9 @@ /obj/item/weapon/gun/pistol/b92fs = /obj/item/ammo_magazine/pistol/b92fs, /obj/item/weapon/gun/pistol/b92fs = /obj/item/ammo_magazine/pistol/b92fs, /obj/item/weapon/gun/pistol/b92fs = /obj/item/ammo_magazine/pistol/b92fs, - /obj/item/weapon/gun/revolver/cmb = /obj/item/ammo_magazine/revolver/cmb, - /obj/item/weapon/gun/revolver/cmb = /obj/item/ammo_magazine/revolver/cmb, - /obj/item/weapon/gun/revolver/cmb = /obj/item/ammo_magazine/revolver/cmb, + /obj/item/weapon/gun/revolver/spearhead = /obj/item/ammo_magazine/revolver/spearhead, + /obj/item/weapon/gun/revolver/spearhead = /obj/item/ammo_magazine/revolver/spearhead, + /obj/item/weapon/gun/revolver/spearhead = /obj/item/ammo_magazine/revolver/spearhead, /obj/item/weapon/gun/pistol/highpower = /obj/item/ammo_magazine/pistol/highpower, /obj/item/weapon/gun/pistol/highpower = /obj/item/ammo_magazine/pistol/highpower, /obj/item/weapon/gun/pistol/highpower = /obj/item/ammo_magazine/pistol/highpower, 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..558c8b235c 100644 --- a/code/game/objects/items/props/helmetgarb.dm +++ b/code/game/objects/items/props/helmetgarb.dm @@ -52,6 +52,15 @@ desc = "The standard M10 combat helmet is already water-resistant at depths of up to 10 meters. This makes the top potentially water-proof. At least it's something." icon_state = "raincover" +/obj/item/prop/helmetgarb/camocover + name = "camocover" + desc = "A cover that goes over the top of an M10 pattern helmet to camoflauge it without needing the use of paints." + icon_state = "camocover" + +/obj/item/prop/helmetgarb/camocover/Initialize(mapload, ...) + . = ..() + select_gamemode_skin(/obj/item/prop/helmetgarb/camocover) + /obj/item/prop/helmetgarb/rabbitsfoot name = "Rabbit's Foot" desc = "Lucky for you, but not the rabbit, didn't really do it much good." @@ -493,7 +502,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 +529,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/drinks.dm b/code/game/objects/items/reagent_containers/food/drinks.dm index 9f88990e53..a0d0f06be1 100644 --- a/code/game/objects/items/reagent_containers/food/drinks.dm +++ b/code/game/objects/items/reagent_containers/food/drinks.dm @@ -353,7 +353,7 @@ /obj/item/reagent_container/food/drinks/flask/canteen name = "canteen" - desc = "You take a sip from your trusty USCM canteen..." + desc = "A ruggedized metal alloy flask. Can hold a good amount of water... Or other liquids." icon_state = "canteen" volume = 60 center_of_mass = "x=17;y=8" @@ -362,6 +362,12 @@ . = ..() reagents.add_reagent("water", 60) +/obj/item/reagent_container/food/drinks/flask/canteen/empty + +/obj/item/reagent_container/food/drinks/flask/canteen/empty/Initialize() + . = ..() + reagents.clear_reagents() + /obj/item/reagent_container/food/drinks/flask/detflask name = "brown leather flask" desc = "A flask with a leather band around the sides, often seen filled with whiskey and carried by rugged, gritty detectives." 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/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 0ed2894150..cefdee4c93 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -222,7 +222,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ )), \ null, \ new/datum/stack_recipe_list("empty ammo boxes",list( \ - new/datum/stack_recipe("empty magazine box (88 Mod 4 AP)", /obj/item/ammo_box/magazine/mod88/empty), \ + new/datum/stack_recipe("empty magazine box (VP70)", /obj/item/ammo_box/magazine/vp70/empty), \ new/datum/stack_recipe("empty magazine box (M4A3)", /obj/item/ammo_box/magazine/m4a3/empty), \ new/datum/stack_recipe("empty magazine box (M4A3 AP)", /obj/item/ammo_box/magazine/m4a3/ap/empty), \ new/datum/stack_recipe("empty magazine box (M4A3 HP)", /obj/item/ammo_box/magazine/m4a3/hp/empty), \ diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 81e838b30b..619c50b90c 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -1027,7 +1027,7 @@ /obj/item/weapon/gun/rifle/m4ra/training, /obj/item/weapon/gun/smg/m39/training, /obj/item/weapon/gun/pistol/m4a3/training, - /obj/item/weapon/gun/pistol/mod88/training) //Ivan doesn't carry toys. + /obj/item/weapon/gun/pistol/vp70/training) //Ivan doesn't carry toys. var/list/picklist = subtypesof(/obj/item/weapon/gun) - (template_guns + bad_guns + emplacements + yautja_guns + smartguns + training_guns) var/random_gun = pick(picklist) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 04e765dec5..5c8c36625a 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -418,8 +418,8 @@ new /obj/item/handcuffs(src) new /obj/item/handcuffs(src) new /obj/item/reagent_container/spray/pepper(src) - new /obj/item/ammo_magazine/pistol/mod88/normalpoint(src) - new /obj/item/ammo_magazine/pistol/mod88/normalpoint(src) + new /obj/item/ammo_magazine/pistol/vp70(src) + new /obj/item/ammo_magazine/pistol/vp70(src) /obj/item/storage/belt/security/MP/UPP @@ -448,8 +448,8 @@ new /obj/item/handcuffs(src) new /obj/item/handcuffs(src) new /obj/item/handcuffs(src) - new /obj/item/ammo_magazine/revolver/cmb/normalpoint(src) - new /obj/item/ammo_magazine/revolver/cmb/normalpoint(src) + new /obj/item/ammo_magazine/revolver/spearhead(src) + new /obj/item/ammo_magazine/revolver/spearhead(src) /obj/item/storage/belt/security/MP/CMB/full/highpower/fill_preset_inventory() new /obj/item/weapon/gun/energy/taser(src) @@ -1184,15 +1184,15 @@ new /obj/item/ammo_magazine/pistol(src) new /obj/item/ammo_magazine/pistol(src) -/obj/item/storage/belt/gun/m4a3/mod88/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/pistol/mod88()) +/obj/item/storage/belt/gun/m4a3/vp70/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/vp70()) for(var/i = 1 to storage_slots - 1) - new /obj/item/ammo_magazine/pistol/mod88/normalpoint(src) + new /obj/item/ammo_magazine/pistol/vp70(src) -/obj/item/storage/belt/gun/m4a3/mod88_near_empty/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/pistol/mod88()) +/obj/item/storage/belt/gun/m4a3/vp70_near_empty/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/vp70()) for(var/i = 1 to 3) - new /obj/item/ammo_magazine/pistol/mod88/normalpoint(src) + new /obj/item/ammo_magazine/pistol/vp70(src) /obj/item/storage/belt/gun/m4a3/vp78/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/pistol/vp78()) @@ -1254,10 +1254,15 @@ for(var/i = 1 to storage_slots - 1) new /obj/item/ammo_magazine/pistol/highpower/black(src) -/obj/item/storage/belt/gun/m4a3/highpower/tactical/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/pistol/highpower/tactical()) +/obj/item/storage/belt/gun/m4a3/highpower/automag/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/highpower/automag()) for(var/i = 1 to storage_slots - 1) - new /obj/item/ammo_magazine/pistol/highpower/black(src) + new /obj/item/ammo_magazine/pistol/highpower/automag(src) + +/obj/item/storage/belt/gun/m4a3/highpower/automag/tactical/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/highpower/automag/tactical()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/highpower/automag(src) /obj/item/storage/belt/gun/m39 name = "\improper M276 pattern M39 holster rig" @@ -1582,11 +1587,11 @@ /obj/item/ammo_magazine/rifle/m4ra/rubber, /obj/item/ammo_magazine/smg/m39/rubber, /obj/item/ammo_magazine/pistol/rubber, - /obj/item/ammo_magazine/pistol/mod88/rubber) //Ivan doesn't bring children's ammo. + /obj/item/ammo_magazine/pistol/vp70/rubber) //Ivan doesn't bring children's ammo. var/list/picklist = subtypesof(/obj/item/ammo_magazine) - (internal_mags + bad_mags + sentry_mags + training_mags) var/random_mag = pick(picklist) - var/guntype = pick(subtypesof(/obj/item/weapon/gun/revolver) + subtypesof(/obj/item/weapon/gun/pistol) - list(/obj/item/weapon/gun/pistol/m4a3/training, /obj/item/weapon/gun/pistol/mod88/training)) + var/guntype = pick(subtypesof(/obj/item/weapon/gun/revolver) + subtypesof(/obj/item/weapon/gun/pistol) - list(/obj/item/weapon/gun/pistol/m4a3/training, /obj/item/weapon/gun/pistol/vp70/training)) handle_item_insertion(new guntype()) for(var/total_storage_slots in 2 to storage_slots) //minus templates new random_mag(src) @@ -1696,6 +1701,39 @@ new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) +#define MAXIMUM_MAGAZINE_COUNT 2 + +/obj/item/storage/belt/gun/smartgunner/garrow + name = "\improper M802 pattern smartgunner sidearm rig" + desc = "The M802 is a limited-issue mark of USCM load-bearing equipment, designed to carry a limited quantity of smartgun and pistol ammunition, along with a sidearm." + + //Keep a track of how many magazines are inside the belt. + var/magazines = 0 + +/obj/item/storage/belt/gun/smartgunner/garrow/can_be_inserted(obj/item/item, mob/user, stop_messages = FALSE) + . = ..() + if(magazines >= MAXIMUM_MAGAZINE_COUNT && istype(item, /obj/item/ammo_magazine/smartgun)) + if(!stop_messages) + to_chat(usr, SPAN_WARNING("[src] can't hold any more drums.")) + return FALSE + +/obj/item/storage/belt/gun/smartgunner/garrow/handle_item_insertion(obj/item/item, prevent_warning = FALSE, mob/user) + . = ..() + if(istype(item, /obj/item/ammo_magazine/smartgun)) + magazines++ + +/obj/item/storage/belt/gun/smartgunner/garrow/remove_from_storage(obj/item/item as obj, atom/new_location) + . = ..() + if(istype(item, /obj/item/ammo_magazine/smartgun)) + magazines-- + +//If a magazine disintegrates due to acid or something else while in the belt, remove it from the count. +/obj/item/storage/belt/gun/smartgunner/garrow/on_stored_atom_del(atom/movable/item) + if(istype(item, /obj/item/ammo_magazine/smartgun)) + magazines-- + +#undef MAXIMUM_MAGAZINE_COUNT + /obj/item/storage/belt/gun/smartgunner/pmc name = "\improper M802 pattern 'Dirty' smartgunner sidearm rig" desc = "A modification of the standard M802 load-bearing equipment, designed to carry smartgun ammunition and a sidearm." @@ -1839,7 +1877,7 @@ /obj/item/storage/belt/gun/utility/full/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/pistol/mod88()) + handle_item_insertion(new /obj/item/weapon/gun/pistol/vp70()) new /obj/item/tool/screwdriver(src) new /obj/item/tool/wrench(src) new /obj/item/tool/weldingtool(src) 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/storage/misc.dm b/code/game/objects/items/storage/misc.dm index 12f6fbb3d0..a51b1b6c16 100644 --- a/code/game/objects/items/storage/misc.dm +++ b/code/game/objects/items/storage/misc.dm @@ -111,48 +111,117 @@ else icon_state = "6_pack_[contents.len]" -/obj/item/storage/box/clf - name = "D18-storing box" - desc = "A fairly decorated and ceremonial box containing a CLF D18 and a single additional magazine for it. I guess those CLF folk really care about their craftsmanship and prose rather than practicality, eh?" - icon = 'icons/obj/items/storage.dmi' - icon_state = "m43case" - w_class = SIZE_SMALL - max_w_class = SIZE_TINY - storage_slots = 2 - -/obj/item/storage/box/clf/fill_preset_inventory() - new /obj/item/weapon/gun/pistol/clfpistol(src) - new /obj/item/ammo_magazine/pistol/clfpistol(src) - -/obj/item/storage/box/upp //war trophy luger - name = "Type 73 storing case" - desc = "A small case containing the once-standard sidearm of the UPP, the Type 73, and two additional magazines. The contained sidearm is probably looted off a dead officer or from a captured stockpile, either way this thing is worth a pretty penny." +/obj/item/storage/box/loadout + name = "storage case" + desc = "A wooden case that fits a pistol and a number of magazines." icon = 'icons/obj/items/storage.dmi' icon_state = "matebacase" w_class = SIZE_LARGE max_w_class = SIZE_MEDIUM - storage_slots = 3 + storage_slots = 7 -/obj/item/storage/box/upp/fill_preset_inventory() - new /obj/item/weapon/gun/pistol/t73(src) - new /obj/item/ammo_magazine/pistol/t73(src) - new /obj/item/ammo_magazine/pistol/t73(src) - -/obj/item/storage/box/M1911_loadout +/obj/item/storage/box/loadout/upp + name = "Type 73 storing case" + desc = "A small case containing a loaded Type 73, and additional magazines." +/obj/item/storage/box/loadout/upp/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/t73()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/t73(src) + +/obj/item/storage/box/loadout/M4A3_custom_loadout + name = "M4A3 storage case" + desc = "A relatively large storage case containing a loaded M4A3 and additional magazines." + +/obj/item/storage/box/loadout/M4A3_custom_loadout/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/m4a3/custom()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol(src) + +/obj/item/storage/box/loadout/HG45_civilian_loadout + name = "HG 45 'Aguila' storage case" + desc = "A relatively large storage case containing a loaded HG 45 'Aguila' and additional magazines." + +/obj/item/storage/box/loadout/HG45_civilian_loadout/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/highpower()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/highpower(src) + +/obj/item/storage/box/loadout/HG45_marine_loadout + name = "HG 45 'Marina' storage case" + desc = "A relatively large storage case containing a loaded HG 45 'Marina' and additional magazines." + +/obj/item/storage/box/loadout/HG45_marine_loadout/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/highpower/black()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/highpower/black(src) + +/obj/item/storage/box/loadout/HG44_loadout + name = "HG 44 'Automag' storage case" + desc = "A relatively large storage case containing a loaded HG 44 'Automag' and additional magazines." + +/obj/item/storage/box/loadout/HG44_loadout/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/highpower/automag()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/highpower/automag(src) + +/obj/item/storage/box/loadout/Spearhead_loadout + name = "Spearhead Armoury storage case" + desc = "A relatively large storage case containing a loaded Spearhead Armoury autorevolver and additional speedloaders." + +/obj/item/storage/box/loadout/Spearhead_loadout/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/spearhead()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/revolver/spearhead(src) + +/obj/item/storage/box/loadout/Spearhead_loadout/custom + name = "Spearhead Armoury storage case" + desc = "A relatively large storage case containing a loaded Spearhead Armoury autorevolver and additional speedloaders." + +/obj/item/storage/box/loadout/Spearhead_loadout/custom/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/spearhead/black()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/revolver/spearhead(src) + +/obj/item/storage/box/loadout/M1911_loadout name = "M1911 storage case" - desc = "A relatively large storage case containing the 1911 and additional magazines. Purchased by enlisted or aspiring PMCs looking to carry a timeless classic" - icon = 'icons/obj/items/storage.dmi' - icon_state = "matebacase" - w_class = SIZE_LARGE - max_w_class = SIZE_MEDIUM - storage_slots = 3 - -/obj/item/storage/box/M1911_loadout/fill_preset_inventory() - new /obj/item/weapon/gun/pistol/m1911(src) - new /obj/item/ammo_magazine/pistol/m1911(src) - new /obj/item/ammo_magazine/pistol/m1911(src) + desc = "A relatively large storage case containing a loaded M1911 and additional magazines." + +/obj/item/storage/box/loadout/M1911_loadout/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/m1911()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/m1911(src) + +/obj/item/storage/box/loadout/M44_loadout + name = "M44 storage case" + desc = "A relatively large storage case containing a loaded M44 revolver and additional speedloaders." + +/obj/item/storage/box/loadout/M44_loadout/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/m44()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/revolver(src) + +/obj/item/storage/box/loadout/M44_custom_loadout + name = "M44 storage case" + desc = "A relatively large storage case containing a loaded M44 revolver and additional speedloaders." + +/obj/item/storage/box/loadout/M44_custom_loadout/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/m44/custom()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/revolver(src) + +/obj/item/storage/box/loadout/clf + name = "Hummingbird storage box" + desc = "A slim storage case containing a loaded Hummingbird pistol and additional magazines." + w_class = SIZE_SMALL + max_w_class = SIZE_TINY + storage_slots = 4 + +/obj/item/storage/box/loadout/clf/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/clfpistol()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/clfpistol(src) -/obj/item/storage/box/co2_knife +/obj/item/storage/box/loadout/co2_knife name = "M8 cartridge bayonet packaging" desc = "Contains one M8 Cartridge Bayonet and two sister CO2 cartridges. Thanks for being a dedicated Boots magazine subscriber!" icon_state = "co2_box" @@ -162,7 +231,7 @@ w_class = SIZE_SMALL max_w_class = SIZE_SMALL -/obj/item/storage/box/co2_knife/fill_preset_inventory() +/obj/item/storage/box/loadout/co2_knife/fill_preset_inventory() new /obj/item/attachable/bayonet/co2(src) new /obj/item/co2_cartridge(src) new /obj/item/co2_cartridge(src) diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm index e1f4a17204..6ab25f0b73 100644 --- a/code/game/objects/items/storage/pouch.dm +++ b/code/game/objects/items/storage/pouch.dm @@ -461,7 +461,7 @@ /obj/item/storage/pouch/magazine/pistol/pmc_mod88/fill_preset_inventory() for(var/i = 1 to storage_slots) - new /obj/item/ammo_magazine/pistol/mod88/normalpoint(src) + new /obj/item/ammo_magazine/pistol/vp70(src) /obj/item/storage/pouch/magazine/pistol/pmc_vp78/fill_preset_inventory() for(var/i = 1 to storage_slots) 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/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index ae476b0f73..2379837c97 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -139,6 +139,7 @@ new /obj/item/weapon/gun/smartgun(src) new /obj/item/smartgun_battery(src) new /obj/item/clothing/suit/storage/marine/smartgunner(src) + new /obj/item/storage/belt/gun/smartgunner/garrow(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) @@ -157,6 +158,7 @@ new /obj/item/weapon/gun/smartgun(src) new /obj/item/smartgun_battery(src) new /obj/item/clothing/suit/storage/marine/smartgunner/standard(src) + new /obj/item/storage/belt/gun/smartgunner/garrow(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/guncabinet.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/guncabinet.dm index 4531a68c42..30b8ccb025 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/guncabinet.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/guncabinet.dm @@ -80,10 +80,10 @@ new /obj/item/weapon/shield/riot(src) new /obj/item/weapon/shield/riot(src) new /obj/item/weapon/shield/riot(src) - new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) - new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) - new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) - new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) + new /obj/item/ammo_magazine/shotgun/beanbag(src) + new /obj/item/ammo_magazine/shotgun/beanbag(src) + new /obj/item/ammo_magazine/shotgun/beanbag(src) + new /obj/item/ammo_magazine/shotgun/beanbag(src) new /obj/item/weapon/gun/launcher/grenade/m81/riot(src, TRUE) new /obj/item/storage/box/nade_box/tear_gas(src) new /obj/item/clothing/mask/gas(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_blue.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_blue.dm index acc43c302e..a208a61a95 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_blue.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet/level_blue.dm @@ -18,10 +18,10 @@ new /obj/item/weapon/shield/riot(src) new /obj/item/weapon/shield/riot(src) new /obj/item/weapon/shield/riot(src) - new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) - new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) - new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) - new /obj/item/ammo_magazine/shotgun/beanbag/riot(src) + new /obj/item/ammo_magazine/shotgun/beanbag(src) + new /obj/item/ammo_magazine/shotgun/beanbag(src) + new /obj/item/ammo_magazine/shotgun/beanbag(src) + new /obj/item/ammo_magazine/shotgun/beanbag(src) new /obj/item/weapon/gun/launcher/grenade/m81/riot(src, TRUE) new /obj/item/storage/box/nade_box/tear_gas(src) new /obj/item/clothing/mask/gas(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 119615ab7a..9d9aaeb0f3 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -411,11 +411,11 @@ weapon_type = /obj/item/weapon/gun/pistol/m4a3/training ammo_type = /obj/item/ammo_magazine/pistol/rubber -/obj/structure/closet/crate/weapon/training/mod88 - name = "training 88 mod 4 crate" - desc = "A crate with an 88 mod 4 pistol and nonlethal ammunition for it. Intended for use in combat exercises." - weapon_type = /obj/item/weapon/gun/pistol/mod88/training - ammo_type = /obj/item/ammo_magazine/pistol/mod88/rubber +/obj/structure/closet/crate/weapon/training/vp70 + name = "training VP70 crate" + desc = "A crate with an VP70 pistol and nonlethal ammunition for it. Intended for use in combat exercises." + weapon_type = /obj/item/weapon/gun/pistol/vp70/training + ammo_type = /obj/item/ammo_magazine/pistol/vp70/rubber /obj/structure/closet/crate/weapon/training/grenade name = "rubber pellet M15 grenades crate" diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index cfe7531f5f..9b19fb5b4e 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -377,7 +377,7 @@ /obj/item/weapon/gun/pistol/m1911 = /obj/item/ammo_magazine/pistol/m1911, /obj/item/weapon/gun/pistol/heavy = /obj/item/ammo_magazine/pistol/heavy, /obj/item/weapon/gun/revolver/small = /obj/item/ammo_magazine/revolver/small, - /obj/item/weapon/gun/revolver/cmb = /obj/item/ammo_magazine/revolver/cmb, + /obj/item/weapon/gun/revolver/spearhead = /obj/item/ammo_magazine/revolver/spearhead, /obj/item/weapon/gun/shotgun/merc = /obj/item/ammo_magazine/handful/shotgun/buckshot, /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb = /obj/item/ammo_magazine/handful/shotgun/buckshot, /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, 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/sound.dm b/code/game/sound.dm index 6bee74ba01..b9c9636093 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -433,8 +433,8 @@ S = pick('sound/weapons/gun_shotgun_tactical_1.ogg','sound/weapons/gun_shotgun_tactical_2.ogg','sound/weapons/gun_shotgun_tactical_3.ogg','sound/weapons/gun_shotgun_tactical_4.ogg') if("m4a3") S = pick('sound/weapons/gun_m4a3_1.ogg','sound/weapons/gun_m4a3_2.ogg','sound/weapons/gun_m4a3_3.ogg','sound/weapons/gun_m4a3_4.ogg','sound/weapons/gun_m4a3_5.ogg') - if("88m4") - S = pick('sound/weapons/gun_88m4_v7.ogg') + if("vp70") + S = pick('sound/weapons/gun_vp70_v7.ogg') if("gun_casing_shotgun") S = pick ('sound/bullets/bulletcasing_shotgun_fall1.ogg') if("gun_nsg23") 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/game/world.dm b/code/game/world.dm index c23cce5abb..f47840b52c 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -74,7 +74,10 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") initiate_minimap_icons() change_tick_lag(CONFIG_GET(number/ticklag)) - GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 + + // As of byond 515.1637 time2text now treats 0 like it does negative numbers so the hour is wrong + // We could instead use world.timezone but IMO better to not assume lummox will keep time2text in parity with it + GLOB.timezoneOffset = text2num(time2text(10,"hh")) * 36000 Master.Initialize(10, FALSE, TRUE) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 4d1f4ba083..704d633424 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -333,6 +333,7 @@ var/list/roundstart_mod_verbs = list( add_verb(src, /client/proc/open_resin_panel) add_verb(src, /client/proc/open_sound_panel) add_verb(src, /client/proc/toggle_join_xeno) + add_verb(src, /client/proc/admin_marine_announcement) add_verb(src, /client/proc/game_master_rename_platoon) add_verb(src, /client/proc/toggle_vehicle_blockers) add_verb(src, /client/proc/toggle_ai_xeno_weeding) diff --git a/code/modules/admin/game_master/extra_buttons/marine_announce.dm b/code/modules/admin/game_master/extra_buttons/marine_announce.dm new file mode 100644 index 0000000000..6a0a903b8a --- /dev/null +++ b/code/modules/admin/game_master/extra_buttons/marine_announce.dm @@ -0,0 +1,16 @@ +/client/proc/admin_marine_announcement() + set name = "Command Announcement" + set category = "Game Master.Extras" + + if(!check_rights(R_ADMIN)) + return + + var/body = tgui_input_text(src, "Enter the body text for the announcement.", title = "Announcement Body", multiline = TRUE, encode = FALSE) + if(!body) + return + var/title = tgui_input_text(src, "Enter the title of the announcement. Leave blank for the default title.", title = "Announcement Title") + if(!title) + title = COMMAND_ANNOUNCE + marine_announcement(body, "[title]") + message_admins("[key_name_admin(src)] has made an admin command announcement.") + log_admin("[key_name_admin(src)] made an admin command announcement: [body]") 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/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 32364e1072..7c294da311 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -61,33 +61,9 @@ "nano/templates/", ) -/datum/asset/directory/nanoui/weapons - common_dirs = list( - "nano/images/weapons/", - ) - - uncommon_dirs = list() - -/datum/asset/directory/nanoui/weapons/send(client) - if(!client) - log_debug("Warning! Tried to send nanoui weapon data with a null client! (asset_list_items.dm line 93)") - return - SSassets.transport.send_assets(client, common) - - /datum/asset/simple/nanoui_images keep_local_name = TRUE - assets = list( - "auto.png" = 'nano/images/weapons/auto.png', - "burst.png" = 'nano/images/weapons/burst.png', - "single.png" = 'nano/images/weapons/single.png', - "disabled_automatic.png" = 'nano/images/weapons/disabled_automatic.png', - "disabled_burst.png" = 'nano/images/weapons/disabled_burst.png', - "disabled_single.png" = 'nano/images/weapons/disabled_single.png', - "no_name.png" = 'nano/images/weapons/no_name.png', - ) - var/list/common_dirs = list( "nano/images/", ) @@ -384,9 +360,29 @@ name = "gunlineart" /datum/asset/spritesheet/gun_lineart/register() - InsertAll("", 'icons/obj/items/weapons/guns/lineart.dmi') + var/icon_file = 'icons/obj/items/weapons/guns/lineart.dmi' + InsertAll("", icon_file) + + for(var/obj/item/weapon/gun/current_gun as anything in subtypesof(/obj/item/weapon/gun)) + if(isnull(initial(current_gun.icon_state))) + continue + if(initial(current_gun.flags_gun_features) & GUN_UNUSUAL_DESIGN) + continue // These don't have a way to inspect weapon stats + var/obj/item/weapon/gun/temp_gun = new current_gun + var/icon_state = temp_gun.base_gun_icon // base_gun_icon is set in Initialize generally + qdel(temp_gun) + if(icon_state && isnull(sprites[icon_state])) + // upgrade this to a stack_trace once all guns have a lineart and we want to lint against that + log_debug("[current_gun] does not have a valid lineart icon state, icon=[icon_file], icon_state=[json_encode(icon_state)]") + ..() +/datum/asset/spritesheet/gun_lineart_modes + name = "gunlineartmodes" + +/datum/asset/spritesheet/gun_lineart_modes/register() + InsertAll("", 'icons/obj/items/weapons/guns/lineart_modes.dmi') + ..() /datum/asset/simple/orbit assets = list( @@ -400,17 +396,6 @@ "ntosradarpointerS.png" = 'icons/images/ui_images/ntosradar_pointer_S.png' ) -/datum/asset/simple/firemodes - assets = list( - "auto.png" = 'html/images/auto.png', - "disabled_auto.png" = 'html/images/disabled_automatic.png', - "burst.png" = 'html/images/burst.png', - "disabled_burst.png" = 'html/images/disabled_burst.png', - "single.png" = 'html/images/single.png', - "disabled_single.png" = 'html/images/disabled_single.png', - ) - - /datum/asset/simple/particle_editor assets = list( "motion" = 'icons/images/ui_images/particle_editor/motion.png', diff --git a/code/modules/autowiki/pages/guns.dm b/code/modules/autowiki/pages/guns.dm index ad675c51a4..7f63602d56 100644 --- a/code/modules/autowiki/pages/guns.dm +++ b/code/modules/autowiki/pages/guns.dm @@ -7,14 +7,18 @@ var/list/gun_to_ammo = list() - for(var/obj/item/ammo_magazine/typepath as anything in subtypesof(/obj/item/ammo_magazine) - subtypesof(/obj/item/ammo_magazine/internal)) + for(var/obj/item/ammo_magazine/typepath as anything in subtypesof(/obj/item/ammo_magazine) - typesof(/obj/item/ammo_magazine/internal)) + if(isnull(initial(typepath.icon_state))) + continue // Skip mags with no icon_state (e.g. base types) LAZYADD(gun_to_ammo[initial(typepath.gun_type)], typepath) for(var/typepath in sort_list(subtypesof(/obj/item/weapon/gun), GLOBAL_PROC_REF(cmp_typepaths_asc))) - var/obj/item/weapon/gun/generating_gun = new typepath() + var/obj/item/weapon/gun/generating_gun = typepath + if(isnull(initial(generating_gun.icon_state))) + continue // Skip guns with no icon_state (e.g. base types) + generating_gun = new typepath() var/filename = SANITIZE_FILENAME(escape_value(format_text(generating_gun.name))) - var/list/gun_data = generating_gun.ui_data() var/list/valid_mag_types = list() @@ -70,6 +74,8 @@ var/list/attachments_by_slot = list() for(var/obj/item/attachable/attachment_typepath as anything in generating_gun.attachable_allowed) + if(isnull(initial(attachment_typepath.icon_state))) + continue // Skip attachments with no icon_state (e.g. base types) LAZYADD(attachments_by_slot[capitalize(initial(attachment_typepath.slot))], attachment_typepath) var/attachments = "" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e54d86c7b7..dc67dcd57d 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -21,7 +21,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( "whitefull" )) -var/const/MAX_SAVE_SLOTS = 10 +var/const/MAX_SAVE_SLOTS = 20 /datum/preferences var/client/owner @@ -310,8 +310,7 @@ var/const/MAX_SAVE_SLOTS = 10 dat += "Xenomorph - " if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_COMMANDER) dat += "Commanding Officer - " - if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_SYNTHETIC) - dat += "Synthetic - " + dat += "Synthetic - " if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_PREDATOR) dat += "Yautja - " if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_MENTOR) @@ -495,15 +494,12 @@ var/const/MAX_SAVE_SLOTS = 10 else dat += "You do not have the whitelist for this role." if(MENU_SYNTHETIC) - if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_SYNTHETIC) - dat += "
" - dat += "

Synthetic Settings:

" - dat += "Synthetic Name: [synthetic_name]
" - dat += "Synthetic Type: [synthetic_type]
" - dat += "Synthetic Whitelist Status: [synth_status]
" - dat += "
" - else - dat += "You do not have the whitelist for this role." + dat += "
" + dat += "

Synthetic Settings:

" + dat += "Synthetic Name: [synthetic_name]
" + dat += "Synthetic Type: [synthetic_type]
" + dat += "Synthetic Whitelist Status: [synth_status]
" + dat += "
" if(MENU_YAUTJA) if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_PREDATOR) dat += "
" @@ -931,6 +927,18 @@ var/const/MAX_SAVE_SLOTS = 10 return jobs_to_return +/// Returns TRUE if any job has a priority other than NEVER, FALSE otherwise. +/datum/preferences/proc/has_job_priorities() + if(!length(job_preference_list)) + ResetJobs() + return FALSE + + for(var/job in job_preference_list) + if(job_preference_list[job] != NEVER_PRIORITY) + return TRUE + + return FALSE + /datum/preferences/proc/SetJobDepartment(datum/job/J, priority) if(!J || priority < 0 || priority > 4) return FALSE @@ -1598,7 +1606,7 @@ var/const/MAX_SAVE_SLOTS = 10 if("underwear") var/list/underwear_options = gender == MALE ? GLOB.underwear_m : GLOB.underwear_f var/old_gender = gender - var/new_underwear = tgui_input_list(user, "Choose your character's underwear:", "Character Preference", underwear_options) + var/new_underwear = tgui_input_list(user, "Choose your character's underwear:", "Character Preference", underwear_options-GLOB.underwear_restricted) if(old_gender != gender) return if(new_underwear) @@ -1608,7 +1616,7 @@ var/const/MAX_SAVE_SLOTS = 10 if("undershirt") var/list/undershirt_options = gender == MALE ? GLOB.undershirt_m : GLOB.undershirt_f var/old_gender = gender - var/new_undershirt = tgui_input_list(user, "Choose your character's undershirt:", "Character Preference", undershirt_options) + var/new_undershirt = tgui_input_list(user, "Choose your character's undershirt:", "Character Preference", undershirt_options-GLOB.undershirt_restricted) if(old_gender != gender) return if(new_undershirt) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index af1f6a03c9..34c7c9b4a6 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -73,6 +73,7 @@ var/global/list/gear_datums_by_name = list() /datum/gear/eyewear/sunglasses display_name = "Sunglasses" path = /obj/item/clothing/glasses/sunglasses + cost = 0 /datum/gear/eyewear/prescription_sunglasses display_name = "Prescription sunglasses" @@ -137,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" @@ -279,6 +281,10 @@ var/global/list/gear_datums_by_name = list() display_name = "USCM cap" path = /obj/item/clothing/head/cmcap +/datum/gear/headwear/uscm/cap/flap + display_name = "USCM flapcap" + path = /obj/item/clothing/head/cmcap/flap + /datum/gear/headwear/uscm/headband_brown display_name = "USCM headband, brown" path = /obj/item/clothing/head/headband/brown @@ -714,31 +720,58 @@ var/global/list/gear_datums_by_name = list() /datum/gear/weapon/m8_cartridge_bayonet display_name = "M8 Cartridge Bayonet" - path = /obj/item/storage/box/co2_knife + path = /obj/item/storage/box/loadout/co2_knife /datum/gear/weapon/clfpistol - display_name = "D18 Holdout Pistol" - path = /obj/item/storage/box/clf + display_name = "Hummingbird Pistol" + path = /obj/item/storage/box/loadout/clf -/datum/gear/weapon/upppistol //ww2 war trophy luger +/datum/gear/weapon/upppistol display_name = "Type 73 Pistol" - path = /obj/item/storage/box/upp - slot = WEAR_IN_BACK - cost = 4 + path = /obj/item/storage/box/loadout/upp /datum/gear/weapon/m4a3_custom - display_name = "M4A3 Custom Pistol" - path = /obj/item/weapon/gun/pistol/m4a3/custom + display_name = "Custom M4A3 Pistol" + path = /obj/item/storage/box/loadout/M4A3_custom_loadout + allowed_origins = USCM_ORIGINS + +/datum/gear/weapon/m1911 + display_name = "M1911 Pistol" + path = /obj/item/storage/box/loadout/M1911_loadout + allowed_origins = USCM_ORIGINS + +/datum/gear/weapon/m44 + display_name = "M44 Revolver" + path = /obj/item/storage/box/loadout/M44_loadout allowed_origins = USCM_ORIGINS /datum/gear/weapon/m44_custom_revolver - display_name = "M44 Custom Revolver" - path = /obj/item/weapon/gun/revolver/m44/custom + display_name = "Custom M44 Revolver" + path = /obj/item/storage/box/loadout/M44_custom_loadout allowed_origins = USCM_ORIGINS -/datum/gear/weapon/m1911 - display_name = "M1911 Service Pistol" - path = /obj/item/storage/box/M1911_loadout +/datum/gear/weapon/hg45_civilian + display_name = "HG 45 'Aguila' Pistol" + path = /obj/item/storage/box/loadout/HG45_civilian_loadout + +/datum/gear/weapon/hg45_marine + display_name = "HG 45 'Marina' Pistol" + path = /obj/item/storage/box/loadout/HG45_marine_loadout + allowed_origins = USCM_ORIGINS + +/datum/gear/weapon/hg44 + display_name = "HG 44 'Automag' Pistol" + path = /obj/item/storage/box/loadout/HG45_marine_loadout + allowed_origins = USCM_ORIGINS + +/datum/gear/weapon/spearhead + display_name = "Spearhead Armoury Revolver" + path = /obj/item/storage/box/loadout/Spearhead_loadout + allowed_origins = USCM_ORIGINS + +/datum/gear/weapon/spearhead_custom + display_name = "Custom Spearhead Armoury Revolver" + path = /obj/item/storage/box/loadout/Spearhead_loadout/custom allowed_origins = USCM_ORIGINS /datum/gear/weapon/m2100_machete @@ -821,6 +854,10 @@ var/global/list/gear_datums_by_name = list() display_name = "Canteen" path = /obj/item/reagent_container/food/drinks/flask/canteen +/datum/gear/flask/canteen/empty + display_name = "Empty canteen" + path = /obj/item/reagent_container/food/drinks/flask/canteen/empty + /datum/gear/flask/leather display_name = "Leather flask" path = /obj/item/reagent_container/food/drinks/flask/detflask @@ -1079,7 +1116,7 @@ var/global/list/gear_datums_by_name = list() /datum/gear/misc/patch_uscm display_name = "USCM shoulder patch" path = /obj/item/clothing/accessory/patch - cost = 1 + cost = 0 slot = WEAR_IN_ACCESSORY allowed_origins = USCM_ORIGINS @@ -1087,10 +1124,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 @@ -1113,3 +1146,8 @@ var/global/list/gear_datums_by_name = list() display_name = "M67 flak jacket" path = /obj/item/clothing/accessory/flak cost = 3 + +/datum/gear/misc/servicejacket + display_name = "Marine Service Jacket" + path = /obj/item/clothing/suit/storage/jacket/marine/service + cost = 3 diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index a2366692f9..92d9830ba4 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -283,6 +283,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( /obj/item/prop/helmetgarb/cartridge = "cartridge", /obj/item/prop/helmetgarb/prescription_bottle = "prescription_bottle", /obj/item/prop/helmetgarb/raincover = "raincover", + /obj/item/prop/helmetgarb/camocover = "camocover", /obj/item/prop/helmetgarb/rabbitsfoot = "rabbitsfoot", /obj/item/prop/helmetgarb/rosary = "helmet_rosary", // This one was already in the game for some reason, but never had an object /obj/item/prop/helmetgarb/lucky_feather = "lucky_feather", @@ -294,6 +295,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/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 6bdb55e7d7..6c5701c1a3 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -441,6 +441,10 @@ /obj/item/clothing/suit/storage/marine/smartgunner/standard flags_atom = NO_SNOW_TYPE +/obj/item/clothing/suit/storage/marine/smartgunner/black + flags_atom = NO_SNOW_TYPE + icon_state = "8fancy" + /obj/item/clothing/suit/storage/marine/smartgunner/upp name = "\improper UH7-I heavy plated harness" desc = "An experimental set of heavy armor with additional harnesses designed to support QYJ-72-I smartmachinegun. Heavy plates along with harnesses make wearing backpacks extremely uncomfortable and borderline impossible." 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..3162cc32e8 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -24,7 +24,7 @@ //------------ /obj/item/storage/box/guncase/vp78 name = "\improper VP78 pistol case" - desc = "A gun case containing the VP78. Comes with two magazines." + desc = "A gun case containing a VP78. Comes with two magazines." can_hold = list(/obj/item/weapon/gun/pistol/vp78, /obj/item/ammo_magazine/pistol/vp78) storage_slots = 3 @@ -36,7 +36,7 @@ //------------ /obj/item/storage/box/guncase/smartpistol name = "\improper SU-6 pistol case" - desc = "A gun case containing the SU-6 smart pistol. Comes with a full belt holster." + desc = "A gun case containing a SU-6 smart pistol. Comes with a full belt holster." can_hold = list(/obj/item/storage/belt/gun/smartpistol, /obj/item/weapon/gun/pistol/smart, /obj/item/ammo_magazine/pistol/smart) storage_slots = 2 @@ -47,7 +47,7 @@ //------------ /obj/item/storage/box/guncase/mou53 name = "\improper MOU53 shotgun case" - desc = "A gun case containing the MOU53 shotgun. It does come loaded, but you'll still have to find ammunition as you go." + desc = "A gun case containing a MOU53 shotgun. It does come loaded, but you'll still have to find ammunition as you go." storage_slots = 2 can_hold = list(/obj/item/weapon/gun/shotgun/double/mou53, /obj/item/attachable/stock/mou53) @@ -58,7 +58,7 @@ //------------ /obj/item/storage/box/guncase/lmg name = "\improper M41AE2 heavy pulse rifle case" - desc = "A gun case containing the M41AE2 heavy pulse rifle. You can get additional ammunition at requisitions." + desc = "A gun case containing a M41AE2 heavy pulse rifle. You can get additional ammunition at requisitions." storage_slots = 5 can_hold = list(/obj/item/weapon/gun/rifle/lmg, /obj/item/ammo_magazine/rifle/lmg) @@ -72,7 +72,7 @@ //------------ /obj/item/storage/box/guncase/m41aMK1 name = "\improper M41A pulse rifle MK1 case" - desc = "A gun case containing the M41A pulse rifle MK1. It can only use proprietary MK1 magazines." + desc = "A gun case containing a loaded M41A pulse rifle MK1 and two additional magazines." storage_slots = 3 can_hold = list(/obj/item/weapon/gun/rifle/m41aMK1, /obj/item/ammo_magazine/rifle/m41aMK1) @@ -84,7 +84,7 @@ /obj/item/storage/box/guncase/m41aMK1AP name = "\improper M41A pulse rifle MK1 AP case" - desc = "A gun case containing the M41A pulse rifle MK1 loaded with AP rounds. It can only use proprietary MK1 magazines." + desc = "A gun case containing a M41A pulse rifle MK1 loaded with AP rounds and two additional magazines." storage_slots = 3 can_hold = list(/obj/item/weapon/gun/rifle/m41aMK1, /obj/item/ammo_magazine/rifle/m41aMK1) @@ -97,7 +97,7 @@ //M79 grenade launcher /obj/item/storage/box/guncase/m79 name = "\improper M79 grenade launcher case" - desc = "A gun case containing the modernized M79 grenade launcher. Comes with 3 baton slugs, 3 hornet shells and 3 star shell grenades." + desc = "A gun case containing a modernized M79 grenade launcher. Comes with 3 baton slugs, 3 hornet shells and 3 star shell grenades." storage_slots = 4 can_hold = list(/obj/item/weapon/gun/launcher/grenade/m81/m79, /obj/item/storage/box/packet) @@ -111,7 +111,7 @@ //R4T lever action rifle /obj/item/storage/box/guncase/r4t_scout name = "\improper R4T lever action rifle case" - desc = "A gun case containing the R4T lever action rifle, intended for scouting. Comes with an ammunition belt, the optional revolver attachment for it, two boxes of ammunition, a sling, and a stock for the rifle." + desc = "A gun case containing a R4T lever action rifle, intended for scouting. Comes with an ammunition belt, the optional revolver attachment for it, two boxes of ammunition, a sling, and a stock for the rifle." storage_slots = 7 can_hold = list(/obj/item/weapon/gun/lever_action/r4t, /obj/item/attachable/stock/r4t, /obj/item/attachable/magnetic_harness/lever_sling, /obj/item/ammo_magazine/lever_action, /obj/item/ammo_magazine/lever_action/training, /obj/item/storage/belt/shotgun/lever_action, /obj/item/storage/belt/gun/m44/lever_action/attach_holster, /obj/item/device/motiondetector/m717) @@ -126,7 +126,7 @@ /obj/item/storage/box/guncase/xm88 name = "\improper XM88 heavy rifle case" - desc = "A gun case containing the XM88 Heavy Rifle, a prototype weapon designed for use against heavily armored infantry targets and light vehicles. Contains an ammunition belt, two boxes of ammunition, the XS-9 Targeting Relay attachment, and the stock for the rifle." + desc = "A gun case containing a XM88 Heavy Rifle, a prototype weapon designed for use against heavily armored infantry targets and light vehicles. Contains an ammunition belt, two boxes of ammunition, the XS-9 Targeting Relay attachment, and the stock for the rifle." storage_slots = 6 can_hold = list(/obj/item/weapon/gun/lever_action/xm88, /obj/item/attachable/stock/xm88, /obj/item/attachable/scope/mini/xm88, /obj/item/ammo_magazine/lever_action/xm88, /obj/item/storage/belt/shotgun/xm88) @@ -141,7 +141,7 @@ //------------ /obj/item/storage/box/guncase/flamer name = "\improper M240 incinerator case" - desc = "A gun case containing the M240A1 incinerator unit. It does come loaded, but you'll still have to find extra tanks as you go." + desc = "A gun case containing a M240A1 incinerator unit. It does come loaded, but you'll still have to find extra tanks as you go." storage_slots = 4 can_hold = list(/obj/item/weapon/gun/flamer, /obj/item/ammo_magazine/flamer_tank, /obj/item/attachable/attached_gun/extinguisher) @@ -162,7 +162,7 @@ //------------ /obj/item/storage/box/guncase/m56d name = "\improper M56D heavy machine gun case" - desc = "A gun case containing the M56D heavy machine gun. You'll need to order resupplies from requisitions or scavenge them on the field. How do they fit all this into a case? Wouldn't you need a crate." + desc = "A gun case containing a M56D heavy machine gun. You'll need to order resupplies from requisitions or scavenge them on the field. How do they fit all this into a case? Wouldn't you need a crate." storage_slots = 8 can_hold = list(/obj/item/device/m56d_gun, /obj/item/ammo_magazine/m56d, /obj/item/device/m56d_post, /obj/item/tool/wrench, /obj/item/tool/screwdriver, /obj/item/ammo_magazine/m56d, /obj/item/pamphlet/skill/machinegunner, /obj/item/storage/belt/marine/m2c) @@ -179,7 +179,7 @@ //------------ /obj/item/storage/box/guncase/m2c name = "\improper M2C heavy machine gun case" - desc = "A gun case containing the M2C heavy machine gun. It doesn't come loaded, but it does have spare ammunition. You'll have to order extras from requisitions." + desc = "A gun case containing a M2C heavy machine gun. It doesn't come loaded, but it does have spare ammunition. You'll have to order extras from requisitions." storage_slots = 7 can_hold = list(/obj/item/pamphlet/skill/machinegunner, /obj/item/device/m2c_gun, /obj/item/ammo_magazine/m2c, /obj/item/storage/belt/marine/m2c, /obj/item/pamphlet/skill/machinegunner) @@ -195,7 +195,7 @@ //------------ /obj/item/storage/box/guncase/m41a name = "\improper M41A pulse rifle MK2 case" - desc = "A gun case containing the M41A pulse rifle MK2." + desc = "A gun case containing a M41A pulse rifle MK2." storage_slots = 5 can_hold = list(/obj/item/weapon/gun/rifle/m41a, /obj/item/ammo_magazine/rifle) @@ -206,39 +206,50 @@ //------------ -/obj/item/storage/box/guncase/pumpshotgun - name = "\improper M37A2 Pump Shotgun case" - 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) +/obj/item/storage/box/guncase/shotguncombat + name = "\improper M120 tactical shotgun case" + desc = "A gun case containing an unloaded M120 tactical shotgun, two boxes of 12 gauge buckshot, and one box of 12 gauge slug." + icon_state = "guncase" + storage_slots = 3 + can_hold = list(/obj/item/weapon/gun/shotgun/combat, /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/slugs) + +/obj/item/storage/box/guncase/shotguncombat/fill_preset_inventory() + new /obj/item/weapon/gun/shotgun/combat(src) + new /obj/item/ammo_magazine/shotgun/buckshot(src) + new /obj/item/ammo_magazine/shotgun/slugs(src) + +/obj/item/storage/box/guncase/shotgunpump + name = "\improper Ithaca 37 pump-action shotgun case" + desc = "A gun case containing an unloaded Ithaca 37 pump-action shotgun, a box of 12 gauge buckshot, and a box of 12 gauge slugs." + icon_state = "matebacase" + storage_slots = 3 + can_hold = list(/obj/item/weapon/gun/shotgun/pump, /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/slugs) -/obj/item/storage/box/guncase/pumpshotgun/fill_preset_inventory() +/obj/item/storage/box/guncase/shotgunpump/fill_preset_inventory() new /obj/item/weapon/gun/shotgun/pump(src) - for(var/i = 1 to 3) - var/random_pick = rand(1, 3) - switch(random_pick) - if(1) - new /obj/item/ammo_magazine/shotgun/buckshot(src) - if(2) - new /obj/item/ammo_magazine/shotgun/flechette(src) - if(3) - new /obj/item/ammo_magazine/shotgun/slugs(src) - -/obj/item/storage/box/guncase/pumpshotgun/special + new /obj/item/ammo_magazine/shotgun/buckshot(src) + new /obj/item/ammo_magazine/shotgun/slugs(src) + + +/obj/item/storage/box/guncase/shotgunpump/special + name = "\improper Ithaca 37 pump-action shotgun case" + desc = "A gun case containing an unloaded Ithaca 37 pump-action shotgun and one box of 12 gauge USCM Special buckshot." + icon_state = "matebacase" storage_slots = 2 -/obj/item/storage/box/guncase/pumpshotgun/special/fill_preset_inventory() - new /obj/item/weapon/gun/shotgun/pump/special(src) +/obj/item/storage/box/guncase/shotgunpump/special/fill_preset_inventory() + new /obj/item/weapon/gun/shotgun/pump(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" - desc = "A gun case containing the MK-45 'High-Power' Automagnum sidearm. While this weapon was rejected as a replacement for the M44 Combat Revolver, it is often back-issued to troops who prefer its powerful bullets over more common sidearms." +/obj/item/storage/box/guncase/hg45 + name = "\improper HG 45 pistol case" + desc = "A gun case containing a HG 45 pistol." storage_slots = 6 can_hold = list(/obj/item/weapon/gun/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower) -/obj/item/storage/box/guncase/mk45_automag/fill_preset_inventory() +/obj/item/storage/box/guncase/hg45/fill_preset_inventory() if(prob(30)) new /obj/item/weapon/gun/pistol/highpower(src) new /obj/item/ammo_magazine/pistol/highpower(src) @@ -247,19 +258,11 @@ new /obj/item/ammo_magazine/pistol/highpower(src) new /obj/item/ammo_magazine/pistol/highpower(src) new /obj/item/ammo_magazine/pistol/highpower(src) - else - new /obj/item/weapon/gun/pistol/highpower/black(src) - new /obj/item/ammo_magazine/pistol/highpower/black(src) - new /obj/item/ammo_magazine/pistol/highpower/black(src) - new /obj/item/ammo_magazine/pistol/highpower/black(src) - new /obj/item/ammo_magazine/pistol/highpower/black(src) - new /obj/item/ammo_magazine/pistol/highpower/black(src) - new /obj/item/ammo_magazine/pistol/highpower/black(src) /obj/item/storage/box/guncase/nsg23_marine name = "\improper NSG-23 assault rifle case" - desc = "A gun case containing the NSG 23 assault rifle. While usually seen in the hands of PMCs, this weapon is sometimes issued to USCM personnel." + desc = "A gun case containing a NSG 23 assault rifle. While usually seen in the hands of PMCs, this weapon is sometimes issued to USCM personnel." storage_slots = 6 can_hold = list(/obj/item/weapon/gun/rifle/nsg23/no_lock, /obj/item/ammo_magazine/rifle/nsg23) @@ -273,7 +276,7 @@ /obj/item/storage/box/guncase/m3717 name = "\improper M37-17 pump shotgun case" - desc = "A gun case containing the M37-17 pump shotgun. Rarely seen issued to USCM vessels on the edges of inhabited space who need the extra bang for their buck (literally) the M37-17 has. Like this one! Well, if it had the budget for it." + desc = "A gun case containing a M37-17 pump shotgun. Rarely seen issued to USCM vessels on the edges of inhabited space who need the extra bang for their buck (literally) the M37-17 has. Like this one! Well, if it had the budget for it." storage_slots = 4 can_hold = list(/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/m3717, /obj/item/ammo_magazine/shotgun/buckshot) @@ -285,7 +288,7 @@ /obj/item/storage/box/guncase/m1911 name = "\improper M1911 service pistol case" - desc = "A gun case containing the M1911 service pistol. It might be three centuries old but it's still a damn good pistol. Back-issue only, though." + desc = "A gun case containing a M1911 service pistol. It might be three centuries old but it's still a damn good pistol. Back-issue only, though." storage_slots = 7 can_hold = list(/obj/item/weapon/gun/pistol/m1911, /obj/item/ammo_magazine/pistol/m1911) @@ -327,7 +330,7 @@ /obj/item/storage/box/guncase/vulture name = "\improper M707 anti-materiel rifle case" - desc = "A gun case containing the M707 \"Vulture\" anti-materiel rifle and its requisite spotting tools." + desc = "A gun case containing a M707 \"Vulture\" anti-materiel rifle and its requisite spotting tools." icon_state = "guncase_blue" storage_slots = 7 can_hold = list( @@ -360,24 +363,24 @@ //Handgun case for Military police vendor three mag , a railflashligh and the handgun. -//88 Mod 4 Combat Pistol -/obj/item/storage/box/guncase/mod88 - name = "\improper 88 Mod 4 Combat Pistol case" - desc = "A gun case containing an 88 Mod 4 Combat Pistol." +//VP70 Combat Pistol +/obj/item/storage/box/guncase/vp70 + name = "\improper VP70 Combat Pistol case" + desc = "A gun case containing a VP70 Combat Pistol." storage_slots = 5 - can_hold = list(/obj/item/attachable/flashlight, /obj/item/weapon/gun/pistol/mod88, /obj/item/ammo_magazine/pistol/mod88) + can_hold = list(/obj/item/attachable/flashlight, /obj/item/weapon/gun/pistol/vp70, /obj/item/ammo_magazine/pistol/vp70) -/obj/item/storage/box/guncase/mod88/fill_preset_inventory() +/obj/item/storage/box/guncase/vp70/fill_preset_inventory() new /obj/item/attachable/flashlight(src) - new /obj/item/weapon/gun/pistol/mod88(src) - new /obj/item/ammo_magazine/pistol/mod88/normalpoint(src) - new /obj/item/ammo_magazine/pistol/mod88/normalpoint(src) - new /obj/item/ammo_magazine/pistol/mod88/normalpoint(src) + new /obj/item/weapon/gun/pistol/vp70(src) + new /obj/item/ammo_magazine/pistol/vp70(src) + new /obj/item/ammo_magazine/pistol/vp70(src) + new /obj/item/ammo_magazine/pistol/vp70(src) //M44 Combat Revolver /obj/item/storage/box/guncase/m44 name = "\improper M44 Combat Revolver case" - desc = "A gun case containing an M44 Combat Revolver loaded with marksman ammo." + desc = "A gun case containing a M44 Combat Revolver loaded with marksman ammo." storage_slots = 5 can_hold = list(/obj/item/attachable/flashlight, /obj/item/weapon/gun/revolver/m44, /obj/item/ammo_magazine/revolver) @@ -391,7 +394,7 @@ //M4A3 Service Pistol /obj/item/storage/box/guncase/m4a3 name = "\improper M4A3 Service Pistol case" - desc = "A gun case containing an M4A3 Service Pistol." + desc = "A gun case containing a M4A3 Service Pistol." storage_slots = 5 can_hold = list(/obj/item/attachable/flashlight, /obj/item/weapon/gun/pistol/m4a3, /obj/item/ammo_magazine/pistol) diff --git a/code/modules/cm_marines/equipment/kit_boxes.dm b/code/modules/cm_marines/equipment/kit_boxes.dm index 6058ae93ec..f0172a2858 100644 --- a/code/modules/cm_marines/equipment/kit_boxes.dm +++ b/code/modules/cm_marines/equipment/kit_boxes.dm @@ -491,7 +491,7 @@ icon_state = "[initial(icon_state)]_e" /obj/item/storage/box/kit/cryo_self_defense/fill_preset_inventory() - new /obj/item/weapon/gun/pistol/mod88/flashlight(src) + new /obj/item/weapon/gun/pistol/vp70/flashlight(src) new /obj/item/attachable/bayonet(src) new /obj/item/reagent_container/food/snacks/packaged_meal(src, pick("boneless pork ribs", "grilled chicken", "pizza square", "spaghetti chunks", "chicken tender")) diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 243ecd9342..8fcf1a4020 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -218,6 +218,9 @@ if(DEAD) mob_state = "Dead" + if(mob_state == "Conscious" && (locate(/datum/effects/crit) in marine_human.effects_list)) + mob_state = "Incapacitated" + if(!istype(marine_human.head, /obj/item/clothing/head/helmet/marine)) has_helmet = FALSE @@ -920,6 +923,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/ammo_kits.dm b/code/modules/cm_tech/implements/ammo_kits.dm index bcf267a54c..8cce3da199 100644 --- a/code/modules/cm_tech/implements/ammo_kits.dm +++ b/code/modules/cm_tech/implements/ammo_kits.dm @@ -62,7 +62,7 @@ .[/obj/item/ammo_magazine/rifle/m41aMK1] = /obj/item/ammo_magazine/rifle/m41aMK1/incendiary .[/obj/item/ammo_magazine/pistol] = /obj/item/ammo_magazine/pistol/incendiary .[/obj/item/ammo_magazine/pistol/vp78] = /obj/item/ammo_magazine/pistol/vp78/incendiary - .[/obj/item/ammo_magazine/pistol/mod88] = /obj/item/ammo_magazine/pistol/mod88/incendiary + .[/obj/item/ammo_magazine/pistol/vp70] = /obj/item/ammo_magazine/pistol/vp70/incendiary .[/obj/item/ammo_magazine/revolver] = /obj/item/ammo_magazine/revolver/incendiary /obj/item/storage/box/shotgun @@ -110,7 +110,7 @@ .[/obj/item/ammo_magazine/rifle/m41aMK1] = /obj/item/ammo_magazine/rifle/m41aMK1/penetrating .[/obj/item/ammo_magazine/pistol] = /obj/item/ammo_magazine/pistol/penetrating .[/obj/item/ammo_magazine/pistol/vp78] = /obj/item/ammo_magazine/pistol/vp78/penetrating - .[/obj/item/ammo_magazine/pistol/mod88] = /obj/item/ammo_magazine/pistol/mod88/penetrating + .[/obj/item/ammo_magazine/pistol/vp70] = /obj/item/ammo_magazine/pistol/vp70/penetrating .[/obj/item/ammo_magazine/revolver] = /obj/item/ammo_magazine/revolver/penetrating /obj/item/ammo_kit/toxin @@ -126,5 +126,5 @@ .[/obj/item/ammo_magazine/rifle/m41aMK1] = /obj/item/ammo_magazine/rifle/m41aMK1/toxin .[/obj/item/ammo_magazine/pistol] = /obj/item/ammo_magazine/pistol/toxin .[/obj/item/ammo_magazine/pistol/vp78] = /obj/item/ammo_magazine/pistol/vp78/toxin - .[/obj/item/ammo_magazine/pistol/mod88] = /obj/item/ammo_magazine/pistol/mod88/toxin + .[/obj/item/ammo_magazine/pistol/vp70] = /obj/item/ammo_magazine/pistol/vp70/toxin .[/obj/item/ammo_magazine/revolver] = /obj/item/ammo_magazine/revolver/marksman/toxin 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/gear_presets/_select_equipment.dm b/code/modules/gear_presets/_select_equipment.dm index 6aefa9a673..8dafd13b36 100644 --- a/code/modules/gear_presets/_select_equipment.dm +++ b/code/modules/gear_presets/_select_equipment.dm @@ -893,8 +893,8 @@ var/list/rebel_rifles = list( new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/b92fs(new_human), WEAR_IN_BACK) if(1) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/cmb(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/spearhead(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead(new_human), WEAR_IN_BACK) if(2) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/highpower(new_human), WEAR_IN_BACK) @@ -1050,20 +1050,11 @@ var/list/rebel_rifles = list( ) /datum/equipment_preset/proc/load_upp_shotgun(mob/living/carbon/human/new_human) - var/random_shotgun = rand(1,3) - switch(random_shotgun) - if(1) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/breacher, WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_R_STORE) - if(2) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/breacher/slug, WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavyslug, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavyslug, WEAR_R_STORE) - if(3) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/breacher/flechette, WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavyflechette, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavyflechette, WEAR_R_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_R_STORE) + /datum/equipment_preset/proc/add_upp_weapon(mob/living/carbon/human/new_human) var/random_gun = rand(1,5) diff --git a/code/modules/gear_presets/cbrn.dm b/code/modules/gear_presets/cbrn.dm index 98a6b0665e..bcc24c101f 100644 --- a/code/modules/gear_presets/cbrn.dm +++ b/code/modules/gear_presets/cbrn.dm @@ -44,7 +44,7 @@ if("flamethrower") new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/flamer/underextinguisher(new_human), WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/flamethrower/kit(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/flamer_tank(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/flamer_tank(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/flamer_tank(new_human), WEAR_IN_BACK) @@ -91,7 +91,7 @@ if("flamethrower") new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/flamer/underextinguisher(new_human), WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/flamethrower/kit(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/flamer_tank(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/flamer_tank(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/flamer_tank(new_human), WEAR_IN_BACK) @@ -122,7 +122,7 @@ . = ..() new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/webbing/five_slots(new_human), WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/medic(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full/dutch(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medkit/full_advanced(new_human), WEAR_L_STORE) diff --git a/code/modules/gear_presets/clf.dm b/code/modules/gear_presets/clf.dm index 91a44328e4..277c21036b 100644 --- a/code/modules/gear_presets/clf.dm +++ b/code/modules/gear_presets/clf.dm @@ -455,7 +455,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/swat(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(new_human), WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF/cct(new_human), WEAR_L_EAR) diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm index 0f5f67e071..c348f63fae 100644 --- a/code/modules/gear_presets/cmb.dm +++ b/code/modules/gear_presets/cmb.dm @@ -77,9 +77,9 @@ switch(choice) if(1 to 6) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/cmb, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/spearhead, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/CMB/full/revolver, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) @@ -111,9 +111,9 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun, WEAR_IN_R_STORE) if(10) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/cmb, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/spearhead, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/CMB/full/revolver, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41aMK1, WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) @@ -147,9 +147,9 @@ new_human.equip_to_slot_or_del(new headset_type, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/CM_uniform, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/cmb, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/spearhead, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB/marshal, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/telebaton, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/m3717, WEAR_J_STORE) @@ -227,9 +227,9 @@ load_name(new_human) //backpack new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/security, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/spearhead, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/autopsy_scanner, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/radio, WEAR_IN_BACK) @@ -296,9 +296,9 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/ICC, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/corporate_formal, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/mod88, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88/normalpoint, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88/normalpoint, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/vp70, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/yellow, WEAR_JACKET) diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm index 450758c691..16d1b960e0 100644 --- a/code/modules/gear_presets/corpses.dm +++ b/code/modules/gear_presets/corpses.dm @@ -356,7 +356,7 @@ else new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) @@ -786,7 +786,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_L_STORE) add_random_survivor_equipment(new_human) @@ -814,7 +814,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/weapon/baton, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88_near_empty, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70_near_empty, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) /datum/equipment_preset/corpse/pmc/goon/lead @@ -835,7 +835,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/weapon/baton, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88_near_empty, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70_near_empty, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) // Freelancer diff --git a/code/modules/gear_presets/pmc.dm b/code/modules/gear_presets/pmc.dm index 1dcb5fa95c..1f4a9d40df 100644 --- a/code/modules/gear_presets/pmc.dm +++ b/code/modules/gear_presets/pmc.dm @@ -90,7 +90,7 @@ new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/weapon/baton, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) switch(choice) @@ -229,7 +229,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/weapon/baton, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/taser, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) @@ -1368,7 +1368,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/m39/ap, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/m39/ap, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_m39, WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) diff --git a/code/modules/gear_presets/survivors/misc.dm b/code/modules/gear_presets/survivors/misc.dm index b79df671af..f55ea6f30d 100644 --- a/code/modules/gear_presets/survivors/misc.dm +++ b/code/modules/gear_presets/survivors/misc.dm @@ -199,7 +199,7 @@ everything bellow isn't used or out of place. new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88_near_empty, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70_near_empty, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/corporate/no_lock, WEAR_J_STORE) diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index 6406cf5301..ada9398189 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -127,7 +127,10 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/box/m94, WEAR_IN_BACK) //4.25 //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) - load_upp_shotgun(new_human) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_R_STORE) + /datum/equipment_preset/upp/soldier/proc/load_upp_double(mob/living/carbon/human/new_human, obj/item/clothing/under/marine/veteran/UPP/UPP) @@ -135,7 +138,7 @@ var/rifle = prob(50) ? /obj/item/weapon/gun/rifle/type71/dual : /obj/item/weapon/gun/rifle/type71/carbine/dual new_human.equip_to_slot_or_del(new rifle, WEAR_BACK) //body - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/dual, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/upp/full, WEAR_WAIST) //pockets @@ -173,13 +176,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -196,13 +199,13 @@ list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), @@ -306,13 +309,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -366,13 +369,13 @@ list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), @@ -499,13 +502,13 @@ list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -567,7 +570,7 @@ UPP.attach_accessory(new_human, W) for(var/i in 1 to W.hold.storage_slots) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/dragonsbreath, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/dragon, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/dragonsbreath, WEAR_IN_JACKET) //waist var/uppvetsidearm = prob(50) ? /obj/item/storage/belt/gun/type47/t73 : /obj/item/storage/belt/gun/type47/np92 @@ -604,13 +607,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -626,13 +629,13 @@ list("QYJ-72 Box Magazine(7.62x54mmR)", 15, /obj/item/ammo_magazine/pkp , null, VENDOR_ITEM_RECOMMENDED), list("ATTACHMENTS (NONE FIT QYJ-72)", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -729,13 +732,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -751,13 +754,13 @@ list("QYJ-72 Box Magazine (7.62x54mmR)", 15, /obj/item/ammo_magazine/pkp , null, VENDOR_ITEM_RECOMMENDED), list("ATTACHMENTS (NONE FIT QYJ-72)", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -868,13 +871,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -919,13 +922,13 @@ list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -1020,13 +1023,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -1071,13 +1074,13 @@ list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -1183,13 +1186,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -1234,13 +1237,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -1343,13 +1346,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -1394,13 +1397,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -1504,13 +1507,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -1555,13 +1558,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -1665,13 +1668,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -1716,13 +1719,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -1826,13 +1829,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -1877,13 +1880,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -1987,13 +1990,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -2038,13 +2041,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -2148,13 +2151,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -2199,13 +2202,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -2309,13 +2312,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -2360,13 +2363,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -2470,13 +2473,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -2521,13 +2524,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -2572,7 +2575,7 @@ new_human.equip_to_slot_or_del(UPP, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/dual, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/shotgun/upp/heavybuck(new_human), WEAR_WAIST) //limb @@ -2877,7 +2880,7 @@ list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Tactical Bandana", 0, /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) @@ -2981,13 +2984,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -3004,13 +3007,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), @@ -3114,13 +3117,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -3174,13 +3177,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), @@ -3276,13 +3279,13 @@ list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), - list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Angled Grip", 0, /obj/item/attachable/angledgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("MASK (CHOOSE 1)", 0, null, null, null), list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), @@ -3327,13 +3330,13 @@ list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("EXPLOSIVES", 0, null, null, null), list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), @@ -3530,19 +3533,19 @@ list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), - list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 10, /obj/item/attachable/angledgrip/upp, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), list("Gyroscopic Stabilizer", 10, /obj/item/attachable/gyro, null, VENDOR_ITEM_REGULAR), - list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight/upp, null, VENDOR_ITEM_REGULAR), list("Masterkey Shotgun", 10, /obj/item/attachable/attached_gun/shotgun, null, VENDOR_ITEM_REGULAR), list("M37 Wooden Stock", 10, /obj/item/attachable/stock/shotgun, null, VENDOR_ITEM_REGULAR), list("M39 Stock", 10, /obj/item/attachable/stock/smg, null, VENDOR_ITEM_REGULAR), list("M41A Solid Stock", 10, /obj/item/attachable/stock/rifle, null, VENDOR_ITEM_REGULAR), list("Recoil Compensator", 10, /obj/item/attachable/compensator, null, VENDOR_ITEM_REGULAR), - list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), - list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot/upp, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex/upp, null, VENDOR_ITEM_REGULAR), list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), - list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip/upp, null, VENDOR_ITEM_REGULAR), list("UTILITIES", 0, null, null, null), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index 82ba128bcd..fc62b57eaf 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -305,7 +305,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/tanker(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/tanker(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/tool/weldpack(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tank(new_human), WEAR_R_STORE) @@ -794,20 +794,16 @@ new_human.equip_to_slot_or_del(new new_mask, WEAR_FACE) /datum/equipment_preset/uscm/smartgunner_equipped/random/spawn_marine_sidearm(mob/living/carbon/human/new_human) - var/sidearm = pick("m4a3", "mod88", "vp78", "m44") + var/sidearm = pick("m4a3", "vp70", "m44") switch(sidearm) if("m4a3") new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/m4a3(new_human), WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol(new_human), WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol(new_human), WEAR_IN_ACCESSORY) - if("mod88") - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/mod88(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88(new_human), WEAR_IN_ACCESSORY) - if("vp78") - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/vp78(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp78(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp78(new_human), WEAR_IN_ACCESSORY) + if("vp70") + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/vp70(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70(new_human), WEAR_IN_ACCESSORY) if("m44") new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/m44(new_human), WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver(new_human), WEAR_IN_ACCESSORY) diff --git a/code/modules/gear_presets/uscm_event.dm b/code/modules/gear_presets/uscm_event.dm index 5f7c40c016..690400ee48 100644 --- a/code/modules/gear_presets/uscm_event.dm +++ b/code/modules/gear_presets/uscm_event.dm @@ -293,7 +293,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/mp/provost/senior(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/jacket/marine/provost(new_human), WEAR_JACKET) if(new_human.disabilities & NEARSIGHTED) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/prescription(new_human), WEAR_EYES) diff --git a/code/modules/gear_presets/uscm_police.dm b/code/modules/gear_presets/uscm_police.dm index 108aca26d9..619b88a1b6 100644 --- a/code/modules/gear_presets/uscm_police.dm +++ b/code/modules/gear_presets/uscm_police.dm @@ -48,9 +48,9 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/armband/mpsec(new_human), WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster(new_human), WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/mod88(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88/normalpoint(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88/normalpoint(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/vp70(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70(new_human), WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/full(new_human), WEAR_WAIST) @@ -110,9 +110,9 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/armband/mpsec(new_human), WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster(new_human), WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/mod88(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88/normalpoint(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88/normalpoint(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/vp70(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70(new_human), WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/full(new_human), WEAR_WAIST) @@ -172,9 +172,9 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/armband/mpsec(new_human), WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster(new_human), WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/mod88(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88/normalpoint(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/mod88/normalpoint(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/vp70(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/vp70(new_human), WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/full(new_human), WEAR_WAIST) diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index 905fa8265b..9402b1be47 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -587,7 +587,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/dress(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/bridge(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium(new_human), WEAR_L_STORE) @@ -773,7 +773,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/pilot(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/pilot(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) @@ -866,7 +866,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/pilot/dcc(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/light/vest/dcc(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) diff --git a/code/modules/gear_presets/wo.dm b/code/modules/gear_presets/wo.dm index 81ea9b8f6a..29b2be28ce 100644 --- a/code/modules/gear_presets/wo.dm +++ b/code/modules/gear_presets/wo.dm @@ -309,7 +309,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/engineer, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black, WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70, WEAR_WAIST) new_human.equip_to_slot_or_del(new back_item, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_R_STORE) diff --git a/code/modules/gear_presets/wy_goons.dm b/code/modules/gear_presets/wy_goons.dm index 5160f0bf31..53bdaa4041 100644 --- a/code/modules/gear_presets/wy_goons.dm +++ b/code/modules/gear_presets/wy_goons.dm @@ -79,7 +79,7 @@ new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/corporate, WEAR_J_STORE) @@ -116,7 +116,7 @@ new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/nsg23, WEAR_J_STORE) @@ -150,7 +150,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full, WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/vp70, WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/surgical_line, WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_R_STORE) 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..1496ce2595 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)) @@ -978,6 +862,7 @@ nutrition -= 40 apply_damage(-3, TOX) addtimer(VARSET_CALLBACK(src, lastpuke, FALSE), 35 SECONDS) + reagents.remove_any(rand(15, 30)) /mob/living/carbon/human/proc/get_visible_gender() if(wear_suit && wear_suit.flags_inv_hide & HIDEJUMPSUIT && ((head && head.flags_inv_hide & HIDEMASK) || wear_mask)) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index fa35cb1fe9..a1c3b5a4d0 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -22,7 +22,7 @@ return 1 // If unconcious with oxygen damage, do CPR. If dead, we do CPR - if(!(stat == UNCONSCIOUS && getOxyLoss() > 0) && !(stat == DEAD)) + if(!((stat == UNCONSCIOUS || (locate(/datum/effects/crit) in effects_list)) && getOxyLoss() > 0) && !(stat == DEAD)) help_shake_act(attacking_mob) return 1 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/human/life/handle_regular_hud_updates.dm b/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm index b84c8e9d24..32dd9ddef8 100644 --- a/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm +++ b/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm @@ -7,7 +7,7 @@ if(stat != DEAD) //the dead get zero fullscreens - if(stat == UNCONSCIOUS) + if(stat == UNCONSCIOUS || (locate(/datum/effects/crit) in effects_list)) var/severity = 0 switch(health) if(-20 to -10) severity = 1 diff --git a/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm b/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm index 5b37238d28..65f98d928e 100644 --- a/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm +++ b/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm @@ -42,7 +42,8 @@ //UNCONSCIOUS. NO-ONE IS HOME if(regular_update && ((getOxyLoss() > 50))) - apply_effect(3, PARALYZE) + KnockDown(3) + Stun(3) if((src.species.flags & HAS_HARDCRIT) && HEALTH_THRESHOLD_CRIT > health) var/already_in_crit = FALSE 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/carbon/xenomorph/ai/xeno_ai.dm b/code/modules/mob/living/carbon/xenomorph/ai/xeno_ai.dm index 6e5ca5f2c1..7ccd4cde55 100644 --- a/code/modules/mob/living/carbon/xenomorph/ai/xeno_ai.dm +++ b/code/modules/mob/living/carbon/xenomorph/ai/xeno_ai.dm @@ -235,16 +235,12 @@ var/atom/movable/closest_target var/smallest_distance = INFINITY - for(var/mob/living/carbon/potential_target as anything in GLOB.alive_mob_list) - if(!istype(potential_target)) - continue + var/list/valid_targets = SSxeno_ai.get_valid_targets(src) + for(var/atom/movable/potential_target as anything in valid_targets) if(z != potential_target.z) continue - if(!potential_target.ai_can_target(src)) - continue - var/distance = get_dist(src, potential_target) if(distance > ai_range) @@ -258,59 +254,6 @@ closest_target = potential_target smallest_distance = distance - for(var/obj/vehicle/multitile/potential_vehicle_target as anything in GLOB.all_multi_vehicles) - if(z != potential_vehicle_target.z) - continue - - var/distance = get_dist(src, potential_vehicle_target) - - if(distance > ai_range) - continue - - if(potential_vehicle_target.health <= 0) - continue - - var/multitile_faction = potential_vehicle_target.vehicle_faction - if(hive.faction_is_ally(multitile_faction)) - continue - - var/skip_vehicle - var/list/interior_living_mobs = potential_vehicle_target.interior.get_passengers() - for(var/mob/living/carbon/human/human_mob in interior_living_mobs) - if(!human_mob.ai_can_target(src)) - continue - - skip_vehicle = FALSE - break - - if(skip_vehicle) - continue - - viable_targets += potential_vehicle_target - - if(smallest_distance <= distance) - continue - - closest_target = potential_vehicle_target - smallest_distance = distance - - for(var/obj/structure/machinery/defenses/potential_defense_target as anything in GLOB.all_active_defenses) - if(z != potential_defense_target.z) - continue - - var/distance = get_dist(src, potential_defense_target) - - if(distance > ai_range) - continue - - viable_targets += potential_defense_target - - if(smallest_distance <= distance) - continue - - closest_target = potential_defense_target - smallest_distance = distance - var/extra_check_distance = round(smallest_distance * EXTRA_CHECK_DISTANCE_MULTIPLIER) if(extra_check_distance < 1) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm b/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm index 177cd07433..9627ac60c0 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm @@ -76,21 +76,32 @@ At bare minimum, make sure the relevant checks from parent types gets copied in ///////////////////////////// -// Poddoors/shutters // +// PODDDOORS // ///////////////////////////// /obj/structure/machinery/door/poddoor/xeno_ai_obstacle(mob/living/carbon/xenomorph/X, direction, turf/target) . = ..() if(!.) - return + return INFINITY + + if(unacidable) + return INFINITY if(!(stat & NOPOWER)) - return + return INFINITY + + return DOOR_PENALTY - if(operating) - return + +///////////////////////////// +// SHUTTERS // +///////////////////////////// +/obj/structure/machinery/door/poddoor/shutters/xeno_ai_obstacle(mob/living/carbon/xenomorph/X, direction, turf/target) + . = ..() + if(!.) + return INFINITY if(unacidable) - return + return INFINITY return DOOR_PENALTY @@ -104,7 +115,7 @@ At bare minimum, make sure the relevant checks from parent types gets copied in return if(locked || welded || isElectrified()) - return INFINITY + return LOCKED_DOOR_PENALTY if(isfacehugger(X)) return -1 // We LOVE going under doors! @@ -127,7 +138,7 @@ At bare minimum, make sure the relevant checks from parent types gets copied in // MOBS // ///////////////////////////// /mob/living/ai_check_stat(mob/living/carbon/xenomorph/X) - return stat == CONSCIOUS + return stat == CONSCIOUS && !(locate(/datum/effects/crit) in effects_list) ///////////////////////////// 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/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index b76f980480..e040a2dac3 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -16,8 +16,10 @@ randomize_hair_color("facial") randomize_eyes_color() randomize_skin_color() - underwear = gender == MALE ? pick(GLOB.underwear_m) : pick(GLOB.underwear_f) - undershirt = gender == MALE ? pick(GLOB.undershirt_m) : pick(GLOB.undershirt_f) + var/list/undershirt_options = gender == MALE ? GLOB.undershirt_m : GLOB.undershirt_f + undershirt = pick(undershirt_options-GLOB.undershirt_restricted) + var/list/underwear_options = gender == MALE ? GLOB.underwear_m : GLOB.underwear_f + underwear = pick(underwear_options-GLOB.underwear_restricted) backbag = 2 age = rand(AGE_MIN,AGE_MAX) if(H) diff --git a/code/modules/mob/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/new_player/sprite_accessories/undershirt.dm index 5919b75636..5fb59cf261 100644 --- a/code/modules/mob/new_player/sprite_accessories/undershirt.dm +++ b/code/modules/mob/new_player/sprite_accessories/undershirt.dm @@ -1,12 +1,15 @@ GLOBAL_LIST_INIT_TYPED(undershirt_m, /datum/sprite_accessory/undershirt, setup_undershirt(MALE)) GLOBAL_LIST_INIT_TYPED(undershirt_f, /datum/sprite_accessory/undershirt, setup_undershirt(FEMALE)) +GLOBAL_LIST_INIT_TYPED(undershirt_restricted, /datum/sprite_accessory/undershirt, setup_undershirt(null, TRUE)) -/proc/setup_undershirt(restricted_gender) +/proc/setup_undershirt(restricted_gender, restricted) var/list/undershirt_list = list() for(var/undershirt_type in subtypesof(/datum/sprite_accessory/undershirt)) var/datum/sprite_accessory/undershirt/undershirt_datum = new undershirt_type if(restricted_gender && undershirt_datum.gender != restricted_gender && (undershirt_datum.gender == MALE || undershirt_datum.gender == FEMALE)) continue + if(restricted && !undershirt_datum.restricted) + continue if(undershirt_datum.camo_conforming) undershirt_list["[undershirt_datum.name] (Camo Conforming)"] = undershirt_datum var/datum/sprite_accessory/undershirt/classic_datum = new undershirt_type @@ -28,6 +31,7 @@ GLOBAL_LIST_INIT_TYPED(undershirt_f, /datum/sprite_accessory/undershirt, setup_u /datum/sprite_accessory/undershirt icon = 'icons/mob/humans/undershirt.dmi' var/camo_conforming = FALSE + var/restricted = FALSE /datum/sprite_accessory/undershirt/proc/get_image(mob_gender) var/selected_icon_state = icon_state @@ -117,3 +121,10 @@ GLOBAL_LIST_INIT_TYPED(undershirt_f, /datum/sprite_accessory/undershirt, setup_u icon_state = "strapless" gender = FEMALE camo_conforming = TRUE + +// Restricted +/datum/sprite_accessory/undershirt/telnyashka + name = "Telnyashka" + icon_state = "telnyashka" + gender = NEUTER + restricted = TRUE diff --git a/code/modules/mob/new_player/sprite_accessories/underwear.dm b/code/modules/mob/new_player/sprite_accessories/underwear.dm index 869179619e..9c98abccb2 100644 --- a/code/modules/mob/new_player/sprite_accessories/underwear.dm +++ b/code/modules/mob/new_player/sprite_accessories/underwear.dm @@ -1,12 +1,15 @@ GLOBAL_LIST_INIT_TYPED(underwear_m, /datum/sprite_accessory/underwear, setup_underwear(MALE)) GLOBAL_LIST_INIT_TYPED(underwear_f, /datum/sprite_accessory/underwear, setup_underwear(FEMALE)) +GLOBAL_LIST_INIT_TYPED(underwear_restricted, /datum/sprite_accessory/underwear, setup_underwear(null, TRUE)) -/proc/setup_underwear(restricted_gender) +/proc/setup_underwear(restricted_gender, restricted) var/list/underwear_list = list() for(var/underwear_type in subtypesof(/datum/sprite_accessory/underwear)) var/datum/sprite_accessory/underwear/underwear_datum = new underwear_type if(restricted_gender && underwear_datum.gender != restricted_gender && (underwear_datum.gender == MALE || underwear_datum.gender == FEMALE)) continue + if(restricted && !underwear_datum.restricted) + continue if(underwear_datum.camo_conforming) underwear_list["[underwear_datum.name] (Camo Conforming)"] = underwear_datum var/datum/sprite_accessory/underwear/classic_datum = new underwear_type @@ -28,6 +31,7 @@ GLOBAL_LIST_INIT_TYPED(underwear_f, /datum/sprite_accessory/underwear, setup_und /datum/sprite_accessory/underwear icon = 'icons/mob/humans/underwear.dmi' var/camo_conforming = FALSE + var/restricted = FALSE /datum/sprite_accessory/underwear/proc/get_image(mob_gender) var/selected_icon_state = icon_state diff --git a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm index 4f09acbf11..fa0112641c 100644 --- a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm @@ -351,19 +351,19 @@ /obj/item/ammo_box/magazine/su6/empty empty = TRUE -//-----------------------88M4 Pistol Mag Box----------------------- +//-----------------------VP70 Pistol Mag Box----------------------- -/obj/item/ammo_box/magazine/mod88 - name = "\improper magazine box (88 Mod 4 x 16)" +/obj/item/ammo_box/magazine/vp70 + name = "\improper magazine box (VP70 x 16)" icon_state = "base_mod88" flags_equip_slot = SLOT_BACK overlay_ammo_type = "_reg" overlay_gun_type = "_mod88" overlay_content = "_reg" num_of_magazines = 16 - magazine_type = /obj/item/ammo_magazine/pistol/mod88 + magazine_type = /obj/item/ammo_magazine/pistol/vp70 -/obj/item/ammo_box/magazine/mod88/empty +/obj/item/ammo_box/magazine/vp70/empty empty = TRUE //-----------------------VP78 Pistol Mag Box----------------------- diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 70b0ad3b41..32a0850443 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -608,14 +608,13 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w gun_recoil = recoil_buildup var/penetration = 0 - var/armor_punch = 0 var/accuracy = 0 var/min_accuracy = 0 var/max_range = 0 + var/effective_range = 0 var/scatter = 0 var/list/damage_armor_profile_xeno = list() var/list/damage_armor_profile_marine = list() - var/list/damage_armor_profile_armorbreak = list() var/list/damage_armor_profile_headers = list() var/datum/ammo/in_ammo @@ -638,35 +637,26 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w falloff = in_ammo.damage_falloff * damage_falloff_mult penetration = in_ammo.penetration - armor_punch = in_ammo.damage_armor_punch accuracy = in_ammo.accurate_range min_accuracy = in_ammo.accurate_range_min max_range = in_ammo.max_range + effective_range = in_ammo.effective_range_max scatter = in_ammo.scatter for(var/i = 0; i<=CODEX_ARMOR_MAX; i+=CODEX_ARMOR_STEP) damage_armor_profile_headers.Add(i) - damage_armor_profile_marine.Add(round(armor_damage_reduction(GLOB.marine_ranged_stats, damage, i, penetration))) - damage_armor_profile_xeno.Add(round(armor_damage_reduction(GLOB.xeno_ranged_stats, damage, i, penetration))) - if(!GLOB.xeno_general.armor_ignore_integrity) - if(i != 0) - damage_armor_profile_armorbreak.Add("[round(armor_break_calculation(GLOB.xeno_ranged_stats, damage, i, penetration, in_ammo.pen_armor_punch, armor_punch)/i)]%") - else - damage_armor_profile_armorbreak.Add("N/A") + damage_armor_profile_marine.Add(floor(armor_damage_reduction(GLOB.marine_ranged_stats, damage, i, penetration))) + damage_armor_profile_xeno.Add(floor(armor_damage_reduction(GLOB.xeno_ranged_stats, damage, i, penetration))) var/rpm = max(fire_delay, 1) var/burst_rpm = max((fire_delay * 1.5 + (burst_amount - 1) * burst_delay)/max(burst_amount, 1), 0.0001) // weapon info - data["icon"] = SSassets.transport.get_asset_url("no_name.png") - - if(SSassets.cache["[base_gun_icon].png"]) - data["icon"] = SSassets.transport.get_asset_url("[base_gun_icon].png") - + data["icon"] = base_gun_icon data["name"] = name data["desc"] = desc data["two_handed_only"] = (flags_gun_features & GUN_WIELDED_FIRING_ONLY) @@ -688,19 +678,18 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w data["damage"] = damage data["falloff"] = falloff data["total_projectile_amount"] = bonus_projectile_amount+1 - data["armor_punch"] = armor_punch data["penetration"] = penetration data["accuracy"] = accuracy * accuracy_mult data["unwielded_accuracy"] = accuracy * accuracy_mult_unwielded data["min_accuracy"] = min_accuracy data["max_range"] = max_range + data["effective_range"] = effective_range // damage table data data["damage_armor_profile_headers"] = damage_armor_profile_headers data["damage_armor_profile_marine"] = damage_armor_profile_marine data["damage_armor_profile_xeno"] = damage_armor_profile_xeno - data["damage_armor_profile_armorbreak"] = damage_armor_profile_armorbreak return data @@ -715,10 +704,10 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w data["damage_max"] = 100 data["accuracy_max"] = 32 data["range_max"] = 32 + data["effective_range_max"] = EFFECTIVE_RANGE_MAX_TIER_4 data["falloff_max"] = DAMAGE_FALLOFF_TIER_1 data["penetration_max"] = ARMOR_PENETRATION_TIER_10 data["punch_max"] = 5 - data["glob_armourbreak"] = GLOB.xeno_general.armor_ignore_integrity data["automatic"] = (GUN_FIREMODE_AUTOMATIC in gun_firemode_list) data["auto_only"] = ((length(gun_firemode_list) == 1) && (GUN_FIREMODE_AUTOMATIC in gun_firemode_list)) @@ -726,8 +715,8 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w /obj/item/weapon/gun/ui_assets(mob/user) . = ..() || list() - . += get_asset_datum(/datum/asset/simple/firemodes) - //. += get_asset_datum(/datum/asset/spritesheet/gun_lineart) + . += get_asset_datum(/datum/asset/spritesheet/gun_lineart_modes) + . += get_asset_datum(/datum/asset/spritesheet/gun_lineart) // END TGUI \\ @@ -1454,7 +1443,7 @@ and you're good to go. if(projectile_to_fire.ammo.bonus_projectiles_amount) var/obj/projectile/BP for(var/i in 1 to projectile_to_fire.ammo.bonus_projectiles_amount) - BP = new /obj/projectile(attacked_mob.loc, create_cause_data(initial(name), user)) + BP = new /obj/projectile(null, create_cause_data(initial(name), user)) BP.generate_bullet(GLOB.ammo_list[projectile_to_fire.ammo.bonus_projectiles_type], 0, NO_FLAGS) BP.accuracy = round(BP.accuracy * projectile_to_fire.accuracy/initial(projectile_to_fire.accuracy)) //Modifies accuracy of pellets per fire_bonus_projectiles. BP.damage *= damage_buff diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 0b14f1db09..4941606a4b 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -250,7 +250,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/suppressor name = "suppressor" - desc = "A small tube with exhaust ports to expel noise and gas.\n Does not completely silence a weapon, but does make it much quieter and a little more accurate and stable at the cost of slightly reduced damage." + desc = "Small muzzle device that reduces flash and noise with special internal geometry.\n Reduces noise of the shot, increases accuracy and stability, but penalizes damage marginally." icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "suppressor" slot = "muzzle" @@ -278,7 +278,7 @@ Defined in conflicts.dm of the #defines folder. icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "bayonet" item_state = "combat_knife" - desc = "The standard-issue bayonet of the Colonial Marines. You can slide this knife into your boots, or attach it to the end of a rifle." + desc = "USCMC standard issue combat knife. Can be put into boot holster or affixed to the bayonet lug of a rifle. Can also be used to extract shrapnel..." sharp = IS_SHARP_ITEM_ACCURATE force = MELEE_FORCE_NORMAL throwforce = MELEE_FORCE_NORMAL @@ -375,7 +375,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/extended_barrel name = "extended barrel" - desc = "The lengthened barrel speeds up and stabilizes the bullet, increasing velocity and accuracy." + desc = "Longer barrel reduces unburnt powder, improving muzzle velocity and accuracy." slot = "muzzle" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "ebarrel" @@ -452,7 +452,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/f90_dmr_barrel name = "f90 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "aug_dmr_barrel_a" attach_icon = "aug_dmr_barrel_a" slot = "muzzle" @@ -463,7 +463,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/f90_shotgun_barrel name = "f90 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "aug_mkey_barrel_a" attach_icon = "aug_mkey_barrel_a" slot = "muzzle" @@ -474,7 +474,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/l56a2_smartgun name = "l56a2 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "magsg_barrel_a" attach_icon = "magsg_barrel_a" slot = "muzzle" @@ -613,8 +613,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/reddot name = "S5 red-dot sight" - desc = "An ARMAT S5 red-dot sight. A zero-magnification optic that offers faster, and more accurate target acquisition." - desc_lore = "An all-weather collimator sight, designated as the AN/PVQ-64 Dot Sight. Equipped with a sunshade to increase clarity in bright conditions and resist weathering. Compact and efficient, a marvel of military design, until you realize that this is actually just an off-the-shelf design that got a military designation slapped on." + desc = "An ARMAT S5 red-dot, type designated as the AN/PVQ-62 Dot Sight. Zero-magnification optic equipped with a sunshade, for better clarity under bright conditions and weather resistance. Unobtrusive and compact, increases wielded accuracy." icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "reddot" attach_icon = "reddot_a" @@ -626,10 +625,13 @@ Defined in conflicts.dm of the #defines folder. accuracy_unwielded_mod = HIT_ACCURACY_MULT_TIER_1 movement_onehanded_acc_penalty_mod = MOVEMENT_ACCURACY_PENALTY_MULT_TIER_5 +/obj/item/attachable/reddot/upp + name = "EKP-9-M Red Dot Sight" + desc = "Cutting edge UPP sight with automated reticle correction for a fixed zero point. Increases accuracy significantly." + /obj/item/attachable/reflex name = "S6 reflex sight" - desc = "An ARMAT S6 reflex sight. A zero-magnification alternative to iron sights with a more open optic window when compared to the S5 red-dot. Helps to reduce scatter during automated fire." - desc_lore = "A simple folding reflex sight designated as the AN/PVG-72 Reflex Sight, compatible with most rail systems. Bulky and built to last, it can link with military HUDs for limited point-of-aim calculations." + desc = "An ARMAT S6 reflex sight, type designated as the AN/PVG-72 Reflex. Zero-magnification alternative to irons, decreases scatter during burst fire. Can link with mil-HUDs for a limited CCIP." icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "reflex" attach_icon = "reflex_a" @@ -643,10 +645,13 @@ Defined in conflicts.dm of the #defines folder. burst_scatter_mod = -1 movement_onehanded_acc_penalty_mod = MOVEMENT_ACCURACY_PENALTY_MULT_TIER_5 +/obj/item/attachable/reflex/upp + name = "PK-12 Reflex Sight" + desc = "Reflector type gunsight compatible with most standard issue UPP firearms. Durable but the power supply is notoriously unreliable. Reduces scatter significantly and boosts accuracy slightly." /obj/item/attachable/flashlight name = "rail flashlight" - desc = "A flashlight, for rails, on guns. Can be toggled on and off. A better light source than standard M3 pattern armor lights." + desc = "Railmounted flashlight. Pretty generic. Surprisingly high intensity, as it's a better light source than the suit lamps of most armor systems." icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "flashlight" attach_icon = "flashlight_a" @@ -806,6 +811,10 @@ Defined in conflicts.dm of the #defines folder. to_chat(user, SPAN_NOTICE("Hold on there cowboy, that grip is bolted on. You are unable to modify it.")) return +/obj/item/attachable/flashlight/grip/upp + name = "RK-5A Flashlight Grip" + desc = "Folding grip with an integrated flashlight. Reduces recoil and scatter marginally, boosts accuracy slightly. \nStatistically udentical to the underbarrel flashlight grip." + /obj/item/attachable/flashlight/laser_light_combo //Unique attachment for the VP78 based on the fact it has a Laser-Light Module in AVP2010 name = "VP78 Laser-Light Module" desc = "A Laser-Light module for the VP78 Service Pistol which is currently undergoing limited field testing as part of the USCMs next generation pistol program. All VP78 pistols come equipped with the module." @@ -899,8 +908,7 @@ Defined in conflicts.dm of the #defines folder. icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "sniperscope" attach_icon = "sniperscope_a" - desc = "An ARMAT S8 telescopic eye piece. Fixed at 4x zoom. Press the 'use rail attachment' HUD icon or use the verb of the same name to zoom." - desc_lore = "An intermediate-power Armat scope designated as the AN/PVQ-31 4x Optic. Fairly basic, but both durable and functional... enough. 780 meters is about as far as one can push the 10x24mm cartridge, really." + desc = "An ARMAT S8 scope, type designation AN/PVQ-31. Fixed 4x zoom, reduces fire rate and increases wield time but increases accuracy while scoped." slot = "rail" aim_speed_mod = SLOWDOWN_ADS_SCOPE //Extra slowdown when wielded wield_delay_mod = WIELD_DELAY_FAST @@ -989,6 +997,10 @@ Defined in conflicts.dm of the #defines folder. #define ZOOM_LEVEL_2X 0 #define ZOOM_LEVEL_4X 1 +/obj/item/attachable/scope/upp + name = "PO-M 4x Optic" + desc = "Old fashioned 4x scope. Sturdy, but a little unergonomic. UPP tradition. Reduces RoF and increases wield time. Major accuracy bonus when scoped." + /obj/item/attachable/scope/variable_zoom name = "S10 variable zoom telescopic scope" desc = "An ARMAT S10 telescopic eye piece. Can be switched between 2x zoom, which allows the user to move while scoped in, and 4x zoom. Press the 'use rail attachment' HUD icon or use the verb of the same name to zoom." @@ -1071,8 +1083,7 @@ Defined in conflicts.dm of the #defines folder. name = "S4 2x telescopic mini-scope" icon_state = "miniscope" attach_icon = "miniscope_a" - desc = "An ARMAT S4 telescoping eye piece. Fixed at a modest 2x zoom. Press the 'use rail attachment' HUD icon or use the verb of the same name to zoom." - desc_lore = "A light-duty optic, designated as the AN/PVQ-45 2x Optic. Suited towards short to medium-range engagements. Users are advised to zero it often, as the first mass-production batch had a tendency to drift in one direction or another with sustained use." + desc = "An ARMAT S4 scope, type designation AN/PVQ-45. 2x magnification optic, increases accuracy while scoped, decreases RoF and increased wield speed. \nZero often, first production batch suffered from drifting under heavy use and some of them might be in circulation still." slot = "rail" zoom_offset = 6 zoom_viewsize = 7 @@ -1095,6 +1106,10 @@ Defined in conflicts.dm of the #defines folder. G.slowdown -= dynamic_aim_slowdown ..() +/obj/item/attachable/scope/mini/upp + name = "1P93 2x Optic" + desc = "Mild update of a 2159 UPP design. Holds zero in all conditions, antiglint grid prevents glare, but the reticle is unfortunately cluttered and busy. Reduces RoF and increases wield time, boosts accuracy while scoped." + /obj/item/attachable/scope/mini/flaregun wield_delay_mod = 0 dynamic_aim_slowdown = SLOWDOWN_ADS_MINISCOPE_DYNAMIC @@ -1116,11 +1131,11 @@ Defined in conflicts.dm of the #defines folder. name = "2x hunting mini-scope" icon_state = "huntingscope" attach_icon = "huntingscope" - desc = "This civilian-grade scope is a common sight on hunting rifles due to its cheap price and great optics. Fixed at a modest 2x zoom. Press the 'use rail attachment' HUD icon or use the verb of the same name to zoom." + desc = "Generic fixed-magnification 2x optic. Common just about everywhere in civil hands, and sometimes used by law enforcement too." /obj/item/attachable/scope/mini/nsg23 name = "W-Y S4 2x advanced telescopic mini-scope" - desc = "An ARMAT S4 telescoping eye piece, custom-tuned by W-Y scientists to be as ergonomic as possible." + desc = "An ARMAT S4 telescoping eye piece, revised by W-Y scientists to be much more ergonomic." icon_state = "miniscope_nsg23" attach_icon = "miniscope_nsg23_a" zoom_offset = 7 @@ -1128,7 +1143,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/scope/mini/xm88 name = "XS-9 targeting relay" - desc = "An ARMAT XS-9 optical interface. Unlike a traditional scope, this rail-mounted device features no telescoping lens. Instead, the firearm's onboard targeting system relays data directly to the optic for the system operator to reference in realtime." + desc = "An ARMAT XS-9 optical interface, type designation XAN/PVG-90. Computer controlled 2x magnification with electronic fire control system, interfacing with the rifle's sensors to provide near perfect shooting accuracy... In theory." icon_state = "boomslang-scope" zoom_offset = 7 dynamic_aim_slowdown = SLOWDOWN_ADS_NONE @@ -1142,8 +1157,7 @@ Defined in conflicts.dm of the #defines folder. name = "B8 Smart-Scope" icon_state = "iffbarrel" attach_icon = "iffbarrel_a" - desc = "An experimental B8 Smart-Scope. Based on the technologies used in the Smart Gun by ARMAT, this sight has integrated IFF systems. It can only attach to the M4RA Battle Rifle and M44 Combat Revolver." - desc_lore = "An experimental fire-control optic capable of linking into compatible IFF systems on certain weapons, designated the XAN/PVG-110 Smart Scope. Currently programmed for usage with the M4RA battle rifle and M44 Combat Revolver, due to their relatively lower rates of fire. Experimental technology developed by Armat, who have assured that all previously reported issues with false-negative IFF recognitions have been solved. Make sure to check the sight after every op, just in case." + desc = "An experimental B8 Smart-Scope, type designation XAN/PVG-110. Limited automated IFF trigger interlock system allows for use with the M44 Combat Revolver and M4RA Battle Rifle. Reduces damage due to the momentary trigger delay." slot = "rail" zoom_offset = 6 zoom_viewsize = 7 @@ -1713,8 +1727,8 @@ Defined in conflicts.dm of the #defines folder. icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' /obj/item/attachable/stock/shotgun - name = "\improper M37 wooden stock" - desc = "A non-standard heavy wooden stock for the M37 Shotgun. More cumbersome than the standard issue stakeout, but reduces recoil and improves accuracy. Allegedly makes a pretty good club in a fight too." + name = "\improper Ithaca 37 wooden stock" + desc = "A standard wooden stock for the Ithaca pump-action shotgun. More cumbersome than the standard issue stakeout, but reduces recoil and improves accuracy. Allegedly makes a pretty good club in a fight too." slot = "stock" icon_state = "stock" wield_delay_mod = WIELD_DELAY_FAST @@ -1786,7 +1800,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/xm88 name = "\improper XM88 padded stock" - desc = "A specially made compound polymer stock reinforced with aluminum rods and thick rubber padding to shield the user from recoil. Fitted specifically for the XM88 Heavy Rifle." + desc = "A polymer framed alloy reinforced stock for the XM88 antimateriel rifle. Helps manage recoil." icon_state = "boomslang-stock" wield_delay_mod = WIELD_DELAY_NORMAL hud_offset_mod = 6 @@ -1810,8 +1824,8 @@ Defined in conflicts.dm of the #defines folder. // Doesn't give any stat additions due to the gun already having really good ones, and this is unremovable from the gun itself /obj/item/attachable/stock/tactical - name = "\improper MK221 tactical stock" - desc = "A metal stock made for the MK221 tactical shotgun." + name = "\improper M120 tactical stock" + desc = "A metal stock made for the M120 tactical shotgun." icon_state = "tactical_stock" hud_offset_mod = 6 @@ -1845,6 +1859,33 @@ Defined in conflicts.dm of the #defines folder. recoil_unwielded_mod = -RECOIL_AMOUNT_TIER_5 scatter_unwielded_mod = -SCATTER_AMOUNT_TIER_10 +/obj/item/attachable/stock/type23/wood + name = "\improper KS-29 wooden stock" + desc = "A standard heavy wooden stock for the KS-29 riot shotgun. Allegedly makes a pretty good club in a fight too." + slot = "stock" + icon_state = "type23_wood" + wield_delay_mod = WIELD_DELAY_FAST + pixel_shift_x = 32 + pixel_shift_y = 15 + hud_offset_mod = 6 //*Very* long sprite. + flags_attach_features = NO_FLAGS + +/obj/item/attachable/stock/type23/wood/New() + ..() + //it makes stuff much better when two-handed + accuracy_mod = HIT_ACCURACY_MULT_TIER_4 + recoil_mod = -RECOIL_AMOUNT_TIER_4 + scatter_mod = -SCATTER_AMOUNT_TIER_8 + movement_onehanded_acc_penalty_mod = -MOVEMENT_ACCURACY_PENALTY_MULT_TIER_5 + //it makes stuff much worse when one handed + accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_3 + recoil_unwielded_mod = RECOIL_AMOUNT_TIER_4 + scatter_unwielded_mod = SCATTER_AMOUNT_TIER_8 + //but at the same time you are slow when 2 handed + aim_speed_mod = CONFIG_GET(number/slowdown_med) + + matter = list("wood" = 2000) + /obj/item/attachable/stock/slavic name = "wooden stock" desc = "A non-standard heavy wooden stock for Slavic firearms." @@ -1942,8 +1983,8 @@ Defined in conflicts.dm of the #defines folder. aim_speed_mod = CONFIG_GET(number/slowdown_med) /obj/item/attachable/stock/rifle/collapsible - name = "\improper M41A folding stock" - desc = "The standard back end of any gun starting with \"M41\". Compatible with the M41A series, this stock reduces recoil and improves accuracy, but at a reduction to handling and agility. Also enhances the thwacking of things with the stock-end of the rifle." + name = "\improper M41A extendable stock" + desc = "The M41A's standard polymer extendable stock. When extended, it improves scatter, accuracy, and recoil, but slightly hinders agility." slot = "stock" melee_mod = 5 size_mod = 1 @@ -2093,9 +2134,9 @@ Defined in conflicts.dm of the #defines folder. flags_attach_features = NO_FLAGS hud_offset_mod = 2 -/obj/item/attachable/stock/mod88 - name = "\improper Mod 88 burst stock" - desc = "Increases the fire rate and burst amount on the Mod 88. Some versions act as a holster for the weapon when un-attached. This is a test item and should not be used in normal gameplay (yet)." +/obj/item/attachable/stock/vp70 + name = "\improper VP70 burst stock" + desc = "Increases the fire rate and burst amount on the VP70. Some versions act as a holster for the weapon when un-attached. This is a test item and should not be used in normal gameplay (yet)." icon_state = "mod88_stock" attach_icon = "mod88_stock_a" wield_delay_mod = WIELD_DELAY_FAST @@ -2104,7 +2145,7 @@ Defined in conflicts.dm of the #defines folder. size_mod = 2 melee_mod = 5 -/obj/item/attachable/stock/mod88/New() +/obj/item/attachable/stock/vp70/New() ..() //2h accuracy_mod = HIT_ACCURACY_MULT_TIER_3 @@ -2185,7 +2226,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel name = "M4RA barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "m4ra_barrel" attach_icon = "m4ra_barrel" slot = "special" @@ -2211,7 +2252,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel_custom name = "custom M4RA barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "m4ra_custom_barrel" attach_icon = "m4ra_custom_barrel" slot = "special" @@ -2242,7 +2283,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/upp_rpg_breech name = "HJRA-12 Breech" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "hjra_breech" attach_icon = "hjra_breech" @@ -2254,7 +2295,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/pkpbarrel name = "QYJ-72 Barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "uppmg_barrel" attach_icon = "uppmg_barrel" @@ -2266,7 +2307,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/pkpstock name = "QYJ-72 Stock" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "uppmg_stock" attach_icon = "uppmg_stock" @@ -2278,7 +2319,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/type88_barrel name = "Type-88 Barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "type88_barrel" attach_icon = "type88_barrel" @@ -2290,7 +2331,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/type73suppressor name = "Type 73 Integrated Suppressor" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "type73_suppressor" attach_icon = "type73_suppressor" @@ -2302,7 +2343,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/type71 name = "Type 71 Stock" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "type71_stock" attach_icon = "type71_stock" @@ -2431,7 +2472,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. @@ -2442,7 +2483,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 @@ -2651,7 +2692,7 @@ Defined in conflicts.dm of the #defines folder. name = "U1 grenade launcher" desc = "A weapon-mounted, reloadable grenade launcher." icon_state = "grenade" - attach_icon = "grenade_a" + attach_icon = "grenade" w_class = SIZE_MEDIUM current_rounds = 0 max_rounds = 3 @@ -2813,19 +2854,29 @@ Defined in conflicts.dm of the #defines folder. //For the Mk1 /obj/item/attachable/attached_gun/grenade/mk1 - name = "\improper MK1 underslung grenade launcher" - desc = "An older version of the classic underslung grenade launcher. Can store five grenades, and fire them farther, but fires them slower." + name = "\improper PN 30mm underslung grenade launcher" + desc = "Standard pump action underslung grenade launcher. Fits the M41A, four round tube, chambers one." icon_state = "grenade-mk1" attach_icon = "grenade-mk1_a" current_rounds = 0 max_rounds = 5 max_range = 10 - attachment_firing_delay = 30 + attachment_firing_delay = 15 /obj/item/attachable/attached_gun/grenade/mk1/recon icon_state = "green_grenade-mk1" attach_icon = "green_grenade-mk1_a" +/obj/item/attachable/attached_gun/grenade/m120 + name = "\improper PN/c 30mm underslung grenade launcher" + desc = "Compact variant of the PN pump action underslung grenade launcher. Fits the M120 shotgun, three round tube, chambers one." + icon_state = "grenade-mk1" + attach_icon = "grenade-mk1_a" + current_rounds = 0 + max_rounds = 3 + max_range = 10 + attachment_firing_delay = 15 + /obj/item/attachable/attached_gun/grenade/m203 //M16 GL, only DD have it. name = "\improper M203 Grenade Launcher" desc = "An antique underbarrel grenade launcher. Adopted in 1969 for the M16, it was made obsolete centuries ago; how its ended up here is a mystery to you. Holds only one propriatary 40mm grenade, does not have modern IFF systems, it won't pass through your friends." @@ -3003,7 +3054,7 @@ Defined in conflicts.dm of the #defines folder. name = "\improper U7 underbarrel shotgun" icon_state = "masterkey" attach_icon = "masterkey_a" - desc = "An ARMAT U7 tactical shotgun. Attaches to the underbarrel of most weapons. Only capable of loading up to five buckshot shells. Specialized for breaching into buildings." + desc = "An ARMAT U7 tactical shotgun. Attaches to the underbarrel of most weapons. Only capable of loading up to five buckshot shells. Specialized for breaching into buildings, shorter barrel reduces actual damage." w_class = SIZE_MEDIUM max_rounds = 5 current_rounds = 5 @@ -3050,7 +3101,7 @@ Defined in conflicts.dm of the #defines folder. name = "HME-12 underbarrel extinguisher" icon_state = "extinguisher" attach_icon = "extinguisher_a" - desc = "A Taiho-Technologies HME-12 underbarrel extinguisher. Attaches to the underbarrel of most weapons. Point at flame before applying pressure." + desc = "A Taiho-Technologies HME-12 underbarrel extinguisher, a miniaturization of a complex used by firefighters. Attaches to the underbarrel of most weapons, point at fire to remove fire." w_class = SIZE_MEDIUM slot = "under" flags_attach_features = ATTACH_REMOVABLE|ATTACH_ACTIVATION|ATTACH_WEAPON|ATTACH_MELEE @@ -3190,6 +3241,10 @@ Defined in conflicts.dm of the #defines folder. accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_3 scatter_unwielded_mod = SCATTER_AMOUNT_TIER_10 +/obj/item/attachable/verticalgrip/upp + name = "RK-5 Vertical Grip" + desc = "Sturdy grip positioned at optimal place offers enhanced stability in rapid fire. Increases weapon size, penalizes one handed fire, improves scatter and accuracy while wielded." + /obj/item/attachable/angledgrip name = "angled grip" desc = "An angled foregrip that improves weapon ergonomics resulting in faster wielding time. \nHowever, it also increases weapon size." @@ -3201,6 +3256,10 @@ Defined in conflicts.dm of the #defines folder. slot = "under" pixel_shift_x = 20 +/obj/item/attachable/angledgrip/upp + name = "RK-9 Angled Grip" + desc = "Ergonomic grip decreases time for shouldering the weapon. Increases weapon size, accelerates wield speed." + /obj/item/attachable/gyro name = "gyroscopic stabilizer" desc = "A set of weights and balances to stabilize the weapon when fired with one hand. Slightly decreases firing speed." @@ -3228,8 +3287,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/lasersight name = "laser sight" - desc = "A laser sight that attaches to the underside of most weapons. Increases accuracy and decreases scatter, especially while one-handed." - desc_lore = "A standard visible-band laser module designated as the AN/PEQ-42 Laser Sight. Can be mounted onto any firearm that has a lower rail large enough to accommodate it." + desc = "Standard issue visible-band underbarrel laser module, type designation AN/PEQ-42. Increases accuracy and decreases scatter, especially while one-handed. Also improves handling on the move." icon = 'icons/obj/items/weapons/guns/attachments/under.dmi' icon_state = "lasersight" attach_icon = "lasersight_a" @@ -3245,6 +3303,14 @@ Defined in conflicts.dm of the #defines folder. scatter_unwielded_mod = -SCATTER_AMOUNT_TIER_9 accuracy_unwielded_mod = HIT_ACCURACY_MULT_TIER_1 +/obj/item/attachable/lasersight/upp + name = "Zvezda Laser Module" + desc = "Visible band 512nm green laser, compatible with NVG and IR. Bears striking resemblance to an old Weyland Yutani offering... Decreases scatter, especially onehanded, slightly boosts accuracy. " + icon = 'icons/obj/items/weapons/guns/attachments/under.dmi' + icon_state = "lasersight_upp" + attach_icon = "lasersight_upp_a" + pixel_shift_x = 15 + pixel_shift_y = 18 /obj/item/attachable/bipod name = "bipod" diff --git a/code/modules/projectiles/guns/pistols.dm b/code/modules/projectiles/guns/pistols.dm index ae8bef53f6..d3fff0e05d 100644 --- a/code/modules/projectiles/guns/pistols.dm +++ b/code/modules/projectiles/guns/pistols.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' reload_sound = 'sound/weapons/flipblade.ogg' cocked_sound = 'sound/weapons/gun_pistol_cocked.ogg' + empty_sound = 'sound/weapons/gun_empty.ogg' matter = list("metal" = 2000) flags_equip_slot = SLOT_WAIST @@ -48,12 +49,13 @@ /obj/item/weapon/gun/pistol/m4a3 name = "\improper M4A3 service pistol" - desc = "An M4A3 Service Pistol, once the standard issue sidearm of the Colonial Marines but has recently been replaced with the Weyland Yutani 88 Mod 4 combat pistol. Fires 9mm pistol rounds." + desc = "The recently replaced semi-automatic 9mm service pistol of the USCM. It remains popular among marines due to its light trigger and familiarity." icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "m4a3" item_state = "m4a3" + fire_sound = "vp70" current_mag = /obj/item/ammo_magazine/pistol - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED attachable_allowed = list( /obj/item/attachable/suppressor, /obj/item/attachable/reddot, @@ -87,7 +89,7 @@ /obj/item/weapon/gun/pistol/m4a3/custom name = "\improper M4A3 custom pistol" - desc = "This M4A3 sports a nickel finish and faux ivory grips. This one is a slightly customized variant produced by a well known gunsmith on Gateway Station. These are commonly purchased by low level enlisted men and junior officers who have nothing better to spend their salary on. Chambered in 9mm." + desc = "Sporting a nickel finish and possibly faux ivory grips, this 9mm pistol has been customized by a well known gunsmith on Gateway Station. It offers no tactical advantages." icon_state = "m4a3c" item_state = "m4a3c" @@ -102,37 +104,89 @@ damage_mult = BASE_BULLET_DAMAGE_MULT +//VP70 - Counterpart to M1911, offers burst and capacity ine exchange of low accuracy and damage. + +/obj/item/weapon/gun/pistol/vp70 + name = "\improper VP70 M5 service pistol" + desc = "Standard issue semi-automatic USCM service pistol. Recently replacing the M4A3, it retains its predecessor's 9mm chambering but offers both a higher magazine capacity and a 3-round burst selector." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "vp70" + item_state = "vp70" + fire_sound = "vp70" + firesound_volume = 20 + reload_sound = 'sound/weapons/gun_vp70_reload.ogg' + unload_sound = 'sound/weapons/gun_vp70_unload.ogg' + current_mag = /obj/item/ammo_magazine/pistol/vp70 + force = 8 + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/heavy_barrel, + /obj/item/attachable/compensator, + /obj/item/attachable/flashlight, + /obj/item/attachable/reflex, + /obj/item/attachable/reddot, + /obj/item/attachable/burstfire_assembly, + /obj/item/attachable/lasersight, + /obj/item/attachable/flashlight/grip, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/stock/vp70, + ) + +/obj/item/weapon/gun/pistol/vp70/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 27, "muzzle_y" = 21,"rail_x" = 8, "rail_y" = 22, "under_x" = 21, "under_y" = 18, "stock_x" = 18, "stock_y" = 15) + + +/obj/item/weapon/gun/pistol/vp70/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_11) + set_burst_amount(BURST_AMOUNT_TIER_3) + set_burst_delay(FIRE_DELAY_TIER_11) + accuracy_mult = BASE_ACCURACY_MULT + accuracy_mult_unwielded = BASE_ACCURACY_MULT + scatter = SCATTER_AMOUNT_TIER_7 + burst_scatter_mult = SCATTER_AMOUNT_TIER_7 + scatter_unwielded = SCATTER_AMOUNT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT + + +/obj/item/weapon/gun/pistol/vp70/training + current_mag = /obj/item/ammo_magazine/pistol/vp70/rubber + + +/obj/item/weapon/gun/pistol/vp70/flashlight/handle_starting_attachment() + ..() + var/obj/item/attachable/flashlight/flashlight = new(src) + flashlight.Attach(src) + update_attachable(flashlight.slot) + //------------------------------------------------------- -//M4A3 45 //Inspired by the 1911 -//deprecated /obj/item/weapon/gun/pistol/m1911 - name = "\improper M1911 service pistol" - desc = "A timeless classic since the first World War. Once standard issue for the USCM, now back order only. Chambered in .45 ACP. Unfortunately, due to the progression of IFF technology, M1911 .45 ACP is NOT compatible with the SU-6." + name = "\improper M1911 pistol" + desc = "Despite never being an official service pistol of the USCM, its .45 ACP chambering and cultural connection to the Corps's predecessor keeps it a popular pistol, enough so that a large quantity are kept on backorder." icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "m4a345" item_state = "m4a3" - + fire_sound = 'sound/weapons/gun_vp78_v2.ogg' current_mag = /obj/item/ammo_magazine/pistol/m1911 - /obj/item/weapon/gun/pistol/m1911/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 20,"rail_x" = 10, "rail_y" = 22, "under_x" = 21, "under_y" = 17, "stock_x" = 21, "stock_y" = 17) - /obj/item/weapon/gun/pistol/m1911/set_gun_config_values() ..() set_fire_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 - burst_scatter_mult = SCATTER_AMOUNT_TIER_6 - scatter_unwielded = SCATTER_AMOUNT_TIER_6 + scatter_unwielded = SCATTER_AMOUNT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_5 - + recoil_unwielded = RECOIL_AMOUNT_TIER_4 /obj/item/weapon/gun/pistol/m1911/socom - name = "\improper M48A4 service pistol" + name = "\improper M48A4 pistol" desc = "A timeless classic since the first World War, the M1911A1 has limited use with the USCM, and is often used as a sidearm by non-governmental bodies due to its reliability. This is a modernized version with an ammo counter and a polymer grip, designated M48A4. Chambered in .45 ACP." icon_state = "m4a345_s" item_state = "m4a3" @@ -146,118 +200,83 @@ scatter = SCATTER_AMOUNT_TIER_8 burst_scatter_mult = SCATTER_AMOUNT_TIER_6 scatter_unwielded = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_5 /obj/item/weapon/gun/pistol/m1911/socom/equipped starting_attachment_types = list(/obj/item/attachable/suppressor, /obj/item/attachable/lasersight, /obj/item/attachable/reflex) -//------------------------------------------------------- -//Beretta 92FS, the gun McClane carries around in Die Hard. Very similar to the service pistol, all around. - -/obj/item/weapon/gun/pistol/b92fs - name = "\improper Beretta 92FS pistol" - desc = "A popular police firearm in the 20th century, often employed by hardboiled cops while confronting terrorists. A classic of its time, chambered in 9mm." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' - icon_state = "b92fs" - item_state = "b92fs" - current_mag = /obj/item/ammo_magazine/pistol/b92fs - -/obj/item/weapon/gun/pistol/b92fs/Initialize(mapload, spawn_empty) - . = ..() - if(prob(10)) - name = "\improper Beretta 93FR burst pistol" - desc += " This specific pistol is a burst-fire, limited availability, police-issue 93FR type Beretta. Not too accurate, aftermarket modififcations are recommended." - var/obj/item/attachable/burstfire_assembly/BFA = new(src) - BFA.flags_attach_features &= ~ATTACH_REMOVABLE - BFA.Attach(src) - update_attachable(BFA.slot) - add_firemode(GUN_FIREMODE_BURSTFIRE) - -/obj/item/weapon/gun/pistol/b92fs/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 20,"rail_x" = 10, "rail_y" = 22, "under_x" = 21, "under_y" = 17, "stock_x" = 21, "stock_y" = 17) - -/obj/item/weapon/gun/pistol/b92fs/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_12) - accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 - accuracy_mult_unwielded = BASE_ACCURACY_MULT - scatter = SCATTER_AMOUNT_TIER_7 - burst_scatter_mult = SCATTER_AMOUNT_TIER_5 - scatter_unwielded = SCATTER_AMOUNT_TIER_7 - damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_2 - - -//------------------------------------------------------- -//DEAGLE //This one is obvious. +//.45 MARSHALS PISTOL //Inspired by the Browning Hipower +// rebalanced - singlefire, very strong bullets but slow to fire and heavy recoil +// redesigned - now rejected USCM sidearm model, utilized by Colonial Marshals and other stray groups. -/obj/item/weapon/gun/pistol/heavy - name = "vintage Desert Eagle" - desc = "A bulky 50 caliber pistol with a serious kick, probably taken from some museum somewhere. This one is engraved, 'Peace through superior firepower.'" +/obj/item/weapon/gun/pistol/highpower + name = "\improper HG 45 'Aguila' pistol" + desc = "A semi-automatic Henjin-Garcia design chambered in .45 ACP that is slowly replacing the Office of the Colonial Marshals's Spearhead revolver." icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' - icon_state = "deagle" - item_state = "deagle" - fire_sound = 'sound/weapons/gun_DE50.ogg' - firesound_volume = 40 - current_mag = /obj/item/ammo_magazine/pistol/heavy - force = 13 - + icon_state = "highpower" + item_state = "highpower" + fire_sound = 'sound/weapons/gun_vp78_v2.ogg' + current_mag = /obj/item/ammo_magazine/pistol/highpower + force = 15 attachable_allowed = list( - /obj/item/attachable/reddot, - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, + /obj/item/attachable/suppressor, // Barrel + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp_replica, + /obj/item/attachable/bayonet/upp, /obj/item/attachable/extended_barrel, /obj/item/attachable/heavy_barrel, - /obj/item/attachable/lasersight, /obj/item/attachable/compensator, + /obj/item/attachable/reddot, // Rail + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/scope, + /obj/item/attachable/scope/mini, + /obj/item/attachable/gyro, // Under + /obj/item/attachable/lasersight, + /obj/item/attachable/burstfire_assembly, ) +/obj/item/weapon/gun/pistol/highpower/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 29, "muzzle_y" = 20,"rail_x" = 6, "rail_y" = 22, "under_x" = 20, "under_y" = 15, "stock_x" = 0, "stock_y" = 0) -/obj/item/weapon/gun/pistol/heavy/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 20,"rail_x" = 17, "rail_y" = 21, "under_x" = 20, "under_y" = 17, "stock_x" = 20, "stock_y" = 17) - - -/obj/item/weapon/gun/pistol/heavy/set_gun_config_values() +/obj/item/weapon/gun/pistol/highpower/set_gun_config_values() ..() - set_fire_delay(FIRE_DELAY_TIER_5) - set_burst_amount(BURST_AMOUNT_TIER_2) - set_burst_delay(FIRE_DELAY_TIER_8) - accuracy_mult = BASE_ACCURACY_MULT - accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 + set_fire_delay(FIRE_DELAY_TIER_7) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 - burst_scatter_mult = SCATTER_AMOUNT_TIER_6 - scatter_unwielded = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_1 - recoil = RECOIL_AMOUNT_TIER_5 - recoil_unwielded = RECOIL_AMOUNT_TIER_3 + scatter_unwielded = SCATTER_AMOUNT_TIER_4 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_5 + recoil_unwielded = RECOIL_AMOUNT_TIER_4 -/obj/item/weapon/gun/pistol/heavy/co - name = "polished vintage Desert Eagle" - desc = "The handcannon that needs no introduction, the .50-caliber Desert Eagle is expensive, unwieldy, and extremely heavy for a pistol. However, it makes up for it with its powerful shots capable of stopping a bear dead in its tracks. Iconic, glamorous, and above all, extremely deadly." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' - icon_state = "c_deagle" - item_state = "c_deagle" - base_gun_icon = "c_deagle" - current_mag = /obj/item/ammo_magazine/pistol/heavy/super/highimpact - black_market_value = 100 +/obj/item/weapon/gun/pistol/highpower/black + name = "\improper HG 45 'Marina' pistol" + current_mag = /obj/item/ammo_magazine/pistol/highpower/black + icon_state = "highpower_b" + item_state = "highpower_b" + desc = "A semi-automatic Henjin-Garcia design chambered in .45 ACP that is slowly replacing the Office of the Colonial Marshals's Spearhead revolver. Unlike its more common siblings, this variant was marketed and successfully sold in small quantities to the USCM." -/obj/item/weapon/gun/pistol/heavy/co/set_gun_config_values() +/obj/item/weapon/gun/pistol/highpower/automag + name = "\improper HG 44 'Automag' pistol" + desc = "A semi-automatic Henjin-Garcia design chambered in .44 Magnum that was largely discontinued in favour of the HG 45 configuration chambered in .45 ACP." + current_mag = /obj/item/ammo_magazine/pistol/highpower/automag + icon_state = "highpower_tac" + item_state = "highpower_tac" + fire_sound = 'sound/weapons/gun_kt42.ogg' + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED + +/obj/item/weapon/gun/pistol/highpower/automag/set_gun_config_values() ..() - set_fire_delay(FIRE_DELAY_TIER_5) - accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 - accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 - scatter = SCATTER_AMOUNT_TIER_6 - burst_scatter_mult = SCATTER_AMOUNT_TIER_4 - scatter_unwielded = SCATTER_AMOUNT_TIER_3 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_8 - recoil = RECOIL_AMOUNT_TIER_3 - recoil_unwielded = RECOIL_AMOUNT_TIER_2 + set_fire_delay(FIRE_DELAY_TIER_6) + recoil = RECOIL_AMOUNT_TIER_5 + recoil_unwielded = RECOIL_AMOUNT_TIER_3 -/obj/item/weapon/gun/pistol/heavy/co/gold - name = "golden vintage Desert Eagle" - desc = "A Desert Eagle anodized in gold and adorned with rosewood grips. The living definition of ostentatious, it's flashy, unwieldy, tremendously heavy, and kicks like a mule. But as a symbol of power, there's nothing like it." - icon_state = "g_deagle" - item_state = "g_deagle" - base_gun_icon = "g_deagle" +/obj/item/weapon/gun/pistol/highpower/automag/tactical + name = "\improper HG 44 'Automag' pistol" + desc = "A semi-automatic Henjin-Garcia design chambered in .44 Magnum that was largely discontinued in favour of the HG 45 configuration chambered in .45 ACP." + starting_attachment_types = list(/obj/item/attachable/suppressor, /obj/item/attachable/lasersight, /obj/item/attachable/reflex) + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED //------------------------------------------------------- //NP92 pistol @@ -265,13 +284,13 @@ /obj/item/weapon/gun/pistol/np92 name = "\improper NP92 pistol" - desc = "The standard issue sidearm of the UPP. The NP92 is a small but powerful sidearm, well-liked by most it is issued to, although some prefer the weapon it was meant to replace, the Type 73. Takes 12 round magazines." + desc = "The standard issue sidearm of the UPP. Chambered in 9x18mm Makarov, The NP92 is a small versatile pistol." icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' icon_state = "np92" item_state = "np92" - fire_sound = "88m4" + fire_sound = "vp70" current_mag = /obj/item/ammo_magazine/pistol/np92 - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED attachable_allowed = list( /obj/item/attachable/suppressor, /obj/item/attachable/reddot, @@ -301,7 +320,7 @@ inherent_traits = list(TRAIT_GUN_SILENCED) fire_sound = "gun_silenced" current_mag = /obj/item/ammo_magazine/pistol/np92/suppressed - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED attachable_allowed = list( /obj/item/attachable/reddot, /obj/item/attachable/reflex, @@ -317,13 +336,14 @@ /obj/item/weapon/gun/pistol/t73 name = "\improper Type 73 pistol" - desc = "The Type 73 is the once-standard issue sidearm of the UPP. Replaced by the NP92 in UPP use, it remains popular with veteran UPP troops due to familiarity and extra power. Due to an extremely large amount being produced, they tend to end up in the hands of forces attempting to arm themselves on a budget. Users include the Union of Progressive Peoples, Colonial Liberation Front, and just about any mercenary or pirate group out there." + desc = "Once the standard issue sidearm of the UPP it has since been replaced by the smaller NP92. Chambered with 7.62x25mm Tokarev, it remains popular with veterans due to its extra firepower." icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' icon_state = "tt" item_state = "tt" - fire_sound = 'sound/weapons/gun_tt.ogg' + fire_sound = 'sound/weapons/gun_vp78_v2.ogg' +// fire_sound = 'sound/weapons/gun_tt.ogg' current_mag = /obj/item/ammo_magazine/pistol/t73 - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED attachable_allowed = list( /obj/item/attachable/reddot, /obj/item/attachable/reflex, @@ -353,7 +373,7 @@ icon_state = "ttb" item_state = "ttb" current_mag = /obj/item/ammo_magazine/pistol/t73_impact - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED accepted_ammo = list( /obj/item/ammo_magazine/pistol/t73, /obj/item/ammo_magazine/pistol/t73_impact, @@ -412,7 +432,6 @@ //------------------------------------------------------- -//PIZZACHIMP PROTECTION /obj/item/weapon/gun/pistol/holdout name = "holdout pistol" @@ -456,20 +475,17 @@ //------------------------------------------------------- //CLF HOLDOUT PISTOL /obj/item/weapon/gun/pistol/clfpistol - name = "D18 Hummingbird Pistol" - desc = "The D18 Hummingbird Pistol was produced in the mid-2170s as a cheap and concealable firearm for CLF Sleeper Cell agents for assassinations and ambushes, and is able to be concealed in shoes and workboots." + name = "Hummingbird pistol" + desc = "Chambering .50 AE catridges this gun is as compact as it could possibly be. Rumored to be designed and produced by the UPP before being distributed into UA space for arming sleeper cells with throwaway weapons capable of penetrating standard M3 pattern armor." icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' icon_state = "m43" item_state = "m43" - flags_gun_features = GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED fire_sound = 'sound/weapons/gun_m43.ogg' current_mag = /obj/item/ammo_magazine/pistol/clfpistol w_class = SIZE_TINY force = 5 - attachable_allowed = list( - /obj/item/attachable/suppressor, - /obj/item/attachable/flashlight, - ) + attachable_allowed = null /obj/item/weapon/gun/pistol/clfpistol/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 20,"rail_x" = 10, "rail_y" = 21, "under_x" = 21, "under_y" = 17, "stock_x" = 21, "stock_y" = 17) @@ -483,163 +499,12 @@ burst_scatter_mult = SCATTER_AMOUNT_TIER_5 scatter_unwielded = SCATTER_AMOUNT_TIER_8 scatter = SCATTER_AMOUNT_TIER_9 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_4 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_10 + recoil = RECOIL_AMOUNT_TIER_2 + recoil_unwielded = RECOIL_AMOUNT_TIER_1 //------------------------------------------------------- -//.45 MARSHALS PISTOL //Inspired by the Browning Hipower -// rebalanced - singlefire, very strong bullets but slow to fire and heavy recoil -// redesigned - now rejected USCM sidearm model, utilized by Colonial Marshals and other stray groups. - -/obj/item/weapon/gun/pistol/highpower - name = "\improper MK-45 'High-Power' Automagnum" - desc = "Originally designed as a replacement for the USCM's M44 combat revolver, it was rejected at the last minute by a committee, citing its need to be cocked after every loaded magazine to be too cumbersone and antiquated. The design has recently been purchased by the Henjin-Garcia company, refitted for .45 ACP, and sold to the Colonial Marshals and other various unscrupulous armed groups." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' - icon_state = "highpower" - item_state = "highpower" - fire_sound = 'sound/weapons/gun_kt42.ogg' - current_mag = /obj/item/ammo_magazine/pistol/highpower - force = 15 - attachable_allowed = list( - /obj/item/attachable/suppressor, // Barrel - /obj/item/attachable/bayonet, - /obj/item/attachable/bayonet/upp_replica, - /obj/item/attachable/bayonet/upp, - /obj/item/attachable/extended_barrel, - /obj/item/attachable/heavy_barrel, - /obj/item/attachable/compensator, - /obj/item/attachable/reddot, // Rail - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/scope, - /obj/item/attachable/scope/mini, - /obj/item/attachable/gyro, // Under - /obj/item/attachable/lasersight, - /obj/item/attachable/burstfire_assembly, - ) - /// This weapon needs to be manually racked every time a new magazine is loaded. I tried and failed to touch gun shitcode so this will do. - var/manually_slided = FALSE - -/obj/item/weapon/gun/pistol/highpower/Initialize(mapload, spawn_empty) - . = ..() - manually_slided = TRUE - -/obj/item/weapon/gun/pistol/highpower/Fire(atom/target, mob/living/user, params, reflex = 0, dual_wield) - if(!manually_slided) - click_empty() - to_chat(user, SPAN_DANGER("\The [src] makes a clicking noise! You need to manually rack the slide after loading in a new magazine!")) - return NONE - return ..() - -/obj/item/weapon/gun/pistol/highpower/unique_action(mob/user) - if(!manually_slided) - user.visible_message(SPAN_NOTICE("[user] racks \the [src]'s slide."), SPAN_NOTICE("You rack \the [src]'s slide, loading the next bullet in.")) - manually_slided = TRUE - cock_gun(user, TRUE) - return - ..() - -/obj/item/weapon/gun/pistol/highpower/cock_gun(mob/user, manual = FALSE) - if(manual) - ..() - else return - -/obj/item/weapon/gun/pistol/highpower/reload(mob/user, obj/item/ammo_magazine/magazine) - //reset every time its reloaded - manually_slided = FALSE - ..() - -/obj/item/weapon/gun/pistol/highpower/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 29, "muzzle_y" = 20,"rail_x" = 6, "rail_y" = 22, "under_x" = 20, "under_y" = 15, "stock_x" = 0, "stock_y" = 0) - -/obj/item/weapon/gun/pistol/highpower/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_5) - accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 - accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_3 - scatter = SCATTER_AMOUNT_TIER_6 - scatter_unwielded = SCATTER_AMOUNT_TIER_4 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_8 - recoil = RECOIL_AMOUNT_TIER_4 - recoil_unwielded = RECOIL_AMOUNT_TIER_4 - -//also comes in.... BLAPCK -//the parent has a blueish tint, making it look best for civilian usage (colonies, marshals). this one has a black tint on its metal, making it best for military groups like VAIPO, elite mercs, etc. -// black tinted magazines also included -/obj/item/weapon/gun/pistol/highpower/black - current_mag = /obj/item/ammo_magazine/pistol/highpower/black - icon_state = "highpower_b" - item_state = "highpower_b" - -//unimplemented -/obj/item/weapon/gun/pistol/highpower/tactical - name = "\improper MK-44 SOCOM Automagnum" - desc = "Originally designed as a replacement for the USCM's M44 combat revolver, it was rejected at the last minute by a committee, citing its need to be cocked after every loaded magazine to be too cumbersone and antiquated. The design has recently been purchased by the Henjin-Garcia company and sold to the Colonial Marshals and other various unscrupulous armed groups. This one has a sleek, dark design." - current_mag = /obj/item/ammo_magazine/pistol/highpower/black - icon_state = "highpower_tac" - item_state = "highpower_tac" - starting_attachment_types = list(/obj/item/attachable/suppressor, /obj/item/attachable/lasersight, /obj/item/attachable/reflex) - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER - -//------------------------------------------------------- -//mod88 based off VP70 - Counterpart to M1911, offers burst and capacity ine exchange of low accuracy and damage. - -/obj/item/weapon/gun/pistol/mod88 - name = "\improper 88 Mod 4 combat pistol" - desc = "Standard issue USCM firearm. Also found in the hands of Weyland-Yutani PMC teams. Fires 9mm armor shredding rounds and is capable of 3-round burst." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "88m4" - item_state = "88m4" - fire_sound = "88m4" - firesound_volume = 20 - reload_sound = 'sound/weapons/gun_88m4_reload.ogg' - unload_sound = 'sound/weapons/gun_88m4_unload.ogg' - current_mag = /obj/item/ammo_magazine/pistol/mod88/normalpoint - force = 8 - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER - attachable_allowed = list( - /obj/item/attachable/suppressor, - /obj/item/attachable/extended_barrel, - /obj/item/attachable/heavy_barrel, - /obj/item/attachable/compensator, - /obj/item/attachable/flashlight, - /obj/item/attachable/reflex, - /obj/item/attachable/reddot, - /obj/item/attachable/burstfire_assembly, - /obj/item/attachable/lasersight, - /obj/item/attachable/flashlight/grip, - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/stock/mod88, - ) - -/obj/item/weapon/gun/pistol/mod88/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 27, "muzzle_y" = 21,"rail_x" = 8, "rail_y" = 22, "under_x" = 21, "under_y" = 18, "stock_x" = 18, "stock_y" = 15) - -/obj/item/weapon/gun/pistol/mod88/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_11) - set_burst_amount(BURST_AMOUNT_TIER_3) - set_burst_delay(FIRE_DELAY_TIER_11) - accuracy_mult = BASE_ACCURACY_MULT - accuracy_mult_unwielded = BASE_ACCURACY_MULT - scatter = SCATTER_AMOUNT_TIER_7 - burst_scatter_mult = SCATTER_AMOUNT_TIER_7 - scatter_unwielded = SCATTER_AMOUNT_TIER_7 - damage_mult = BASE_BULLET_DAMAGE_MULT - - -/obj/item/weapon/gun/pistol/mod88/training - current_mag = /obj/item/ammo_magazine/pistol/mod88/rubber - - -/obj/item/weapon/gun/pistol/mod88/flashlight/handle_starting_attachment() - ..() - var/obj/item/attachable/flashlight/flashlight = new(src) - flashlight.Attach(src) - update_attachable(flashlight.slot) - -//------------------------------------------------------- // ES-4 - Basically a CL-exclusive reskin of the 88 mod 4 that only uses less-lethal ammo. /obj/item/weapon/gun/pistol/es4 @@ -650,8 +515,8 @@ item_state = "es4" fire_sound = 'sound/weapons/gun_es4.ogg' firesound_volume = 20 - reload_sound = 'sound/weapons/gun_88m4_reload.ogg' - unload_sound = 'sound/weapons/gun_88m4_unload.ogg' + reload_sound = 'sound/weapons/gun_vp70_reload.ogg' + unload_sound = 'sound/weapons/gun_vp70_unload.ogg' current_mag = /obj/item/ammo_magazine/pistol/es4 force = 8 muzzle_flash = "muzzle_flash_blue" @@ -685,7 +550,6 @@ icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "vp78" item_state = "vp78" - fire_sound = 'sound/weapons/gun_vp78_v2.ogg' reload_sound = 'sound/weapons/gun_vp78_reload.ogg' unload_sound = 'sound/weapons/gun_vp78_unload.ogg' @@ -762,6 +626,113 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe recoil_unwielded = RECOIL_AMOUNT_TIER_3 +//------------------------------------------------------- +//Beretta 92FS, the gun McClane carries around in Die Hard. Very similar to the service pistol, all around. + +/obj/item/weapon/gun/pistol/b92fs + name = "\improper Beretta 92FS pistol" + desc = "A popular police firearm in the 20th century, often employed by hardboiled cops while confronting terrorists. A classic of its time, chambered in 9mm." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' + icon_state = "b92fs" + item_state = "b92fs" + current_mag = /obj/item/ammo_magazine/pistol/b92fs + +/obj/item/weapon/gun/pistol/b92fs/Initialize(mapload, spawn_empty) + . = ..() + if(prob(10)) + name = "\improper Beretta 93FR burst pistol" + desc += " This specific pistol is a burst-fire, limited availability, police-issue 93FR type Beretta. Not too accurate, aftermarket modififcations are recommended." + var/obj/item/attachable/burstfire_assembly/BFA = new(src) + BFA.flags_attach_features &= ~ATTACH_REMOVABLE + BFA.Attach(src) + update_attachable(BFA.slot) + add_firemode(GUN_FIREMODE_BURSTFIRE) + +/obj/item/weapon/gun/pistol/b92fs/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 20,"rail_x" = 10, "rail_y" = 22, "under_x" = 21, "under_y" = 17, "stock_x" = 21, "stock_y" = 17) + +/obj/item/weapon/gun/pistol/b92fs/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_12) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + scatter = SCATTER_AMOUNT_TIER_7 + burst_scatter_mult = SCATTER_AMOUNT_TIER_5 + scatter_unwielded = SCATTER_AMOUNT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_2 + + +//------------------------------------------------------- +//DEAGLE //This one is obvious. + +/obj/item/weapon/gun/pistol/heavy + name = "vintage Desert Eagle" + desc = "A bulky 50 caliber pistol with a serious kick, probably taken from some museum somewhere. This one is engraved, 'Peace through superior firepower.'" + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' + icon_state = "deagle" + item_state = "deagle" + fire_sound = 'sound/weapons/gun_DE50.ogg' + firesound_volume = 40 + current_mag = /obj/item/ammo_magazine/pistol/heavy + force = 13 + + attachable_allowed = list( + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/heavy_barrel, + /obj/item/attachable/lasersight, + /obj/item/attachable/compensator, + ) + + +/obj/item/weapon/gun/pistol/heavy/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 20,"rail_x" = 17, "rail_y" = 21, "under_x" = 20, "under_y" = 17, "stock_x" = 20, "stock_y" = 17) + + +/obj/item/weapon/gun/pistol/heavy/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_5) + set_burst_amount(BURST_AMOUNT_TIER_2) + set_burst_delay(FIRE_DELAY_TIER_8) + accuracy_mult = BASE_ACCURACY_MULT + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 + scatter = SCATTER_AMOUNT_TIER_6 + burst_scatter_mult = SCATTER_AMOUNT_TIER_6 + scatter_unwielded = SCATTER_AMOUNT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_1 + recoil = RECOIL_AMOUNT_TIER_5 + recoil_unwielded = RECOIL_AMOUNT_TIER_3 + +/obj/item/weapon/gun/pistol/heavy/co + name = "polished vintage Desert Eagle" + desc = "The handcannon that needs no introduction, the .50-caliber Desert Eagle is expensive, unwieldy, and extremely heavy for a pistol. However, it makes up for it with its powerful shots capable of stopping a bear dead in its tracks. Iconic, glamorous, and above all, extremely deadly." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' + icon_state = "c_deagle" + item_state = "c_deagle" + base_gun_icon = "c_deagle" + current_mag = /obj/item/ammo_magazine/pistol/heavy/super/highimpact + black_market_value = 100 + +/obj/item/weapon/gun/pistol/heavy/co/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_5) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 + scatter = SCATTER_AMOUNT_TIER_6 + burst_scatter_mult = SCATTER_AMOUNT_TIER_4 + scatter_unwielded = SCATTER_AMOUNT_TIER_3 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_8 + recoil = RECOIL_AMOUNT_TIER_3 + recoil_unwielded = RECOIL_AMOUNT_TIER_2 + +/obj/item/weapon/gun/pistol/heavy/co/gold + name = "golden vintage Desert Eagle" + desc = "A Desert Eagle anodized in gold and adorned with rosewood grips. The living definition of ostentatious, it's flashy, unwieldy, tremendously heavy, and kicks like a mule. But as a symbol of power, there's nothing like it." + icon_state = "g_deagle" + item_state = "g_deagle" + base_gun_icon = "g_deagle" //------------------------------------------------------- //The first rule of monkey pistol is we don't talk about monkey pistol. diff --git a/code/modules/projectiles/guns/revolvers.dm b/code/modules/projectiles/guns/revolvers.dm index 76e3e07106..91e298cb25 100644 --- a/code/modules/projectiles/guns/revolvers.dm +++ b/code/modules/projectiles/guns/revolvers.dm @@ -293,14 +293,14 @@ icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "m44r" item_state = "m44r" - + fire_sounds = list('sound/weapons/gun_cmb_1.ogg', 'sound/weapons/gun_cmb_2.ogg') cocked_sound = 'sound/weapons/gun_revolver_spun.ogg' unload_sound = 'sound/weapons/handling/pkd_open_chamber.ogg' chamber_close_sound = 'sound/weapons/handling/pkd_close_chamber.ogg' current_mag = /obj/item/ammo_magazine/internal/revolver/m44 force = 8 - flags_gun_features = GUN_INTERNAL_MAG|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + flags_gun_features = GUN_INTERNAL_MAG|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED attachable_allowed = list( /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp, @@ -405,7 +405,7 @@ name = "\improper PKL 'Double' Blaster" desc = "Sold to civilians and private corporations, the Pflager Katsumata Series-L Blaster is a premium double barrel sidearm that can fire two rounds at the same time. Usually found in the hands of combat synths and replicants, this hand cannon is worth more than the combined price of three Emanators. Originally commissioned by the Wallace Corporation, it has since been released onto public market as a luxury firearm." icon_state = "pkd_double" - item_state = "88m4" //placeholder + item_state = "vp70" //placeholder attachable_allowed = list( /obj/item/attachable/flashlight, @@ -699,18 +699,20 @@ //------------------------------------------------------- //MARSHALS REVOLVER //Spearhead exists in Alien cannon. -/obj/item/weapon/gun/revolver/cmb - name = "\improper CMB Spearhead autorevolver" - desc = "An automatic revolver chambered in .357, often loaded with hollowpoint on spaceships to prevent hull damage. Commonly issued to Colonial Marshals." +/obj/item/weapon/gun/revolver/spearhead + name = "\improper Spearhead Armoury revolver" + desc = "A sleek high-quality revolver designed by Spearhead Armoury chambered in .357 commonly issued to Colonial Marshals." icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' icon_state = "spearhead" item_state = "spearhead" fire_sound = null fire_sounds = list('sound/weapons/gun_cmb_1.ogg', 'sound/weapons/gun_cmb_2.ogg') fire_rattle = 'sound/weapons/gun_cmb_rattle.ogg' - cylinder_click = list('sound/weapons/handling/gun_cmb_click1.ogg', 'sound/weapons/handling/gun_cmb_click2.ogg') - current_mag = /obj/item/ammo_magazine/internal/revolver/cmb/hollowpoint - force = 12 + //cylinder_click = list('sound/weapons/handling/gun_cmb_click1.ogg', 'sound/weapons/handling/gun_cmb_click2.ogg') + unload_sound = 'sound/weapons/handling/pkd_open_chamber.ogg' + chamber_close_sound = 'sound/weapons/handling/pkd_close_chamber.ogg' + current_mag = /obj/item/ammo_magazine/internal/revolver/spearhead + force = 15 attachable_allowed = list( /obj/item/attachable/suppressor, // Muzzle /obj/item/attachable/extended_barrel, @@ -724,21 +726,21 @@ /obj/item/attachable/lasersight, ) -/obj/item/weapon/gun/revolver/cmb/click_empty(mob/user) +/obj/item/weapon/gun/revolver/spearhead/click_empty(mob/user) if(user) to_chat(user, SPAN_WARNING("*click*")) playsound(user, pick('sound/weapons/handling/gun_cmb_click1.ogg', 'sound/weapons/handling/gun_cmb_click2.ogg'), 25, 1, 5) //5 tile range else playsound(src, pick('sound/weapons/handling/gun_cmb_click1.ogg', 'sound/weapons/handling/gun_cmb_click2.ogg'), 25, 1, 5) -/obj/item/weapon/gun/revolver/cmb/Fire(atom/target, mob/living/user, params, reflex = 0, dual_wield) +/obj/item/weapon/gun/revolver/spearhead/Fire(atom/target, mob/living/user, params, reflex = 0, dual_wield) playsound('sound/weapons/gun_cmb_bass.ogg') // badass shooting bass return ..() -/obj/item/weapon/gun/revolver/cmb/set_gun_attachment_offsets() +/obj/item/weapon/gun/revolver/spearhead/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 29, "muzzle_y" = 22,"rail_x" = 11, "rail_y" = 25, "under_x" = 20, "under_y" = 18, "stock_x" = 20, "stock_y" = 18) -/obj/item/weapon/gun/revolver/cmb/set_gun_config_values() +/obj/item/weapon/gun/revolver/spearhead/set_gun_config_values() ..() set_fire_delay(FIRE_DELAY_TIER_6) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 @@ -749,5 +751,12 @@ recoil = RECOIL_AMOUNT_TIER_5 recoil_unwielded = RECOIL_AMOUNT_TIER_3 -/obj/item/weapon/gun/revolver/cmb/normalpoint - current_mag = /obj/item/ammo_magazine/internal/revolver/cmb +/obj/item/weapon/gun/revolver/spearhead/hollowpoint + current_mag = /obj/item/ammo_magazine/internal/revolver/spearhead/hollowpoint + +/obj/item/weapon/gun/revolver/spearhead/black + name = "\improper Spearhead Armoury autorevolver" + desc = "A sleek high-quality revolver designed by Spearhead Armoury chambered in .357 commonly issued to Colonial Marshals, though this version has been customized with a black metal finish indicating it is unlikely to be a service weapon." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' + icon_state = "spearhead_black" + item_state = "spearhead_black" diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 1ce0e1f6dc..0ade42384a 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -1314,17 +1314,24 @@ /obj/item/attachable/flashlight, // Rail /obj/item/attachable/magnetic_harness, /obj/item/attachable/scope, + /obj/item/attachable/scope/upp, /obj/item/attachable/scope/mini, + /obj/item/attachable/scope/mini/upp, /obj/item/attachable/reddot, + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/suppressor, // Muzzle /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp, /obj/item/attachable/extended_barrel, /obj/item/attachable/heavy_barrel, /obj/item/attachable/verticalgrip, // Underbarrel + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/flashlight/grip, + /obj/item/attachable/flashlight/grip/upp, /obj/item/attachable/lasersight, + /obj/item/attachable/lasersight/upp, /obj/item/attachable/burstfire_assembly, /obj/item/attachable/attached_gun/flamer, /obj/item/attachable/attached_gun/flamer/advanced, @@ -1367,7 +1374,7 @@ random_spawn_chance = 100 random_rail_chance = 70 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, ) random_muzzle_chance = 100 @@ -1376,14 +1383,14 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, ) /obj/item/weapon/gun/rifle/type71/dual random_spawn_chance = 100 random_rail_chance = 70 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, ) random_muzzle_chance = 100 @@ -1392,8 +1399,8 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/lasersight, - /obj/item/attachable/verticalgrip, + /obj/item/attachable/lasersight/upp, + /obj/item/attachable/verticalgrip/upp, ) /obj/item/weapon/gun/rifle/type71/sapper @@ -1401,7 +1408,7 @@ random_spawn_chance = 100 random_rail_chance = 80 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, /obj/item/attachable/magnetic_harness, ) @@ -1422,9 +1429,12 @@ /obj/item/attachable/flashlight, // Rail /obj/item/attachable/magnetic_harness, /obj/item/attachable/scope, + /obj/item/attachable/scope/upp, /obj/item/attachable/scope/mini, - /obj/item/attachable/reddot, + /obj/item/attachable/scope/mini/upp, + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/suppressor, // Muzzle /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp, @@ -1443,10 +1453,10 @@ random_spawn_chance = 100 random_rail_chance = 100 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, /obj/item/attachable/magnetic_harness, - /obj/item/attachable/scope/mini, + /obj/item/attachable/scope/mini/upp, ) random_muzzle_chance = 100 random_spawn_muzzle = list( @@ -1466,15 +1476,20 @@ /obj/item/attachable/flashlight, // Rail /obj/item/attachable/magnetic_harness, /obj/item/attachable/scope, + /obj/item/attachable/scope/upp, /obj/item/attachable/scope/mini, + /obj/item/attachable/scope/mini/upp, /obj/item/attachable/reddot, + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/suppressor, // Muzzle /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp, /obj/item/attachable/extended_barrel, /obj/item/attachable/heavy_barrel, /obj/item/attachable/verticalgrip, // Underbarrel + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/burstfire_assembly, ) @@ -1497,7 +1512,7 @@ random_spawn_chance = 100 random_rail_chance = 70 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, ) random_muzzle_chance = 100 @@ -1506,7 +1521,7 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, ) /obj/item/weapon/gun/rifle/type71/carbine/commando @@ -1521,6 +1536,7 @@ current_mag = /obj/item/ammo_magazine/rifle/type71/ap attachable_allowed = list( /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, ) random_spawn_chance = 0 random_spawn_rail = list() diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm index 9ea6624dc6..6035aaf612 100644 --- a/code/modules/projectiles/guns/shotguns.dm +++ b/code/modules/projectiles/guns/shotguns.dm @@ -20,6 +20,7 @@ can cause issues with ammo types getting mixed up during the burst. has_empty_icon = FALSE has_open_icon = FALSE fire_delay_group = list(FIRE_DELAY_GROUP_SHOTGUN) + map_specific_decoration = FALSE var/gauge = "12g" /obj/item/weapon/gun/shotgun/Initialize(mapload, spawn_empty) @@ -153,7 +154,6 @@ can cause issues with ammo types getting mixed up during the burst. current_mag.chamber_position-- return in_chamber - /obj/item/weapon/gun/shotgun/ready_in_chamber() return ready_shotgun_tube() @@ -229,7 +229,7 @@ can cause issues with ammo types getting mixed up during the burst. scatter = SCATTER_AMOUNT_TIER_5 burst_scatter_mult = SCATTER_AMOUNT_TIER_3 scatter_unwielded = SCATTER_AMOUNT_TIER_1 - damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_2 + damage_mult = BASE_BULLET_DAMAGE_MULT recoil = RECOIL_AMOUNT_TIER_3 recoil_unwielded = RECOIL_AMOUNT_TIER_1 @@ -237,15 +237,17 @@ can cause issues with ammo types getting mixed up during the burst. //TACTICAL SHOTGUN /obj/item/weapon/gun/shotgun/combat - name = "\improper MK221 tactical shotgun" - desc = "The Weyland-Yutani MK221 Shotgun, a semi-automatic shotgun with a quick fire rate." + name = "\improper M120 tactical shotgun" + desc = "A successor to the Benelli M4 Super 90, the M120 tactical shotgun is in service with the USCM due its easy maneuverability in close quarters, 12 gauge chambering, high firerate and integrated U1 underslung grenade launcher. While not part of the standard doctrine, they are common none the less. The internal tube magazine stores 6 shells and the U1 grenade launcher stores three grenades." icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "mk221" item_state = "mk221" fire_sound = "gun_shotgun_tactical" firesound_volume = 20 - current_mag = /obj/item/ammo_magazine/internal/shotgun + + flags_equip_slot = SLOT_BACK + current_mag = /obj/item/ammo_magazine/internal/shotgun/combat attachable_allowed = list( /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp, @@ -264,26 +266,12 @@ can cause issues with ammo types getting mixed up during the burst. if(current_mag && current_mag.current_rounds > 0) load_into_chamber() -/obj/item/weapon/gun/shotgun/combat/handle_starting_attachment() - ..() - var/obj/item/attachable/attached_gun/grenade/ugl = new(src) - var/obj/item/attachable/stock/tactical/stock = new(src) - ugl.flags_attach_features &= ~ATTACH_REMOVABLE - ugl.hidden = TRUE - ugl.Attach(src) - update_attachable(ugl.slot) - stock.hidden = FALSE - stock.Attach(src) - update_attachable(stock.slot) - /obj/item/weapon/gun/shotgun/combat/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 21, "under_x" = 14, "under_y" = 16, "stock_x" = 11, "stock_y" = 13.) - - + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 21, "under_x" = 22, "under_y" = 14, "stock_x" = 11, "stock_y" = 13.) /obj/item/weapon/gun/shotgun/combat/set_gun_config_values() ..() - set_fire_delay(FIRE_DELAY_TIER_5*2) + set_fire_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -292,7 +280,7 @@ can cause issues with ammo types getting mixed up during the burst. damage_mult = BASE_BULLET_DAMAGE_MULT recoil = RECOIL_AMOUNT_TIER_4 recoil_unwielded = RECOIL_AMOUNT_TIER_2 - + starting_attachment_types = list(/obj/item/attachable/attached_gun/grenade/m120, /obj/item/attachable/stock/tactical) /obj/item/weapon/gun/shotgun/combat/get_examine_text(mob/user) . = ..() @@ -300,32 +288,31 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/combat/riot - name = "\improper MK221 riot shotgun" + name = "\improper M120/R tactical shotgun" icon_state = "mp220" item_state = "mp220" - desc = "The Weyland-Yutani MK221 Shotgun, a semi-automatic shotgun with a quick fire rate. Equipped with a steel blue finish to signify use in riot control. It has been modified to only fire 20G beanbags." + desc = "A successor to the Benelli M4 Super 90, the M120 tactical shotgun is in service with the USCM due its easy maneuverability in close quarters, 12 gauge chambering, high firerate and integrated U1 underslung grenade launcher. While not part of the standard doctrine, they are common none the less. This one comes with a blue steel finish to denote its function as a riot shotgun. The internal tube magazine stores 6 shells and the U1 grenade launcher stores three grenades." current_mag = /obj/item/ammo_magazine/internal/shotgun/combat/riot - gauge = "20g" /obj/item/weapon/gun/shotgun/combat/guard - desc = "The Weyland-Yutani MK221 Shotgun, a semi-automatic shotgun with a quick fire rate. Equipped with a red handle to signify its use with Military Police Honor Guards." + desc = "The Weyland-Yutani M120 Shotgun, a semi-automatic shotgun with a quick fire rate. Equipped with a red handle to signify its use with Military Police Honor Guards." icon_state = "mp221" item_state = "mp221" starting_attachment_types = list(/obj/item/attachable/magnetic_harness, /obj/item/attachable/bayonet) - current_mag = /obj/item/ammo_magazine/internal/shotgun/buckshot + current_mag = /obj/item/ammo_magazine/internal/shotgun/combat /obj/item/weapon/gun/shotgun/combat/covert starting_attachment_types = list(/obj/item/attachable/magnetic_harness, /obj/item/attachable/extended_barrel) - current_mag = /obj/item/ammo_magazine/internal/shotgun/buckshot + current_mag = /obj/item/ammo_magazine/internal/shotgun/combat //SOF MK210, an earlier developmental variant of the MK211 tactical used by USCM SOF. /obj/item/weapon/gun/shotgun/combat/marsoc name = "\improper XM38 tactical shotgun" - desc = "Way back in 2168, Wey-Yu began testing the MK221. The USCM picked up an early prototype, and later adopted it with a limited military contract. But the USCM Special Operations Forces wasn't satisfied, and iterated on the early prototypes they had access to; eventually, their internal armorers and tinkerers produced the MK210, designated XM38, a lightweight folding shotgun that snaps to the belt. And to boot, it's fully automatic, made of stamped medal, and keeps the UGL. Truly an engineering marvel." + desc = "An ARMAT design adopted for testing by the Marine Raiders due to it's compact size, high firerate and integrated magnetic harness system. You might think the size would leave its magazine tube wanting, but through engineering magic, the XM38 is capable of holding six shells with its internal tube magazine." icon_state = "mk210" item_state = "mk210" - current_mag = /obj/item/ammo_magazine/internal/shotgun/buckshot + current_mag = /obj/item/ammo_magazine/internal/shotgun/marsoc flags_equip_slot = SLOT_WAIST|SLOT_BACK flags_gun_features = GUN_CAN_POINTBLANK|GUN_INTERNAL_MAG @@ -353,7 +340,7 @@ can cause issues with ammo types getting mixed up during the burst. ..() set_fire_delay(FIRE_DELAY_TIER_6) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 - accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 - HIT_ACCURACY_MULT_TIER_5 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 scatter = SCATTER_AMOUNT_TIER_6 burst_scatter_mult = SCATTER_AMOUNT_TIER_6 scatter_unwielded = SCATTER_AMOUNT_TIER_2 @@ -365,32 +352,36 @@ can cause issues with ammo types getting mixed up during the burst. //TYPE 23. SEMI-AUTO UPP SHOTGUN, BASED ON KS-23 /obj/item/weapon/gun/shotgun/type23 - name = "\improper Type 23 riot shotgun" - desc = "As UPP soldiers frequently reported being outmatched by enemy combatants, UPP High Command commissioned a large amount of Type 23 shotguns, originally used for quelling defector colony riots. This slow semi-automatic shotgun chambers 8 gauge, and packs a mean punch." + name = "\improper KS-29/4 combat shotgun" + desc = "A contemporary semi-automatic design based off of the KS-23, a Soviet-era pump-action riot shotgun chambered in 6 gauge shells. Updated for the UPP's Naval Infantry as a boarding gun, it was downgraded to 8 gauge chambering in order to make it more controllable without much loss to overall firepower and allow for easier storage of large quantities of shells on the individual user. Its internal tube magazine can store 4 shells." icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "type23" - item_state = "type23" - fire_sound = 'sound/weapons/gun_type23.ogg' //not perfect, too small + icon_state = "type23_tactical" + item_state = "type23_tactical" + fire_sound = 'sound/weapons/gun_type23.ogg' current_mag = /obj/item/ammo_magazine/internal/shotgun/type23 attachable_allowed = list( /obj/item/attachable/reddot, // Rail + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, + /obj/item/attachable/scope/upp, /obj/item/attachable/flashlight, /obj/item/attachable/magnetic_harness, /obj/item/attachable/bayonet, // Muzzle /obj/item/attachable/heavy_barrel, /obj/item/attachable/bayonet/upp, /obj/item/attachable/verticalgrip, // Underbarrel + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/flashlight/grip, + /obj/item/attachable/flashlight/grip/upp, /obj/item/attachable/attached_gun/flamer, /obj/item/attachable/attached_gun/flamer/advanced, /obj/item/attachable/attached_gun/extinguisher, /obj/item/attachable/burstfire_assembly, /obj/item/attachable/stock/type23, // Stock ) - flags_gun_features = GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_INTERNAL_MAG + flags_gun_features = GUN_CAN_POINTBLANK|GUN_INTERNAL_MAG flags_equip_slot = SLOT_BACK - map_specific_decoration = FALSE gauge = "8g" starting_attachment_types = list(/obj/item/attachable/stock/type23) @@ -399,98 +390,26 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/type23/set_gun_config_values() ..() - set_fire_delay(2.5 SECONDS) + set_fire_delay(FIRE_DELAY_TIER_8) accuracy_mult = BASE_ACCURACY_MULT - accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 + accuracy_mult_unwielded = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_4 scatter_unwielded = SCATTER_AMOUNT_TIER_1 damage_mult = BASE_BULLET_DAMAGE_MULT recoil = RECOIL_AMOUNT_TIER_1 recoil_unwielded = RECOIL_AMOUNT_TIER_1 -/obj/item/weapon/gun/shotgun/type23/breacher - random_spawn_chance = 100 - random_rail_chance = 100 - random_spawn_rail = list( - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/flashlight, - ) - random_muzzle_chance = 100 - random_spawn_muzzle = list( - /obj/item/attachable/bayonet/upp, - ) - random_under_chance = 40 - random_spawn_under = list( - /obj/item/attachable/verticalgrip, - ) - -/obj/item/weapon/gun/shotgun/type23/breacher/slug - current_mag = /obj/item/ammo_magazine/internal/shotgun/type23/slug -/obj/item/weapon/gun/shotgun/type23/breacher/flechette - current_mag = /obj/item/ammo_magazine/internal/shotgun/type23/flechette - -/obj/item/weapon/gun/shotgun/type23/dual - random_spawn_chance = 100 - random_rail_chance = 100 - random_spawn_rail = list( - /obj/item/attachable/magnetic_harness, - ) - random_muzzle_chance = 80 - random_spawn_muzzle = list( - /obj/item/attachable/bayonet/upp, - /obj/item/attachable/heavy_barrel, - ) - random_under_chance = 100 - random_spawn_under = list( - /obj/item/attachable/flashlight/grip, - /obj/item/attachable/verticalgrip, - ) - -/obj/item/weapon/gun/shotgun/type23/dragon - current_mag = /obj/item/ammo_magazine/internal/shotgun/type23/dragonsbreath - random_spawn_chance = 100 - random_rail_chance = 100 - random_spawn_rail = list( - /obj/item/attachable/magnetic_harness, - ) - random_muzzle_chance = 70 - random_spawn_muzzle = list( - /obj/item/attachable/bayonet/upp, - /obj/item/attachable/heavy_barrel, - ) - random_under_chance = 100 - random_spawn_under = list( - /obj/item/attachable/attached_gun/extinguisher, - ) - -/obj/item/weapon/gun/shotgun/type23/riot_control - name = "\improper Type 23-R riot control shotgun" - desc = "This slow semi-automatic shotgun chambers 8 gauge, and packs a mean punch. The -R version is designed for UPP colony security personnel and handling colony rioting, sporting an integrated vertical grip but lacking in attachment choices." - current_mag = /obj/item/ammo_magazine/internal/shotgun/type23/beanbag - attachable_allowed = list( - /obj/item/attachable/reddot, //Rail - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/verticalgrip, //Underbarrel - /obj/item/attachable/stock/type23, //Stock - ) - flags_gun_features = GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_INTERNAL_MAG - flags_equip_slot = SLOT_BACK - map_specific_decoration = FALSE - gauge = "8g" - starting_attachment_types = list(/obj/item/attachable/stock/type23) - -/obj/item/weapon/gun/shotgun/type23/riot_control/handle_starting_attachment() - . = ..() - var/obj/item/attachable/verticalgrip/integrated_grip = new(src) - integrated_grip.flags_attach_features &= ~ATTACH_REMOVABLE - integrated_grip.Attach(src) - update_attachable(integrated_grip.slot) +/obj/item/weapon/gun/shotgun/type23/riot + name = "\improper KS-29 riot shotgun" + desc = "A contemporary semi-automatic design based off of the KS-23, a Soviet-era riot shotgun chambered in 6 gauge shells. Like its Naval Infantry sibling, it is downgraded to 8 gauge chambering in order to make it more controllable without much loss to overall firepower and allow for easier storage of large quantities of shells on the individual user. Its internal tube magazine can store 4 shells." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "type23_wood" + item_state = "type23_wood" + starting_attachment_types = list(/obj/item/attachable/stock/type23/wood) -/obj/item/weapon/gun/shotgun/type23/pve - current_mag = /obj/item/ammo_magazine/internal/shotgun/type23/special +/obj/item/weapon/gun/shotgun/type23/riot/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 13, "rail_y" = 21, "under_x" = 24, "under_y" = 15, "stock_x" = 16, "stock_y" = 15) //------------------------------------------------------- //DOUBLE SHOTTY @@ -646,7 +565,7 @@ can cause issues with ammo types getting mixed up during the burst. accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_7 scatter_unwielded = SCATTER_AMOUNT_TIER_1 - damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT recoil = RECOIL_AMOUNT_TIER_3 recoil_unwielded = RECOIL_AMOUNT_TIER_1 @@ -669,7 +588,7 @@ can cause issues with ammo types getting mixed up during the burst. scatter = SCATTER_AMOUNT_TIER_6 burst_scatter_mult = SCATTER_AMOUNT_TIER_10 scatter_unwielded = SCATTER_AMOUNT_TIER_2 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT recoil = RECOIL_AMOUNT_TIER_3 recoil_unwielded = RECOIL_AMOUNT_TIER_1 @@ -713,7 +632,7 @@ can cause issues with ammo types getting mixed up during the burst. set_fire_delay(FIRE_DELAY_TIER_7) accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_10 scatter_unwielded = SCATTER_AMOUNT_TIER_7 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_5 + damage_mult = BASE_BULLET_DAMAGE_MULT recoil = RECOIL_AMOUNT_TIER_2 recoil_unwielded = RECOIL_AMOUNT_TIER_3 @@ -786,7 +705,6 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/attachable/lasersight, /obj/item/attachable/stock/mou53, ) - map_specific_decoration = TRUE civilian_usable_override = FALSE /obj/item/weapon/gun/shotgun/double/mou53/set_gun_attachment_offsets() @@ -1069,8 +987,8 @@ can cause issues with ammo types getting mixed up during the burst. //Shotguns in this category will need to be pumped each shot. /obj/item/weapon/gun/shotgun/pump - name = "\improper M37A2 pump shotgun" - desc = "An Armat Battlefield Systems classic design, the M37A2 combines close-range firepower with long term reliability. Requires a pump, which is a Unique Action." + name = "Ithaca 37 pump-action shotgun" + desc = "A customized Ithaca 37 hunting shotgun. Its wooden stock has been replaced with a bakelite pistol grip, and its barrel and magazine tube have been cut down to half their lengths for easier handling in close quarters at the cost of magazine size, only fitting four shells and one chambered." icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "m37" item_state = "m37" @@ -1104,11 +1022,10 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/attachable/attached_gun/flamer/advanced, /obj/item/attachable/stock/shotgun, ) - map_specific_decoration = TRUE /obj/item/weapon/gun/shotgun/pump/Initialize(mapload, spawn_empty) . = ..() - pump_delay = FIRE_DELAY_TIER_5*2 + pump_delay = FIRE_DELAY_TIER_8 additional_fire_group_delay += pump_delay @@ -1119,7 +1036,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/set_gun_config_values() ..() set_burst_amount(BURST_AMOUNT_TIER_1) - set_fire_delay(FIRE_DELAY_TIER_7 * 4) + set_fire_delay(FIRE_DELAY_TIER_7) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -1128,7 +1045,7 @@ can cause issues with ammo types getting mixed up during the burst. damage_mult = BASE_BULLET_DAMAGE_MULT recoil = RECOIL_AMOUNT_TIER_4 recoil_unwielded = RECOIL_AMOUNT_TIER_2 - wield_delay = WIELD_DELAY_MIN + //wield_delay = WIELD_DELAY_MIN /obj/item/weapon/gun/shotgun/pump/unique_action(mob/user) pump_shotgun(user) @@ -1192,9 +1109,6 @@ can cause issues with ammo types getting mixed up during the burst. //------------------------------------------------------- -/obj/item/weapon/gun/shotgun/pump/special - current_mag = /obj/item/ammo_magazine/internal/shotgun/special - /obj/item/weapon/gun/shotgun/pump/dual_tube name = "generic dual-tube pump shotgun" desc = "A twenty-round pump action shotgun with dual internal tube magazines. You can switch the active internal magazine by toggling the shotgun tube." @@ -1245,7 +1159,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb name = "\improper HG 37-12 pump shotgun" - desc = "A eight-round pump action shotgun with four-round capacity dual internal tube magazines allowing for quick reloading and highly accurate fire. Used exclusively by Colonial Marshals. You can switch the active internal magazine by toggling the shotgun tube." + desc = "An eight-round pump action shotgun with four-round capacity dual internal tube magazines allowing for quick reloading and highly accurate fire. Standard issue shotgun of the Colonial Marshals Bureau. By toggling the shotgun tube, you can swap between the internal magazines." icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' icon_state = "hg3712" item_state = "hg3712" @@ -1263,7 +1177,6 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/attachable/attached_gun/flamer/advanced, ) starting_attachment_types = list(/obj/item/attachable/stock/hg3712) - map_specific_decoration = FALSE civilian_usable_override = TRUE // Come on. It's THE, er, other, survivor shotgun. @@ -1273,7 +1186,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/set_gun_config_values() ..() - set_fire_delay(1.6 SECONDS) + set_fire_delay(FIRE_DELAY_TIER_7) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_10 scatter = SCATTER_AMOUNT_TIER_6 @@ -1292,8 +1205,4 @@ can cause issues with ammo types getting mixed up during the burst. current_mag = /obj/item/ammo_magazine/internal/shotgun/cmb/m3717 starting_attachment_types = list(/obj/item/attachable/stock/hg3712/m3717) -/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/m3717/set_gun_config_values() - ..() - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_3 - //------------------------------------------------------- diff --git a/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm index 0f767d679d..9148062d0c 100644 --- a/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm +++ b/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm @@ -330,7 +330,7 @@ icon_state = "m79" item_state = "m79" flags_equip_slot = SLOT_BACK - preload = /obj/item/explosive/grenade/slug/baton + preload = null is_lobbing = TRUE actions_types = list(/datum/action/item_action/toggle_firing_level) diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm index 1672df4631..bc0ac3340e 100644 --- a/code/modules/projectiles/guns/specialist/sniper.dm +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -474,6 +474,7 @@ /obj/item/attachable/bayonet/upp, //Under, /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/bipod, //Integrated, /obj/item/attachable/type88_barrel, diff --git a/code/modules/projectiles/magazines/pistols.dm b/code/modules/projectiles/magazines/pistols.dm index 3ae221fd42..ddcbefcb63 100644 --- a/code/modules/projectiles/magazines/pistols.dm +++ b/code/modules/projectiles/magazines/pistols.dm @@ -60,48 +60,52 @@ //------------------------------------------------------- -//88M4 based off VP70 +//vp70 based off VP70 -/obj/item/ammo_magazine/pistol/mod88 - name = "\improper 88M4 AP magazine (9mm)" - default_ammo = /datum/ammo/bullet/pistol/ap - caliber = "9mm" - icon_state = "88m4" - max_rounds = 19 - gun_type = /obj/item/weapon/gun/pistol/mod88 - ammo_band_icon = "+88m4_band" - ammo_band_icon_empty = "+88m4_band_e" - ammo_band_color = AMMO_BAND_COLOR_AP -/obj/item/ammo_magazine/pistol/mod88/normalpoint // Unused - name = "\improper 88M4 magazine (9mm)" +/obj/item/ammo_magazine/pistol/vp70 + name = "\improper VP70 Magazine (9mm)" default_ammo = /datum/ammo/bullet/pistol caliber = "9mm" + icon_state = "vp70" + max_rounds = 19 + gun_type = /obj/item/weapon/gun/pistol/vp70 + ammo_band_icon = "+vp70_band" + ammo_band_icon_empty = "+vp70_band_e" ammo_band_color = null -/obj/item/ammo_magazine/pistol/mod88/normalpoint/extended // Unused - name = "\improper 88M4 extended magazine (9mm)" - icon_state = "88m4_mag_ex" +/obj/item/ammo_magazine/pistol/vp70/ap + name = "\improper VP70 AP magazine (9mm)" + default_ammo = /datum/ammo/bullet/pistol/ap + caliber = "9mm" + icon_state = "vp70" + max_rounds = 19 + gun_type = /obj/item/weapon/gun/pistol/vp70 + ammo_band_color = AMMO_BAND_COLOR_AP + +/obj/item/ammo_magazine/pistol/vp70/extended // Unused + name = "\improper vp70 extended magazine (9mm)" + icon_state = "vp70_mag_ex" default_ammo = /datum/ammo/bullet/pistol caliber = "9mm" -/obj/item/ammo_magazine/pistol/mod88/toxin - name = "\improper 88M4 toxic magazine (9mm)" +/obj/item/ammo_magazine/pistol/vp70/toxin + name = "\improper vp70 toxic magazine (9mm)" default_ammo = /datum/ammo/bullet/pistol/ap/toxin ammo_band_color = AMMO_BAND_COLOR_TOXIN -/obj/item/ammo_magazine/pistol/mod88/penetrating - name = "\improper 88M4 wall-penetrating magazine (9mm)" +/obj/item/ammo_magazine/pistol/vp70/penetrating + name = "\improper vp70 wall-penetrating magazine (9mm)" default_ammo = /datum/ammo/bullet/pistol/ap/penetrating ammo_band_color = AMMO_BAND_COLOR_PENETRATING -/obj/item/ammo_magazine/pistol/mod88/incendiary - name = "\improper 88M4 incendiary magazine (9mm)" +/obj/item/ammo_magazine/pistol/vp70/incendiary + name = "\improper vp70 incendiary magazine (9mm)" default_ammo = /datum/ammo/bullet/pistol/incendiary ammo_band_color = AMMO_BAND_COLOR_INCENDIARY -/obj/item/ammo_magazine/pistol/mod88/rubber - name = "\improper 88M4 rubber magazine (9mm)" +/obj/item/ammo_magazine/pistol/vp70/rubber + name = "\improper vp70 rubber magazine (9mm)" default_ammo = /datum/ammo/bullet/pistol/rubber ammo_band_color = AMMO_BAND_COLOR_RUBBER @@ -269,36 +273,41 @@ //------------------------------------------------------- //CLF HOLDOUT PISTOL /obj/item/ammo_magazine/pistol/clfpistol - name = "D18 magazine (9mm)" - desc = "A small D18 magazine storing 7 9mm bullets. How is it even this small?" - default_ammo = /datum/ammo/bullet/pistol - caliber = "9mm" + name = "Type 18 magazine (.50)" + default_ammo = /datum/ammo/bullet/pistol/heavy/super + caliber = ".50" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi' icon_state = "m4a3" // placeholder - max_rounds = 7 + max_rounds = 3 w_class = SIZE_TINY gun_type = /obj/item/weapon/gun/pistol/clfpistol - //------------------------------------------------------- //.45 MARSHALS PISTOL //Inspired by the Browning Hipower // rebalanced - singlefire, very strong bullets but slow to fire and heavy recoil // redesigned - now rejected USCM sidearm model, utilized by Colonial Marshals and other stray groups. /obj/item/ammo_magazine/pistol/highpower - name = "\improper MK-45 Automagnum magazine (.45)" - default_ammo = /datum/ammo/bullet/pistol/highpower + name = "\improper HG-45 'Aguila' magazine (.45)" + default_ammo = /datum/ammo/bullet/pistol/heavy caliber = ".45" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi' icon_state = "highpower" - max_rounds = 13 + max_rounds = 11 gun_type = /obj/item/weapon/gun/pistol/highpower //comes in black, for the black variant of the highpower, better for military usage /obj/item/ammo_magazine/pistol/highpower/black + name = "\improper HG 45 'Marina' magazine (.45)" icon_state = "highpower_b" +/obj/item/ammo_magazine/pistol/highpower/automag + name = "\improper HG 44 'Automag' magazine (.44)" + icon_state = "highpower_b" + max_rounds = 13 + default_ammo = /datum/ammo/bullet/revolver + //------------------------------------------------------- /* Auto 9 The gun RoboCop uses. A better version of the VP78, with more rounds per magazine. Probably the best pistol around, but takes no attachments. @@ -310,7 +319,7 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe default_ammo = /datum/ammo/bullet/pistol/squash caliber = "9mm" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi' - icon_state = "88m4" //PLACEHOLDER + icon_state = "vp70" //PLACEHOLDER max_rounds = 50 gun_type = /obj/item/weapon/gun/pistol/auto9 diff --git a/code/modules/projectiles/magazines/revolvers.dm b/code/modules/projectiles/magazines/revolvers.dm index 7d56612530..8b32587c7a 100644 --- a/code/modules/projectiles/magazines/revolvers.dm +++ b/code/modules/projectiles/magazines/revolvers.dm @@ -78,21 +78,21 @@ max_rounds = 6 gun_type = /obj/item/weapon/gun/revolver/small -/obj/item/ammo_magazine/revolver/cmb - name = "\improper Spearhead hollowpoint speed loader (.357)" - desc = "A speedloader of 6 hollowpoint .357 bullets, issued to Colonial Marshals to both prevent overpenetration and improve performance against unarmored criminals or wildlife. Less effective against hard targets, but what're the chances of encountering those?" - default_ammo = /datum/ammo/bullet/revolver/small/hollowpoint +/obj/item/ammo_magazine/revolver/spearhead + name = "\improper Spearhead speed loader (.357)" + desc = "A speedloader of 6 FMJ .357 bullets, uncommonly issued to Colonial Marshals due to overpenetration risks." + default_ammo = /datum/ammo/bullet/revolver/small caliber = ".357" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi' - icon_state = "cmb_hp" + icon_state = "cmb" max_rounds = 6 - gun_type = /obj/item/weapon/gun/revolver/cmb + gun_type = /obj/item/weapon/gun/revolver/spearhead -/obj/item/ammo_magazine/revolver/cmb/normalpoint //put these in the marshal ert - ok sure :) +/obj/item/ammo_magazine/revolver/spearhead/hollowpoint name = "\improper Spearhead speed loader (.357)" - desc = "A speedloader of 6 FMJ .357 bullets, uncommonly issued to Colonial Marshals due to overpenetration risks." - default_ammo = /datum/ammo/bullet/revolver/small - icon_state = "cmb" + desc = "A speedloader of 6 hollowpoint .357 bullets, commonly issued to Colonial Marshals to both prevent overpenetration and improve performance against unarmored criminals or wildlife." + default_ammo = /datum/ammo/bullet/revolver/small/hollowpoint + icon_state = "cmb_hp" /** * MATEBA REVOLVER @@ -205,15 +205,15 @@ //------------------------------------------------------- //MARSHALS REVOLVER //Spearhead exists in Alien cannon. -/obj/item/ammo_magazine/internal/revolver/cmb +/obj/item/ammo_magazine/internal/revolver/spearhead default_ammo = /datum/ammo/bullet/revolver/small caliber = ".357" - gun_type = /obj/item/weapon/gun/revolver/cmb + gun_type = /obj/item/weapon/gun/revolver/spearhead -/obj/item/ammo_magazine/internal/revolver/cmb/hollowpoint +/obj/item/ammo_magazine/internal/revolver/spearhead/hollowpoint default_ammo = /datum/ammo/bullet/revolver/small/hollowpoint caliber = ".357" - gun_type = /obj/item/weapon/gun/revolver/cmb + gun_type = /obj/item/weapon/gun/revolver/spearhead //------------------------------------------------------- //BIG GAME HUNTER'S REVOLVER diff --git a/code/modules/projectiles/magazines/shotguns.dm b/code/modules/projectiles/magazines/shotguns.dm index 3c26685a55..e378aed3c4 100644 --- a/code/modules/projectiles/magazines/shotguns.dm +++ b/code/modules/projectiles/magazines/shotguns.dm @@ -24,7 +24,7 @@ var/list/shotgun_boxes_12g = list( caliber = "12g" gun_type = /obj/item/weapon/gun/shotgun max_rounds = 25 // Real shotgun boxes are usually 5 or 25 rounds. This works with the new system, five handfuls. - w_class = SIZE_LARGE // Can't throw it in your pocket, friend. + w_class = SIZE_MEDIUM // Can't throw it in your pocket, friend. flags_magazine = AMMUNITION_REFILLABLE|AMMUNITION_HANDFUL_BOX handful_state = "slug_shell" transfer_handful_amount = 5 @@ -70,15 +70,6 @@ var/list/shotgun_boxes_12g = list( default_ammo = /datum/ammo/bullet/shotgun/beanbag handful_state = "beanbag_slug" -/obj/item/ammo_magazine/shotgun/beanbag/riot - name = "box of RC beanbag slugs" - desc = "A box filled with beanbag shotgun shells used for non-lethal crowd control. Riot Control use only." - icon_state = "beanbag" - item_state = "beanbag" - default_ammo = /datum/ammo/bullet/shotgun/beanbag - handful_state = "beanbag_slug" - caliber = "20g" - /obj/item/ammo_magazine/shotgun/buckshot/special name = "box of buckshot shells, USCM special type" desc = "A box filled with buckshot spread shotgun shells, USCM special type. 12 Gauge." @@ -91,12 +82,14 @@ Generic internal magazine. All shotguns will use this or a variation with differ Since all shotguns share ammo types, the gun path is going to be the same for all of them. And it also doesn't really matter. You can only reload them with handfuls. */ + /obj/item/ammo_magazine/internal/shotgun name = "shotgun tube" desc = "An internal magazine. It is not supposed to be seen or removed." default_ammo = /datum/ammo/bullet/shotgun/buckshot caliber = "12g" - max_rounds = 9 + max_rounds = 4 + current_rounds = 0 chamber_closed = 0 /obj/item/ammo_magazine/internal/shotgun/double //For a double barrel. @@ -117,36 +110,26 @@ also doesn't really matter. You can only reload them with handfuls. caliber = "2 bore" default_ammo = /datum/ammo/bullet/shotgun/twobore +/obj/item/ammo_magazine/internal/shotgun/combat + caliber = "12g" + max_rounds = 6 + /obj/item/ammo_magazine/internal/shotgun/combat/riot - caliber = "20g" default_ammo = /datum/ammo/bullet/shotgun/beanbag + current_rounds = 6 + +/obj/item/ammo_magazine/internal/shotgun/marsoc + caliber = "12g" + max_rounds = 7 + current_rounds = 7 /obj/item/ammo_magazine/internal/shotgun/merc max_rounds = 5 -/obj/item/ammo_magazine/internal/shotgun/buckshot - default_ammo = /datum/ammo/bullet/shotgun/buckshot - /obj/item/ammo_magazine/internal/shotgun/type23 - default_ammo = /datum/ammo/bullet/shotgun/heavy/buckshot caliber = "8g" max_rounds = 4 -/obj/item/ammo_magazine/internal/shotgun/type23/slug - default_ammo = /datum/ammo/bullet/shotgun/heavy/slug - -/obj/item/ammo_magazine/internal/shotgun/type23/flechette - default_ammo = /datum/ammo/bullet/shotgun/heavy/flechette - -/obj/item/ammo_magazine/internal/shotgun/type23/dragonsbreath - default_ammo = /datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath - -/obj/item/ammo_magazine/internal/shotgun/type23/beanbag - default_ammo = /datum/ammo/bullet/shotgun/heavy/beanbag - -/obj/item/ammo_magazine/internal/shotgun/type23/special - default_ammo = /datum/ammo/bullet/shotgun/heavy/buckshot/special - /obj/item/ammo_magazine/internal/shotgun/cmb default_ammo = /datum/ammo/bullet/shotgun/buckshot max_rounds = 4 @@ -154,9 +137,6 @@ also doesn't really matter. You can only reload them with handfuls. /obj/item/ammo_magazine/internal/shotgun/cmb/m3717 max_rounds = 5 -/obj/item/ammo_magazine/internal/shotgun/special - default_ammo = /datum/ammo/bullet/shotgun/buckshot/special - //------------------------------------------------------- /* 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/reagents/chemistry_reagents/other.dm b/code/modules/reagents/chemistry_reagents/other.dm index bbeeca2e3c..557e977929 100644 --- a/code/modules/reagents/chemistry_reagents/other.dm +++ b/code/modules/reagents/chemistry_reagents/other.dm @@ -109,10 +109,10 @@ description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen. It is a vital component to all known forms of organic life, even though it provides no calories or organic nutrients. It is also an effective solvent and can be used for cleaning." reagent_state = LIQUID color = "#0064C8" // rgb: 0, 100, 200 - custom_metabolism = AMOUNT_PER_TIME(1, 200 SECONDS) chemclass = CHEM_CLASS_BASIC chemfiresupp = TRUE intensitymod = -3 + properties = list(PROPERTY_HEMOGENIC = 1) /datum/reagent/water/reaction_turf(turf/T, volume) if(!istype(T)) return @@ -132,6 +132,12 @@ if(M.fire_stacks <= 0) M.ExtinguishMob() +/datum/reagent/water/on_mob_life(mob/living/M) + . = ..() + if(ishuman(M) && volume >= 100 && prob(25)) + var/mob/living/carbon/human/human = M + human.vomit() + /datum/reagent/water/holywater name = "Holy Water" id = "holywater" 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/tgs/README.md b/code/modules/tgs/README.md index 6319028d81..35ca73d7e9 100644 --- a/code/modules/tgs/README.md +++ b/code/modules/tgs/README.md @@ -1,6 +1,6 @@ # DMAPI Internals -This folder should be placed on it's own inside a codebase that wishes to use the TGS DMAPI. Warranty void if modified. +This folder should be placed on its own inside a codebase that wishes to use the TGS DMAPI. Warranty void if modified. - [includes.dm](./includes.dm) is the file that should be included by DM code, it handles including the rest. - The [core](./core) folder includes all code not directly part of any API version. diff --git a/code/modules/tgs/core/README.md b/code/modules/tgs/core/README.md index b82d8f49e2..965e21b549 100644 --- a/code/modules/tgs/core/README.md +++ b/code/modules/tgs/core/README.md @@ -3,7 +3,7 @@ This folder contains all DMAPI code not directly involved in an API. - [_definitions.dm](./definitions.dm) contains defines needed across DMAPI internals. +- [byond_world_export.dm](./byond_world_export.dm) contains the default `/datum/tgs_http_handler` implementation which uses `world.Export()`. - [core.dm](./core.dm) contains the implementations of the `/world/proc/TgsXXX()` procs. Many map directly to the `/datum/tgs_api` functions. It also contains the /datum selection and setup code. - [datum.dm](./datum.dm) contains the `/datum/tgs_api` declarations that all APIs must implement. - [tgs_version.dm](./tgs_version.dm) contains the `/datum/tgs_version` definition -- diff --git a/code/modules/tgs/core/byond_world_export.dm b/code/modules/tgs/core/byond_world_export.dm new file mode 100644 index 0000000000..6ef8d841b8 --- /dev/null +++ b/code/modules/tgs/core/byond_world_export.dm @@ -0,0 +1,22 @@ +/datum/tgs_http_handler/byond_world_export + +/datum/tgs_http_handler/byond_world_export/PerformGet(url) + // This is an infinite sleep until we get a response + var/export_response = world.Export(url) + TGS_DEBUG_LOG("byond_world_export: Export complete") + + if(!export_response) + TGS_ERROR_LOG("byond_world_export: Failed request: [url]") + return new /datum/tgs_http_result(null, FALSE) + + var/content = export_response["CONTENT"] + if(!content) + TGS_ERROR_LOG("byond_world_export: Failed request, missing content!") + return new /datum/tgs_http_result(null, FALSE) + + var/response_json = TGS_FILE2TEXT_NATIVE(content) + if(!response_json) + TGS_ERROR_LOG("byond_world_export: Failed request, failed to load content!") + return new /datum/tgs_http_result(null, FALSE) + + return new /datum/tgs_http_result(response_json, TRUE) diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 15622228e9..63cb5a2c35 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -1,4 +1,4 @@ -/world/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE) +/world/TgsNew(datum/tgs_event_handler/event_handler, minimum_required_security_level = TGS_SECURITY_ULTRASAFE, datum/tgs_http_handler/http_handler = null) var/current_api = TGS_READ_GLOBAL(tgs) if(current_api) TGS_ERROR_LOG("API datum already set (\ref[current_api] ([current_api]))! Was TgsNew() called more than once?") @@ -55,7 +55,10 @@ TGS_ERROR_LOG("Invalid parameter for event_handler: [event_handler]") event_handler = null - var/datum/tgs_api/new_api = new api_datum(event_handler, version) + if(!http_handler) + http_handler = new /datum/tgs_http_handler/byond_world_export + + var/datum/tgs_api/new_api = new api_datum(event_handler, version, http_handler) TGS_WRITE_GLOBAL(tgs, new_api) diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index f734fd0527..3ca53e9bf7 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -6,7 +6,7 @@ TGS_DEFINE_AND_SET_GLOBAL(tgs, null) var/list/warned_deprecated_command_runs -/datum/tgs_api/New(datum/tgs_event_handler/event_handler, datum/tgs_version/version) +/datum/tgs_api/New(datum/tgs_event_handler/event_handler, datum/tgs_version/version, datum/tgs_http_handler/http_handler) ..() src.event_handler = event_handler src.version = version diff --git a/code/modules/tgs/includes.dm b/code/modules/tgs/includes.dm index 23b714f9d0..f5118ed55a 100644 --- a/code/modules/tgs/includes.dm +++ b/code/modules/tgs/includes.dm @@ -1,4 +1,5 @@ #include "core\_definitions.dm" +#include "core\byond_world_export.dm" #include "core\core.dm" #include "core\datum.dm" #include "core\tgs_version.dm" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 95b8edd3ee..3e328fc7c2 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -31,9 +31,12 @@ var/detached = FALSE -/datum/tgs_api/v5/New() + var/datum/tgs_http_handler/http_handler + +/datum/tgs_api/v5/New(datum/tgs_event_handler/event_handler, datum/tgs_version/version, datum/tgs_http_handler/http_handler) . = ..() interop_version = version + src.http_handler = http_handler TGS_DEBUG_LOG("V5 API created: [json_encode(args)]") /datum/tgs_api/v5/ApiVersion() @@ -50,7 +53,9 @@ version = null // we want this to be the TGS version, not the interop version // sleep once to prevent an issue where world.Export on the first tick can hang indefinitely + TGS_DEBUG_LOG("Starting Export bug prevention sleep tick. time:[world.time] sleep_offline:[world.sleep_offline]") sleep(world.tick_lag) + TGS_DEBUG_LOG("Export bug prevention sleep complete") var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands(), DMAPI5_PARAMETER_TOPIC_PORT = GetTopicPort())) if(!istype(bridge_response)) diff --git a/code/modules/tgs/v5/bridge.dm b/code/modules/tgs/v5/bridge.dm index 0c5e701a32..62201fcc9e 100644 --- a/code/modules/tgs/v5/bridge.dm +++ b/code/modules/tgs/v5/bridge.dm @@ -78,27 +78,24 @@ WaitForReattach(FALSE) TGS_DEBUG_LOG("Bridge request start") - // This is an infinite sleep until we get a response - var/export_response = world.Export(bridge_request) + var/datum/tgs_http_result/result = http_handler.PerformGet(bridge_request) TGS_DEBUG_LOG("Bridge request complete") - if(!export_response) - TGS_ERROR_LOG("Failed bridge request: [bridge_request]") + if(isnull(result)) + TGS_ERROR_LOG("Failed bridge request, handler returned null!") return - var/content = export_response["CONTENT"] - if(!content) - TGS_ERROR_LOG("Failed bridge request, missing content!") + if(!istype(result) || result.type != /datum/tgs_http_result) + TGS_ERROR_LOG("Failed bridge request, handler returned non-[/datum/tgs_http_result]!") return - var/response_json = TGS_FILE2TEXT_NATIVE(content) - if(!response_json) - TGS_ERROR_LOG("Failed bridge request, failed to load content!") + if(!result.success) + TGS_DEBUG_LOG("Failed bridge request, HTTP request failed!") return - var/list/bridge_response = json_decode(response_json) + var/list/bridge_response = json_decode(result.response_text) if(!bridge_response) - TGS_ERROR_LOG("Failed bridge request, bad json: [response_json]") + TGS_ERROR_LOG("Failed bridge request, bad json: [result.response_text]") return var/error = bridge_response[DMAPI5_RESPONSE_ERROR_MESSAGE] diff --git a/code/modules/unit_tests/spritesheets.dm b/code/modules/unit_tests/spritesheets.dm index c7c16c6535..142d3f9588 100644 --- a/code/modules/unit_tests/spritesheets.dm +++ b/code/modules/unit_tests/spritesheets.dm @@ -2,6 +2,7 @@ /datum/unit_test/spritesheets /datum/unit_test/spritesheets/Run() + var/regex/valid_css_class = new(@"^([\l_][\w\-]|[\l_\-][\l_])") for(var/datum/asset/spritesheet/sheet as anything in subtypesof(/datum/asset/spritesheet)) if(!initial(sheet.name)) //Ignore abstract types continue @@ -9,3 +10,6 @@ for(var/sprite_name in sheet.sprites) if(!sprite_name) TEST_FAIL("Spritesheet [sheet.type] has a nameless icon state.") + if(!valid_css_class.Find(sprite_name)) + // https://www.w3.org/TR/CSS2/syndata.html#value-def-identifier + TEST_FAIL("Spritesheet [sheet.type] has a icon state that doesn't comply with css standards: '[sprite_name]'.") 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/code/modules/vehicles/interior/interactable/vendors.dm b/code/modules/vehicles/interior/interactable/vendors.dm index aa2411f89f..fc77d4d0d5 100644 --- a/code/modules/vehicles/interior/interactable/vendors.dm +++ b/code/modules/vehicles/interior/interactable/vendors.dm @@ -185,7 +185,7 @@ list("M4RA Battle Rifle", round(scale * 2), /obj/item/weapon/gun/rifle/m4ra, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 2), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("VP70 Combat Pistol", round(scale * 2), /obj/item/weapon/gun/pistol/vp70, VENDOR_ITEM_REGULAR), list("M44 Combat Revolver", round(scale * 1.5), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), list("M4A3 Service Pistol", round(scale * 2.5), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), @@ -215,7 +215,7 @@ list("M39 HV Magazine (10x20mm)", round(scale * 6), /obj/item/ammo_magazine/smg/m39, VENDOR_ITEM_REGULAR), list("M44 Speed Loader (.44)", round(scale * 4), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), list("M4A3 Magazine (9mm)", round(scale * 10), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), - list("88 Mod 4 Magazine (9mm)", round(scale * 8), /obj/item/ammo_magazine/pistol/mod88/normalpoint, VENDOR_ITEM_REGULAR), + list("VP70 Magazine (9mm)", round(scale * 8), /obj/item/ammo_magazine/pistol/vp70, VENDOR_ITEM_REGULAR), list("ARMOR-PIERCING AMMUNITION", -1, null, null), list("M4RA AP Magazine (10x24mm)", 0, /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), diff --git a/colonialmarines.dme b/colonialmarines.dme index d814088a41..cadce2ac68 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" @@ -675,6 +677,7 @@ #include "code\datums\weather\weather_map_holder.dm" #include "code\datums\weather\weather_events\big_red.dm" #include "code\datums\weather\weather_events\faction_clash.dm" +#include "code\datums\weather\weather_events\long.dm" #include "code\datums\weather\weather_events\lv522_chances_claim.dm" #include "code\datums\weather\weather_events\lv624.dm" #include "code\datums\weather\weather_events\new_varadero.dm" @@ -1405,6 +1408,7 @@ #include "code\modules\admin\game_master\resin_panel.dm" #include "code\modules\admin\game_master\sound_panel.dm" #include "code\modules\admin\game_master\extra_buttons\fire_support_menu.dm" +#include "code\modules\admin\game_master\extra_buttons\marine_announce.dm" #include "code\modules\admin\game_master\extra_buttons\rappel_menu.dm" #include "code\modules\admin\game_master\extra_buttons\rename_platoon.dm" #include "code\modules\admin\game_master\extra_buttons\toggle_ai_xeno_weeding.dm" @@ -1910,6 +1914,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/archive/2024-08.yml b/html/changelogs/archive/2024-08.yml index 232a1874b3..65fe0ef0b8 100644 --- a/html/changelogs/archive/2024-08.yml +++ b/html/changelogs/archive/2024-08.yml @@ -60,3 +60,73 @@ 2024-08-11: private-tristan: - balance: M56D has been buffed with more damage, accuracy, and firerate. +2024-08-18: + BonniePandora: + - rscadd: Adds a Golden-Arrow specific sub-set of the smartgunners sidearm belt + - rscadd: Adds the above to the corresponding lockers, both on the standard & FORECON + smartgunner ones + Doubleumc: + - rscadd: Added 1 hour squad role timelocks for PltSgt, PltCo + - admin: '"Start Round" can start a delayed round' + nauticall: + - rscadd: Added a quick "Command Announcement" button for Game Masters, available + in the GM tab. + sunofang: + - admin: Spawn menu no longer populates by default, and doesnt cause you to lag. + xDanilcusx: + - bugfix: AI can track through electrified/locked/welded doors + - code_imp: AI now doesn't swipe on poddoors and shutters, opening them instead +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 +2024-08-26: + sunofang: + - admin: Added infinite weather options. +2024-08-27: + Max-023: + - rscadd: Helmet cover item, added to the squad prep vendor + - imageadd: Helmet cover sprites + Meatstuff882: + - rscadd: 'The utility vendor now has knives in it. + + :cl:' +2024-08-29: + AndroBetel: + - rscadd: Water now helps you regen blood. + - rscadd: Vomiting now removes some reagents, helping negate OD effects. + - balance: Vulture no longer has minimum range requirements to hit bugs. + - rscadd: Adds restricted underwear. + Doubleumc: + - code_imp: changed slotting - new players and players that got skipped previous + rounds have a higher chance to get a slot + - code_imp: AI caches valid targets for better performance + Merrgear: + - qol: made crit less boring + - code_imp: 'changed the crit code to not knock you unconcious + + :cl:' diff --git a/html/create_object.html b/html/create_object.html index a4c3085a9a..0625ab9e5c 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -37,7 +37,6 @@ var objects = object_paths == null ? new Array() : object_paths.split(";"); document.spawner.filter.focus(); - populateList(objects); function populateList(from_list) { object_list.options.length = 0; diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi index 24840d6348..d237128b24 100644 Binary files a/icons/mob/humans/onmob/back.dmi and b/icons/mob/humans/onmob/back.dmi differ diff --git a/icons/mob/humans/onmob/belt.dmi b/icons/mob/humans/onmob/belt.dmi index 9079bda5e7..5c3e8a6dc6 100644 Binary files a/icons/mob/humans/onmob/belt.dmi and b/icons/mob/humans/onmob/belt.dmi differ diff --git a/icons/mob/humans/onmob/eyes.dmi b/icons/mob/humans/onmob/eyes.dmi index c4d743f61e..9a4fd3bd64 100644 Binary files a/icons/mob/humans/onmob/eyes.dmi and b/icons/mob/humans/onmob/eyes.dmi differ diff --git a/icons/mob/humans/onmob/helmet_garb.dmi b/icons/mob/humans/onmob/helmet_garb.dmi index 9ed93efa34..062400725a 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/items_lefthand_1.dmi b/icons/mob/humans/onmob/items_lefthand_1.dmi index 18b9ca5ac3..46bc771b52 100644 Binary files a/icons/mob/humans/onmob/items_lefthand_1.dmi and b/icons/mob/humans/onmob/items_lefthand_1.dmi differ diff --git a/icons/mob/humans/onmob/items_righthand_1.dmi b/icons/mob/humans/onmob/items_righthand_1.dmi index c3dcbe3b61..8a0fbd85c6 100644 Binary files a/icons/mob/humans/onmob/items_righthand_1.dmi and b/icons/mob/humans/onmob/items_righthand_1.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/mob/humans/onmob/suit_1.dmi b/icons/mob/humans/onmob/suit_1.dmi index a5e0100844..a316ccf8c4 100644 Binary files a/icons/mob/humans/onmob/suit_1.dmi and b/icons/mob/humans/onmob/suit_1.dmi differ diff --git a/icons/mob/humans/onmob/suit_slot.dmi b/icons/mob/humans/onmob/suit_slot.dmi index 555b5a0e7a..4790ee7af6 100644 Binary files a/icons/mob/humans/onmob/suit_slot.dmi and b/icons/mob/humans/onmob/suit_slot.dmi differ diff --git a/icons/mob/humans/undershirt.dmi b/icons/mob/humans/undershirt.dmi index 468778851c..928dc332e6 100644 Binary files a/icons/mob/humans/undershirt.dmi and b/icons/mob/humans/undershirt.dmi differ diff --git a/icons/obj/items/clothing/belts.dmi b/icons/obj/items/clothing/belts.dmi index 18e011f048..90aacb3563 100644 Binary files a/icons/obj/items/clothing/belts.dmi and b/icons/obj/items/clothing/belts.dmi differ diff --git a/icons/obj/items/clothing/cm_suits.dmi b/icons/obj/items/clothing/cm_suits.dmi index 016a1cd6c0..2b3b3a091c 100644 Binary files a/icons/obj/items/clothing/cm_suits.dmi and b/icons/obj/items/clothing/cm_suits.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..5403ae28b7 100644 Binary files a/icons/obj/items/helmet_garb.dmi and b/icons/obj/items/helmet_garb.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi index 0d50208cc8..0ea04eeb2a 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments.dmi b/icons/obj/items/weapons/guns/attachments.dmi index 332217fe1c..96038c374a 100644 Binary files a/icons/obj/items/weapons/guns/attachments.dmi and b/icons/obj/items/weapons/guns/attachments.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/stock.dmi b/icons/obj/items/weapons/guns/attachments/stock.dmi index d3a95284a2..506148cedf 100644 Binary files a/icons/obj/items/weapons/guns/attachments/stock.dmi and b/icons/obj/items/weapons/guns/attachments/stock.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi b/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi index 04c1fd5468..feca8443db 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi b/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi index 669efcfc59..16e37d5f4e 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi differ diff --git a/icons/obj/items/weapons/guns/lineart.dmi b/icons/obj/items/weapons/guns/lineart.dmi index 35241cf3a3..7e8537cca5 100644 Binary files a/icons/obj/items/weapons/guns/lineart.dmi and b/icons/obj/items/weapons/guns/lineart.dmi differ diff --git a/icons/obj/items/weapons/guns/lineart_modes.dmi b/icons/obj/items/weapons/guns/lineart_modes.dmi new file mode 100644 index 0000000000..787fdd34f2 Binary files /dev/null and b/icons/obj/items/weapons/guns/lineart_modes.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/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index c1ff18c9fa..0eb6024a5a 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -1662,7 +1662,7 @@ /area/bigredv2/outside/marshal_office) "afo" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -1670,7 +1670,7 @@ /area/bigredv2/outside/marshal_office) "afp" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -1681,7 +1681,7 @@ /obj/structure/machinery/light{ dir = 1 }, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -24149,7 +24149,7 @@ }, /obj/structure/closet/cabinet, /obj/item/disk/nuclear, -/obj/item/weapon/gun/pistol/mod88, +/obj/item/weapon/gun/pistol/vp70, /obj/structure/pipes/vents/pump/on, /turf/open/floor{ icon_state = "wood" @@ -24760,8 +24760,8 @@ /area/bigredv2/caves_se) "bMa" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/weapon/gun/pistol/mod88, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/weapon/gun/pistol/vp70, /turf/open/floor{ dir = 8; icon_state = "redcorner" @@ -31566,7 +31566,7 @@ "miD" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/security/marshal, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, @@ -38204,7 +38204,7 @@ }, /area/bigredv2/caves_north) "vBy" = ( -/obj/item/ammo_magazine/shotgun/beanbag/riot, +/obj/item/ammo_magazine/shotgun/beanbag, /turf/open/mars_cave{ icon_state = "mars_cave_17" }, diff --git a/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm b/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm index e2e995af42..744ef04af7 100644 --- a/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm +++ b/maps/map_files/BigRed/sprinkles/10.prison_breakout.dmm @@ -223,7 +223,7 @@ /area/bigredv2/outside/marshal_office) "aF" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -231,7 +231,7 @@ /area/bigredv2/outside/marshal_office) "aG" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -242,7 +242,7 @@ /obj/structure/machinery/light{ dir = 1 }, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 8; icon_state = "vault" diff --git a/maps/map_files/BigRed/sprinkles/20.etatunnel_open.dmm b/maps/map_files/BigRed/sprinkles/20.etatunnel_open.dmm index 633a79f6ac..9666ca41a4 100644 --- a/maps/map_files/BigRed/sprinkles/20.etatunnel_open.dmm +++ b/maps/map_files/BigRed/sprinkles/20.etatunnel_open.dmm @@ -374,7 +374,7 @@ /area/bigredv2/outside/lz2_south_cas) "Jy" = ( /obj/structure/surface/table/reinforced/prison, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /obj/item/device/flashlight/lamp/on{ pixel_x = -5; pixel_y = 17 diff --git a/maps/map_files/CORSAT/Corsat.dmm b/maps/map_files/CORSAT/Corsat.dmm index a87db5ef1e..a0a3bb64d9 100644 --- a/maps/map_files/CORSAT/Corsat.dmm +++ b/maps/map_files/CORSAT/Corsat.dmm @@ -371,12 +371,12 @@ /area/corsat/gamma/hangar) "abn" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /turf/open/floor/corsat{ dir = 9; icon_state = "red" @@ -1005,12 +1005,12 @@ /area/corsat/gamma/hangar/checkpoint) "adc" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /turf/open/floor/corsat{ dir = 1; icon_state = "red" @@ -9023,9 +9023,9 @@ /obj/structure/closet/secure_closet/security_empty, /obj/item/storage/belt/security/MP/full, /obj/item/clothing/accessory/storage/holster/armpit, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/item/storage/pouch/general/medium, /obj/item/storage/pouch/pistol, /turf/open/floor/corsat{ @@ -11307,16 +11307,16 @@ /turf/open/floor/wood, /area/corsat/gamma/residential/researcher) "aGc" = ( -/obj/item/weapon/gun/pistol/mod88, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/weapon/gun/pistol/mod88, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/weapon/gun/pistol/vp70, /obj/structure/surface/rack, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /turf/open/floor/corsat{ dir = 9; icon_state = "red" @@ -13781,9 +13781,9 @@ /obj/structure/closet/secure_closet/security_empty, /obj/item/storage/belt/security/MP/full, /obj/item/clothing/accessory/storage/holster/armpit, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/item/storage/pouch/general/medium, /obj/item/storage/pouch/pistol, /turf/open/floor/corsat{ @@ -19090,9 +19090,9 @@ /obj/structure/closet/secure_closet/security_empty, /obj/item/storage/belt/security/MP/full, /obj/item/clothing/accessory/storage/holster/armpit, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/item/storage/pouch/general/medium, /obj/item/storage/pouch/pistol, /turf/open/floor/corsat{ @@ -19111,9 +19111,9 @@ /obj/structure/closet/secure_closet/security_empty, /obj/item/storage/belt/security/MP/full, /obj/item/clothing/accessory/storage/holster/armpit, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/item/storage/pouch/general/medium, /obj/item/storage/pouch/pistol, /turf/open/floor/corsat{ @@ -28907,9 +28907,9 @@ "bDd" = ( /obj/item/storage/belt/security/MP/full, /obj/item/clothing/accessory/storage/holster/armpit, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/item/storage/pouch/general/medium, /obj/item/storage/pouch/pistol, /obj/structure/closet/secure_closet/security, @@ -28944,9 +28944,9 @@ "bDk" = ( /obj/item/storage/belt/security/MP/full, /obj/item/clothing/accessory/storage/holster/armpit, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/item/storage/pouch/general/medium, /obj/item/storage/pouch/pistol, /obj/structure/closet/secure_closet/security, @@ -41809,7 +41809,7 @@ /area/corsat/sigma/southeast/datalab) "gys" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/corsat{ icon_state = "red" }, @@ -43618,9 +43618,9 @@ /obj/structure/closet/secure_closet/security_empty, /obj/item/storage/belt/security/MP/full, /obj/item/clothing/accessory/storage/holster/armpit, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/item/storage/pouch/general/medium, /obj/item/storage/pouch/pistol, /turf/open/floor/corsat{ @@ -56944,10 +56944,10 @@ /area/corsat/sigma/hangar/security) "rRh" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/corsat{ dir = 6; icon_state = "red" @@ -58917,9 +58917,9 @@ /obj/structure/closet/secure_closet/security_empty, /obj/item/storage/belt/security/MP/full, /obj/item/clothing/accessory/storage/holster/armpit, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/weapon/gun/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/item/storage/pouch/general/medium, /obj/item/storage/pouch/pistol, /turf/open/floor/corsat{ @@ -59390,7 +59390,7 @@ /area/corsat/gamma/hallwaysouth) "tFs" = ( /obj/structure/surface/table/almayer, -/obj/item/weapon/gun/pistol/mod88, +/obj/item/weapon/gun/pistol/vp70, /turf/open/floor/corsat{ dir = 8; icon_state = "red" diff --git a/maps/map_files/DesertDam/Desert_Dam.dmm b/maps/map_files/DesertDam/Desert_Dam.dmm index 6325533e9b..cc04cfc015 100644 --- a/maps/map_files/DesertDam/Desert_Dam.dmm +++ b/maps/map_files/DesertDam/Desert_Dam.dmm @@ -4609,14 +4609,14 @@ /area/desert_dam/interior/lab_northeast/east_lab_security_armory) "anS" = ( /obj/structure/surface/table/reinforced, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/prison{ icon_state = "darkredfull2" }, /area/desert_dam/interior/lab_northeast/east_lab_security_armory) "anT" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -19966,7 +19966,7 @@ /turf/open/asphalt, /area/desert_dam/exterior/valley/valley_wilderness) "bkG" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/interior/wood/alt, /area/desert_dam/building/security/marshals_office) @@ -31817,13 +31817,13 @@ /area/desert_dam/building/security/armory) "bYq" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -43409,7 +43409,7 @@ /area/desert_dam/building/security/armory) "cJv" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/prison{ icon_state = "darkredfull2" }, diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/15.wardenofficedecorated.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/15.wardenofficedecorated.dmm index fa4a9b8b7b..eb34c85224 100644 --- a/maps/map_files/FOP_v3_Sciannex/sprinkles/15.wardenofficedecorated.dmm +++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/15.wardenofficedecorated.dmm @@ -112,7 +112,7 @@ pixel_y = 21 }, /obj/structure/surface/table/woodentable/fancy, -/obj/item/weapon/gun/pistol/highpower/tactical, +/obj/item/weapon/gun/pistol/highpower/automag/tactical, /turf/open/floor/plating, /area/template_noop) "W" = ( diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/20.poolparty.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.poolparty.dmm index 63fb17b8f8..5ba86e60f7 100644 --- a/maps/map_files/FOP_v3_Sciannex/sprinkles/20.poolparty.dmm +++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.poolparty.dmm @@ -1357,7 +1357,7 @@ pixel_y = -2 }, /obj/item/weapon/gun/pistol/heavy, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/wood, /area/template_noop) "We" = ( diff --git a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm index e406258040..7b1a34d0ec 100644 --- a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm +++ b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm @@ -10309,7 +10309,7 @@ }, /area/ice_colony/surface/command/control/office) "aDb" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ icon_state = "dark2" @@ -26765,8 +26765,8 @@ /area/ice_colony/underground/security/detective) "bCc" = ( /obj/structure/surface/table/woodentable, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/wood, /area/ice_colony/underground/security/marshal) "bCd" = ( @@ -32159,8 +32159,8 @@ /area/ice_colony/underground/maintenance/security) "bRx" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/weapon/gun/revolver/cmb{ +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/weapon/gun/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -32365,13 +32365,13 @@ /obj/structure/machinery/light{ dir = 8 }, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm index 0332274d42..3b48073ec6 100644 --- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm +++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm @@ -1734,8 +1734,8 @@ /area/shiva/interior/colony/medseceng) "ahP" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/weapon/gun/revolver/cmb{ +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/weapon/gun/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -1847,8 +1847,8 @@ /area/shiva/interior/aerodrome) "aim" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/weapon/gun/revolver/cmb{ +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/weapon/gun/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -2383,13 +2383,13 @@ dir = 8; pixel_y = -5 }, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -2831,8 +2831,8 @@ /area/shiva/interior/warehouse) "anP" = ( /obj/structure/surface/table/woodentable, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/wood, /area/shiva/interior/colony/medseceng) "anR" = ( @@ -17922,13 +17922,13 @@ /area/shiva/interior/colony/central) "nfg" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -20274,7 +20274,7 @@ }, /area/shiva/interior/colony/deck) "pME" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/shiva{ icon_state = "floor3" }, @@ -21558,7 +21558,7 @@ /area/shiva/interior/colony/s_admin) "reV" = ( /obj/structure/surface/table, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/shiva{ dir = 8; icon_state = "purplefull" @@ -24239,7 +24239,7 @@ }, /area/shiva/interior/colony/research_hab) "uee" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/cp_lz2) "ueu" = ( @@ -24540,7 +24540,7 @@ /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/fortbiceps) "upp" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/shiva{ dir = 8; icon_state = "purplefull" diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index 558f1a637d..42a46a0d9e 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -1324,7 +1324,7 @@ /area/kutjevo/interior/oob) "bRa" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/kutjevo/colors/orange/edge{ dir = 1 }, @@ -3197,7 +3197,7 @@ /turf/open/floor/kutjevo/plate, /area/kutjevo/interior/colony_central) "emn" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/kutjevo/tan/multi_tiles, /area/kutjevo/interior/complex/botany) "emU" = ( @@ -5278,7 +5278,7 @@ /turf/closed/wall/kutjevo/rock, /area/kutjevo/interior/complex/botany) "hkY" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/gm/river/desert/deep/covered, /area/kutjevo/interior/power/comms) "hmi" = ( @@ -6684,7 +6684,7 @@ /turf/open/auto_turf/sand/layer1, /area/kutjevo/interior/colony_S_East) "jtu" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/kutjevo/colors/orange, /area/kutjevo/interior/power/comms) "jtJ" = ( @@ -7554,7 +7554,7 @@ /obj/structure/barricade/deployable{ dir = 1 }, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/Northwest_Flight_Control) "kIn" = ( @@ -11306,7 +11306,7 @@ /turf/open/auto_turf/sand/layer1, /area/kutjevo/exterior/Northwest_Colony) "pKO" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/kutjevo/tan/multi_tiles, /area/kutjevo/interior/power/comms) "pKP" = ( @@ -12682,7 +12682,7 @@ }, /area/kutjevo/exterior/runoff_river) "rNG" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/botany) "rOd" = ( @@ -13389,7 +13389,7 @@ /turf/open/auto_turf/sand/layer2, /area/kutjevo/interior/colony_N_East) "sOc" = ( -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -13649,7 +13649,7 @@ /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/complex/botany/east_tech) "tgl" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/Northwest_Flight_Control) "tgO" = ( @@ -13659,7 +13659,7 @@ /area/kutjevo/interior/colony_S_East) "tgZ" = ( /obj/structure/surface/table/almayer, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/kutjevo/colors/purple, /area/kutjevo/interior/construction) "tha" = ( @@ -13908,7 +13908,7 @@ /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/complex/botany/east_tech) "tyW" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/botany) "tzJ" = ( @@ -13927,7 +13927,7 @@ /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/construction) "tBB" = ( -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 7; pixel_y = 6 }, @@ -15048,15 +15048,15 @@ /area/kutjevo/interior/complex/botany) "vaG" = ( /obj/structure/surface/table/almayer, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 7; pixel_y = 6 }, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = -7; pixel_y = -6 }, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/kutjevo/colors/purple, /area/kutjevo/interior/construction) "vbl" = ( @@ -15959,7 +15959,7 @@ /turf/open/gm/river/desert/shallow, /area/kutjevo/interior/oob/dev_room) "wpY" = ( -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -16532,7 +16532,7 @@ /turf/open/floor/kutjevo/tan/multi_tiles, /area/kutjevo/interior/complex/botany/east) "xkE" = ( -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 7; pixel_y = 6 }, 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..99c77f860a 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 @@ -3504,7 +3511,7 @@ /area/lv522/indoors/a_block/security) "bSa" = ( /obj/effect/decal/cleanable/blood, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, @@ -3535,7 +3542,7 @@ }, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood, -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/shiva{ icon_state = "radiator_tile2" }, @@ -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) @@ -4293,7 +4306,7 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/w_rockies) "ckT" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, @@ -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" @@ -22618,8 +22691,8 @@ "jmd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -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" = ( @@ -38788,7 +38900,7 @@ }, /area/lv522/landing_zone_1) "pni" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen/glass) "pnj" = ( @@ -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{ @@ -43096,7 +43194,7 @@ }, /area/lv522/atmos/command_centre) "qPu" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /obj/item/clothing/head/soft/sec, /obj/structure/curtain/medical, /turf/open/floor/strata{ @@ -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{ @@ -60392,8 +60611,8 @@ /area/lv522/indoors/c_block/mining) "xbj" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ icon_state = "darkredfull2" @@ -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/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index c9c82635d8..d512590d7d 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -8865,10 +8865,10 @@ dir = 4 }, /obj/structure/surface/table, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 5; icon_state = "red" @@ -8880,10 +8880,10 @@ }, /obj/structure/surface/table, /obj/item/clothing/ears/earmuffs, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 9; icon_state = "red" diff --git a/maps/map_files/LV624/armory/10.cheese.dmm b/maps/map_files/LV624/armory/10.cheese.dmm index 96b4ef5942..347e392787 100644 --- a/maps/map_files/LV624/armory/10.cheese.dmm +++ b/maps/map_files/LV624/armory/10.cheese.dmm @@ -159,10 +159,10 @@ dir = 4 }, /obj/structure/surface/table, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 5; icon_state = "red" diff --git a/maps/map_files/LV624/armory/10.extra.dmm b/maps/map_files/LV624/armory/10.extra.dmm index cf1aaaa538..53a94ef204 100644 --- a/maps/map_files/LV624/armory/10.extra.dmm +++ b/maps/map_files/LV624/armory/10.extra.dmm @@ -164,10 +164,10 @@ dir = 4 }, /obj/structure/surface/table, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 5; icon_state = "red" diff --git a/maps/map_files/LV624/armory/10.looted.dmm b/maps/map_files/LV624/armory/10.looted.dmm index cf2d4a9e02..ae5bbef21b 100644 --- a/maps/map_files/LV624/armory/10.looted.dmm +++ b/maps/map_files/LV624/armory/10.looted.dmm @@ -137,10 +137,10 @@ dir = 4 }, /obj/structure/surface/table, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 5; icon_state = "red" diff --git a/maps/map_files/LV624_Fixed/LV624_repaired.dmm b/maps/map_files/LV624_Fixed/LV624_repaired.dmm index 0054709887..5334b7a123 100644 --- a/maps/map_files/LV624_Fixed/LV624_repaired.dmm +++ b/maps/map_files/LV624_Fixed/LV624_repaired.dmm @@ -14919,7 +14919,7 @@ /area/lv624/lazarus/landing_zones/lz1) "qwG" = ( /obj/structure/surface/rack, -/obj/item/storage/box/clf, +/obj/item/storage/box/loadout/clf, /turf/open/shuttle{ icon_state = "floor4" }, @@ -17585,10 +17585,10 @@ dir = 4 }, /obj/structure/surface/table, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 5; icon_state = "red" @@ -19048,10 +19048,10 @@ }, /obj/structure/surface/table, /obj/item/clothing/ears/earmuffs, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor{ dir = 9; icon_state = "red" diff --git a/maps/map_files/New_Varadero/New_Varadero.dmm b/maps/map_files/New_Varadero/New_Varadero.dmm index be2e218d2f..0b29155026 100644 --- a/maps/map_files/New_Varadero/New_Varadero.dmm +++ b/maps/map_files/New_Varadero/New_Varadero.dmm @@ -1381,7 +1381,7 @@ dir = 1; pixel_y = 17 }, -/obj/item/weapon/gun/revolver/cmb{ +/obj/item/weapon/gun/revolver/spearhead{ pixel_y = 2 }, /obj/item/clothing/ears/earmuffs{ @@ -3754,8 +3754,8 @@ /area/varadero/interior/hall_SE) "cur" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/weapon/gun/pistol/mod88{ +/obj/item/weapon/gun/pistol/vp70, +/obj/item/weapon/gun/pistol/vp70{ pixel_y = -2 }, /obj/structure/machinery/storm_siren{ @@ -4748,7 +4748,7 @@ }, /area/varadero/interior/hall_NW) "dcM" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/north_research) "dda" = ( @@ -14358,7 +14358,7 @@ }, /area/varadero/interior/records) "jvF" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, @@ -14369,7 +14369,7 @@ /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior_protected/caves/digsite) "jwy" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/floor/shiva{ icon_state = "purple" }, @@ -24832,16 +24832,16 @@ /area/varadero/interior/hall_SE) "qfb" = ( /obj/structure/closet/crate/ammo/alt, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = -4; pixel_y = -5 }, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = -4; pixel_y = -5 }, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/shiva{ icon_state = "floor3" }, @@ -26627,7 +26627,7 @@ /obj/structure/machinery/light{ dir = 1 }, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/shiva{ icon_state = "purple" }, @@ -28679,15 +28679,15 @@ /area/varadero/interior/maintenance/security) "syb" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/structure/machinery/light{ dir = 4 }, @@ -32044,7 +32044,7 @@ icon_state = "cartridge_1_1" }, /obj/effect/decal/cleanable/blood, -/obj/item/weapon/gun/pistol/mod88, +/obj/item/weapon/gun/pistol/vp70, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, @@ -37068,8 +37068,8 @@ /area/varadero/interior/electrical) "xRx" = ( /obj/structure/surface/table/woodentable, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/wood, /area/varadero/interior/security) "xRF" = ( diff --git a/maps/map_files/New_Varadero_Fixed/New_Varadero_Repaired.dmm b/maps/map_files/New_Varadero_Fixed/New_Varadero_Repaired.dmm index 1413a053bc..7a81776beb 100644 --- a/maps/map_files/New_Varadero_Fixed/New_Varadero_Repaired.dmm +++ b/maps/map_files/New_Varadero_Fixed/New_Varadero_Repaired.dmm @@ -1273,7 +1273,7 @@ dir = 1; pixel_y = 17 }, -/obj/item/weapon/gun/revolver/cmb{ +/obj/item/weapon/gun/revolver/spearhead{ pixel_y = 2 }, /obj/item/clothing/ears/earmuffs{ @@ -3523,8 +3523,8 @@ /area/varadero/interior/hall_SE) "cur" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/mod88, -/obj/item/weapon/gun/pistol/mod88{ +/obj/item/weapon/gun/pistol/vp70, +/obj/item/weapon/gun/pistol/vp70{ pixel_y = -2 }, /obj/structure/machinery/storm_siren{ @@ -23255,16 +23255,16 @@ /area/varadero/interior/bunks) "qfb" = ( /obj/structure/closet/crate/ammo/alt, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = -4; pixel_y = -5 }, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = -4; pixel_y = -5 }, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/shiva{ icon_state = "floor3" }, @@ -26894,15 +26894,15 @@ /area/varadero/interior/maintenance/security) "syb" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /obj/structure/machinery/light{ dir = 4 }, @@ -30093,7 +30093,7 @@ }, /area/varadero/interior/technical_storage) "uMQ" = ( -/obj/item/weapon/gun/pistol/mod88, +/obj/item/weapon/gun/pistol/vp70, /turf/open/floor/plating/icefloor{ icon_state = "asteroidplating" }, @@ -34783,8 +34783,8 @@ /area/varadero/interior/electrical) "xRx" = ( /obj/structure/surface/table/woodentable, -/obj/item/weapon/gun/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/floor/wood, /area/varadero/interior/security) "xRF" = ( diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm index 9cc753e4bd..451798f51f 100644 --- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm +++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm @@ -2191,7 +2191,7 @@ /area/strata/ag/interior/dorms/hive) "agD" = ( /obj/effect/decal/cleanable/blood, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -2238,7 +2238,7 @@ /area/strata/ag/exterior/paths/cabin_area) "agI" = ( /obj/structure/bed/nest, -/obj/item/weapon/gun/revolver/cmb{ +/obj/item/weapon/gun/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -2447,7 +2447,7 @@ /area/strata/ag/interior/dorms/hive) "aht" = ( /obj/structure/bed/nest, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -2824,7 +2824,7 @@ /obj/effect/decal/cleanable/blood{ icon_state = "xgib2" }, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -2834,7 +2834,7 @@ /area/strata/ag/interior/dorms/hive) "aiC" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -3043,7 +3043,7 @@ }, /area/strata/ag/interior/dorms/hive) "ajk" = ( -/obj/item/weapon/gun/revolver/cmb{ +/obj/item/weapon/gun/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -27742,7 +27742,7 @@ }, /area/strata/ag/interior/nearlz1) "coY" = ( -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -27752,7 +27752,7 @@ /area/strata/ag/interior/dorms/hive) "coZ" = ( /obj/effect/decal/cleanable/blood, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -33135,12 +33135,12 @@ /turf/closed/wall/strata_outpost, /area/strata/ug/interior/outpost/jung/dorms/med2) "jXD" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /obj/structure/surface/rack{ layer = 2.5 }, -/obj/item/ammo_magazine/revolver/cmb, -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, +/obj/item/ammo_magazine/revolver/spearhead, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/strata{ dir = 4; @@ -34361,7 +34361,7 @@ /obj/structure/pipes/vents/pump{ dir = 1 }, -/obj/item/ammo_magazine/revolver/cmb{ +/obj/item/ammo_magazine/revolver/spearhead{ pixel_x = 6; pixel_y = -4 }, @@ -36915,7 +36915,7 @@ /turf/open/floor/strata, /area/strata/ug/interior/outpost/jung/dorms/med2) "qdI" = ( -/obj/item/ammo_magazine/revolver/cmb, +/obj/item/ammo_magazine/revolver/spearhead, /turf/open/auto_turf/ice/layer1, /area/strata/ag/exterior/paths/southresearch) "qer" = ( @@ -40802,7 +40802,7 @@ }, /area/strata/ag/interior/research_decks/security) "wgu" = ( -/obj/item/weapon/gun/revolver/cmb, +/obj/item/weapon/gun/revolver/spearhead, /turf/open/auto_turf/ice/layer1, /area/strata/ag/exterior/paths/southresearch) "wgB" = ( diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 128256587e..1f3bf36f78 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -23563,7 +23563,7 @@ dir = 4 }, /obj/structure/surface/table/reinforced/almayer_B, -/obj/item/storage/box/co2_knife{ +/obj/item/storage/box/loadout/co2_knife{ pixel_x = 8; pixel_y = 9 }, diff --git a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm index 36c8e9abe7..e5461db06c 100644 --- a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm +++ b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm @@ -6689,7 +6689,7 @@ /obj/structure/surface/rack, /obj/item/ammo_box/magazine/m4a3, /obj/item/ammo_box/magazine/m44, -/obj/item/ammo_box/magazine/mod88, +/obj/item/ammo_box/magazine/vp70, /turf/open/floor/prison{ icon_state = "floor_plate" }, diff --git a/maps/map_files/chapaev/chapaev.dmm b/maps/map_files/chapaev/chapaev.dmm index ec03e22945..7e066872a1 100644 --- a/maps/map_files/chapaev/chapaev.dmm +++ b/maps/map_files/chapaev/chapaev.dmm @@ -2686,7 +2686,7 @@ /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/weapon/gun/shotgun/type23/pve, +/obj/item/weapon/gun/shotgun/type23, /turf/open/floor/strata{ icon_state = "floor2" }, @@ -4735,7 +4735,7 @@ /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/weapon/gun/shotgun/type23/pve, +/obj/item/weapon/gun/shotgun/type23, /turf/open/floor/strata{ icon_state = "floor2" }, diff --git a/maps/map_files/derelict_almayer/derelict_almayer.dmm b/maps/map_files/derelict_almayer/derelict_almayer.dmm index aeab7ffa35..5b9cb948c1 100644 --- a/maps/map_files/derelict_almayer/derelict_almayer.dmm +++ b/maps/map_files/derelict_almayer/derelict_almayer.dmm @@ -60103,7 +60103,7 @@ dir = 4 }, /obj/structure/surface/table/reinforced/almayer_B, -/obj/item/storage/box/co2_knife{ +/obj/item/storage/box/loadout/co2_knife{ pixel_x = 8; pixel_y = 9 }, diff --git a/maps/map_files/golden_arrow/golden_arrow.dmm b/maps/map_files/golden_arrow/golden_arrow.dmm index 37c6f5290e..cae623c242 100644 --- a/maps/map_files/golden_arrow/golden_arrow.dmm +++ b/maps/map_files/golden_arrow/golden_arrow.dmm @@ -541,7 +541,6 @@ }, /obj/item/defenses/handheld/sentry, /obj/structure/largecrate/supply/explosives/grenades/less{ - icon_state = "case"; layer = 3.1; pixel_x = 20; pixel_y = 10 @@ -1285,6 +1284,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" @@ -2281,7 +2293,6 @@ "iF" = ( /obj/structure/largecrate/supply/motiondetectors, /obj/structure/largecrate/supply/explosives/grenades/less{ - icon_state = "case"; pixel_y = 10 }, /obj/item/ammo_box/magazine/mk1{ @@ -3595,6 +3606,9 @@ /obj/item/ammo_magazine/rifle/m4ra/pve, /obj/item/ammo_magazine/rifle/m4ra/pve, /obj/effect/decal/cleanable/dirt, +/obj/item/weapon/gun/rifle/m4ra/pve{ + pixel_y = 8 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -3644,11 +3658,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" }, @@ -3908,17 +3938,6 @@ }, /turf/open/floor/plating, /area/golden_arrow/hangar) -"oK" = ( -/obj/item/storage/box/guncase/pumpshotgun/special{ - pixel_y = 4 - }, -/obj/item/storage/box/guncase/flamer/special{ - layer = 3.1; - pixel_y = 10 - }, -/obj/structure/surface/rack, -/turf/open/floor/almayer, -/area/golden_arrow/platoonarmory) "oM" = ( /obj/structure/filingcabinet{ density = 0; @@ -5206,7 +5225,7 @@ /area/golden_arrow/engineering) "tP" = ( /obj/structure/surface/table/almayer, -/obj/item/storage/box/co2_knife{ +/obj/item/storage/box/loadout/co2_knife{ pixel_x = 3; pixel_y = 13 }, @@ -6992,23 +7011,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 +7553,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; @@ -7982,8 +7997,16 @@ "Fe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/m4ra/pve{ - pixel_y = 8 +/obj/item/storage/box/guncase/shotgunpump{ + pixel_y = 17 + }, +/obj/item/ammo_magazine/shotgun/buckshot{ + pixel_y = 6; + pixel_x = -4 + }, +/obj/item/ammo_magazine/shotgun/buckshot{ + pixel_y = 6; + pixel_x = 6 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -8018,17 +8041,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" @@ -9785,6 +9820,15 @@ }, /turf/open/floor/almayer, /area/golden_arrow/hangar) +"LP" = ( +/obj/item/storage/box/guncase/flamer/special{ + layer = 3.1; + pixel_y = 10 + }, +/obj/structure/surface/rack, +/obj/item/storage/box/guncase/shotguncombat, +/turf/open/floor/almayer, +/area/golden_arrow/platoonarmory) "LQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/supply, @@ -21955,12 +21999,12 @@ EG EG EG Wh -Nz +nD HF rQ HF Fl -og +AV og CM Bf @@ -22111,8 +22155,8 @@ fl HF rQ HF -AV -og +HF +HF og Va TB @@ -22263,8 +22307,8 @@ zG aA vN nW -nD -og +Nz +eM og Dq Ms @@ -22417,7 +22461,7 @@ Ir Ir Ir Ir -Vi +og og Hv Iz @@ -24226,7 +24270,7 @@ EG EG EG HZ -oK +LP NU pI Ot @@ -25138,7 +25182,7 @@ EG EG EG HZ -oK +LP pd Jx Ot diff --git a/maps/map_files/golden_arrow_classic/golden_arrow_classic.dmm b/maps/map_files/golden_arrow_classic/golden_arrow_classic.dmm index ab5d87ee73..8b6ad0c427 100644 --- a/maps/map_files/golden_arrow_classic/golden_arrow_classic.dmm +++ b/maps/map_files/golden_arrow_classic/golden_arrow_classic.dmm @@ -533,7 +533,7 @@ pixel_x = 5; pixel_y = 7 }, -/obj/item/storage/box/co2_knife{ +/obj/item/storage/box/loadout/co2_knife{ pixel_x = 3; pixel_y = 13 }, @@ -613,7 +613,7 @@ /area/golden_arrow/prep_hallway) "cV" = ( /obj/structure/surface/table/almayer, -/obj/item/storage/box/guncase/pumpshotgun/special, +/obj/item/storage/box/guncase/shotguncombat, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -4989,7 +4989,7 @@ name = "spent snailshot"; layer = 2.7 }, -/obj/item/storage/box/guncase/pumpshotgun/special, +/obj/item/storage/box/guncase/shotguncombat, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -6236,7 +6236,6 @@ "Kp" = ( /obj/structure/largecrate/supply/motiondetectors, /obj/structure/largecrate/supply/explosives/grenades/less{ - icon_state = "case"; pixel_y = 10; pixel_x = 3 }, @@ -7126,9 +7125,7 @@ }, /area/golden_arrow/cryo_cells) "Pm" = ( -/obj/structure/largecrate/supply/explosives/grenades/less{ - icon_state = "case" - }, +/obj/structure/largecrate/supply/explosives/grenades/less, /obj/structure/largecrate/supply/motiondetectors{ pixel_y = 10 }, diff --git a/maps/map_files/rover/rover.dmm b/maps/map_files/rover/rover.dmm index e672e1b887..fcd21b1f3a 100644 --- a/maps/map_files/rover/rover.dmm +++ b/maps/map_files/rover/rover.dmm @@ -485,13 +485,13 @@ /area/golden_arrow/hangar) "en" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/shotgun/pump/special{ - pixel_y = 10 - }, /obj/structure/machinery/light{ dir = 8 }, -/obj/item/ammo_magazine/shotgun/buckshot/special, +/obj/item/storage/box/guncase/shotguncombat, +/obj/item/storage/box/guncase/shotguncombat{ + pixel_y = 6 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -1136,6 +1136,7 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/item/weapon/gun/rifle/m4ra/pve, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -4707,7 +4708,6 @@ /area/golden_arrow/dorms) "Uc" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/rifle/m4ra/pve, /turf/open/floor/almayer{ icon_state = "plate" }, 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/maps/shuttles/ert_shuttle_big.dmm b/maps/shuttles/ert_shuttle_big.dmm index 96fb88a3ea..dcb88ddd2d 100644 --- a/maps/shuttles/ert_shuttle_big.dmm +++ b/maps/shuttles/ert_shuttle_big.dmm @@ -22,11 +22,11 @@ /area/shuttle/ert) "cx" = ( /obj/structure/surface/table/almayer, -/obj/item/weapon/gun/pistol/mod88{ +/obj/item/weapon/gun/pistol/vp70{ pixel_y = 4 }, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, -/obj/item/ammo_magazine/pistol/mod88/normalpoint, +/obj/item/ammo_magazine/pistol/vp70, +/obj/item/ammo_magazine/pistol/vp70, /turf/open/floor/almayer{ icon_state = "plate" }, diff --git a/nano/images/weapons/88m4.png b/nano/images/weapons/88m4.png deleted file mode 100644 index 77faa65720..0000000000 Binary files a/nano/images/weapons/88m4.png and /dev/null differ diff --git a/nano/images/weapons/aamateba.png b/nano/images/weapons/aamateba.png deleted file mode 100644 index 30a5c1c72c..0000000000 Binary files a/nano/images/weapons/aamateba.png and /dev/null differ diff --git a/nano/images/weapons/amateba.png b/nano/images/weapons/amateba.png deleted file mode 100644 index 6d411d2ad7..0000000000 Binary files a/nano/images/weapons/amateba.png and /dev/null differ diff --git a/nano/images/weapons/auto.png b/nano/images/weapons/auto.png deleted file mode 100644 index 7efc6ff1c8..0000000000 Binary files a/nano/images/weapons/auto.png and /dev/null differ diff --git a/nano/images/weapons/auto9.png b/nano/images/weapons/auto9.png deleted file mode 100644 index 8fbc101f2f..0000000000 Binary files a/nano/images/weapons/auto9.png and /dev/null differ diff --git a/nano/images/weapons/b92fs.png b/nano/images/weapons/b92fs.png deleted file mode 100644 index 2788124dfb..0000000000 Binary files a/nano/images/weapons/b92fs.png and /dev/null differ diff --git a/nano/images/weapons/burst.png b/nano/images/weapons/burst.png deleted file mode 100644 index 669bd676eb..0000000000 Binary files a/nano/images/weapons/burst.png and /dev/null differ diff --git a/nano/images/weapons/c70.png b/nano/images/weapons/c70.png deleted file mode 100644 index b7e2ed731b..0000000000 Binary files a/nano/images/weapons/c70.png and /dev/null differ diff --git a/nano/images/weapons/c_deagle.png b/nano/images/weapons/c_deagle.png deleted file mode 100644 index c2a5c991ac..0000000000 Binary files a/nano/images/weapons/c_deagle.png and /dev/null differ diff --git a/nano/images/weapons/cmateba.png b/nano/images/weapons/cmateba.png deleted file mode 100644 index f949d4b547..0000000000 Binary files a/nano/images/weapons/cmateba.png and /dev/null differ diff --git a/nano/images/weapons/cshotgun.png b/nano/images/weapons/cshotgun.png deleted file mode 100644 index 9820f58546..0000000000 Binary files a/nano/images/weapons/cshotgun.png and /dev/null differ diff --git a/nano/images/weapons/dartgun.png b/nano/images/weapons/dartgun.png deleted file mode 100644 index 218dc742dc..0000000000 Binary files a/nano/images/weapons/dartgun.png and /dev/null differ diff --git a/nano/images/weapons/deagle.png b/nano/images/weapons/deagle.png deleted file mode 100644 index 059a730d7e..0000000000 Binary files a/nano/images/weapons/deagle.png and /dev/null differ diff --git a/nano/images/weapons/disabled_automatic.png b/nano/images/weapons/disabled_automatic.png deleted file mode 100644 index 94da079d80..0000000000 Binary files a/nano/images/weapons/disabled_automatic.png and /dev/null differ diff --git a/nano/images/weapons/disabled_burst.png b/nano/images/weapons/disabled_burst.png deleted file mode 100644 index 71b88bcaf9..0000000000 Binary files a/nano/images/weapons/disabled_burst.png and /dev/null differ diff --git a/nano/images/weapons/disabled_single.png b/nano/images/weapons/disabled_single.png deleted file mode 100644 index bf2cef4b15..0000000000 Binary files a/nano/images/weapons/disabled_single.png and /dev/null differ diff --git a/nano/images/weapons/dshotgun.png b/nano/images/weapons/dshotgun.png deleted file mode 100644 index cd79598281..0000000000 Binary files a/nano/images/weapons/dshotgun.png and /dev/null differ diff --git a/nano/images/weapons/fp9000.png b/nano/images/weapons/fp9000.png deleted file mode 100644 index b9f971eb07..0000000000 Binary files a/nano/images/weapons/fp9000.png and /dev/null differ diff --git a/nano/images/weapons/fp9000_pmc.png b/nano/images/weapons/fp9000_pmc.png deleted file mode 100644 index b9f971eb07..0000000000 Binary files a/nano/images/weapons/fp9000_pmc.png and /dev/null differ diff --git a/nano/images/weapons/g_deagle.png b/nano/images/weapons/g_deagle.png deleted file mode 100644 index c2a5c991ac..0000000000 Binary files a/nano/images/weapons/g_deagle.png and /dev/null differ diff --git a/nano/images/weapons/hg3712.png b/nano/images/weapons/hg3712.png deleted file mode 100644 index f7f32190c4..0000000000 Binary files a/nano/images/weapons/hg3712.png and /dev/null differ diff --git a/nano/images/weapons/highpower.png b/nano/images/weapons/highpower.png deleted file mode 100644 index a7d25c4480..0000000000 Binary files a/nano/images/weapons/highpower.png and /dev/null differ diff --git a/nano/images/weapons/holdout.png b/nano/images/weapons/holdout.png deleted file mode 100644 index 1d6f26fad2..0000000000 Binary files a/nano/images/weapons/holdout.png and /dev/null differ diff --git a/nano/images/weapons/hunting.png b/nano/images/weapons/hunting.png deleted file mode 100644 index 5d9613117f..0000000000 Binary files a/nano/images/weapons/hunting.png and /dev/null differ diff --git a/nano/images/weapons/kt42.png b/nano/images/weapons/kt42.png deleted file mode 100644 index ecf0ee41a9..0000000000 Binary files a/nano/images/weapons/kt42.png and /dev/null differ diff --git a/nano/images/weapons/l42mk1.png b/nano/images/weapons/l42mk1.png deleted file mode 100644 index b5efcc14d3..0000000000 Binary files a/nano/images/weapons/l42mk1.png and /dev/null differ diff --git a/nano/images/weapons/m16.png b/nano/images/weapons/m16.png deleted file mode 100644 index 2287f73196..0000000000 Binary files a/nano/images/weapons/m16.png and /dev/null differ diff --git a/nano/images/weapons/m240.png b/nano/images/weapons/m240.png deleted file mode 100644 index 72eb477c9e..0000000000 Binary files a/nano/images/weapons/m240.png and /dev/null differ diff --git a/nano/images/weapons/m240t.png b/nano/images/weapons/m240t.png deleted file mode 100644 index 619551d690..0000000000 Binary files a/nano/images/weapons/m240t.png and /dev/null differ diff --git a/nano/images/weapons/m37-17.png b/nano/images/weapons/m37-17.png deleted file mode 100644 index 7d53cbd761..0000000000 Binary files a/nano/images/weapons/m37-17.png and /dev/null differ diff --git a/nano/images/weapons/m37.png b/nano/images/weapons/m37.png deleted file mode 100644 index f888adaeb6..0000000000 Binary files a/nano/images/weapons/m37.png and /dev/null differ diff --git a/nano/images/weapons/m39.png b/nano/images/weapons/m39.png deleted file mode 100644 index f6fbb0a489..0000000000 Binary files a/nano/images/weapons/m39.png and /dev/null differ diff --git a/nano/images/weapons/m41a.png b/nano/images/weapons/m41a.png deleted file mode 100644 index 9476e0d1f4..0000000000 Binary files a/nano/images/weapons/m41a.png and /dev/null differ diff --git a/nano/images/weapons/m41a2.png b/nano/images/weapons/m41a2.png deleted file mode 100644 index 4179cb37f5..0000000000 Binary files a/nano/images/weapons/m41a2.png and /dev/null differ diff --git a/nano/images/weapons/m41ae2.png b/nano/images/weapons/m41ae2.png deleted file mode 100644 index 4a5232fd66..0000000000 Binary files a/nano/images/weapons/m41ae2.png and /dev/null differ diff --git a/nano/images/weapons/m41amk1.png b/nano/images/weapons/m41amk1.png deleted file mode 100644 index 3f44c62b0f..0000000000 Binary files a/nano/images/weapons/m41amk1.png and /dev/null differ diff --git a/nano/images/weapons/m41b.png b/nano/images/weapons/m41b.png deleted file mode 100644 index 1d63443f25..0000000000 Binary files a/nano/images/weapons/m41b.png and /dev/null differ diff --git a/nano/images/weapons/m42a.png b/nano/images/weapons/m42a.png deleted file mode 100644 index f0d07328c1..0000000000 Binary files a/nano/images/weapons/m42a.png and /dev/null differ diff --git a/nano/images/weapons/m42c.png b/nano/images/weapons/m42c.png deleted file mode 100644 index 47d53b86ce..0000000000 Binary files a/nano/images/weapons/m42c.png and /dev/null differ diff --git a/nano/images/weapons/m44r.png b/nano/images/weapons/m44r.png deleted file mode 100644 index d7deb2589e..0000000000 Binary files a/nano/images/weapons/m44r.png and /dev/null differ diff --git a/nano/images/weapons/m44rc.png b/nano/images/weapons/m44rc.png deleted file mode 100644 index 1c20973a0a..0000000000 Binary files a/nano/images/weapons/m44rc.png and /dev/null differ diff --git a/nano/images/weapons/m46c.png b/nano/images/weapons/m46c.png deleted file mode 100644 index d404a6d88f..0000000000 Binary files a/nano/images/weapons/m46c.png and /dev/null differ diff --git a/nano/images/weapons/m4a3.png b/nano/images/weapons/m4a3.png deleted file mode 100644 index 9169c71c51..0000000000 Binary files a/nano/images/weapons/m4a3.png and /dev/null differ diff --git a/nano/images/weapons/m4a345.png b/nano/images/weapons/m4a345.png deleted file mode 100644 index 1ba0015846..0000000000 Binary files a/nano/images/weapons/m4a345.png and /dev/null differ diff --git a/nano/images/weapons/m4a3c.png b/nano/images/weapons/m4a3c.png deleted file mode 100644 index 95731a6c71..0000000000 Binary files a/nano/images/weapons/m4a3c.png and /dev/null differ diff --git a/nano/images/weapons/m5.png b/nano/images/weapons/m5.png deleted file mode 100644 index 7d502fdaaf..0000000000 Binary files a/nano/images/weapons/m5.png and /dev/null differ diff --git a/nano/images/weapons/m56.png b/nano/images/weapons/m56.png deleted file mode 100644 index baf9b9bd9c..0000000000 Binary files a/nano/images/weapons/m56.png and /dev/null differ diff --git a/nano/images/weapons/m57a4.png b/nano/images/weapons/m57a4.png deleted file mode 100644 index 6c2cbcbdbe..0000000000 Binary files a/nano/images/weapons/m57a4.png and /dev/null differ diff --git a/nano/images/weapons/m60.png b/nano/images/weapons/m60.png deleted file mode 100644 index 08baffaa74..0000000000 Binary files a/nano/images/weapons/m60.png and /dev/null differ diff --git a/nano/images/weapons/m79.png b/nano/images/weapons/m79.png deleted file mode 100644 index 365280f242..0000000000 Binary files a/nano/images/weapons/m79.png and /dev/null differ diff --git a/nano/images/weapons/m81.png b/nano/images/weapons/m81.png deleted file mode 100644 index 7b1a6a195b..0000000000 Binary files a/nano/images/weapons/m81.png and /dev/null differ diff --git a/nano/images/weapons/m82f.png b/nano/images/weapons/m82f.png deleted file mode 100644 index f6d5e24ec8..0000000000 Binary files a/nano/images/weapons/m82f.png and /dev/null differ diff --git a/nano/images/weapons/m92.png b/nano/images/weapons/m92.png deleted file mode 100644 index ce64c3df36..0000000000 Binary files a/nano/images/weapons/m92.png and /dev/null differ diff --git a/nano/images/weapons/m93b2.png b/nano/images/weapons/m93b2.png deleted file mode 100644 index 987f56643a..0000000000 Binary files a/nano/images/weapons/m93b2.png and /dev/null differ diff --git a/nano/images/weapons/mac15.png b/nano/images/weapons/mac15.png deleted file mode 100644 index 179c8b7a61..0000000000 Binary files a/nano/images/weapons/mac15.png and /dev/null differ diff --git a/nano/images/weapons/mar30.png b/nano/images/weapons/mar30.png deleted file mode 100644 index 3a5c19f336..0000000000 Binary files a/nano/images/weapons/mar30.png and /dev/null differ diff --git a/nano/images/weapons/mar40.png b/nano/images/weapons/mar40.png deleted file mode 100644 index 043d6529ef..0000000000 Binary files a/nano/images/weapons/mar40.png and /dev/null differ diff --git a/nano/images/weapons/mateba.png b/nano/images/weapons/mateba.png deleted file mode 100644 index 49ec3f897a..0000000000 Binary files a/nano/images/weapons/mateba.png and /dev/null differ diff --git a/nano/images/weapons/mk221.png b/nano/images/weapons/mk221.png deleted file mode 100644 index a15773fb26..0000000000 Binary files a/nano/images/weapons/mk221.png and /dev/null differ diff --git a/nano/images/weapons/mou.png b/nano/images/weapons/mou.png deleted file mode 100644 index a471e16f6e..0000000000 Binary files a/nano/images/weapons/mou.png and /dev/null differ diff --git a/nano/images/weapons/mp5.png b/nano/images/weapons/mp5.png deleted file mode 100644 index e36fccdca4..0000000000 Binary files a/nano/images/weapons/mp5.png and /dev/null differ diff --git a/nano/images/weapons/mp7.png b/nano/images/weapons/mp7.png deleted file mode 100644 index 9494c8003d..0000000000 Binary files a/nano/images/weapons/mp7.png and /dev/null differ diff --git a/nano/images/weapons/no_name.png b/nano/images/weapons/no_name.png deleted file mode 100644 index 8babb2fda5..0000000000 Binary files a/nano/images/weapons/no_name.png and /dev/null differ diff --git a/nano/images/weapons/ny762.png b/nano/images/weapons/ny762.png deleted file mode 100644 index bdd5fe500e..0000000000 Binary files a/nano/images/weapons/ny762.png and /dev/null differ diff --git a/nano/images/weapons/painless.png b/nano/images/weapons/painless.png deleted file mode 100644 index f493c662eb..0000000000 Binary files a/nano/images/weapons/painless.png and /dev/null differ diff --git a/nano/images/weapons/pk9.png b/nano/images/weapons/pk9.png deleted file mode 100644 index 7c66494637..0000000000 Binary files a/nano/images/weapons/pk9.png and /dev/null differ diff --git a/nano/images/weapons/pk9r.png b/nano/images/weapons/pk9r.png deleted file mode 100644 index be9adcd507..0000000000 Binary files a/nano/images/weapons/pk9r.png and /dev/null differ diff --git a/nano/images/weapons/pk9u.png b/nano/images/weapons/pk9u.png deleted file mode 100644 index 519f574f6e..0000000000 Binary files a/nano/images/weapons/pk9u.png and /dev/null differ diff --git a/nano/images/weapons/ppsh17b.png b/nano/images/weapons/ppsh17b.png deleted file mode 100644 index 4ea9e0214f..0000000000 Binary files a/nano/images/weapons/ppsh17b.png and /dev/null differ diff --git a/nano/images/weapons/single.png b/nano/images/weapons/single.png deleted file mode 100644 index 2f784868ca..0000000000 Binary files a/nano/images/weapons/single.png and /dev/null differ diff --git a/nano/images/weapons/skorpion.png b/nano/images/weapons/skorpion.png deleted file mode 100644 index 342fc75e3e..0000000000 Binary files a/nano/images/weapons/skorpion.png and /dev/null differ diff --git a/nano/images/weapons/skorpion_u.png b/nano/images/weapons/skorpion_u.png deleted file mode 100644 index 72128e1f46..0000000000 Binary files a/nano/images/weapons/skorpion_u.png and /dev/null differ diff --git a/nano/images/weapons/smartpistol.png b/nano/images/weapons/smartpistol.png deleted file mode 100644 index e688ac9260..0000000000 Binary files a/nano/images/weapons/smartpistol.png and /dev/null differ diff --git a/nano/images/weapons/spearhead.png b/nano/images/weapons/spearhead.png deleted file mode 100644 index 7b740dbdc5..0000000000 Binary files a/nano/images/weapons/spearhead.png and /dev/null differ diff --git a/nano/images/weapons/sshotgun.png b/nano/images/weapons/sshotgun.png deleted file mode 100644 index f052433653..0000000000 Binary files a/nano/images/weapons/sshotgun.png and /dev/null differ diff --git a/nano/images/weapons/supremo.png b/nano/images/weapons/supremo.png deleted file mode 100644 index 83f6a6fb4b..0000000000 Binary files a/nano/images/weapons/supremo.png and /dev/null differ diff --git a/nano/images/weapons/svd003.png b/nano/images/weapons/svd003.png deleted file mode 100644 index 6395b8d3b6..0000000000 Binary files a/nano/images/weapons/svd003.png and /dev/null differ diff --git a/nano/images/weapons/sw357.png b/nano/images/weapons/sw357.png deleted file mode 100644 index a89ea9cb2f..0000000000 Binary files a/nano/images/weapons/sw357.png and /dev/null differ diff --git a/nano/images/weapons/sw358.png b/nano/images/weapons/sw358.png deleted file mode 100644 index c24e72bfce..0000000000 Binary files a/nano/images/weapons/sw358.png and /dev/null differ diff --git a/nano/images/weapons/syringegun.png b/nano/images/weapons/syringegun.png deleted file mode 100644 index bf18bf425d..0000000000 Binary files a/nano/images/weapons/syringegun.png and /dev/null differ diff --git a/nano/images/weapons/taser.png b/nano/images/weapons/taser.png deleted file mode 100644 index 6337a89966..0000000000 Binary files a/nano/images/weapons/taser.png and /dev/null differ diff --git a/nano/images/weapons/type71.png b/nano/images/weapons/type71.png deleted file mode 100644 index 700ff164d6..0000000000 Binary files a/nano/images/weapons/type71.png and /dev/null differ diff --git a/nano/images/weapons/type71c.png b/nano/images/weapons/type71c.png deleted file mode 100644 index 273ac0bcbe..0000000000 Binary files a/nano/images/weapons/type71c.png and /dev/null differ diff --git a/nano/images/weapons/type73.png b/nano/images/weapons/type73.png deleted file mode 100644 index 63294f7cc9..0000000000 Binary files a/nano/images/weapons/type73.png and /dev/null differ diff --git a/nano/images/weapons/vp78.png b/nano/images/weapons/vp78.png deleted file mode 100644 index 2383b4e3ad..0000000000 Binary files a/nano/images/weapons/vp78.png and /dev/null differ diff --git a/nano/images/weapons/xm42b.png b/nano/images/weapons/xm42b.png deleted file mode 100644 index 645c552314..0000000000 Binary files a/nano/images/weapons/xm42b.png and /dev/null differ diff --git a/sound/weapons/gun_88m4_reload.ogg b/sound/weapons/gun_vp70_reload.ogg similarity index 100% rename from sound/weapons/gun_88m4_reload.ogg rename to sound/weapons/gun_vp70_reload.ogg diff --git a/sound/weapons/gun_88m4_unload.ogg b/sound/weapons/gun_vp70_unload.ogg similarity index 100% rename from sound/weapons/gun_88m4_unload.ogg rename to sound/weapons/gun_vp70_unload.ogg diff --git a/sound/weapons/gun_88m4_v7.ogg b/sound/weapons/gun_vp70_v7.ogg similarity index 100% rename from sound/weapons/gun_88m4_v7.ogg rename to sound/weapons/gun_vp70_v7.ogg diff --git a/tgui/packages/tgui/interfaces/OverwatchConsole.jsx b/tgui/packages/tgui/interfaces/OverwatchConsole.jsx index 0c2c4e801c..db9987529e 100644 --- a/tgui/packages/tgui/interfaces/OverwatchConsole.jsx +++ b/tgui/packages/tgui/interfaces/OverwatchConsole.jsx @@ -370,12 +370,13 @@ const SquadMonitor = (props) => { let determine_status_color = (status) => { let conscious = status.includes('Conscious'); + let incapacitated = status.includes('Incapacitated'); let unconscious = status.includes('Unconscious'); let state_color = 'red'; if (conscious) { state_color = 'green'; - } else if (unconscious) { + } else if (incapacitated || unconscious) { state_color = 'yellow'; } return state_color; 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/interfaces/WeaponStats.jsx b/tgui/packages/tgui/interfaces/WeaponStats.jsx index 4978e93ec0..4def237f6b 100644 --- a/tgui/packages/tgui/interfaces/WeaponStats.jsx +++ b/tgui/packages/tgui/interfaces/WeaponStats.jsx @@ -1,4 +1,5 @@ import { map } from 'common/collections'; +import { classes } from 'common/react'; import { useBackend } from '../backend'; import { Box, Divider, Flex, ProgressBar, Section, Table } from '../components'; @@ -68,7 +69,7 @@ const GeneralInfo = (props) => { - + @@ -78,25 +79,33 @@ const GeneralInfo = (props) => { - {!auto_only ? ( - - ) : ( - - )} + - {!auto_only && burst_amount > 1 ? ( - - ) : ( - - )} + 1 ? 'burst' : 'disabled_burst' + }`, + ])} + /> - {automatic ? ( - - ) : ( - - )} + @@ -272,13 +281,27 @@ const Accuracy = (props) => { const Range = (props) => { const { data } = useBackend(); - const { max_range, range_max, falloff, falloff_max } = data; + const { + max_range, + range_max, + falloff, + falloff_max, + effective_range, + effective_range_max, + } = data; return ( <> Max range: {max_range} / {range_max} + + Effective range: {effective_range} + + Falloff: {falloff} / {falloff_max} @@ -289,16 +312,13 @@ const Range = (props) => { const ArmourPen = (props) => { const { data } = useBackend(); - const { penetration, penetration_max, armor_punch, punch_max } = data; + const { penetration, penetration_max } = data; return ( <> Armour penetration: {penetration} / {penetration_max} - - Armour punch: {armor_punch} / {punch_max} - ); }; @@ -308,9 +328,7 @@ const DamageTable = (props) => { const { damage_armor_profile_marine, damage_armor_profile_xeno, - damage_armor_profile_armorbreak, damage_armor_profile_headers, - glob_armourbreak, } = data; return (
@@ -337,14 +355,6 @@ const DamageTable = (props) => { {entry} ))} - {!glob_armourbreak ? ( - - Armor break - {map(damage_armor_profile_armorbreak, (entry, i) => ( - {entry} - ))} - - ) : null}
); 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');