diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 9320446e31e..86809930557 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -36,33 +36,15 @@ Unsure where to begin contributing to VOREStation? You can start by looking thro Any code submissions that do not meet our coding standards are likely to be rejected, or at the very least, have a maintainer request changes on your PR. Save time and follow these standards from the start. -* If it is something like a bugfix that Polaris would want (the codebase we use), code it in their code and make the PR to them. We regularly update from them. They would want any general gameplay bugfixes, and things that are obviously intended to work one way, but do not. They do not have any of our fluff species (vulp, akula, fenn, etc) so do not make PRs related to that, or any vore content to them. -* Never edit stock Polaris .DMI files. If you are confused about which .DMI files we have added and which were there originally, refer to their repository and and see if they exist (https://github.com/PolarisSS13/Polaris). All PRs with edits to stock .DMI files will be rejected. -* When changing any code in any stock Polaris .DM file, you must mark your changes: - * For single-line changes: //VOREStation Edit - "Explanation" (Edit can also be Add for new lines or Removal if you are commenting the line out) - * For multi-line additions: //VOREStation Edit - "Explanation" and then at the bottom of your changes, //VOREStation Edit End - * For multi-line removals: Use a block comment (/\* xxx \*/) to comment out the existing code block (do not modify whitespace more than necessary) and at the start, it should contain /\* VOREStation Removal - "Reason" +* If it is something like a bugfix that Polaris would want (the codebase we use), you may want to consider coding it there as well. They may want any general gameplay bugfixes, and things that are obviously intended to work one way, but do not. They do not have any of our fluff species (vulp, akula, fenn, etc) so do not make PRs related to that, or any vore content to them. * Change whitespace as little as possible. Do not randomly add/remove whitespace. -* Any new files should have "_vr" at the end. For example, "life_vr.dm". Just make them in the same location as the file they are related to. * Map changes must be in tgm format. See the [Mapmerge2 Readme] for details. -The `attempt_vr()` proc has been added for your convienence. It allows a many-line change to become a single-line change in the existing Polaris files, preserving mergeability and allowing better code separation while preventing your new code from causing runtimes that stop the original code from running. If you are wanting to inject new procedures into an existing proc, called `update_atoms()` for example, you would create `update_atoms_vr()` in a nearby `_vr.dm` file, and then call to it from a single line in the original `update_atoms()` with `attempt_vr()`. - -The syntax for `attempt_vr()` is: `attempt_vr(atom,"proc_name",list(arg1,arg2))`, where: -* `atom` should be replaced with what your extended proc is defined on (if you are in something like /obj/machine/scanner/proc/update_things() and you are calling your newly defined /obj/machine/scanner/proc/update_things_vr() you can just put `src` here) -* `proc_name` is a STRING that should be the name of your proc, such as "update_atoms_vr" -* `list(arg1,arg2)` should contain any args you wish to pass to the proc - -As an example of something you can do with `attempt_vr()` in a single line, the grab and vore code is done with this in a single line. When a grab is clicked on someone, there is a line similar to: -`if(attempt_vr(src,"handle_grabs_vr",list(src,attacker))) return` - -Then in our `handle_grabs_vr()` proc, if we want to avoid performing the stock game actions and have handled the vore stuff ourselves, we return true, and the original proc returns since attempt_vr returns true. - ### Pull Requests * Your submission must pass CI checking. The checks are important, prevent many common mistakes, and even experienced coders get caught by it sometimes. If you think there is a bug in CI, open an issue. (One known CI issue is comments in the middle of multi-line lists, just don't do it) * Your PR should not have an excessive number of commits unless it is a large project or includes many separate remote commits (such as a pull from Polaris). If you need to keep tweaking your PR to pass CI or to satisfy a maintainer's requests and are making many commits, you should squash them in the end and update your PR accordingly so these commits don't clog up the history. -* You can create a WIP PR, and if so, please mark it with [WIP] in the title so it can be labeled appropriately. These can't sit forever, though. +* You can create a WIP PR, and if so, please mark it with [WIP] in the title **and make it a draft pr** so it can be labeled appropriately. These can't sit forever, though. * If your pull request has many no-conflict merge commits ('merge from master' into your PR branch), it cannot be merged. Squash and make a new PR/forcepush to your PR branch. ### Git Commit Messages diff --git a/_build_dependencies.sh b/_build_dependencies.sh index 76c52d2e5c2..3e1b40130bd 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -4,8 +4,8 @@ export SPACEMAN_DMM_VERSION=suite-1.7 # For NanoUI + TGUI export NODE_VERSION=12 # Byond Major -export BYOND_MAJOR=513 +export BYOND_MAJOR=514 # Byond Minor -export BYOND_MINOR=1542 +export BYOND_MINOR=1557 # Macro Count export MACRO_COUNT=4 \ No newline at end of file diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 39e9e44da27..093a8e544d5 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -10,7 +10,7 @@ Pipelines + Other Objects -> Pipe network */ /obj/machinery/atmospherics - anchored = 1 + anchored = TRUE idle_power_usage = 0 active_power_usage = 0 power_channel = ENVIRON diff --git a/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm b/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm index e43bc4b25ae..451a2a8bced 100644 --- a/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm +++ b/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm @@ -6,8 +6,8 @@ icon = 'icons/obj/machines/algae_vr.dmi' icon_state = "algae-off" circuit = /obj/item/weapon/circuitboard/algae_farm - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE power_channel = EQUIP use_power = USE_POWER_IDLE idle_power_usage = 100 // Minimal lights to keep algae alive diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index c09c482cc14..52916277862 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -5,7 +5,7 @@ desc = "A gas circulator turbine and heat exchanger." icon = 'icons/obj/power.dmi' icon_state = "circ-unassembled" - anchored = 0 + anchored = FALSE pipe_flags = PIPING_DEFAULT_LAYER_ONLY|PIPING_ONE_PER_TURF var/kinetic_efficiency = 0.04 //combined kinetic and kinetic-to-electric efficiency @@ -21,7 +21,7 @@ var/stored_energy = 0 var/temperature_overlay - density = 1 + density = TRUE /obj/machinery/atmospherics/binary/circulator/New() ..() diff --git a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm index 2a83dd59337..da5f37ff0ca 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm @@ -3,8 +3,8 @@ desc = "A gas turbine. Converting pressure into energy since 1884." icon = 'icons/obj/pipeturbine.dmi' icon_state = "turbine" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE var/efficiency = 0.4 var/kin_energy = 0 @@ -229,8 +229,8 @@ desc = "Electrogenerator. Converts rotation into power." icon = 'icons/obj/pipeturbine.dmi' icon_state = "motor" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE var/kin_to_el_ratio = 0.1 //How much kinetic energy will be taken from turbine and converted into electricity var/obj/machinery/atmospherics/pipeturbine/turbine diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index a787aa1873d..48085569bc9 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -3,7 +3,7 @@ icon_state = "map" construction_type = /obj/item/pipe/trinary/flippable pipe_state = "filter" - density = 0 + density = FALSE level = 1 name = "Gas filter" diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index 7344a3e7326..8cecbc6c651 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -3,7 +3,7 @@ icon_state = "map" construction_type = /obj/item/pipe/trinary/flippable pipe_state = "mixer" - density = 0 + density = FALSE level = 1 name = "Gas mixer" diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm index 3568a87a425..dea0487b48f 100644 --- a/code/ATMOSPHERICS/components/unary/cold_sink.dm +++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm @@ -6,8 +6,8 @@ desc = "Cools gas when connected to pipe network" icon = 'icons/obj/Cryogenic2_vr.dmi' icon_state = "freezer_0" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_OFF idle_power_usage = 5 // 5 Watts for thermostat related circuitry circuit = /obj/item/weapon/circuitboard/unary_atmos/cooler diff --git a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm index a3571fed8bf..91616f8d8ff 100644 --- a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm +++ b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/atmospherics/heat_exchanger.dmi' icon_state = "intact" pipe_state = "heunary" - density = 1 + density = TRUE name = "Heat Exchanger" desc = "Exchanges heat between two input gases. Setup for fast heat transfer" diff --git a/code/ATMOSPHERICS/components/unary/heat_source.dm b/code/ATMOSPHERICS/components/unary/heat_source.dm index 365be85b704..aea5730672b 100644 --- a/code/ATMOSPHERICS/components/unary/heat_source.dm +++ b/code/ATMOSPHERICS/components/unary/heat_source.dm @@ -6,8 +6,8 @@ desc = "Heats gas when connected to a pipe network" icon = 'icons/obj/Cryogenic2_vr.dmi' icon_state = "heater_0" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_OFF idle_power_usage = 5 //5 Watts for thermostat related circuitry circuit = /obj/item/weapon/circuitboard/unary_atmos/heater diff --git a/code/ATMOSPHERICS/pipes/he_pipes.dm b/code/ATMOSPHERICS/pipes/he_pipes.dm index 8b1b800830e..89ecf1e2bbb 100644 --- a/code/ATMOSPHERICS/pipes/he_pipes.dm +++ b/code/ATMOSPHERICS/pipes/he_pipes.dm @@ -104,9 +104,7 @@ parent.radiate_heat_to_space(surface, 1) if(has_buckled_mobs()) - for(var/M in buckled_mobs) - var/mob/living/L = M - + for(var/mob/living/L as anything in buckled_mobs) var/hc = pipe_air.heat_capacity() var/avg_temp = (pipe_air.temperature * hc + L.bodytemperature * 3500) / (hc + 3500) pipe_air.temperature = avg_temp diff --git a/code/ATMOSPHERICS/pipes/pipe_base.dm b/code/ATMOSPHERICS/pipes/pipe_base.dm index 5f384ed457a..0d687b8db05 100644 --- a/code/ATMOSPHERICS/pipes/pipe_base.dm +++ b/code/ATMOSPHERICS/pipes/pipe_base.dm @@ -17,7 +17,7 @@ var/in_stasis = FALSE //minimum pressure before check_pressure(...) should be called - can_buckle = 1 + can_buckle = TRUE buckle_require_restraints = 1 buckle_lying = -1 diff --git a/code/ATMOSPHERICS/pipes/tank.dm b/code/ATMOSPHERICS/pipes/tank.dm index a893facff61..63807862880 100644 --- a/code/ATMOSPHERICS/pipes/tank.dm +++ b/code/ATMOSPHERICS/pipes/tank.dm @@ -16,7 +16,7 @@ dir = SOUTH initialize_directions = SOUTH pipe_flags = PIPING_DEFAULT_LAYER_ONLY - density = 1 + density = TRUE /obj/machinery/atmospherics/pipe/tank/New() icon_state = "air" diff --git a/code/ZAS/Atom.dm b/code/ZAS/Atom.dm index 1953c58e9fc..06305182b37 100644 --- a/code/ZAS/Atom.dm +++ b/code/ZAS/Atom.dm @@ -93,8 +93,7 @@ return AIR_BLOCKED var/result = 0 - for(var/mm in contents) - var/atom/movable/M = mm + for(var/atom/movable/M as anything in contents) switch(M.can_atmos_pass) if(ATMOS_PASS_YES) continue diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 9c8ec74d4da..e67d2ad3acd 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -71,8 +71,7 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin var/fuel_to_remove = used_liquid_fuel/(fuel_objs.len*LIQUIDFUEL_AMOUNT_TO_MOL) //convert back to liquid volume units - for(var/O in fuel_objs) - var/obj/effect/decal/cleanable/liquid_fuel/fuel = O + for(var/obj/effect/decal/cleanable/liquid_fuel/fuel as anything in fuel_objs) if(!istype(fuel)) fuel_objs -= fuel continue @@ -108,7 +107,7 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin /obj/fire //Icon for fire on turfs. - anchored = 1 + anchored = TRUE mouse_opacity = 0 blend_mode = BLEND_ADD diff --git a/code/__defines/ZAS.dm b/code/__defines/ZAS.dm index 1760505f3a0..ba2b4b73e76 100644 --- a/code/__defines/ZAS.dm +++ b/code/__defines/ZAS.dm @@ -9,5 +9,5 @@ // More complicated, conditional airflow should override CanZASPass(). #define ATMOS_PASS_YES 1 // Always blocks air and zones. #define ATMOS_PASS_NO 2 // Never blocks air or zones. -#define ATMOS_PASS_DENSITY 3 // Blocks air and zones if density = 1, allows both if density = 0 +#define ATMOS_PASS_DENSITY 3 // Blocks air and zones if density = TRUE, allows both if density = FALSE #define ATMOS_PASS_PROC 4 // Call CanZASPass() using c_airblock diff --git a/code/__defines/_compile_options.dm b/code/__defines/_compile_options.dm index a674ec62be7..50ff3fbf2b6 100644 --- a/code/__defines/_compile_options.dm +++ b/code/__defines/_compile_options.dm @@ -22,3 +22,21 @@ #define USING_MAP_DATUM /datum/map #define MAP_OVERRIDE 1 #endif + +///Used to find the sources of harddels, quite laggy, don't be surpised if it freezes your client for a good while +//#define REFERENCE_TRACKING +#ifdef REFERENCE_TRACKING + +///Should we be logging our findings or not +#define REFERENCE_TRACKING_LOG + +///Used for doing dry runs of the reference finder, to test for feature completeness +//#define REFERENCE_TRACKING_DEBUG + +///Run a lookup on things hard deleting by default. +//#define GC_FAILURE_HARD_LOOKUP +#ifdef GC_FAILURE_HARD_LOOKUP +#define FIND_REF_NO_CHECK_TICK +#endif //ifdef GC_FAILURE_HARD_LOOKUP + +#endif //ifdef REFERENCE_TRACKING diff --git a/code/__defines/flags.dm b/code/__defines/flags.dm index 8ac15ebc535..0d06544a7e4 100644 --- a/code/__defines/flags.dm +++ b/code/__defines/flags.dm @@ -34,6 +34,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define PHORONGUARD (1<<5) // Does not get contaminated by phoron. #define NOREACT (1<<6) // Reagents don't react inside this container. #define OVERLAY_QUEUED (1<<7)// Atom queued to SSoverlay for COMPILE_OVERLAYS +#define IS_BUSY (1<<8) // Atom has a TASK_TARGET_EXCLUSIVE do_after with it as the target. //Flags for items (equipment) - Used in /obj/item/var/item_flags #define THICKMATERIAL (1<<0) // Prevents syringes, parapens and hyposprays if equipped to slot_suit or slot_head. @@ -49,3 +50,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define PASSGRILLE (1<<2) #define PASSBLOB (1<<3) #define PASSMOB (1<<4) + +// Flags for do_after/do_mob exclusivity. +#define TASK_TARGET_EXCLUSIVE (1<<1) +#define TASK_USER_EXCLUSIVE (1<<2) +#define TASK_ALL_EXCLUSIVE TASK_TARGET_EXCLUSIVE | TASK_USER_EXCLUSIVE \ No newline at end of file diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm index 38a84e71697..12a671b4640 100644 --- a/code/__defines/materials.dm +++ b/code/__defines/materials.dm @@ -34,6 +34,7 @@ #define MAT_CHITIN "chitin" #define MAT_CLOTH "cloth" #define MAT_SYNCLOTH "syncloth" +#define MAT_FIBERS "fibers" #define MAT_COPPER "copper" #define MAT_QUARTZ "quartz" #define MAT_TIN "tin" diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 19ff35c86be..d9a5f7a847c 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -112,25 +112,24 @@ #define MAX_SUPPLIED_LAW_NUMBER 50 //default item on-mob icons -#define INV_HEAD_DEF_ICON 'icons/mob/head.dmi' -#define INV_BACK_DEF_ICON 'icons/mob/back.dmi' #define INV_L_HAND_DEF_ICON 'icons/mob/items/lefthand.dmi' #define INV_R_HAND_DEF_ICON 'icons/mob/items/righthand.dmi' -#define INV_W_UNIFORM_DEF_ICON "icons/mob/uniform" -#define INV_ACCESSORIES_DEF_ICON 'icons/mob/ties.dmi' -#define INV_TIE_DEF_ICON 'icons/mob/ties.dmi' -#define INV_SUIT_DEF_ICON "icons/mob/suit" -#define INV_SPACESUIT_DEF_ICON 'icons/mob/spacesuit.dmi' #define INV_WEAR_ID_DEF_ICON 'icons/mob/mob.dmi' -#define INV_GLOVES_DEF_ICON 'icons/mob/hands.dmi' -#define INV_EYES_DEF_ICON 'icons/mob/eyes.dmi' -#define INV_EARS_DEF_ICON 'icons/mob/ears.dmi' -#define INV_FEET_DEF_ICON 'icons/mob/feet.dmi' -#define INV_BELT_DEF_ICON 'icons/mob/belt.dmi' -#define INV_MASK_DEF_ICON 'icons/mob/mask.dmi' #define INV_HCUFF_DEF_ICON 'icons/mob/mob.dmi' #define INV_LCUFF_DEF_ICON 'icons/mob/mob.dmi' +#define INV_HEAD_DEF_ICON 'icons/inventory/head/mob.dmi' +#define INV_BACK_DEF_ICON 'icons/inventory/back/mob.dmi' +#define INV_W_UNIFORM_DEF_ICON 'icons/inventory/uniform/mob.dmi' +#define INV_ACCESSORIES_DEF_ICON 'icons/inventory/accessory/mob.dmi' +#define INV_SUIT_DEF_ICON 'icons/inventory/suit/mob.dmi' +#define INV_GLOVES_DEF_ICON 'icons/inventory/hands/mob.dmi' +#define INV_EYES_DEF_ICON 'icons/inventory/eyes/mob.dmi' +#define INV_EARS_DEF_ICON 'icons/inventory/ears/mob.dmi' +#define INV_FEET_DEF_ICON 'icons/inventory/feet/mob.dmi' +#define INV_BELT_DEF_ICON 'icons/inventory/belt/mob.dmi' +#define INV_MASK_DEF_ICON 'icons/inventory/face/mob.dmi' + // Character's economic class #define CLASS_UPPER "Wealthy" #define CLASS_UPMID "Well-off" diff --git a/code/__defines/qdel.dm b/code/__defines/qdel.dm index 73744389019..12002dc46e0 100644 --- a/code/__defines/qdel.dm +++ b/code/__defines/qdel.dm @@ -1,22 +1,36 @@ //defines that give qdel hints. these can be given as a return in destory() or by calling -#define QDEL_HINT_QUEUE 0 //qdel should queue the object for deletion. -#define QDEL_HINT_LETMELIVE 1 //qdel should let the object live after calling destory. -#define QDEL_HINT_IWILLGC 2 //functionally the same as the above. qdel should assume the object will gc on its own, and not check it. -#define QDEL_HINT_HARDDEL 3 //qdel should assume this object won't gc, and queue a hard delete using a hard reference. -#define QDEL_HINT_HARDDEL_NOW 4 //qdel should assume this object won't gc, and hard del it post haste. -#define QDEL_HINT_FINDREFERENCE 5 //functionally identical to QDEL_HINT_QUEUE if TESTING is not enabled in _compiler_options.dm. - //if TESTING is enabled, qdel will call this object's find_references() verb. -//defines for the gc_destroyed var +/// `qdel` should queue the object for deletion. +#define QDEL_HINT_QUEUE 0 +/// `qdel` should let the object live after calling [/atom/proc/Destroy]. +#define QDEL_HINT_LETMELIVE 1 +/// Functionally the same as the above. `qdel` should assume the object will gc on its own, and not check it. +#define QDEL_HINT_IWILLGC 2 +/// Qdel should assume this object won't GC, and queue a hard delete using a hard reference. +#define QDEL_HINT_HARDDEL 3 +// Qdel should assume this object won't gc, and hard delete it posthaste. +#define QDEL_HINT_HARDDEL_NOW 4 -#define GC_QUEUE_PREQUEUE 1 -#define GC_QUEUE_CHECK 2 -#define GC_QUEUE_HARDDELETE 3 -#define GC_QUEUE_COUNT 3 //increase this when adding more steps. +#ifdef REFERENCE_TRACKING +/** If REFERENCE_TRACKING is enabled, qdel will call this object's find_references() verb. + * + * Functionally identical to [QDEL_HINT_QUEUE] if [GC_FAILURE_HARD_LOOKUP] is not enabled in _compiler_options.dm. +*/ +#define QDEL_HINT_FINDREFERENCE 5 +/// Behavior as [QDEL_HINT_FINDREFERENCE], but only if the GC fails and a hard delete is forced. +#define QDEL_HINT_IFFAIL_FINDREFERENCE 6 +#endif -#define GC_QUEUED_FOR_QUEUING -1 -#define GC_QUEUED_FOR_HARD_DEL -2 -#define GC_CURRENTLY_BEING_QDELETED -3 +#define GC_QUEUE_CHECK 1 +#define GC_QUEUE_HARDDELETE 2 +#define GC_QUEUE_COUNT 2 //increase this when adding more steps. + +#define QDEL_ITEM_ADMINS_WARNED (1<<0) //! Set when admins are told about lag causing qdels in this type. +#define QDEL_ITEM_SUSPENDED_FOR_LAG (1<<1) //! Set when a type can no longer be hard deleted on failure because of lag it causes while this happens. + +// Defines for the [gc_destroyed][/datum/var/gc_destroyed] var. +#define GC_QUEUED_FOR_QUEUING -1 +#define GC_CURRENTLY_BEING_QDELETED -2 #define QDELING(X) (X.gc_destroyed) #define QDELETED(X) (!X || X.gc_destroyed) diff --git a/code/__defines/sprite_sheets.dm b/code/__defines/sprite_sheets.dm new file mode 100644 index 00000000000..603bb82d5f0 --- /dev/null +++ b/code/__defines/sprite_sheets.dm @@ -0,0 +1,213 @@ +// Default species get default sprites, VR species get VR sprites +#define VR_SPECIES_SPRITE_SHEETS_SUIT_MOB list(\ +SPECIES_HUMAN = 'icons/inventory/suit/mob.dmi',\ +SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/suit/mob_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/suit/mob_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/suit/mob_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/suit/mob_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/suit/mob_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/suit/mob_vr_vulpkanin.dmi') +#define VR_SPECIES_SPRITE_SHEETS_HEAD_MOB list(\ +SPECIES_HUMAN = 'icons/inventory/head/mob.dmi',\ +SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/head/mob_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/head/mob_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/head/mob_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/head/mob_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/head/mob_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/head/mob_vr_vulpkanin.dmi') +#define VR_SPECIES_SPRITE_SHEETS_HANDS_MOB list(\ +SPECIES_HUMAN = 'icons/inventory/hands/mob.dmi',\ +SPECIES_TAJ = 'icons/inventory/hands/mob_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/hands/mob_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/hands/mob_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/hands/mob_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/hands/mob_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/hands/mob_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/hands/mob_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/hands/mob_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/hands/mob_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/hands/mob_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/hands/mob_vr_vulpkanin.dmi') +#define VR_SPECIES_SPRITE_SHEETS_FEET_MOB list(\ +SPECIES_HUMAN = 'icons/inventory/feet/mob.dmi',\ +SPECIES_TAJ = 'icons/inventory/feet/mob_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/feet/mob_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/feet/mob_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/feet/mob_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/feet/mob_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/feet/mob_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/feet/mob_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/feet/mob_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/feet/mob_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/feet/mob_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/feet/mob_vr_vulpkanin.dmi') + +#define VR_SPECIES_SPRITE_SHEETS_SUIT_ITEM list(\ +SPECIES_HUMAN = 'icons/inventory/suit/item.dmi',\ +SPECIES_TAJ = 'icons/inventory/suit/item_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/suit/item_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/suit/item_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/suit/item_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/suit/item_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/suit/item_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/suit/item_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/suit/item_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/suit/item_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/suit/item_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/suit/item_vr_vulpkanin.dmi') +#define VR_SPECIES_SPRITE_SHEETS_HEAD_ITEM list(\ +SPECIES_HUMAN = 'icons/inventory/head/item.dmi',\ +SPECIES_TAJ = 'icons/inventory/head/item_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/head/item_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/head/item_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/head/item_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/head/item_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/head/item_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/head/item_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/head/item_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/head/item_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/head/item_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/head/item_vr_vulpkanin.dmi') +#define VR_SPECIES_SPRITE_SHEETS_HANDS_ITEM list(\ +SPECIES_HUMAN = 'icons/inventory/hands/item.dmi',\ +SPECIES_TAJ = 'icons/inventory/hands/item_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/hands/item_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/hands/item_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/hands/item_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/hands/item_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/hands/item_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/hands/item_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/hands/item_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/hands/item_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/hands/item_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/hands/item_vr_vulpkanin.dmi') +#define VR_SPECIES_SPRITE_SHEETS_FEET_ITEM list(\ +SPECIES_HUMAN = 'icons/inventory/feet/item.dmi',\ +SPECIES_TAJ = 'icons/inventory/feet/item_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/feet/item_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/feet/item_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/feet/item_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/feet/item_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/feet/item_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/feet/item_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/feet/item_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/feet/item_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/feet/item_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/feet/item_vr_vulpkanin.dmi') + +// All species get VR sprites +#define ALL_VR_SPRITE_SHEETS_SUIT_MOB list(\ +SPECIES_HUMAN = 'icons/inventory/suit/mob_vr.dmi',\ +SPECIES_TAJ = 'icons/inventory/suit/mob_vr_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/suit/mob_vr_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/suit/mob_vr_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/suit/mob_vr_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_vr_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/suit/mob_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/suit/mob_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/suit/mob_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/suit/mob_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/suit/mob_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/suit/mob_vr_vulpkanin.dmi') +#define ALL_VR_SPRITE_SHEETS_HEAD_MOB list(\ +SPECIES_HUMAN = 'icons/inventory/head/mob_vr.dmi',\ +SPECIES_TAJ = 'icons/inventory/head/mob_vr_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/head/mob_vr_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/head/mob_vr_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/head/mob_vr_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/head/mob_vr_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/head/mob_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/head/mob_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/head/mob_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/head/mob_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/head/mob_vr_vulpkanin.dmi') +#define ALL_VR_SPRITE_SHEETS_HANDS_MOB list(\ +SPECIES_HUMAN = 'icons/inventory/hands/mob_vr.dmi',\ +SPECIES_TAJ = 'icons/inventory/hands/mob_vr_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/hands/mob_vr_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/hands/mob_vr_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/hands/mob_vr_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/hands/mob_vr_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/hands/mob_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/hands/mob_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/hands/mob_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/hands/mob_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/hands/mob_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/hands/mob_vr_vulpkanin.dmi') +#define ALL_VR_SPRITE_SHEETS_FEET_MOB list(\ +SPECIES_HUMAN = 'icons/inventory/feet/mob_vr.dmi',\ +SPECIES_TAJ = 'icons/inventory/feet/mob_vr_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/feet/mob_vr_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/feet/mob_vr_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/feet/mob_vr_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/feet/mob_vr_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/feet/mob_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/feet/mob_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/feet/mob_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/feet/mob_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/feet/mob_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/feet/mob_vr_vulpkanin.dmi') + +#define ALL_VR_SPRITE_SHEETS_SUIT_ITEM list(\ +SPECIES_HUMAN = 'icons/inventory/suit/item_vr.dmi',\ +SPECIES_TAJ = 'icons/inventory/suit/item_vr_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/suit/item_vr_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/suit/item_vr_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/suit/item_vr_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/suit/item_vr_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/suit/item_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/suit/item_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/suit/item_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/suit/item_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/suit/item_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/suit/item_vr_vulpkanin.dmi') +#define ALL_VR_SPRITE_SHEETS_HEAD_ITEM list(\ +SPECIES_HUMAN = 'icons/inventory/head/item_vr.dmi',\ +SPECIES_TAJ = 'icons/inventory/head/item_vr_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/head/item_vr_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/head/item_vr_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/head/item_vr_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/head/item_vr_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/head/item_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/head/item_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/head/item_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/head/item_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/head/item_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/head/item_vr_vulpkanin.dmi') +#define ALL_VR_SPRITE_SHEETS_HANDS_ITEM list(\ +SPECIES_HUMAN = 'icons/inventory/hands/item_vr.dmi',\ +SPECIES_TAJ = 'icons/inventory/hands/item_vr_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/hands/item_vr_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/hands/item_vr_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/hands/item_vr_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/hands/item_vr_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/hands/item_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/hands/item_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/hands/item_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/hands/item_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/hands/item_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/hands/item_vr_vulpkanin.dmi') +#define ALL_VR_SPRITE_SHEETS_FEET_ITEM list(\ +SPECIES_HUMAN = 'icons/inventory/feet/item_vr.dmi',\ +SPECIES_TAJ = 'icons/inventory/feet/item_vr_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/feet/item_vr_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/feet/item_vr_unathi.dmi',\ +SPECIES_TESHARI = 'icons/inventory/feet/item_vr_teshari.dmi',\ +SPECIES_XENOHYBRID = 'icons/inventory/feet/item_vr_unathi.dmi',\ +SPECIES_AKULA = 'icons/inventory/feet/item_vr_akula.dmi',\ +SPECIES_SERGAL = 'icons/inventory/feet/item_vr_sergal.dmi',\ +SPECIES_NEVREAN = 'icons/inventory/feet/item_vr_sergal.dmi',\ +SPECIES_VULPKANIN = 'icons/inventory/feet/item_vr_vulpkanin.dmi',\ +SPECIES_ZORREN_HIGH = 'icons/inventory/feet/item_vr_vulpkanin.dmi',\ +SPECIES_FENNEC = 'icons/inventory/feet/item_vr_vulpkanin.dmi') \ No newline at end of file diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index e5fb740a8ed..8ed8125dac6 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -54,11 +54,11 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G // The numbers just define the ordering, they are meaningless otherwise. #define INIT_ORDER_WEBHOOKS 50 #define INIT_ORDER_SQLITE 40 +#define INIT_ORDER_GARBAGE 39 #define INIT_ORDER_MEDIA_TRACKS 38 // Gotta get that lobby music up, yo #define INIT_ORDER_INPUT 37 #define INIT_ORDER_CHEMISTRY 35 #define INIT_ORDER_VIS 32 -#define INIT_ORDER_SKYBOX 30 #define INIT_ORDER_MAPPING 25 #define INIT_ORDER_SOUNDS 23 #define INIT_ORDER_INSTRUMENTS 22 @@ -85,10 +85,12 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define INIT_ORDER_AI_FAST -23 #define INIT_ORDER_GAME_MASTER -24 #define INIT_ORDER_PERSISTENCE -25 +#define INIT_ORDER_SKYBOX -30 //Visual only, irrelevant to gameplay, but needs to be late enough to have overmap populated fully #define INIT_ORDER_TICKER -50 #define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. + // Subsystem fire priority, from lowest to highest priority // If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child) #define FIRE_PRIORITY_SHUTTLES 5 diff --git a/code/_compatibility/509/JSON Reader.dm b/code/_compatibility/509/JSON Reader.dm deleted file mode 100644 index 18f739c5ef9..00000000000 --- a/code/_compatibility/509/JSON Reader.dm +++ /dev/null @@ -1,209 +0,0 @@ -#if DM_VERSION < 510 - -json_token - var - value - New(v) - src.value = v - text - number - word - symbol - eof - -json_reader - var - list - string = list("'", "\"") - symbols = list("{", "}", "\[", "]", ":", "\"", "'", ",") - sequences = list("b" = 8, "t" = 9, "n" = 10, "f" = 12, "r" = 13) - tokens - json - i = 1 - - - proc - // scanner - ScanJson(json) - src.json = json - . = new/list() - src.i = 1 - while(src.i <= length(json)) - var/char = get_char() - if(is_whitespace(char)) - i++ - continue - if(string.Find(char)) - . += read_string(char) - else if(symbols.Find(char)) - . += new/json_token/symbol(char) - else if(is_digit(char)) - . += read_number() - else - . += read_word() - i++ - . += new/json_token/eof() - - read_word() - var/val = "" - while(i <= length(json)) - var/char = get_char() - if(is_whitespace(char) || symbols.Find(char)) - i-- // let scanner handle this character - return new/json_token/word(val) - val += char - i++ - - read_string(delim) - var - escape = FALSE - val = "" - while(++i <= length(json)) - var/char = get_char() - if(escape) - switch(char) - if("\\", "'", "\"", "/", "u") - val += char - else - // TODO: support octal, hex, unicode sequences - ASSERT(sequences.Find(char)) - val += ascii2text(sequences[char]) - else - if(char == delim) - return new/json_token/text(val) - else if(char == "\\") - escape = TRUE - else - val += char - CRASH("Unterminated string.") - - read_number() - var/val = "" - var/char = get_char() - while(is_digit(char) || char == "." || lowertext(char) == "e") - val += char - i++ - char = get_char() - i-- // allow scanner to read the first non-number character - return new/json_token/number(text2num(val)) - - check_char() - ASSERT(args.Find(get_char())) - - get_char() - return copytext(json, i, i+1) - - is_whitespace(char) - return char == " " || char == "\t" || char == "\n" || text2ascii(char) == 13 - - is_digit(char) - var/c = text2ascii(char) - return 48 <= c && c <= 57 || char == "+" || char == "-" - - - // parser - ReadObject(list/tokens) - src.tokens = tokens - . = new/list() - i = 1 - read_token("{", /json_token/symbol) - while(i <= tokens.len) - var/json_token/K = get_token() - check_type(/json_token/word, /json_token/text) - next_token() - read_token(":", /json_token/symbol) - - .[K.value] = read_value() - - var/json_token/S = get_token() - check_type(/json_token/symbol) - switch(S.value) - if(",") - next_token() - continue - if("}") - next_token() - return - else - die() - - get_token() - return tokens[i] - - next_token() - return tokens[++i] - - read_token(val, type) - var/json_token/T = get_token() - if(!(T.value == val && istype(T, type))) - CRASH("Expected '[val]', found '[T.value]'.") - next_token() - return T - - check_type(...) - var/json_token/T = get_token() - for(var/type in args) - if(istype(T, type)) - return - CRASH("Bad token type: [T.type].") - - check_value(...) - var/json_token/T = get_token() - ASSERT(args.Find(T.value)) - - read_key() - var/char = get_char() - if(char == "\"" || char == "'") - return read_string(char) - - read_value() - var/json_token/T = get_token() - switch(T.type) - if(/json_token/text, /json_token/number) - next_token() - return T.value - if(/json_token/word) - next_token() - switch(T.value) - if("true") - return TRUE - if("false") - return FALSE - if("null") - return null - if(/json_token/symbol) - switch(T.value) - if("\[") - return read_array() - if("{") - return ReadObject(tokens.Copy(i)) - die() - - read_array() - read_token("\[", /json_token/symbol) - . = new/list() - var/list/L = . - while(i <= tokens.len) - // Avoid using Add() or += in case a list is returned. - L.len++ - L[L.len] = read_value() - var/json_token/T = get_token() - check_type(/json_token/symbol) - switch(T.value) - if(",") - next_token() - continue - if("]") - next_token() - return - else - die() - next_token() - CRASH("Unterminated array.") - - - die(json_token/T) - if(!T) T = get_token() - CRASH("Unexpected token: [T.value].") - -#endif \ No newline at end of file diff --git a/code/_compatibility/509/JSON Writer.dm b/code/_compatibility/509/JSON Writer.dm deleted file mode 100644 index 80e4976687b..00000000000 --- a/code/_compatibility/509/JSON Writer.dm +++ /dev/null @@ -1,62 +0,0 @@ -#if DM_VERSION < 510 - -json_writer - var - use_cache = 0 - - proc - WriteObject(list/L) - if(use_cache && L["__json_cache"]) - return L["__json_cache"] - - . = "{" - var/i = 1 - for(var/k in L) - var/val = L[k] - . += {"\"[k]\":[write(val)]"} - if(i++ < L.len) - . += "," - . += "}" - - write(val) - if(isnum(val)) - return num2text(val) - else if(isnull(val)) - return "null" - else if(istype(val, /list)) - if(is_associative(val)) - return WriteObject(val) - else - return write_array(val) - else - . += write_string("[val]") - - write_array(list/L) - . = "\[" - for(var/i = 1 to L.len) - . += write(L[i]) - if(i < L.len) - . += "," - . += "]" - - write_string(txt) - var/static/list/json_escape = list("\\" = "\\\\", "\"" = "\\\"", "\n" = "\\n") - for(var/targ in json_escape) - var/start = 1 - while(start <= length(txt)) - var/i = findtext(txt, targ, start) - if(!i) - break - var/lrep = length(json_escape[targ]) - txt = copytext(txt, 1, i) + json_escape[targ] + copytext(txt, i + length(targ)) - start = i + lrep - - return {""[txt]""} - - is_associative(list/L) - for(var/key in L) - // if the key is a list that means it's actually an array of lists (stupid Byond...) - if(!isnum(key) && !isnull(L[key]) && !istype(key, /list)) - return TRUE - -#endif \ No newline at end of file diff --git a/code/_compatibility/509/_JSON.dm b/code/_compatibility/509/_JSON.dm deleted file mode 100644 index 46f488ac568..00000000000 --- a/code/_compatibility/509/_JSON.dm +++ /dev/null @@ -1,14 +0,0 @@ -#if DM_VERSION < 510 -/* -n_Json v11.3.21 -*/ - -proc - json_decode(json) - var/static/json_reader/_jsonr = new() - return _jsonr.ReadObject(_jsonr.ScanJson(json)) - - json_encode(list/L) - var/static/json_writer/_jsonw = new() - return _jsonw.write(L) -#endif \ No newline at end of file diff --git a/code/_compatibility/509/text.dm b/code/_compatibility/509/text.dm deleted file mode 100644 index c22790ccb87..00000000000 --- a/code/_compatibility/509/text.dm +++ /dev/null @@ -1,6 +0,0 @@ -#if DM_VERSION < 510 - -/proc/replacetext(text, find, replacement) - return jointext(splittext(text, find), replacement) - -#endif \ No newline at end of file diff --git a/code/_compatibility/509/type2type.dm b/code/_compatibility/509/type2type.dm deleted file mode 100644 index 62d7a5e5c79..00000000000 --- a/code/_compatibility/509/type2type.dm +++ /dev/null @@ -1,102 +0,0 @@ -#if DM_VERSION < 510 -// Concatenates a list of strings into a single string. A seperator may optionally be provided. -/proc/jointext(list/ls, sep) - if (ls.len <= 1) // Early-out code for empty or singleton lists. - return ls.len ? ls[1] : "" - - var/l = ls.len // Made local for sanic speed. - var/i = 0 // Incremented every time a list index is accessed. - - if (sep <> null) - // Macros expand to long argument lists like so: sep, ls[++i], sep, ls[++i], sep, ls[++i], etc... - #define S1 sep, ls[++i] - #define S4 S1, S1, S1, S1 - #define S16 S4, S4, S4, S4 - #define S64 S16, S16, S16, S16 - - . = "[ls[++i]]" // Make sure the initial element is converted to text. - - // Having the small concatenations come before the large ones boosted speed by an average of at least 5%. - if (l-1 & 0x01) // 'i' will always be 1 here. - . = text("[][][]", ., S1) // Append 1 element if the remaining elements are not a multiple of 2. - if (l-i & 0x02) - . = text("[][][][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4. - if (l-i & 0x04) - . = text("[][][][][][][][][]", ., S4) // And so on.... - if (l-i & 0x08) - . = text("[][][][][][][][][][][][][][][][][]", ., S4, S4) - if (l-i & 0x10) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16) - if (l-i & 0x20) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16) - if (l-i & 0x40) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64) - while (l > i) // Chomp through the rest of the list, 128 elements at a time. - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64) - - #undef S64 - #undef S16 - #undef S4 - #undef S1 - else - // Macros expand to long argument lists like so: ls[++i], ls[++i], ls[++i], etc... - #define S1 ls[++i] - #define S4 S1, S1, S1, S1 - #define S16 S4, S4, S4, S4 - #define S64 S16, S16, S16, S16 - - . = "[ls[++i]]" // Make sure the initial element is converted to text. - - if (l-1 & 0x01) // 'i' will always be 1 here. - . += S1 // Append 1 element if the remaining elements are not a multiple of 2. - if (l-i & 0x02) - . = text("[][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4. - if (l-i & 0x04) - . = text("[][][][][]", ., S4) // And so on... - if (l-i & 0x08) - . = text("[][][][][][][][][]", ., S4, S4) - if (l-i & 0x10) - . = text("[][][][][][][][][][][][][][][][][]", ., S16) - if (l-i & 0x20) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16) - if (l-i & 0x40) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64) - while (l > i) // Chomp through the rest of the list, 128 elements at a time. - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64) - - #undef S64 - #undef S16 - #undef S4 - #undef S1 - -// Converts a string into a list by splitting the string at each delimiter found. (discarding the seperator) -/proc/splittext(text, delimiter="\n") - var/delim_len = length(delimiter) - if (delim_len < 1) - return list(text) - - . = list() - var/last_found = 1 - var/found - - do - found = findtext(text, delimiter, last_found, 0) - . += copytext(text, last_found, found) - last_found = found + delim_len - while (found) -#endif \ No newline at end of file diff --git a/code/_helpers/_lists.dm b/code/_helpers/_lists.dm index d71897c466b..c359227f057 100644 --- a/code/_helpers/_lists.dm +++ b/code/_helpers/_lists.dm @@ -127,22 +127,19 @@ //returns a new list with only atoms that are in typecache L /proc/typecache_filter_list(list/atoms, list/typecache) . = list() - for(var/thing in atoms) - var/atom/A = thing + for(var/atom/A as anything in atoms) if(typecache[A.type]) . += A /proc/typecache_filter_list_reverse(list/atoms, list/typecache) . = list() - for(var/thing in atoms) - var/atom/A = thing + for(var/atom/A as anything in atoms) if(!typecache[A.type]) . += A /proc/typecache_filter_multi_list_exclusion(list/atoms, list/typecache_include, list/typecache_exclude) . = list() - for(var/thing in atoms) - var/atom/A = thing + for(var/atom/A as anything in atoms) if(typecache_include[A.type] && !typecache_exclude[A.type]) . += A diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm index 2f172d198e2..ed4734f355e 100644 --- a/code/_helpers/game.dm +++ b/code/_helpers/game.dm @@ -226,8 +226,7 @@ . = list() // Returns a list of mobs who can hear any of the radios given in @radios var/list/speaker_coverage = list() - for(var/r in radios) - var/obj/item/device/radio/R = r // You better fucking be a radio. + for(var/obj/item/device/radio/R as anything in radios) var/turf/speaker = get_turf(R) if(speaker) for(var/turf/T in hear(R.canhear_range,speaker)) @@ -365,8 +364,7 @@ /proc/flick_overlay_view(image/I, atom/target, duration, gc_after) //wrapper for the above, flicks to everyone who can see the target atom var/list/viewing = list() - for(var/m in viewers(target)) - var/mob/M = m + for(var/mob/M as anything in viewers(target)) if(M.client) viewing += M.client flick_overlay(I, viewing, duration, gc_after) diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index f4566e51014..1a482e6d244 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -213,6 +213,23 @@ GLOBAL_LIST_EMPTY(mannequins) if(S.spawn_flags & SPECIES_IS_WHITELISTED) GLOB.whitelisted_species += S.name + // Suit cyclers + paths = subtypesof(/datum/suit_cycler_choice/department) + for(var/datum/suit_cycler_choice/SCC as anything in paths) + if(!initial(SCC.name)) + continue + GLOB.suit_cycler_departments += new SCC() + paths = subtypesof(/datum/suit_cycler_choice/species) + for(var/datum/suit_cycler_choice/SCC as anything in paths) + if(!initial(SCC.name)) + continue + GLOB.suit_cycler_species += new SCC() + paths = subtypesof(/datum/suit_cycler_choice/department/emag) + for(var/datum/suit_cycler_choice/SCC as anything in paths) + if(!initial(SCC.name)) + continue + GLOB.suit_cycler_emagged += new SCC() + //Ores paths = subtypesof(/ore) for(var/oretype in paths) @@ -253,7 +270,7 @@ GLOBAL_LIST_EMPTY(mannequins) /* // Custom species traits - paths = subtypesof(/datum/trait) - /datum/trait + paths = subtypesof(/datum/trait) for(var/path in paths) var/datum/trait/instance = new path() if(!instance.name) diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index 87cd24a36fc..1f5b6d41aee 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -510,7 +510,7 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN, var/paths // Custom Hair Accessories - paths = typesof(/datum/sprite_accessory/hair_accessory) - /datum/sprite_accessory/hair_accessory + paths = subtypesof(/datum/sprite_accessory/hair_accessory) for(var/path in paths) var/datum/sprite_accessory/hair_accessory/instance = new path() hair_accesories_list[path] = instance @@ -544,14 +544,14 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN, // Weaver recipe stuff - paths = typesof(/datum/weaver_recipe/structure) - /datum/weaver_recipe/structure + paths = subtypesof(/datum/weaver_recipe/structure) for(var/path in paths) var/datum/weaver_recipe/instance = new path() if(!instance.title) continue //A prototype or something weavable_structures[instance.title] = instance - paths = typesof(/datum/weaver_recipe/item) - /datum/weaver_recipe/item + paths = subtypesof(/datum/weaver_recipe/item) for(var/path in paths) var/datum/weaver_recipe/instance = new path() if(!instance.title) diff --git a/code/_helpers/icons.dm b/code/_helpers/icons.dm index 8e4de469355..74607efe057 100644 --- a/code/_helpers/icons.dm +++ b/code/_helpers/icons.dm @@ -1,218 +1,3 @@ -/* -IconProcs README - -A BYOND library for manipulating icons and colors - -by Lummox JR - -version 1.0 - -The IconProcs library was made to make a lot of common icon operations much easier. BYOND's icon manipulation -routines are very capable but some of the advanced capabilities like using alpha transparency can be unintuitive to beginners. - -CHANGING ICONS - -Several new procs have been added to the /icon datum to simplify working with icons. To use them, -remember you first need to setup an /icon var like so: - -var/icon/my_icon = new('iconfile.dmi') - -icon/ChangeOpacity(amount = 1) - A very common operation in DM is to try to make an icon more or less transparent. Making an icon more - transparent is usually much easier than making it less so, however. This proc basically is a frontend - for MapColors() which can change opacity any way you like, in much the same way that SetIntensity() - can make an icon lighter or darker. If amount is 0.5, the opacity of the icon will be cut in half. - If amount is 2, opacity is doubled and anything more than half-opaque will become fully opaque. -icon/GrayScale() - Converts the icon to grayscale instead of a fully colored icon. Alpha values are left intact. -icon/ColorTone(tone) - Similar to GrayScale(), this proc converts the icon to a range of black -> tone -> white, where tone is an - RGB color (its alpha is ignored). This can be used to create a sepia tone or similar effect. - See also the global ColorTone() proc. -icon/MinColors(icon) - The icon is blended with a second icon where the minimum of each RGB pixel is the result. - Transparency may increase, as if the icons were blended with ICON_ADD. You may supply a color in place of an icon. -icon/MaxColors(icon) - The icon is blended with a second icon where the maximum of each RGB pixel is the result. - Opacity may increase, as if the icons were blended with ICON_OR. You may supply a color in place of an icon. -icon/Opaque(background = "#000000") - All alpha values are set to 255 throughout the icon. Transparent pixels become black, or whatever background color you specify. -icon/BecomeAlphaMask() - You can convert a simple grayscale icon into an alpha mask to use with other icons very easily with this proc. - The black parts become transparent, the white parts stay white, and anything in between becomes a translucent shade of white. -icon/AddAlphaMask(mask) - The alpha values of the mask icon will be blended with the current icon. Anywhere the mask is opaque, - the current icon is untouched. Anywhere the mask is transparent, the current icon becomes transparent. - Where the mask is translucent, the current icon becomes more transparent. -icon/UseAlphaMask(mask, mode) - Sometimes you may want to take the alpha values from one icon and use them on a different icon. - This proc will do that. Just supply the icon whose alpha mask you want to use, and src will change - so it has the same colors as before but uses the mask for opacity. - -COLOR MANAGEMENT AND HSV - -RGB isn't the only way to represent color. Sometimes it's more useful to work with a model called HSV, which stands for hue, saturation, and value. - - * The hue of a color describes where it is along the color wheel. It goes from red to yellow to green to - cyan to blue to magenta and back to red. - * The saturation of a color is how much color is in it. A color with low saturation will be more gray, - and with no saturation at all it is a shade of gray. - * The value of a color determines how bright it is. A high-value color is vivid, moderate value is dark, - and no value at all is black. - -Just as BYOND uses "#rrggbb" to represent RGB values, a similar format is used for HSV: "#hhhssvv". The hue is three -hex digits because it ranges from 0 to 0x5FF. - - * 0 to 0xFF - red to yellow - * 0x100 to 0x1FF - yellow to green - * 0x200 to 0x2FF - green to cyan - * 0x300 to 0x3FF - cyan to blue - * 0x400 to 0x4FF - blue to magenta - * 0x500 to 0x5FF - magenta to red - -Knowing this, you can figure out that red is "#000ffff" in HSV format, which is hue 0 (red), saturation 255 (as colorful as possible), -value 255 (as bright as possible). Green is "#200ffff" and blue is "#400ffff". - -More than one HSV color can match the same RGB color. - -Here are some procs you can use for color management: - -ReadRGB(rgb) - Takes an RGB string like "#ffaa55" and converts it to a list such as list(255,170,85). If an RGBA format is used - that includes alpha, the list will have a fourth item for the alpha value. -hsv(hue, sat, val, apha) - Counterpart to rgb(), this takes the values you input and converts them to a string in "#hhhssvv" or "#hhhssvvaa" - format. Alpha is not included in the result if null. -ReadHSV(rgb) - Takes an HSV string like "#100FF80" and converts it to a list such as list(256,255,128). If an HSVA format is used that - includes alpha, the list will have a fourth item for the alpha value. -RGBtoHSV(rgb) - Takes an RGB or RGBA string like "#ffaa55" and converts it into an HSV or HSVA color such as "#080aaff". -HSVtoRGB(hsv) - Takes an HSV or HSVA string like "#080aaff" and converts it into an RGB or RGBA color such as "#ff55aa". -BlendRGB(rgb1, rgb2, amount) - Blends between two RGB or RGBA colors using regular RGB blending. If amount is 0, the first color is the result; - if 1, the second color is the result. 0.5 produces an average of the two. Values outside the 0 to 1 range are allowed as well. - The returned value is an RGB or RGBA color. -BlendHSV(hsv1, hsv2, amount) - Blends between two HSV or HSVA colors using HSV blending, which tends to produce nicer results than regular RGB - blending because the brightness of the color is left intact. If amount is 0, the first color is the result; if 1, - the second color is the result. 0.5 produces an average of the two. Values outside the 0 to 1 range are allowed as well. - The returned value is an HSV or HSVA color. -BlendRGBasHSV(rgb1, rgb2, amount) - Like BlendHSV(), but the colors used and the return value are RGB or RGBA colors. The blending is done in HSV form. -HueToAngle(hue) - Converts a hue to an angle range of 0 to 360. Angle 0 is red, 120 is green, and 240 is blue. -AngleToHue(hue) - Converts an angle to a hue in the valid range. -RotateHue(hsv, angle) - Takes an HSV or HSVA value and rotates the hue forward through red, green, and blue by an angle from 0 to 360. - (Rotating red by 60deg produces yellow.) The result is another HSV or HSVA color with the same saturation and value - as the original, but a different hue. -GrayScale(rgb) - Takes an RGB or RGBA color and converts it to grayscale. Returns an RGB or RGBA string. -ColorTone(rgb, tone) - Similar to GrayScale(), this proc converts an RGB or RGBA color to a range of black -> tone -> white instead of - using strict shades of gray. The tone value is an RGB color; any alpha value is ignored. -*/ - -/* -Get Flat Icon DEMO by DarkCampainger - -This is a test for the get flat icon proc, modified approprietly for icons and their states. -Probably not a good idea to run this unless you want to see how the proc works in detail. -mob - icon = 'old_or_unused.dmi' - icon_state = "green" - - Login() - // Testing image underlays - underlays += image(icon='old_or_unused.dmi',icon_state="red") - underlays += image(icon='old_or_unused.dmi',icon_state="red", pixel_x = 32) - underlays += image(icon='old_or_unused.dmi',icon_state="red", pixel_x = -32) - - // Testing image overlays - overlays += image(icon='old_or_unused.dmi',icon_state="green", pixel_x = 32, pixel_y = -32) - overlays += image(icon='old_or_unused.dmi',icon_state="green", pixel_x = 32, pixel_y = 32) - overlays += image(icon='old_or_unused.dmi',icon_state="green", pixel_x = -32, pixel_y = -32) - - // Testing icon file overlays (defaults to mob's state) - overlays += '_flat_demoIcons2.dmi' - - // Testing icon_state overlays (defaults to mob's icon) - overlays += "white" - - // Testing dynamic icon overlays - var/icon/I = icon('old_or_unused.dmi', icon_state="aqua") - I.Shift(NORTH,16,1) - overlays+=I - - // Testing dynamic image overlays - I=image(icon=I,pixel_x = -32, pixel_y = 32) - overlays+=I - - // Testing object types (and layers) - overlays+=/obj/effect/overlayTest - - loc = locate (10,10,1) - verb - Browse_Icon() - set name = "1. Browse Icon" - // Give it a name for the cache - var/iconName = "[ckey(src.name)]_flattened.dmi" - // Send the icon to src's local cache - src<

") - - Output_Icon() - set name = "2. Output Icon" - to_chat(src, "Icon is: [bicon(getFlatIcon(src))]") - - Label_Icon() - set name = "3. Label Icon" - // Give it a name for the cache - var/iconName = "[ckey(src.name)]_flattened.dmi" - // Copy the file to the rsc manually - var/icon/I = fcopy_rsc(getFlatIcon(src)) - // Send the icon to src's local cache - src< 57 && ch < 65) || (ch > 70 && ch < 97) || ch > 102) break - ++digits - if(digits == 8) break - - var/single = digits < 6 - if(digits != 3 && digits != 4 && digits != 6 && digits != 8) return - if(digits == 4 || digits == 8) usealpha = 1 - for(i=start, digits>0, ++i) - ch = text2ascii(rgb, i) - if(ch >= 48 && ch <= 57) ch -= 48 - else if(ch >= 65 && ch <= 70) ch -= 55 - else if(ch >= 97 && ch <= 102) ch -= 87 - else break - --digits - switch(which) - if(0) - r = (r << 4) | ch - if(single) - r |= r << 4 - ++which - else if(!(digits & 1)) ++which - if(1) - g = (g << 4) | ch - if(single) - g |= g << 4 - ++which - else if(!(digits & 1)) ++which - if(2) - b = (b << 4) | ch - if(single) - b |= b << 4 - ++which - else if(!(digits & 1)) ++which - if(3) - alpha = (alpha << 4) | ch - if(single) alpha |= alpha << 4 - - . = list(r, g, b) - if(usealpha) . += alpha - -/proc/RGBdec2hex(var/list/values) - var/string = "" - while(values.len) - string = "[num2text(values[values.len], 2, 16)][string]" - values.len-- - return "#[string]" - -/proc/ReadHSV(hsv) - if(!hsv) return - - // interpret the HSV or HSVA value - var/i=1,start=1 - if(text2ascii(hsv) == 35) ++start // skip opening # - var/ch,which=0,hue=0,sat=0,val=0,alpha=0,usealpha - var/digits=0 - for(i=start, i<=length(hsv), ++i) - ch = text2ascii(hsv, i) - if(ch < 48 || (ch > 57 && ch < 65) || (ch > 70 && ch < 97) || ch > 102) break - ++digits - if(digits == 9) break - if(digits > 7) usealpha = 1 - if(digits <= 4) ++which - if(digits <= 2) ++which - for(i=start, digits>0, ++i) - ch = text2ascii(hsv, i) - if(ch >= 48 && ch <= 57) ch -= 48 - else if(ch >= 65 && ch <= 70) ch -= 55 - else if(ch >= 97 && ch <= 102) ch -= 87 - else break - --digits - switch(which) - if(0) - hue = (hue << 4) | ch - if(digits == (usealpha ? 6 : 4)) ++which - if(1) - sat = (sat << 4) | ch - if(digits == (usealpha ? 4 : 2)) ++which - if(2) - val = (val << 4) | ch - if(digits == (usealpha ? 2 : 0)) ++which - if(3) - alpha = (alpha << 4) | ch - - . = list(hue, sat, val) - if(usealpha) . += alpha - -/proc/HSVtoRGB(hsv) - if(!hsv) return "#000000" - var/list/HSV = ReadHSV(hsv) - if(!HSV) return "#000000" - - var/hue = HSV[1] - var/sat = HSV[2] - var/val = HSV[3] - - // Compress hue into easier-to-manage range - hue -= hue >> 8 - if(hue >= 0x5fa) hue -= 0x5fa - - var/hi,mid,lo,r,g,b - hi = val - lo = round((255 - sat) * val / 255, 1) - mid = lo + round(abs(round(hue, 510) - hue) * (hi - lo) / 255, 1) - if(hue >= 765) - if(hue >= 1275) {r=hi; g=lo; b=mid} - else if(hue >= 1020) {r=mid; g=lo; b=hi } - else {r=lo; g=mid; b=hi } - else - if(hue >= 510) {r=lo; g=hi; b=mid} - else if(hue >= 255) {r=mid; g=hi; b=lo } - else {r=hi; g=mid; b=lo } - - return (HSV.len > 3) ? rgb(r,g,b,HSV[4]) : rgb(r,g,b) - -/proc/RGBtoHSV(rgb) - if(!rgb) return "#0000000" - var/list/RGB = ReadRGB(rgb) - if(!RGB) return "#0000000" - - var/r = RGB[1] - var/g = RGB[2] - var/b = RGB[3] - var/hi = max(r,g,b) - var/lo = min(r,g,b) - - var/val = hi - var/sat = hi ? round((hi-lo) * 255 / hi, 1) : 0 - var/hue = 0 - - if(sat) - var/dir - var/mid - if(hi == r) - if(lo == b) {hue=0; dir=1; mid=g} - else {hue=1535; dir=-1; mid=b} - else if(hi == g) - if(lo == r) {hue=512; dir=1; mid=b} - else {hue=511; dir=-1; mid=r} - else if(hi == b) - if(lo == g) {hue=1024; dir=1; mid=r} - else {hue=1023; dir=-1; mid=g} - hue += dir * round((mid-lo) * 255 / (hi-lo), 1) - - return hsv(hue, sat, val, (RGB.len>3 ? RGB[4] : null)) - -/proc/hsv(hue, sat, val, alpha) - if(hue < 0 || hue >= 1536) hue %= 1536 - if(hue < 0) hue += 1536 - if((hue & 0xFF) == 0xFF) - ++hue - if(hue >= 1536) hue = 0 - if(sat < 0) sat = 0 - if(sat > 255) sat = 255 - if(val < 0) val = 0 - if(val > 255) val = 255 - . = "#" - . += TO_HEX_DIGIT(hue >> 8) - . += TO_HEX_DIGIT(hue >> 4) - . += TO_HEX_DIGIT(hue) - . += TO_HEX_DIGIT(sat >> 4) - . += TO_HEX_DIGIT(sat) - . += TO_HEX_DIGIT(val >> 4) - . += TO_HEX_DIGIT(val) - if(!isnull(alpha)) - if(alpha < 0) alpha = 0 - if(alpha > 255) alpha = 255 - . += TO_HEX_DIGIT(alpha >> 4) - . += TO_HEX_DIGIT(alpha) - -/* - Smooth blend between HSV colors - - amount=0 is the first color - amount=1 is the second color - amount=0.5 is directly between the two colors - - amount<0 or amount>1 are allowed - */ -/proc/BlendHSV(hsv1, hsv2, amount) - var/list/HSV1 = ReadHSV(hsv1) - var/list/HSV2 = ReadHSV(hsv2) - - // add missing alpha if needed - if(HSV1.len < HSV2.len) HSV1 += 255 - else if(HSV2.len < HSV1.len) HSV2 += 255 - var/usealpha = HSV1.len > 3 - - // normalize hsv values in case anything is screwy - if(HSV1[1] > 1536) HSV1[1] %= 1536 - if(HSV2[1] > 1536) HSV2[1] %= 1536 - if(HSV1[1] < 0) HSV1[1] += 1536 - if(HSV2[1] < 0) HSV2[1] += 1536 - if(!HSV1[3]) {HSV1[1] = 0; HSV1[2] = 0} - if(!HSV2[3]) {HSV2[1] = 0; HSV2[2] = 0} - - // no value for one color means don't change saturation - if(!HSV1[3]) HSV1[2] = HSV2[2] - if(!HSV2[3]) HSV2[2] = HSV1[2] - // no saturation for one color means don't change hues - if(!HSV1[2]) HSV1[1] = HSV2[1] - if(!HSV2[2]) HSV2[1] = HSV1[1] - - // Compress hues into easier-to-manage range - HSV1[1] -= HSV1[1] >> 8 - HSV2[1] -= HSV2[1] >> 8 - - var/hue_diff = HSV2[1] - HSV1[1] - if(hue_diff > 765) hue_diff -= 1530 - else if(hue_diff <= -765) hue_diff += 1530 - - var/hue = round(HSV1[1] + hue_diff * amount, 1) - var/sat = round(HSV1[2] + (HSV2[2] - HSV1[2]) * amount, 1) - var/val = round(HSV1[3] + (HSV2[3] - HSV1[3]) * amount, 1) - var/alpha = usealpha ? round(HSV1[4] + (HSV2[4] - HSV1[4]) * amount, 1) : null - - // normalize hue - if(hue < 0 || hue >= 1530) hue %= 1530 - if(hue < 0) hue += 1530 - // decompress hue - hue += round(hue / 255) - - return hsv(hue, sat, val, alpha) - -/* - Smooth blend between RGB colors - - amount=0 is the first color - amount=1 is the second color - amount=0.5 is directly between the two colors - - amount<0 or amount>1 are allowed - */ /proc/BlendRGB(rgb1, rgb2, amount) - var/list/RGB1 = ReadRGB(rgb1) - var/list/RGB2 = ReadRGB(rgb2) + var/list/RGB1 = rgb2num(rgb1) + var/list/RGB2 = rgb2num(rgb2) // add missing alpha if needed if(RGB1.len < RGB2.len) RGB1 += 255 @@ -574,65 +95,6 @@ world return isnull(alpha) ? rgb(r, g, b) : rgb(r, g, b, alpha) -/proc/BlendRGBasHSV(rgb1, rgb2, amount) - return HSVtoRGB(RGBtoHSV(rgb1), RGBtoHSV(rgb2), amount) - -/proc/HueToAngle(hue) - // normalize hsv in case anything is screwy - if(hue < 0 || hue >= 1536) hue %= 1536 - if(hue < 0) hue += 1536 - // Compress hue into easier-to-manage range - hue -= hue >> 8 - return hue / (1530/360) - -/proc/AngleToHue(angle) - // normalize hsv in case anything is screwy - if(angle < 0 || angle >= 360) angle -= 360 * round(angle / 360) - var/hue = angle * (1530/360) - // Decompress hue - hue += round(hue / 255) - return hue - - -// positive angle rotates forward through red->green->blue -/proc/RotateHue(hsv, angle) - var/list/HSV = ReadHSV(hsv) - - // normalize hsv in case anything is screwy - if(HSV[1] >= 1536) HSV[1] %= 1536 - if(HSV[1] < 0) HSV[1] += 1536 - - // Compress hue into easier-to-manage range - HSV[1] -= HSV[1] >> 8 - - if(angle < 0 || angle >= 360) angle -= 360 * round(angle / 360) - HSV[1] = round(HSV[1] + angle * (1530/360), 1) - - // normalize hue - if(HSV[1] < 0 || HSV[1] >= 1530) HSV[1] %= 1530 - if(HSV[1] < 0) HSV[1] += 1530 - // decompress hue - HSV[1] += round(HSV[1] / 255) - - return hsv(HSV[1], HSV[2], HSV[3], (HSV.len > 3 ? HSV[4] : null)) - -// Convert an rgb color to grayscale -/proc/GrayScale(rgb) - var/list/RGB = ReadRGB(rgb) - var/gray = RGB[1]*0.3 + RGB[2]*0.59 + RGB[3]*0.11 - return (RGB.len > 3) ? rgb(gray, gray, gray, RGB[4]) : rgb(gray, gray, gray) - -// Change grayscale color to black->tone->white range -/proc/ColorTone(rgb, tone) - var/list/RGB = ReadRGB(rgb) - var/list/TONE = ReadRGB(tone) - - var/gray = RGB[1]*0.3 + RGB[2]*0.59 + RGB[3]*0.11 - var/tone_gray = TONE[1]*0.3 + TONE[2]*0.59 + TONE[3]*0.11 - - if(gray <= tone_gray) return BlendRGB("#000000", tone, gray/(tone_gray || 1)) - else return BlendRGB(tone, "#ffffff", (gray-tone_gray)/((255-tone_gray) || 1)) - // Ported from /tg/station // Creates a single icon from a given /atom or /image. Only the first argument is required. /proc/getFlatIcon(image/A, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE) @@ -937,7 +399,7 @@ GLOBAL_LIST_EMPTY(cached_examine_icons) if (!color) return "#FFFFFF" if (!value) return color - var/list/RGB = ReadRGB(color) + var/list/RGB = rgb2num(color) RGB[1] = CLAMP(RGB[1]+value,0,255) RGB[2] = CLAMP(RGB[2]+value,0,255) RGB[3] = CLAMP(RGB[3]+value,0,255) diff --git a/code/_helpers/icons_vr.dm b/code/_helpers/icons_vr.dm index 1b500862b6e..1afbeb21f10 100644 --- a/code/_helpers/icons_vr.dm +++ b/code/_helpers/icons_vr.dm @@ -12,14 +12,14 @@ var/final_average if (accurate) //keeping it legible for(var/i = 1 to total) - RGB = ReadRGB(colors[i]) + RGB = rgb2num(colors[i]) colorsum[1] += RGB[1]*RGB[1] colorsum[2] += RGB[2]*RGB[2] colorsum[3] += RGB[3]*RGB[3] final_average = rgb(sqrt(colorsum[1]/total), sqrt(colorsum[2]/total), sqrt(colorsum[3]/total)) else for(var/i = 1 to total) - RGB = ReadRGB(colors[i]) + RGB = rgb2num(colors[i]) colorsum[1] += RGB[1] colorsum[2] += RGB[2] colorsum[3] += RGB[3] @@ -32,7 +32,7 @@ for(var/y_pixel = 1 to I.Height()) var/this_color = I.GetPixel(x_pixel, y_pixel) if(this_color) - if (ignoreGreyscale && ReadHSV(RGBtoHSV(this_color))[2] == 0) //If saturation is 0, must be greyscale + if (ignoreGreyscale && rgb2num(this_color, COLORSPACE_HSV)[2] == 0) //If saturation is 0, must be greyscale continue colors.Add(this_color) return colors diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm index ba13bb5b48b..5d68dc9a8c0 100644 --- a/code/_helpers/logging.dm +++ b/code/_helpers/logging.dm @@ -96,7 +96,6 @@ speaker.dialogue_log += "([time_stamp()]) ([speaker]/[speaker.client]) SAY: - [text]" GLOB.round_text_log += "([time_stamp()]) ([speaker]/[speaker.client]) SAY: - [text]" - /proc/log_emote(text, mob/speaker) if (config.log_emote) WRITE_LOG(diary, "EMOTE: [speaker.simple_info_line()]: [html_decode(text)]") @@ -128,7 +127,6 @@ speaker.dialogue_log += "([time_stamp()]) ([speaker]/[speaker.client]) DEADSAY: - [text]" GLOB.round_text_log += "([time_stamp()]) ([speaker]/[speaker.client]) DEADSAY: - [text]" - /proc/log_ghostemote(text, mob/speaker) if (config.log_emote) WRITE_LOG(diary, "DEADEMOTE: [speaker.simple_info_line()]: [html_decode(text)]") @@ -144,7 +142,6 @@ speaker.dialogue_log += "([time_stamp()]) ([speaker]/[speaker.client]) MSG: - [text]" GLOB.round_text_log += "([time_stamp()]) ([speaker]/[speaker.client]) MSG: - [text]" - /proc/log_to_dd(text) to_world_log(text) //this comes before the config check because it can't possibly runtime if(config.log_world_output) @@ -168,7 +165,16 @@ /proc/log_unit_test(text) to_world_log("## UNIT_TEST: [text]") +#ifdef REFERENCE_TRACKING_LOG +#define log_reftracker(msg) log_world("## REF SEARCH [msg]") +#else +#define log_reftracker(msg) +#endif + /proc/log_tgui(user_or_client, text) + if(!text) + stack_trace("Pointless log_tgui message") + return var/entry = "" if(!user_or_client) entry += "no user" diff --git a/code/_helpers/mobs.dm b/code/_helpers/mobs.dm index 684aa40dae3..140f88886df 100644 --- a/code/_helpers/mobs.dm +++ b/code/_helpers/mobs.dm @@ -144,12 +144,15 @@ Proc for attack log creation, because really why not /proc/do_mob(mob/user , mob/target, time = 30, target_zone = 0, uninterruptible = FALSE, progress = TRUE, ignore_movement = FALSE, exclusive = FALSE) if(!user || !target) - return 0 + return FALSE if(!time) - return 1 //Done! + return TRUE //Done! if(user.status_flags & DOING_TASK) to_chat(user, "You're in the middle of doing something else already.") - return 0 //Performing an exclusive do_after or do_mob already + return FALSE //Performing an exclusive do_after or do_mob already + if(target?.flags & IS_BUSY) + to_chat(user, "Someone is already doing something with \the [target].") + return FALSE var/user_loc = user.loc var/target_loc = target.loc @@ -161,8 +164,10 @@ Proc for attack log creation, because really why not var/endtime = world.time+time var/starttime = world.time - if(exclusive) + if(exclusive & TASK_USER_EXCLUSIVE) user.status_flags |= DOING_TASK + if(target && exclusive & TASK_TARGET_EXCLUSIVE) + target.flags |= IS_BUSY . = TRUE while (world.time < endtime) @@ -195,20 +200,26 @@ Proc for attack log creation, because really why not . = FALSE break - if(exclusive) + if(exclusive & TASK_USER_EXCLUSIVE) user.status_flags &= ~DOING_TASK + if(exclusive & TASK_TARGET_EXCLUSIVE) + target?.status_flags &= ~IS_BUSY if (progbar) qdel(progbar) /proc/do_after(mob/user, delay, atom/target = null, needhand = TRUE, progress = TRUE, incapacitation_flags = INCAPACITATION_DEFAULT, ignore_movement = FALSE, max_distance = null, exclusive = FALSE) if(!user) - return 0 + return FALSE if(!delay) - return 1 //Okay. Done. + return TRUE //Okay. Done. if(user.status_flags & DOING_TASK) to_chat(user, "You're in the middle of doing something else already.") - return 0 //Performing an exclusive do_after or do_mob already + return FALSE //Performing an exclusive do_after or do_mob already + if(target?.flags & IS_BUSY) + to_chat(user, "Someone is already doing something with \the [target].") + return FALSE + var/atom/target_loc = null if(target) target_loc = target.loc @@ -230,10 +241,13 @@ Proc for attack log creation, because really why not var/endtime = world.time + delay var/starttime = world.time - if(exclusive) + if(exclusive & TASK_USER_EXCLUSIVE) user.status_flags |= DOING_TASK + + if(target && (exclusive & TASK_TARGET_EXCLUSIVE)) + target.flags |= IS_BUSY - . = 1 + . = TRUE while (world.time < endtime) stoplag(1) if(progress) @@ -269,8 +283,10 @@ Proc for attack log creation, because really why not . = FALSE break - if(exclusive) + if(exclusive & TASK_USER_EXCLUSIVE) user.status_flags &= ~DOING_TASK + if(target && (exclusive & TASK_TARGET_EXCLUSIVE)) + target.flags &= ~IS_BUSY if(progbar) qdel(progbar) diff --git a/code/_helpers/time.dm b/code/_helpers/time.dm index 11c79111599..987eed64541 100644 --- a/code/_helpers/time.dm +++ b/code/_helpers/time.dm @@ -1,3 +1,6 @@ +#define MILISECOND * 0.01 +#define MILLISECONDS * 0.01 + #define SECOND *10 #define SECONDS *10 @@ -20,6 +23,10 @@ #define TICKS2DS(T) ((T) TICKS) // Convert ticks to deciseconds #define DS2NEARESTTICK(DS) TICKS2DS(-round(-(DS2TICKS(DS)))) +#define MS2DS(T) ((T) MILLISECONDS) + +#define DS2MS(T) ((T) * 100) + var/world_startup_time /proc/get_game_time() @@ -44,7 +51,7 @@ var/next_station_date_change = 1 DAY #define duration2stationtime(time) time2text(station_time_in_ds + time, "hh:mm") #define worldtime2stationtime(time) time2text(GLOB.roundstart_hour HOURS + time, "hh:mm") -#define round_duration_in_ds (GLOB.round_start_time ? world.time - GLOB.round_start_time : 0) +#define round_duration_in_ds (GLOB.round_start_time ? REALTIMEOFDAY - GLOB.round_start_time : 0) #define station_time_in_ds (GLOB.roundstart_hour HOURS + round_duration_in_ds) /proc/stationtime2text() @@ -56,9 +63,7 @@ var/next_station_date_change = 1 DAY next_station_date_change += 1 DAY update_time = TRUE if(!station_date || update_time) - var/extra_days = round(station_time_in_ds / (1 DAY)) DAYS - var/timeofday = world.timeofday + extra_days - station_date = num2text((text2num(time2text(timeofday, "YYYY"))+300)) + "-" + time2text(timeofday, "MM-DD") //VOREStation Edit + station_date = num2text((text2num(time2text(REALTIMEOFDAY, "YYYY"))+300)) + "-" + time2text(REALTIMEOFDAY, "MM-DD") //VOREStation Edit return station_date //ISO 8601 @@ -96,7 +101,7 @@ var/last_round_duration = 0 GLOBAL_VAR_INIT(round_start_time, 0) /hook/roundstart/proc/start_timer() - GLOB.round_start_time = world.time + GLOB.round_start_time = REALTIMEOFDAY return 1 /proc/roundduration2text() @@ -121,7 +126,8 @@ GLOBAL_VAR_INIT(round_start_time, 0) /var/rollovercheck_last_timeofday = 0 /proc/update_midnight_rollover() if (world.timeofday < rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS! - return midnight_rollovers++ + midnight_rollovers += 1 + rollovercheck_last_timeofday = world.timeofday return midnight_rollovers //Increases delay as the server gets more overloaded, diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm index cb5834ffb1e..700bbbfc571 100644 --- a/code/_helpers/type2type.dm +++ b/code/_helpers/type2type.dm @@ -2,11 +2,8 @@ * Holds procs designed to change one type of value, into another. * Contains: * hex2num & num2hex - * text2list & list2text * file2list * angle2dir - * angle2text - * worldtime2text */ // Returns an integer given a hexadecimal number string as input. @@ -133,10 +130,6 @@ if (NORTHWEST) return 315 if (SOUTHWEST) return 225 -// Returns the angle in english -/proc/angle2text(var/degree) - return dir2text(angle2dir(degree)) - // Converts a blend_mode constant to one acceptable to icon.Blend() /proc/blendMode2iconMode(blend_mode) switch (blend_mode) @@ -294,107 +287,6 @@ return strtype return copytext(strtype, delim_pos) -// Concatenates a list of strings into a single string. A seperator may optionally be provided. -/proc/list2text(list/ls, sep) - if (ls.len <= 1) // Early-out code for empty or singleton lists. - return ls.len ? ls[1] : "" - - var/l = ls.len // Made local for sanic speed. - var/i = 0 // Incremented every time a list index is accessed. - - if (sep != null) - // Macros expand to long argument lists like so: sep, ls[++i], sep, ls[++i], sep, ls[++i], etc... - #define S1 sep, ls[++i] - #define S4 S1, S1, S1, S1 - #define S16 S4, S4, S4, S4 - #define S64 S16, S16, S16, S16 - - . = "[ls[++i]]" // Make sure the initial element is converted to text. - - // Having the small concatenations come before the large ones boosted speed by an average of at least 5%. - if (l-1 & 0x01) // 'i' will always be 1 here. - . = text("[][][]", ., S1) // Append 1 element if the remaining elements are not a multiple of 2. - if (l-i & 0x02) - . = text("[][][][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4. - if (l-i & 0x04) - . = text("[][][][][][][][][]", ., S4) // And so on.... - if (l-i & 0x08) - . = text("[][][][][][][][][][][][][][][][][]", ., S4, S4) - if (l-i & 0x10) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16) - if (l-i & 0x20) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16) - if (l-i & 0x40) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64) - while (l > i) // Chomp through the rest of the list, 128 elements at a time. - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64) - - #undef S64 - #undef S16 - #undef S4 - #undef S1 - else - // Macros expand to long argument lists like so: ls[++i], ls[++i], ls[++i], etc... - #define S1 ls[++i] - #define S4 S1, S1, S1, S1 - #define S16 S4, S4, S4, S4 - #define S64 S16, S16, S16, S16 - - . = "[ls[++i]]" // Make sure the initial element is converted to text. - - if (l-1 & 0x01) // 'i' will always be 1 here. - . += S1 // Append 1 element if the remaining elements are not a multiple of 2. - if (l-i & 0x02) - . = text("[][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4. - if (l-i & 0x04) - . = text("[][][][][]", ., S4) // And so on... - if (l-i & 0x08) - . = text("[][][][][][][][][]", ., S4, S4) - if (l-i & 0x10) - . = text("[][][][][][][][][][][][][][][][][]", ., S16) - if (l-i & 0x20) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16) - if (l-i & 0x40) - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64) - while (l > i) // Chomp through the rest of the list, 128 elements at a time. - . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ - [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64) - - #undef S64 - #undef S16 - #undef S4 - #undef S1 - -// Converts a string into a list by splitting the string at each delimiter found. (discarding the seperator) -/proc/text2list(text, delimiter="\n") - var/delim_len = length(delimiter) - if (delim_len < 1) - return list(text) - - . = list() - var/last_found = 1 - var/found - - do - found = findtext(text, delimiter, last_found, 0) - . += copytext(text, last_found, found) - last_found = found + delim_len - while (found) - /proc/type2parent(child) var/string_type = "[child]" var/last_slash = findlasttext(string_type, "/") diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 6c3d63f1293..0b258311a4a 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -65,7 +65,7 @@ .+=360 //Returns location. Returns null if no location was found. -/proc/get_teleport_loc(turf/location,mob/target,distance = 1, density = 0, errorx = 0, errory = 0, eoffsetx = 0, eoffsety = 0) +/proc/get_teleport_loc(turf/location,mob/target,distance = 1, density = FALSE, errorx = 0, errory = 0, eoffsetx = 0, eoffsety = 0) /* Location where the teleport begins, target that will teleport, distance to go, density checking 0/1(yes/no). Random error in tile placement x, error in tile placement y, and block offset. @@ -196,9 +196,6 @@ Turf and target are seperate in case you want to teleport some distance from a t return 1 return 0 -/proc/sign(x) - return x!=0?x/abs(x):0 - /proc/getline(atom/M,atom/N)//Ultra-Fast Bresenham Line-Drawing Algorithm var/px=M.x //starting x var/py=M.y @@ -207,8 +204,8 @@ Turf and target are seperate in case you want to teleport some distance from a t var/dy=N.y-py var/dxabs=abs(dx)//Absolute value of x distance var/dyabs=abs(dy) - var/sdx=sign(dx) //Sign of x distance (+ or -) - var/sdy=sign(dy) + var/sdx=SIGN(dx) //Sign of x distance (+ or -) + var/sdy=SIGN(dy) var/x=dxabs>>1 //Counters for steps taken, setting to distance/2 var/y=dyabs>>1 //Bit-shifting makes me l33t. It also makes getline() unnessecarrily fast. var/j //Generic integer for counting @@ -426,34 +423,6 @@ Turf and target are seperate in case you want to teleport some distance from a t else . = pick(ais) return . -/proc/get_sorted_mobs() - var/list/old_list = getmobs() - var/list/AI_list = list() - var/list/Dead_list = list() - var/list/keyclient_list = list() - var/list/key_list = list() - var/list/logged_list = list() - for(var/named in old_list) - var/mob/M = old_list[named] - if(issilicon(M)) - AI_list |= M - else if(isobserver(M) || M.stat == 2) - Dead_list |= M - else if(M.key && M.client) - keyclient_list |= M - else if(M.key) - key_list |= M - else - logged_list |= M - old_list.Remove(named) - var/list/new_list = list() - new_list += AI_list - new_list += keyclient_list - new_list += key_list - new_list += logged_list - new_list += Dead_list - return new_list - //Returns a list of all mobs with their name /proc/getmobs() return observe_list_format(sortmobs()) @@ -528,14 +497,6 @@ Turf and target are seperate in case you want to teleport some distance from a t return "[round((powerused * 0.000001),0.001)] MW" return "[round((powerused * 0.000000001),0.0001)] GW" -/proc/get_mob_by_ckey(key) - if(!key) - return - var/list/mobs = sortmobs() - for(var/mob/M in mobs) - if(M.ckey == key) - return M - //Forces a variable to be posative /proc/modulus(var/M) if(M >= 0) @@ -648,34 +609,6 @@ Turf and target are seperate in case you want to teleport some distance from a t cant_pass = 1 return cant_pass -/proc/get_step_towards2(var/atom/ref , var/atom/trg) - var/base_dir = get_dir(ref, get_step_towards(ref,trg)) - var/turf/temp = get_step_towards(ref,trg) - - if(is_blocked_turf(temp)) - var/dir_alt1 = turn(base_dir, 90) - var/dir_alt2 = turn(base_dir, -90) - var/turf/turf_last1 = temp - var/turf/turf_last2 = temp - var/free_tile = null - var/breakpoint = 0 - - while(!free_tile && breakpoint < 10) - if(!is_blocked_turf(turf_last1)) - free_tile = turf_last1 - break - if(!is_blocked_turf(turf_last2)) - free_tile = turf_last2 - break - turf_last1 = get_step(turf_last1,dir_alt1) - turf_last2 = get_step(turf_last2,dir_alt2) - breakpoint++ - - if(!free_tile) return get_step(ref, base_dir) - else return get_step_towards(ref,free_tile) - - else return get_step(ref, base_dir) - //Takes: Anything that could possibly have variables and a varname to check. //Returns: 1 if found, 0 if not. /proc/hasvar(var/datum/A, var/varname) @@ -693,20 +626,6 @@ Turf and target are seperate in case you want to teleport some distance from a t /proc/return_sorted_areas() return sortTim(return_areas(), /proc/cmp_text_asc) -//Takes: Area type as text string or as typepath OR an instance of the area. -//Returns: A list of all areas of that type in the world. -/proc/get_areas(var/areatype) - if(!areatype) return null - if(istext(areatype)) areatype = text2path(areatype) - if(isarea(areatype)) - var/area/areatemp = areatype - areatype = areatemp.type - - var/list/areas = new/list() - for(var/area/N in world) - if(istype(N, areatype)) areas += N - return areas - //Takes: Area type as text string or as typepath OR an instance of the area. //Returns: A list of all turfs in areas of that type of that type in the world. /proc/get_area_turfs(var/areatype) @@ -840,7 +759,11 @@ Turf and target are seperate in case you want to teleport some distance from a t //Move the objects. Not forceMove because the object isn't "moving" really, it's supposed to be on the "same" turf. for(var/obj/O in T) O.loc = X - O.update_light() + if(O.light_system == STATIC_LIGHT) + O.update_light() + else + var/datum/component/overlay_lighting/OL = O.GetComponent(/datum/component/overlay_lighting) + OL?.on_parent_moved(O, T, O.dir, TRUE) if(z_level_change) // The objects still need to know if their z-level changed. O.onTransitZ(T.z, X.z) @@ -1017,10 +940,6 @@ Turf and target are seperate in case you want to teleport some distance from a t var/dy = abs(B.y - A.y) return get_dir(A, B) & (rand() * (dx+dy) < dy ? 3 : 12) -//chances are 1:value. anyprob(1) will always return true -/proc/anyprob(value) - return (rand(1,value)==value) - /proc/view_or_range(distance = world.view , center = usr , type) switch(type) if("view") @@ -1029,14 +948,6 @@ Turf and target are seperate in case you want to teleport some distance from a t . = range(distance,center) return -/proc/oview_or_orange(distance = world.view , center = usr , type) - switch(type) - if("view") - . = oview(distance,center) - if("range") - . = orange(distance,center) - return - /proc/get_mob_with_client_list() var/list/mobs = list() for(var/mob/M in mob_list) @@ -1158,16 +1069,6 @@ var/global/list/common_tools = list( istype(W, /obj/item/weapon/shovel) \ ) -/proc/is_surgery_tool(obj/item/W as obj) - return ( \ - istype(W, /obj/item/weapon/surgical/scalpel) || \ - istype(W, /obj/item/weapon/surgical/hemostat) || \ - istype(W, /obj/item/weapon/surgical/retractor) || \ - istype(W, /obj/item/weapon/surgical/cautery) || \ - istype(W, /obj/item/weapon/surgical/bonegel) || \ - istype(W, /obj/item/weapon/surgical/bonesetter) - ) - // check if mob is lying down on something we can operate him on. // The RNG with table/rollerbeds comes into play in do_surgery() so that fail_step() can be used instead. /proc/can_operate(mob/living/carbon/M, mob/living/user) @@ -1187,29 +1088,13 @@ var/global/list/common_tools = list( var/obj/surface = null for(var/obj/O in loc) // Looks for the best surface. if(O.surgery_odds) - if(!surface || surface.surgery_odds < O) + if(!surface || surface.surgery_odds < O.surgery_odds) surface = O if(surface) return surface /proc/reverse_direction(var/dir) - switch(dir) - if(NORTH) - return SOUTH - if(NORTHEAST) - return SOUTHWEST - if(EAST) - return WEST - if(SOUTHEAST) - return NORTHWEST - if(SOUTH) - return NORTH - if(SOUTHWEST) - return NORTHEAST - if(WEST) - return EAST - if(NORTHWEST) - return SOUTHEAST + return global.reverse_dir[dir] /* Checks if that loc and dir has a item on the wall @@ -1299,10 +1184,10 @@ var/mob/dview/dview_mob = new /mob/dview invisibility = 101 - density = 0 + density = FALSE - anchored = 1 - simulated = 0 + anchored = TRUE + simulated = FALSE see_in_dark = 1e6 @@ -1326,16 +1211,12 @@ var/mob/dview/dview_mob = new living_mob_list -= src /mob/dview/Destroy(var/force) - crash_with("Attempt to delete the dview_mob: [log_info_line(src)]") + stack_trace("Attempt to delete the dview_mob: [log_info_line(src)]") if (!force) return QDEL_HINT_LETMELIVE global.dview_mob = new return ..() -// call to generate a stack trace and print to runtime logs -/proc/crash_with(msg) - CRASH(msg) - /proc/screen_loc2turf(scr_loc, turf/origin) var/tX = splittext(scr_loc, ",") var/tY = splittext(tX[2], ":") @@ -1375,8 +1256,7 @@ var/mob/dview/dview_mob = new if(orange) turfs -= get_turf(center) . = list() - for(var/V in turfs) - var/turf/T = V + for(var/turf/T as anything in turfs) . += T . += T.contents if(areas) @@ -1481,9 +1361,6 @@ var/mob/dview/dview_mob = new if(337.5) return "North-Northwest" -/proc/pass() - return - /proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types()) if (value == FALSE) //nothing should be calling us with a number, so this is safe value = input(usr, "Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text diff --git a/code/_helpers/visual_filters.dm b/code/_helpers/visual_filters.dm index 96f68710000..c02bbb69939 100644 --- a/code/_helpers/visual_filters.dm +++ b/code/_helpers/visual_filters.dm @@ -335,8 +335,7 @@ GLOBAL_LIST_INIT(master_filter_info, list( /obj/item/update_filters() . = ..() /* Will port this from TG - for(var/X in actions) - var/datum/action/A = X + for(var/datum/action/A as anything in actions) A.UpdateButtonIcon() */ diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index bdde739d836..98c187fc97d 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -177,7 +177,10 @@ var/list/global_huds = list( var/obj/screen/move_intent var/list/adding + /// Misc hud elements that are hidden when the hud is minimized var/list/other + /// Same, but always shown even when the hud is minimized + var/list/other_important var/list/miniobjs var/list/obj/screen/hotkeybuttons @@ -214,6 +217,7 @@ var/list/global_huds = list( move_intent = null adding = null other = null + other_important = null hotkeybuttons = null // item_action_list = null // ? mymob = null @@ -367,12 +371,16 @@ var/list/global_huds = list( client.screen -= hud_used.other if(hud_used.hotkeybuttons) client.screen -= hud_used.hotkeybuttons + if(hud_used.other_important) + client.screen -= hud_used.other_important else hud_used.hud_shown = 1 if(hud_used.adding) client.screen += hud_used.adding if(hud_used.other && hud_used.inventory_shown) client.screen += hud_used.other + if(hud_used.other_important) + client.screen += hud_used.other_important if(hud_used.hotkeybuttons && !hud_used.hotkey_ui_hidden) client.screen += hud_used.hotkeybuttons if(healths) diff --git a/code/_onclick/hud/minihud_rigmech.dm b/code/_onclick/hud/minihud_rigmech.dm index e54a733f801..b4d13f1c864 100644 --- a/code/_onclick/hud/minihud_rigmech.dm +++ b/code/_onclick/hud/minihud_rigmech.dm @@ -21,8 +21,7 @@ screenobjs += new /obj/screen/rig/deco1_f screenobjs += new /obj/screen/rig/deco2_f - for(var/scr in screenobjs) - var/obj/screen/S = scr + for(var/obj/screen/S as anything in screenobjs) S.master = owner_rig ..() @@ -71,8 +70,7 @@ screenobjs += new /obj/screen/mech/deco1_f screenobjs += new /obj/screen/mech/deco2_f - for(var/scr in screenobjs) - var/obj/screen/S = scr + for(var/obj/screen/S as anything in screenobjs) S.master = owner_mech ..() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 0c10066e580..00446add6df 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -12,7 +12,7 @@ appearance_flags = TILE_BOUND|PIXEL_SCALE|NO_CLIENT_COLOR layer = LAYER_HUD_BASE plane = PLANE_PLAYER_HUD - unacidable = 1 + unacidable = TRUE var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. var/datum/hud/hud = null // A reference to the owner HUD, if any. diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 049db78c3af..16141343c65 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -151,8 +151,8 @@ var/const/tk_maxrange = 15 if(!focus) return var/obj/effect/overlay/O = new /obj/effect/overlay(locate(focus.x,focus.y,focus.z)) O.name = "sparkles" - O.anchored = 1 - O.density = 0 + O.anchored = TRUE + O.density = FALSE O.layer = FLY_LAYER O.set_dir(pick(GLOB.cardinal)) O.icon = 'icons/effects/effects.dmi' diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 47579ec43ed..21acf2c577e 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -231,7 +231,7 @@ var/list/gamemode_cache = list() // 15, 45, 70 minutes respectively var/static/list/event_delay_upper = list(EVENT_LEVEL_MUNDANE = 9000, EVENT_LEVEL_MODERATE = 27000, EVENT_LEVEL_MAJOR = 42000) - var/static/aliens_allowed = 0 + var/static/aliens_allowed = 1 //Changed to 1 so player xenos can lay eggs. var/static/ninjas_allowed = 0 var/static/abandon_allowed = 1 var/static/ooc_allowed = 1 @@ -298,7 +298,7 @@ var/list/gamemode_cache = list() var/static/list/jukebox_track_files /datum/configuration/New() - var/list/L = typesof(/datum/game_mode) - /datum/game_mode + var/list/L = subtypesof(/datum/game_mode) for (var/T in L) // I wish I didn't have to instance the game modes in order to look up // their information, but it is the only way (at least that I know of). diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index c92d42d82ac..6b7c0b41376 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -20,7 +20,7 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) Initialize(exclude_these) /datum/controller/global_vars/Destroy(force) - crash_with("There was an attempt to qdel the global vars holder!") + stack_trace("There was an attempt to qdel the global vars holder!") if(!force) return QDEL_HINT_LETMELIVE diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 3f734b1cc05..ab2d2a12dea 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -248,8 +248,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/list/tickersubsystems = list() var/list/runlevel_sorted_subsystems = list(list()) //ensure we always have at least one runlevel var/timer = world.time - for (var/thing in subsystems) - var/datum/controller/subsystem/SS = thing + for (var/datum/controller/subsystem/SS as anything in subsystems) if (SS.flags & SS_NO_FIRE) continue SS.queued_time = 0 @@ -336,8 +335,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new cached_runlevel = checking_runlevel current_runlevel_subsystems = runlevel_sorted_subsystems[cached_runlevel] var/stagger = world.time - for(var/I in current_runlevel_subsystems) - var/datum/controller/subsystem/SS = I + for(var/datum/controller/subsystem/SS as anything in current_runlevel_subsystems) if(SS.next_fire <= world.time) stagger += world.tick_lag * rand(1, 5) SS.next_fire = stagger @@ -550,8 +548,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new for(var/I in runlevel_SS) subsystemstocheck |= I - for (var/thing in subsystemstocheck) - var/datum/controller/subsystem/SS = thing + for (var/datum/controller/subsystem/SS as anything in subsystemstocheck) if (!SS || !istype(SS)) //list(SS) is so if a list makes it in the subsystem list, we remove the list, not the contents subsystems -= list(SS) @@ -598,8 +595,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new //disallow more than one map to load at once, multithreading it will just cause race conditions while(map_loading) stoplag() - for(var/S in subsystems) - var/datum/controller/subsystem/SS = S + for(var/datum/controller/subsystem/SS as anything in subsystems) SS.StartLoadingMap() map_loading = TRUE @@ -608,6 +604,5 @@ GLOBAL_REAL(Master, /datum/controller/master) = new if(!quiet) admin_notice("Map is finished. Unlocking.", R_DEBUG) map_loading = FALSE - for(var/S in subsystems) - var/datum/controller/subsystem/SS = S + for(var/datum/controller/subsystem/SS as anything in subsystems) SS.StopLoadingMap() diff --git a/code/controllers/subsystems/airflow.dm b/code/controllers/subsystems/airflow.dm index 4881113623b..7561ad8cca7 100644 --- a/code/controllers/subsystems/airflow.dm +++ b/code/controllers/subsystems/airflow.dm @@ -5,7 +5,7 @@ TARGET.airflow_time = 0; \ TARGET.airflow_skip_speedcheck = FALSE; \ if (TARGET.airflow_od) { \ - TARGET.density = 0; \ + TARGET.density = FALSE; \ } // No point in making this a processing substem, it overrides fire() and handles its own processing list! @@ -54,7 +54,7 @@ SUBSYSTEM_DEF(airflow) if (target.airflow_speed > 7) if (target.airflow_time++ >= target.airflow_speed - 7) if (target.airflow_od) - target.density = 0 + target.density = FALSE target.airflow_skip_speedcheck = TRUE if (MC_TICK_CHECK) @@ -62,7 +62,7 @@ SUBSYSTEM_DEF(airflow) continue else if (target.airflow_od) - target.density = 0 + target.density = FALSE target.airflow_process_delay = max(1, 10 - (target.airflow_speed + 3)) target.airflow_skip_speedcheck = TRUE @@ -73,7 +73,7 @@ SUBSYSTEM_DEF(airflow) target.airflow_skip_speedcheck = FALSE if (target.airflow_od) - target.density = 1 + target.density = TRUE if (!target.airflow_dest || target.loc == target.airflow_dest) target.airflow_dest = locate(min(max(target.x + target.airflow_xo, 1), world.maxx), min(max(target.y + target.airflow_yo, 1), world.maxy), target.z) @@ -135,7 +135,7 @@ SUBSYSTEM_DEF(airflow) airflow_od = 0 if (!density) - density = 1 + density = TRUE airflow_od = 1 return TRUE diff --git a/code/controllers/subsystems/assets.dm b/code/controllers/subsystems/assets.dm index 2041104a2bd..75c23ff10f4 100644 --- a/code/controllers/subsystems/assets.dm +++ b/code/controllers/subsystems/assets.dm @@ -6,11 +6,10 @@ SUBSYSTEM_DEF(assets) var/list/preload = list() /datum/controller/subsystem/assets/Initialize(timeofday) - for(var/type in typesof(/datum/asset)) - var/datum/asset/A = type - if (type != initial(A._abstract)) - get_asset_datum(type) - + for(var/typepath in typesof(/datum/asset)) + var/datum/asset/A = typepath + if (typepath != initial(A._abstract)) + get_asset_datum(typepath) preload = cache.Copy() //don't preload assets generated during the round diff --git a/code/controllers/subsystems/atoms.dm b/code/controllers/subsystems/atoms.dm index 4db490914ab..a62c5265c55 100644 --- a/code/controllers/subsystems/atoms.dm +++ b/code/controllers/subsystems/atoms.dm @@ -38,11 +38,10 @@ SUBSYSTEM_DEF(atoms) if(atoms) created_atoms = list() count = atoms.len - for(var/I in atoms) - var/atom/A = I + for(var/atom/A as anything in atoms) if(!A.initialized) - if(InitAtom(I, mapload_arg)) - atoms -= I + if(InitAtom(A, mapload_arg)) + atoms -= A CHECK_TICK else count = 0 @@ -57,8 +56,7 @@ SUBSYSTEM_DEF(atoms) initialized = INITIALIZATION_INNEW_REGULAR if(late_loaders.len) - for(var/I in late_loaders) - var/atom/A = I + for(var/atom/A as anything in late_loaders) A.LateInitialize() CHECK_TICK testing("Late initialized [late_loaders.len] atoms") diff --git a/code/controllers/subsystems/chat.dm b/code/controllers/subsystems/chat.dm index 553c30d1286..aece61d39e2 100644 --- a/code/controllers/subsystems/chat.dm +++ b/code/controllers/subsystems/chat.dm @@ -13,8 +13,7 @@ SUBSYSTEM_DEF(chat) /datum/controller/subsystem/chat/fire() var/list/msg_queue = src.msg_queue // Local variable for sanic speed. - for(var/i in msg_queue) - var/client/C = i + for(var/client/C as anything in msg_queue) var/list/messages = msg_queue[C] msg_queue -= C if (C) diff --git a/code/controllers/subsystems/circuits.dm b/code/controllers/subsystems/circuits.dm index 8fda048c608..4d2b2821713 100644 --- a/code/controllers/subsystems/circuits.dm +++ b/code/controllers/subsystems/circuits.dm @@ -23,11 +23,10 @@ SUBSYSTEM_DEF(circuit) /datum/controller/subsystem/circuit/proc/circuits_init() //Cached lists for free performance - for(var/path in typesof(/obj/item/integrated_circuit)) - var/obj/item/integrated_circuit/IC = path - var/name = initial(IC.name) - all_components[name] = path // Populating the component lists - cached_components[IC] = new path + for(var/obj/item/integrated_circuit/IC as anything in typesof(/obj/item/integrated_circuit)) + var/path = IC + all_components[initial(IC.name)] = path // Populating the component lists + cached_components[path] = new path if(!(initial(IC.spawn_flags) & (IC_SPAWN_DEFAULT | IC_SPAWN_RESEARCH))) continue @@ -38,11 +37,10 @@ SUBSYSTEM_DEF(circuit) var/list/category_list = circuit_fabricator_recipe_list[category] category_list += IC // Populating the fabricator categories - for(var/path in typesof(/obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/A = path - var/name = initial(A.name) - all_assemblies[name] = path - cached_assemblies[A] = new path + for(var/obj/item/device/electronic_assembly/A as anything in typesof(/obj/item/device/electronic_assembly)) + var/path = A + all_assemblies[initial(A.name)] = path + cached_assemblies[path] = new path circuit_fabricator_recipe_list["Assemblies"] = list( diff --git a/code/controllers/subsystems/events.dm b/code/controllers/subsystems/events.dm index 5b613775e47..83ab2fa00ca 100644 --- a/code/controllers/subsystems/events.dm +++ b/code/controllers/subsystems/events.dm @@ -13,7 +13,7 @@ SUBSYSTEM_DEF(events) var/datum/event_meta/new_event = new /datum/controller/subsystem/events/Initialize() - allEvents = typesof(/datum/event) - /datum/event + allEvents = subtypesof(/datum/event) event_containers = list( EVENT_LEVEL_MUNDANE = new/datum/event_container/mundane, EVENT_LEVEL_MODERATE = new/datum/event_container/moderate, diff --git a/code/controllers/subsystems/events2.dm b/code/controllers/subsystems/events2.dm index 2a73498b1d6..7cf986358f7 100644 --- a/code/controllers/subsystems/events2.dm +++ b/code/controllers/subsystems/events2.dm @@ -14,8 +14,7 @@ SUBSYSTEM_DEF(event_ticker) // Process active events. /datum/controller/subsystem/event_ticker/fire(resumed) - for(var/E in active_events) - var/datum/event2/event/event = E + for(var/datum/event2/event/event as anything in active_events) event.process() if(event.finished) event_finished(event) diff --git a/code/controllers/subsystems/game_master.dm b/code/controllers/subsystems/game_master.dm index 01ea0869356..06a60602273 100644 --- a/code/controllers/subsystems/game_master.dm +++ b/code/controllers/subsystems/game_master.dm @@ -74,8 +74,7 @@ SUBSYSTEM_DEF(game_master) chosen_event.enabled = FALSE if(chosen_event.event_class) // Disable similar events, too. - for(var/M in available_events) - var/datum/event2/meta/meta = M + for(var/datum/event2/meta/meta as anything in available_events) if(meta.event_class == chosen_event.event_class) meta.enabled = FALSE @@ -235,8 +234,7 @@ SUBSYSTEM_DEF(game_master) dat += "Players" dat += "" - for(var/P in player_list) - var/mob/M = P + for(var/mob/M as anything in player_list) dat += "" dat += "[M] ([M.ckey])" dat += "[metric.assess_player_activity(M)]%" @@ -255,8 +253,7 @@ SUBSYSTEM_DEF(game_master) dat += "Buttons" dat += "" - for(var/E in available_events) - var/datum/event2/meta/event = E + for(var/datum/event2/meta/event as anything in available_events) dat += "" if(!event.enabled) dat += "[event.name]" @@ -285,8 +282,7 @@ SUBSYSTEM_DEF(game_master) dat += "Buttons" dat += "" - for(var/E in SSevent_ticker.active_events) - var/datum/event2/event/event = E + for(var/datum/event2/event/event as anything in SSevent_ticker.active_events) dat += "" dat += "[event.type]" dat += "[event.time_started]" @@ -309,8 +305,7 @@ SUBSYSTEM_DEF(game_master) dat += "Finish Time" dat += "" - for(var/E in SSevent_ticker.finished_events) - var/datum/event2/event/event = E + for(var/datum/event2/event/event as anything in SSevent_ticker.finished_events) dat += "" dat += "[event.type]" dat += "[event.time_started]" diff --git a/code/controllers/subsystems/garbage.dm b/code/controllers/subsystems/garbage.dm index 9da198fdaff..c1fe92295dd 100644 --- a/code/controllers/subsystems/garbage.dm +++ b/code/controllers/subsystems/garbage.dm @@ -1,33 +1,32 @@ -// -// Garbage Collector Subsystem - Implements qdel() and the GC queue -// SUBSYSTEM_DEF(garbage) name = "Garbage" priority = FIRE_PRIORITY_GARBAGE wait = 2 SECONDS flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY + init_order = INIT_ORDER_GARBAGE - var/list/collection_timeout = list(0, 2 MINUTES, 10 SECONDS) // deciseconds to wait before moving something up in the queue to the next level + var/list/collection_timeout = list(2 MINUTES, 10 SECONDS) // deciseconds to wait before moving something up in the queue to the next level - var/delslasttick = 0 // number of del()'s we've done this tick - var/gcedlasttick = 0 // number of things that gc'ed last tick + //Stat tracking + var/delslasttick = 0 // number of del()'s we've done this tick + var/gcedlasttick = 0 // number of things that gc'ed last tick var/totaldels = 0 var/totalgcs = 0 - var/highest_del_time = 0 - var/highest_del_tickusage = 0 + var/highest_del_ms = 0 + var/highest_del_type_string = "" var/list/pass_counts var/list/fail_counts - var/list/items = list() // Holds our qdel_item statistics datums + var/list/items = list() // Holds our qdel_item statistics datums - // List of Queues - // Each queue is a list of refID's of things that should be garbage collected - // refID's are associated with the time at which they time out and need to be manually del() - // we do this so we aren't constantly locating them and preventing them from being gc'd + //Queue var/list/queues + #ifdef REFERENCE_TRACKING + var/list/reference_find_on_fail = list() + #endif /datum/controller/subsystem/garbage/PreInit() @@ -57,7 +56,7 @@ SUBSYSTEM_DEF(garbage) msg += "TGR:[round((totalgcs/(totaldels+totalgcs))*100, 0.01)]%" msg += " P:[pass_counts.Join(",")]" msg += "|F:[fail_counts.Join(",")]" - ..(msg) + return ..() /datum/controller/subsystem/garbage/Shutdown() //Adds the del() log to the qdel log file @@ -68,13 +67,18 @@ SUBSYSTEM_DEF(garbage) for(var/path in items) var/datum/qdel_item/I = items[path] dellog += "Path: [path]" + if (I.qdel_flags & QDEL_ITEM_SUSPENDED_FOR_LAG) + dellog += "\tSUSPENDED FOR LAG" if (I.failures) dellog += "\tFailures: [I.failures]" dellog += "\tqdel() Count: [I.qdels]" dellog += "\tDestroy() Cost: [I.destroy_time]ms" if (I.hard_deletes) - dellog += "\tTotal Hard Deletes [I.hard_deletes]" + dellog += "\tTotal Hard Deletes: [I.hard_deletes]" dellog += "\tTime Spent Hard Deleting: [I.hard_delete_time]ms" + dellog += "\tHighest Time Spent Hard Deleting: [I.hard_delete_max]ms" + if (I.hard_deletes_over_threshold) + dellog += "\tHard Deletes Over Threshold: [I.hard_deletes_over_threshold]" if (I.slept_destroy) dellog += "\tSleeps: [I.slept_destroy]" if (I.no_respect_force) @@ -85,42 +89,19 @@ SUBSYSTEM_DEF(garbage) /datum/controller/subsystem/garbage/fire() //the fact that this resets its processing each fire (rather then resume where it left off) is intentional. - var/queue = GC_QUEUE_PREQUEUE + var/queue = GC_QUEUE_CHECK while (state == SS_RUNNING) switch (queue) - if (GC_QUEUE_PREQUEUE) - HandlePreQueue() - queue = GC_QUEUE_PREQUEUE+1 if (GC_QUEUE_CHECK) HandleQueue(GC_QUEUE_CHECK) queue = GC_QUEUE_CHECK+1 if (GC_QUEUE_HARDDELETE) HandleQueue(GC_QUEUE_HARDDELETE) + if (state == SS_PAUSED) //make us wait again before the next run. + state = SS_RUNNING break - if (state == SS_PAUSED) //make us wait again before the next run. - state = SS_RUNNING - -//If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond. -//Don't attempt to optimize, not worth the effort. -/datum/controller/subsystem/garbage/proc/HandlePreQueue() - var/list/tobequeued = queues[GC_QUEUE_PREQUEUE] - var/static/count = 0 - if (count) - var/c = count - count = 0 //so if we runtime on the Cut, we don't try again. - tobequeued.Cut(1,c+1) - - for (var/ref in tobequeued) - count++ - Queue(ref, GC_QUEUE_PREQUEUE+1) - if (MC_TICK_CHECK) - break - if (count) - tobequeued.Cut(1,count+1) - count = 0 - /datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_CHECK) if (level == GC_QUEUE_CHECK) delslasttick = 0 @@ -137,18 +118,21 @@ SUBSYSTEM_DEF(garbage) lastlevel = level - for (var/refID in queue) - if (!refID) + //We do this rather then for(var/refID in queue) because that sort of for loop copies the whole list. + //Normally this isn't expensive, but the gc queue can grow to 40k items, and that gets costly/causes overrun. + for (var/i in 1 to length(queue)) + var/list/L = queue[i] + if (length(L) < 2) count++ if (MC_TICK_CHECK) - break + return continue - var/GCd_at_time = queue[refID] + var/GCd_at_time = L[1] if(GCd_at_time > cut_off_time) break // Everything else is newer, skip them count++ - + var/refID = L[2] var/datum/D D = locate(refID) @@ -156,50 +140,73 @@ SUBSYSTEM_DEF(garbage) ++gcedlasttick ++totalgcs pass_counts[level]++ + #ifdef REFERENCE_TRACKING + reference_find_on_fail -= refID //It's deleted we don't care anymore. + #endif if (MC_TICK_CHECK) - break + return continue // Something's still referring to the qdel'd object. fail_counts[level]++ + + #ifdef REFERENCE_TRACKING + var/ref_searching = FALSE + #endif + switch (level) if (GC_QUEUE_CHECK) + #ifdef REFERENCE_TRACKING + if(reference_find_on_fail[refID]) + INVOKE_ASYNC(D, /datum/proc/find_references) + ref_searching = TRUE #ifdef GC_FAILURE_HARD_LOOKUP - D.find_references() + else + INVOKE_ASYNC(D, /datum/proc/find_references) + ref_searching = TRUE + #endif + reference_find_on_fail -= refID #endif var/type = D.type var/datum/qdel_item/I = items[type] - var/extrainfo = "--" - if(istype(D,/image)) - var/image/img = D - var/icon/ico = img.icon - extrainfo = "L:[img.loc] -- I:[ico] -- IS:[img.icon_state] --" - testing("GC: -- \ref[D] | [type] was unable to be GC'd [extrainfo]") + + log_world("## TESTING: GC: -- \ref[D] | [type] was unable to be GC'd --") + #ifdef TESTING + for(var/client/admin as anything in GLOB.admins) //Using testing() here would fill the logs with ADMIN_VV garbage + if(!check_rights_for(admin, R_ADMIN)) + continue + to_chat(admin, "## TESTING: GC: -- [ADMIN_VV(D)] | [type] was unable to be GC'd --") + #endif I.failures++ + + if (I.qdel_flags & QDEL_ITEM_SUSPENDED_FOR_LAG) + #ifdef REFERENCE_TRACKING + if(ref_searching) + return //ref searching intentionally cancels all further fires while running so things that hold references don't end up getting deleted, so we want to return here instead of continue + #endif + continue if (GC_QUEUE_HARDDELETE) HardDelete(D) if (MC_TICK_CHECK) - break + return continue Queue(D, level+1) + #ifdef REFERENCE_TRACKING + if(ref_searching) + return + #endif + if (MC_TICK_CHECK) - break + return if (count) queue.Cut(1,count+1) count = 0 -/datum/controller/subsystem/garbage/proc/PreQueue(datum/D) - if (D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - queues[GC_QUEUE_PREQUEUE] += D - D.gc_destroyed = GC_QUEUED_FOR_QUEUING - /datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_CHECK) if (isnull(D)) return - if (D.gc_destroyed == GC_QUEUED_FOR_HARD_DEL) - level = GC_QUEUE_HARDDELETE if (level > GC_QUEUE_COUNT) HardDelete(D) return @@ -208,89 +215,88 @@ SUBSYSTEM_DEF(garbage) D.gc_destroyed = gctime var/list/queue = queues[level] - if (queue[refid]) - queue -= refid // Removing any previous references that were GC'd so that the current object will be at the end of the list. - queue[refid] = gctime + queue[++queue.len] = list(gctime, refid) // not += for byond reasons //this is mainly to separate things profile wise. /datum/controller/subsystem/garbage/proc/HardDelete(datum/D) - var/time = world.timeofday - var/tick = TICK_USAGE - var/ticktime = world.time ++delslasttick ++totaldels var/type = D.type var/refID = "\ref[D]" + var/tick_usage = TICK_USAGE del(D) - - tick = (TICK_USAGE-tick+((world.time-ticktime)/world.tick_lag*100)) + tick_usage = TICK_USAGE_TO_MS(tick_usage) var/datum/qdel_item/I = items[type] - I.hard_deletes++ - I.hard_delete_time += TICK_DELTA_TO_MS(tick) + I.hard_delete_time += tick_usage + if (tick_usage > I.hard_delete_max) + I.hard_delete_max = tick_usage + if (tick_usage > highest_del_ms) + highest_del_ms = tick_usage + highest_del_type_string = "[type]" + var/time = MS2DS(tick_usage) - if (tick > highest_del_tickusage) - highest_del_tickusage = tick - time = world.timeofday - time - if (!time && TICK_DELTA_TO_MS(tick) > 1) - time = TICK_DELTA_TO_MS(tick)/100 - if (time > highest_del_time) - highest_del_time = time - if (time > 20) //VOREStation Edit - log_game("Error: [type]([refID]) took longer than 2 seconds to delete (took [time/10] seconds to delete)") //VOREStation Edit - message_admins("Error: [type]([refID]) took longer than 2 seconds to delete (took [time/10] seconds to delete).") //VOREStation Edit + if (time > 0.1 SECONDS) postpone(time) - -/datum/controller/subsystem/garbage/proc/HardQueue(datum/D) - if (D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) - queues[GC_QUEUE_PREQUEUE] += D - D.gc_destroyed = GC_QUEUED_FOR_HARD_DEL + var/threshold = 0.5 // Default, make a config + if (threshold && (time > threshold SECONDS)) + if (!(I.qdel_flags & QDEL_ITEM_ADMINS_WARNED)) + log_and_message_admins("Error: [type]([refID]) took longer than [threshold] seconds to delete (took [round(time/10, 0.1)] seconds to delete)") + I.qdel_flags |= QDEL_ITEM_ADMINS_WARNED + I.hard_deletes_over_threshold++ + var/overrun_limit = 0 // Default, make a config + if (overrun_limit && I.hard_deletes_over_threshold >= overrun_limit) + I.qdel_flags |= QDEL_ITEM_SUSPENDED_FOR_LAG /datum/controller/subsystem/garbage/Recover() if (istype(SSgarbage.queues)) for (var/i in 1 to SSgarbage.queues.len) queues[i] |= SSgarbage.queues[i] - +/// Qdel Item: Holds statistics on each type that passes thru qdel /datum/qdel_item - var/name = "" - var/qdels = 0 //Total number of times it's passed thru qdel. - var/destroy_time = 0 //Total amount of milliseconds spent processing this type's Destroy() - var/failures = 0 //Times it was queued for soft deletion but failed to soft delete. - var/hard_deletes = 0 //Different from failures because it also includes QDEL_HINT_HARDDEL deletions - var/hard_delete_time = 0//Total amount of milliseconds spent hard deleting this type. - var/no_respect_force = 0//Number of times it's not respected force=TRUE - var/no_hint = 0 //Number of times it's not even bother to give a qdel hint - var/slept_destroy = 0 //Number of times it's slept in its destroy + var/name = "" //!Holds the type as a string for this type + var/qdels = 0 //!Total number of times it's passed thru qdel. + var/destroy_time = 0 //!Total amount of milliseconds spent processing this type's Destroy() + var/failures = 0 //!Times it was queued for soft deletion but failed to soft delete. + var/hard_deletes = 0 //!Different from failures because it also includes QDEL_HINT_HARDDEL deletions + var/hard_delete_time = 0 //!Total amount of milliseconds spent hard deleting this type. + var/hard_delete_max = 0 //!Highest time spent hard_deleting this in ms. + var/hard_deletes_over_threshold = 0 //!Number of times hard deletes took longer than the configured threshold + var/no_respect_force = 0 //!Number of times it's not respected force=TRUE + var/no_hint = 0 //!Number of times it's not even bother to give a qdel hint + var/slept_destroy = 0 //!Number of times it's slept in its destroy + var/qdel_flags = 0 //!Flags related to this type's trip thru qdel. /datum/qdel_item/New(mytype) name = "[mytype]" -// Should be treated as a replacement for the 'del' keyword. -// Datums passed to this will be given a chance to clean up references to allow the GC to collect them. -/proc/qdel(datum/D, force=FALSE) +/// Should be treated as a replacement for the 'del' keyword. +/// +/// Datums passed to this will be given a chance to clean up references to allow the GC to collect them. +/proc/qdel(datum/D, force=FALSE, ...) if(!istype(D)) del(D) return + var/datum/qdel_item/I = SSgarbage.items[D.type] if (!I) I = SSgarbage.items[D.type] = new /datum/qdel_item(D.type) I.qdels++ - if(isnull(D.gc_destroyed)) - if(SEND_SIGNAL(D, COMSIG_PARENT_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted + if (SEND_SIGNAL(D, COMSIG_PARENT_PREQDELETED, force)) // Give the components a chance to prevent their parent from being deleted return D.gc_destroyed = GC_CURRENTLY_BEING_QDELETED var/start_time = world.time var/start_tick = world.tick_usage SEND_SIGNAL(D, COMSIG_PARENT_QDELETING, force) // Let the (remaining) components know about the result of Destroy - var/hint = D.Destroy(force) // Let our friend know they're about to get fucked up. + var/hint = D.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. if(world.time != start_time) I.slept_destroy++ else @@ -298,12 +304,12 @@ SUBSYSTEM_DEF(garbage) if(!D) return switch(hint) - if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion. - SSgarbage.PreQueue(D) + if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion. + SSgarbage.Queue(D) if (QDEL_HINT_IWILLGC) D.gc_destroyed = world.time return - if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory. + if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory. if(!force) D.gc_destroyed = null //clear the gc variable (important!) return @@ -311,7 +317,7 @@ SUBSYSTEM_DEF(garbage) // indicates the objects Destroy() does not respect force #ifdef TESTING if(!I.no_respect_force) - crash_with("[D.type] has been force deleted, but is \ + testing("WARNING: [D.type] has been force deleted, but is \ returning an immortal QDEL_HINT, indicating it does \ not respect the force flag for qdel(). It has been \ placed in the queue, further instances of this type \ @@ -319,136 +325,25 @@ SUBSYSTEM_DEF(garbage) #endif I.no_respect_force++ - SSgarbage.PreQueue(D) - if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete using a hard reference to save time from the locate() - SSgarbage.HardQueue(D) - if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. + SSgarbage.Queue(D) + if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete + SSgarbage.Queue(D, GC_QUEUE_HARDDELETE) + if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. SSgarbage.HardDelete(D) - if (QDEL_HINT_FINDREFERENCE)//qdel will, if TESTING is enabled, display all references to this object, then queue the object for deletion. - SSgarbage.PreQueue(D) - #ifdef TESTING + #ifdef REFERENCE_TRACKING + if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion. + SSgarbage.Queue(D) D.find_references() - #endif + if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object. + SSgarbage.Queue(D) + SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE + #endif else #ifdef TESTING if(!I.no_hint) - crash_with("[D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") + testing("WARNING: [D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") #endif I.no_hint++ - SSgarbage.PreQueue(D) + SSgarbage.Queue(D) else if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) CRASH("[D.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic") - -#ifdef TESTING - -/datum/verb/find_refs() - set category = "Debug" - set name = "Find References" - set background = 1 - set src in world - - find_references(FALSE) - -/datum/proc/find_references(skip_alert) - running_find_references = type - if(usr && usr.client) - if(usr.client.running_find_references) - testing("CANCELLED search for references to a [usr.client.running_find_references].") - usr.client.running_find_references = null - running_find_references = null - //restart the garbage collector - SSgarbage.can_fire = 1 - SSgarbage.next_fire = world.time + world.tick_lag - return - - if(!skip_alert) - if(tgui_alert(usr, "Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) == "No") - running_find_references = null - return - - //this keeps the garbage collector from failing to collect objects being searched for in here - SSgarbage.can_fire = 0 - - if(usr && usr.client) - usr.client.running_find_references = type - - testing("Beginning search for references to a [type].") - last_find_references = world.time - - // DoSearchVar(GLOB) // If we ever implement GLOB this would be the place. - for(var/datum/thing in world) //atoms (don't beleive it's lies) - DoSearchVar(thing, "World -> [thing]") - - for (var/datum/thing) //datums - DoSearchVar(thing, "World -> [thing]") - - for (var/client/thing) //clients - DoSearchVar(thing, "World -> [thing]") - - testing("Completed search for references to a [type].") - if(usr && usr.client) - usr.client.running_find_references = null - running_find_references = null - - //restart the garbage collector - SSgarbage.can_fire = 1 - SSgarbage.next_fire = world.time + world.tick_lag - -/datum/verb/qdel_then_find_references() - set category = "Debug" - set name = "qdel() then Find References" - set background = 1 - set src in world - - qdel(src) - if(!running_find_references) - find_references(TRUE) - -/datum/proc/DoSearchVar(X, Xname, recursive_limit = 64) - if(usr && usr.client && !usr.client.running_find_references) - return - if (!recursive_limit) - return - - if(istype(X, /datum)) - var/datum/D = X - if(D.last_find_references == last_find_references) - return - - D.last_find_references = last_find_references - var/list/L = D.vars - - for(var/varname in L) - if (varname == "vars") - continue - var/variable = L[varname] - - if(variable == src) - testing("Found [src.type] \ref[src] in [D.type]'s [varname] var. [Xname]") - - else if(islist(variable)) - DoSearchVar(variable, "[Xname] -> list", recursive_limit-1) - - else if(islist(X)) - var/normal = IS_NORMAL_LIST(X) - for(var/I in X) - if (I == src) - testing("Found [src.type] \ref[src] in list [Xname].") - - else if (I && !isnum(I) && normal && X[I] == src) - testing("Found [src.type] \ref[src] in list [Xname]\[[I]\]") - - else if (islist(I)) - DoSearchVar(I, "[Xname] -> list", recursive_limit-1) - -#ifndef FIND_REF_NO_CHECK_TICK - CHECK_TICK -#endif - -#endif - - -/image/Destroy() - ..() - loc = null - return QDEL_HINT_QUEUE diff --git a/code/controllers/subsystems/mapping.dm b/code/controllers/subsystems/mapping.dm index 848a5552d60..06bf16e2557 100644 --- a/code/controllers/subsystems/mapping.dm +++ b/code/controllers/subsystems/mapping.dm @@ -34,11 +34,10 @@ SUBSYSTEM_DEF(mapping) ..() /datum/controller/subsystem/mapping/proc/load_map_templates() - for(var/T in subtypesof(/datum/map_template)) - var/datum/map_template/template = T + for(var/datum/map_template/template as anything in subtypesof(/datum/map_template)) if(!(initial(template.mappath))) // If it's missing the actual path its probably a base type or being used for inheritence. continue - template = new T() + template = new template() map_templates[template.name] = template return TRUE @@ -113,8 +112,7 @@ SUBSYSTEM_DEF(mapping) MT.load_new_z(centered = FALSE) /datum/controller/subsystem/mapping/proc/preloadShelterTemplates() - for(var/item in subtypesof(/datum/map_template/shelter)) - var/datum/map_template/shelter/shelter_type = item + for(var/datum/map_template/shelter/shelter_type as anything in subtypesof(/datum/map_template/shelter)) if(!(initial(shelter_type.mappath))) continue var/datum/map_template/shelter/S = new shelter_type() diff --git a/code/controllers/subsystems/overlays.dm b/code/controllers/subsystems/overlays.dm index 16662cc042e..92400e495b4 100644 --- a/code/controllers/subsystems/overlays.dm +++ b/code/controllers/subsystems/overlays.dm @@ -10,9 +10,9 @@ SUBSYSTEM_DEF(overlays) var/list/overlay_icon_state_caches // Cache thing var/list/overlay_icon_cache // Cache thing -var/global/image/stringbro = new() // Temporarily super-global because of BYOND init order dumbness. -var/global/image/iconbro = new() // Temporarily super-global because of BYOND init order dumbness. -var/global/image/appearance_bro = new() // Temporarily super-global because of BYOND init order dumbness. + var/static/image/stringbro + var/static/image/iconbro + var/static/image/appearance_bro /datum/controller/subsystem/overlays/PreInit() overlay_icon_state_caches = list() @@ -20,6 +20,10 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B queue = list() stats = list() + stringbro = new() + iconbro = new() + appearance_bro = new() + /datum/controller/subsystem/overlays/Initialize() fire(mc_check = FALSE) ..() @@ -71,12 +75,12 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B var/cached_appearance = cached_icon["[iconstate]"] if (cached_appearance) return cached_appearance - stringbro.icon = icon - stringbro.icon_state = iconstate + SSoverlays.stringbro.icon = icon + SSoverlays.stringbro.icon_state = iconstate if (!cached_icon) //not using the macro to save an associated lookup cached_icon = list() icon_states_cache[icon] = cached_icon - var/cached_appearance = stringbro.appearance + var/cached_appearance = SSoverlays.stringbro.appearance cached_icon["[iconstate]"] = cached_appearance return cached_appearance @@ -85,8 +89,8 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B var/list/icon_cache = SSoverlays.overlay_icon_cache . = icon_cache[icon] if (!.) - iconbro.icon = icon - . = iconbro.appearance + SSoverlays.iconbro.icon = icon + . = SSoverlays.iconbro.appearance icon_cache[icon] = . /atom/proc/build_appearance_list(old_overlays) @@ -106,11 +110,11 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B var/atom/A = overlay if (A.flags & OVERLAY_QUEUED) COMPILE_OVERLAYS(A) - appearance_bro.appearance = overlay //this works for images and atoms too! + SSoverlays.appearance_bro.appearance = overlay //this works for images and atoms too! if(!ispath(overlay)) var/image/I = overlay - appearance_bro.dir = I.dir - new_overlays += appearance_bro.appearance + SSoverlays.appearance_bro.dir = I.dir + new_overlays += SSoverlays.appearance_bro.appearance return new_overlays #define NOT_QUEUED_ALREADY (!(flags & OVERLAY_QUEUED)) diff --git a/code/controllers/subsystems/persistence.dm b/code/controllers/subsystems/persistence.dm index 8168bfa6c28..f238621b3e1 100644 --- a/code/controllers/subsystems/persistence.dm +++ b/code/controllers/subsystems/persistence.dm @@ -12,11 +12,10 @@ SUBSYSTEM_DEF(persistence) /datum/controller/subsystem/persistence/Initialize() . = ..() - for(var/thing in subtypesof(/datum/persistent)) - var/datum/persistent/P = thing + for(var/datum/persistent/P as anything in subtypesof(/datum/persistent)) if(initial(P.name)) P = new P - persistence_datums[thing] = P + persistence_datums[P.type] = P P.Initialize() /datum/controller/subsystem/persistence/Shutdown() diff --git a/code/controllers/subsystems/planets.dm b/code/controllers/subsystems/planets.dm index 16fbe59d3a6..5486034871f 100644 --- a/code/controllers/subsystems/planets.dm +++ b/code/controllers/subsystems/planets.dm @@ -111,8 +111,7 @@ SUBSYSTEM_DEF(planets) /datum/controller/subsystem/planets/proc/updateTemp(var/datum/planet/P) //Set new temperatures - for(var/W in P.planet_walls) - var/turf/unsimulated/wall/planetary/wall = W + for(var/turf/unsimulated/wall/planetary/wall as anything in P.planet_walls) wall.set_temperature(P.weather_holder.temperature) CHECK_TICK @@ -120,8 +119,7 @@ SUBSYSTEM_DEF(planets) var/count = 100000 while(count > 0) count-- - for(var/planet in planets) - var/datum/planet/P = planet + for(var/datum/planet/P as anything in planets) if(P.weather_holder) P.weather_holder.change_weather(pick(P.weather_holder.allowed_weather_types)) sleep(3) diff --git a/code/controllers/subsystems/plants.dm b/code/controllers/subsystems/plants.dm index 19597091741..072f261a01a 100644 --- a/code/controllers/subsystems/plants.dm +++ b/code/controllers/subsystems/plants.dm @@ -62,7 +62,7 @@ SUBSYSTEM_DEF(plants) accessible_product_sprites |= base // Populate the global seed datum list. - for(var/type in typesof(/datum/seed)-/datum/seed) + for(var/type in subtypesof(/datum/seed)) var/datum/seed/S = new type seeds[S.name] = S S.uid = "[seeds.len]" diff --git a/code/controllers/subsystems/processing/instruments.dm b/code/controllers/subsystems/processing/instruments.dm index ee0fd1ea009..3f305fb8fc1 100644 --- a/code/controllers/subsystems/processing/instruments.dm +++ b/code/controllers/subsystems/processing/instruments.dm @@ -33,11 +33,10 @@ PROCESSING_SUBSYSTEM_DEF(instruments) songs -= S /datum/controller/subsystem/processing/instruments/proc/initialize_instrument_data() - for(var/path in subtypesof(/datum/instrument)) - var/datum/instrument/I = path - if(initial(I.abstract_type) == path) + for(var/datum/instrument/I as anything in subtypesof(/datum/instrument)) + if(initial(I.abstract_type) == I) continue - I = new path + I = new I I.Initialize() if(!I.id) qdel(I) diff --git a/code/controllers/subsystems/processing/processing.dm b/code/controllers/subsystems/processing/processing.dm index a16902c0c5c..16b4da021b1 100644 --- a/code/controllers/subsystems/processing/processing.dm +++ b/code/controllers/subsystems/processing/processing.dm @@ -112,9 +112,9 @@ SUBSYSTEM_DEF(processing) var/tick_time = world.time - start_tick var/tick_use_limit = world.tick_usage - start_tick_usage - 100 // Current tick use - starting tick use - 100% (a full tick excess) if(tick_time > 0) - crash_with("[log_info_line(subsystem.debug_last_thing)] slept during processing. Spent [tick_time] tick\s.") + stack_trace("[log_info_line(subsystem.debug_last_thing)] slept during processing. Spent [tick_time] tick\s.") if(tick_use_limit > 0) - crash_with("[log_info_line(subsystem.debug_last_thing)] took longer than a tick to process. Exceeded with [tick_use_limit]%") + stack_trace("[log_info_line(subsystem.debug_last_thing)] took longer than a tick to process. Exceeded with [tick_use_limit]%") /datum/proc/process() set waitfor = 0 diff --git a/code/controllers/subsystems/processing/projectiles.dm b/code/controllers/subsystems/processing/projectiles.dm index e4316304ce2..3e5e1b21279 100644 --- a/code/controllers/subsystems/processing/projectiles.dm +++ b/code/controllers/subsystems/processing/projectiles.dm @@ -19,7 +19,6 @@ PROCESSING_SUBSYSTEM_DEF(projectiles) /datum/controller/subsystem/processing/projectiles/proc/set_pixel_speed(new_speed) global_pixel_speed = new_speed - for(var/i in processing) - var/obj/item/projectile/P = i + for(var/obj/item/projectile/P as anything in processing) if(istype(P)) //there's non projectiles on this too. P.set_pixel_speed(new_speed) diff --git a/code/controllers/subsystems/radiation.dm b/code/controllers/subsystems/radiation.dm index 50c72ddd609..8f140a5fc83 100644 --- a/code/controllers/subsystems/radiation.dm +++ b/code/controllers/subsystems/radiation.dm @@ -63,8 +63,7 @@ SUBSYSTEM_DEF(radiation) if(!istype(T)) return - for(var/value in sources) - var/datum/radiation_source/source = value + for(var/datum/radiation_source/source as anything in sources) if(source.rad_power < .) continue // Already being affected by a stronger source diff --git a/code/controllers/subsystems/shuttles.dm b/code/controllers/subsystems/shuttles.dm index 40039edceb5..38ec9e5c83f 100644 --- a/code/controllers/subsystems/shuttles.dm +++ b/code/controllers/subsystems/shuttles.dm @@ -119,8 +119,7 @@ SUBSYSTEM_DEF(shuttles) landmarks_still_needed[landmark_tag] = given_sector // Landmark isn't registered yet, queue it to be added once it is. var/landmarks_to_check = landmarks_awaiting_sector.Copy() - for(var/thing in landmarks_to_check) - var/obj/effect/shuttle_landmark/automatic/landmark = thing + for(var/obj/effect/shuttle_landmark/automatic/landmark as anything in landmarks_to_check) if(landmark.z in given_sector.map_z) given_sector.add_landmark(landmark, landmark.shuttle_restricted) landmarks_awaiting_sector -= landmark @@ -170,8 +169,7 @@ SUBSYSTEM_DEF(shuttles) if(overmap_halted == new_setting) return overmap_halted = !overmap_halted - for(var/ship in ships) - var/obj/effect/overmap/visitable/ship/ship_effect = ship + for(var/obj/effect/overmap/visitable/ship/ship_effect as anything in ships) overmap_halted ? ship_effect.halt() : ship_effect.unhalt() /datum/controller/subsystem/shuttles/stat_entry() diff --git a/code/controllers/subsystems/skybox.dm b/code/controllers/subsystems/skybox.dm index 05053fbb0f7..99f69ec5955 100644 --- a/code/controllers/subsystems/skybox.dm +++ b/code/controllers/subsystems/skybox.dm @@ -93,13 +93,17 @@ SUBSYSTEM_DEF(skybox) . = ..() /datum/controller/subsystem/skybox/proc/get_skybox(z) + if(!subsystem_initialized) + return // WAIT if(!skybox_cache["[z]"]) skybox_cache["[z]"] = generate_skybox(z) return skybox_cache["[z]"] /datum/controller/subsystem/skybox/proc/generate_skybox(z) var/datum/skybox_settings/settings = global.using_map.get_skybox_datum(z) - + + var/new_overlays = list() + var/image/res = image(settings.icon) res.appearance_flags = KEEP_TOGETHER @@ -111,23 +115,26 @@ SUBSYSTEM_DEF(skybox) stars.appearance_flags = RESET_COLOR base.overlays += stars - res.overlays += base + new_overlays += base if(global.using_map.use_overmap && settings.use_overmap_details) var/obj/effect/overmap/visitable/O = get_overmap_sector(z) if(istype(O)) - var/image/overmap = image(settings.icon) - overmap.overlays += O.generate_skybox() + var/image/self_image = O.generate_skybox(z) + new_overlays += self_image for(var/obj/effect/overmap/visitable/other in O.loc) if(other != O) - overmap.overlays += other.get_skybox_representation() - overmap.appearance_flags = RESET_COLOR - res.overlays += overmap + new_overlays += other.get_skybox_representation(z) // Allow events to apply custom overlays to skybox! (Awesome!) for(var/datum/event/E in SSevents.active_events) if(E.has_skybox_image && E.isRunning && (z in E.affecting_z)) - res.overlays += E.get_skybox_image() + new_overlays += E.get_skybox_image() + + for(var/image/I in new_overlays) + I.appearance_flags |= RESET_COLOR + + res.overlays = new_overlays return res diff --git a/code/controllers/subsystems/timer.dm b/code/controllers/subsystems/timer.dm index 9c41a0a4baf..4fadc4f599c 100644 --- a/code/controllers/subsystems/timer.dm +++ b/code/controllers/subsystems/timer.dm @@ -159,7 +159,7 @@ SUBSYSTEM_DEF(timer) if (timer.timeToRun < head_offset) bucket_resolution = null //force bucket recreation - crash_with("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + stack_trace("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") if (timer.callBack && !timer.spent) timer.callBack.InvokeAsync() spent += timer @@ -170,7 +170,7 @@ SUBSYSTEM_DEF(timer) if (timer.timeToRun < head_offset + TICKS2DS(practical_offset-1)) bucket_resolution = null //force bucket recreation - crash_with("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + stack_trace("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") if (timer.callBack && !timer.spent) timer.callBack.InvokeAsync() spent += timer @@ -202,8 +202,7 @@ SUBSYSTEM_DEF(timer) bucket_count -= length(spent) - for (var/i in spent) - var/datum/timedevent/qtimer = i + for(var/datum/timedevent/qtimer as anything in spent) if(QDELETED(qtimer)) bucket_count++ continue @@ -458,10 +457,10 @@ SUBSYSTEM_DEF(timer) CRASH("addtimer called without a callback") if (wait < 0) - crash_with("addtimer called with a negative wait. Converting to [world.tick_lag]") + stack_trace("addtimer called with a negative wait. Converting to [world.tick_lag]") if (callback.object != GLOBAL_PROC && QDELETED(callback.object) && !QDESTROYING(callback.object)) - crash_with("addtimer called with a callback assigned to a qdeleted object. In the future such timers will not be supported and may refuse to run or run with a 0 wait") + stack_trace("addtimer called with a callback assigned to a qdeleted object. In the future such timers will not be supported and may refuse to run or run with a 0 wait") wait = max(CEILING(wait, world.tick_lag), world.tick_lag) @@ -492,7 +491,7 @@ SUBSYSTEM_DEF(timer) . = hash_timer.id return else if(flags & TIMER_OVERRIDE) - crash_with("TIMER_OVERRIDE used without TIMER_UNIQUE") + stack_trace("TIMER_OVERRIDE used without TIMER_UNIQUE") var/datum/timedevent/timer = new(callback, wait, flags, hash) return timer.id diff --git a/code/controllers/subsystems/transcore_vr.dm b/code/controllers/subsystems/transcore_vr.dm index ebf47439d68..6b0815999b4 100644 --- a/code/controllers/subsystems/transcore_vr.dm +++ b/code/controllers/subsystems/transcore_vr.dm @@ -114,7 +114,7 @@ SUBSYSTEM_DEF(transcore) else if(curr_MR.dead_state != MR_DEAD) //First time switching to dead if(curr_MR.do_notify) - db.notify(curr_MR.mindname) + db.notify(curr_MR) curr_MR.last_notification = world.time curr_MR.dead_state = MR_DEAD @@ -250,10 +250,15 @@ SUBSYSTEM_DEF(transcore) return 1 -// Send a past-due notification to the medical radio channel. -/datum/transcore_db/proc/notify(var/name) - ASSERT(name) - global_announcer.autosay("[name] is past-due for a mind backup.", "TransCore Oversight", "Medical") +// Send a past-due notification to the proper radio channel. +/datum/transcore_db/proc/notify(var/datum/transhuman/mind_record/MR) + ASSERT(MR) + var/datum/transcore_db/db = SStranscore.db_by_mind_name(MR.mindname) + var/datum/transhuman/body_record/BR = db.body_scans[MR.mindname] + if(!BR) + global_announcer.autosay("[MR.mindname] is past-due for a mind backup, but lacks a corresponding body record.", "TransCore Oversight", "Medical") + return + global_announcer.autosay("[MR.mindname] is past-due for a mind backup.", "TransCore Oversight", BR.synthetic ? "Science" : "Medical") // Called from mind_record to add itself to the transcore. /datum/transcore_db/proc/add_backup(var/datum/transhuman/mind_record/MR) @@ -295,4 +300,4 @@ SUBSYSTEM_DEF(transcore) return disk.stored.len #undef SSTRANSCORE_BACKUPS -#undef SSTRANSCORE_IMPLANTS \ No newline at end of file +#undef SSTRANSCORE_IMPLANTS diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm index 3623acf26ce..658cff17164 100644 --- a/code/controllers/subsystems/vote.dm +++ b/code/controllers/subsystems/vote.dm @@ -35,8 +35,7 @@ SUBSYSTEM_DEF(vote) // Before doing the vote, see if anyone is playing. // If not, just do the transfer. var/players_are_in_round = FALSE - for(var/a in player_list) // Mobs with clients attached. - var/mob/living/L = a + for(var/mob/living/L as anything in player_list) // Mobs with clients attached. if(!istype(L)) // Exclude ghosts and other weird things. continue if(L.stat == DEAD) // Dead mobs aren't playing. diff --git a/code/controllers/subsystems/xenoarch.dm b/code/controllers/subsystems/xenoarch.dm index 9851c692788..a175625b1f4 100644 --- a/code/controllers/subsystems/xenoarch.dm +++ b/code/controllers/subsystems/xenoarch.dm @@ -41,8 +41,7 @@ SUBSYSTEM_DEF(xenoarch) continue var/farEnough = 1 - for(var/A in digsite_spawning_turfs) - var/turf/T = A + for(var/turf/T as anything in digsite_spawning_turfs) if(T in range(5, M)) farEnough = 0 break diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 7323d2cba2b..da3e8e1baf2 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -75,8 +75,7 @@ options["MC"] = Master options["Failsafe"] = Failsafe options["Configuration"] = config - for(var/i in Master.subsystems) - var/datum/controller/subsystem/S = i + for(var/datum/controller/subsystem/S as anything in Master.subsystems) if(!istype(S)) //Eh, we're a debug verb, let's have typechecking. continue var/strtype = "SS[get_end_section_of_type(S.type)]" diff --git a/code/datums/autolathe/tools.dm b/code/datums/autolathe/tools.dm index be182c07131..e62232540f0 100644 --- a/code/datums/autolathe/tools.dm +++ b/code/datums/autolathe/tools.dm @@ -59,3 +59,7 @@ resources = list(MAT_PLASTIC = 5000, MAT_STEEL = 2000) hidden = 1 man_rating = 2 + +/datum/category_item/autolathe/tools/rsf + name = "rapid service fabricator" + path = /obj/item/weapon/rsf diff --git a/code/datums/chat_message.dm b/code/datums/chat_message.dm index ae17f21e2dc..982e9e098c8 100644 --- a/code/datums/chat_message.dm +++ b/code/datums/chat_message.dm @@ -172,8 +172,7 @@ var/list/runechat_image_cache = list() if(owned_by.seen_messages) var/idx = 1 var/combined_height = approx_lines - for(var/msg in owned_by.seen_messages[message_loc]) - var/datum/chatmessage/m = msg + for(var/datum/chatmessage/m as anything in owned_by.seen_messages[message_loc]) animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME) combined_height += m.approx_lines @@ -336,8 +335,7 @@ var/list/runechat_image_cache = list() var/list/hear = get_mobs_and_objs_in_view_fast(get_turf(src), range, remote_ghosts = FALSE) hearing_mobs = hear["mobs"] - for(var/mob in hearing_mobs) - var/mob/M = mob + for(var/mob/M as anything in hearing_mobs) if(!M.client) continue M.create_chat_message(src, message, italics, classes, audible) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index c5bd07cdcbd..2e177c8ff36 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -320,8 +320,7 @@ var/proctype = C.signal_procs[src][sigtype] return NONE | CallAsync(C, proctype, arguments) . = NONE - for(var/I in target) - var/datum/C = I + for(var/datum/C as anything in target) if(!C.signal_enabled) continue var/proctype = C.signal_procs[src][sigtype] @@ -444,8 +443,7 @@ var/list/arguments = raw_args.Copy() arguments[1] = new_comp var/make_new_component = TRUE - for(var/i in GetComponents(new_type)) - var/datum/component/C = i + for(var/datum/component/C as anything in GetComponents(new_type)) if(C.CheckDupeComponent(arglist(arguments))) make_new_component = FALSE QDEL_NULL(new_comp) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index e823199af34..c4d8bcc3d45 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -8,7 +8,7 @@ var/datum/hud/H = user.hud_used var/obj/screen/craft/C = new() C.icon = H.ui_style - H.other += C + LAZYADD(H.other_important, C) CL.screen += C RegisterSignal(C, COMSIG_CLICK, .proc/component_ui_interact) @@ -49,6 +49,7 @@ var/datum/action/innate/crafting/button var/display_craftable_only = FALSE var/display_compact = TRUE + var/tgui_category_hint /* This is what procs do: get_environment - gets a list of things accessable for crafting by user @@ -357,7 +358,7 @@ container.close_all() qdel(DL) -/datum/component/personal_crafting/proc/component_ui_interact(/obj/screen/craft/image, location, control, params, user) +/datum/component/personal_crafting/proc/component_ui_interact(source, location, control, params, user) // SIGNAL_HANDLER if(user == parent) @@ -380,6 +381,18 @@ ui.open() /datum/component/personal_crafting/tgui_data(mob/user) + // ANNOYING. We won't know what category will be on top (and thus first selected) in the UI + // until we crunch all the resources in tgui_static_data. So it just sets a hint and we + // consume it and set the category on the first UI open + if(tgui_category_hint) + cur_category = tgui_category_hint + tgui_category_hint = null + if(islist(categories[cur_category])) + var/list/subcats = categories[cur_category] + cur_subcategory = subcats[1] + else + cur_subcategory = CAT_NONE + var/list/data = list() data["busy"] = busy data["category"] = cur_category @@ -389,8 +402,7 @@ var/list/surroundings = get_surroundings(user) var/list/craftability = list() - for(var/rec in GLOB.crafting_recipes) - var/datum/crafting_recipe/R = rec + for(var/datum/crafting_recipe/R as anything in GLOB.crafting_recipes) if(!R.always_available && !(R.type in user?.mind?.learned_recipes)) //User doesn't actually know how to make this. continue @@ -407,10 +419,10 @@ var/list/data = list() var/list/crafting_recipes = list() - for(var/rec in GLOB.crafting_recipes) - var/datum/crafting_recipe/R = rec + for(var/datum/crafting_recipe/R as anything in GLOB.crafting_recipes) if(R.name == "") //This is one of the invalid parents that sneaks in + GLOB.crafting_recipes -= R continue if(!R.always_available && !(R.type in user?.mind?.learned_recipes)) //User doesn't actually know how to make this. @@ -427,6 +439,9 @@ crafting_recipes[R.category]["has_subcats"] = TRUE crafting_recipes[R.category][R.subcategory] += list(build_recipe_data(R)) + if(crafting_recipes.len) + tgui_category_hint = crafting_recipes[1] + data["crafting_recipes"] = crafting_recipes return data diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 5d4cd12c613..bd5aec33954 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -5,7 +5,10 @@ /datum/crafting_recipe var/name = "" //in-game display name - var/list/reqs = list() //type paths of items consumed associated with how many are needed + /// type paths of items consumed associated with how many are needed + /// Note that stacks have special handling: the logic accounts for having '23' available + /// in the case of just having one stack of 23 amount, so stack/steel = 23 is fine + var/list/reqs = list() var/list/blacklist = list() //type paths of items explicitly not allowed as an ingredient var/result //type path of item resulting from this craft /// String defines of items needed but not consumed. Lazy list. @@ -44,13 +47,3 @@ /datum/crafting_recipe/proc/on_craft_completion(mob/user, atom/result) return - -/datum/crafting_recipe/stunprod - name = "Stunprod" - result = /obj/item/weapon/melee/baton/cattleprod - reqs = list(/obj/item/weapon/handcuffs/cable = 1, - /obj/item/stack/rods = 1, - /obj/item/weapon/tool/wirecutters = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON \ No newline at end of file diff --git a/code/datums/components/crafting/recipes/primitive.dm b/code/datums/components/crafting/recipes/primitive.dm new file mode 100644 index 00000000000..064fd63020b --- /dev/null +++ b/code/datums/components/crafting/recipes/primitive.dm @@ -0,0 +1,13 @@ +/datum/crafting_recipe/cloth + name = "Cloth bolt" + result = /obj/item/stack/material/cloth + reqs = list(/obj/item/stack/material/fiber = 3) + time = 40 + category = CAT_PRIMAL + +/datum/crafting_recipe/crude_bandage + name = "Crude bandages (x10)" + result = /obj/item/stack/medical/crude_pack + reqs = list(/obj/item/stack/material/cloth = 2) + time = 40 + category = CAT_PRIMAL diff --git a/code/datums/components/crafting/recipes/weapons.dm b/code/datums/components/crafting/recipes/weapons.dm new file mode 100644 index 00000000000..40222651378 --- /dev/null +++ b/code/datums/components/crafting/recipes/weapons.dm @@ -0,0 +1,42 @@ +/datum/crafting_recipe/stunprod + name = "Stunprod" + result = /obj/item/weapon/melee/baton/cattleprod + reqs = list(/obj/item/weapon/handcuffs/cable = 1, + /obj/item/stack/rods = 1, + /obj/item/weapon/tool/wirecutters = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/shortbow + name = "Shortbow" + result = /obj/item/weapon/gun/launcher/crossbow/bow + reqs = list( + /obj/item/stack/material/wood = 10, + /obj/item/stack/material/cloth = 5 + ) + time = 120 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/arrow_sandstone + name = "Wood arrow (sandstone tip)" + result = /obj/item/weapon/arrow/standard + reqs = list( + /obj/item/stack/material/wood = 2, + /obj/item/stack/material/sandstone = 2 + ) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_AMMO + +/datum/crafting_recipe/arrow_marble + name = "Wood arrow (marble tip)" + result = /obj/item/weapon/arrow/standard + reqs = list( + /obj/item/stack/material/wood = 2, + /obj/item/stack/material/marble = 2 + ) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_AMMO diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index c8f54a1f0c3..86573474e69 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -99,9 +99,8 @@ /datum/component/material_container/proc/on_examine(datum/source, mob/user, list/examine_texts) SIGNAL_HANDLER - for(var/I in materials) - var/datum/material/M = I - var/amt = materials[I] + for(var/datum/material/M as anything in materials) + var/amt = materials[M] if(amt) examine_texts += "It has [amt] units of [lowertext(M.name)] stored." @@ -327,13 +326,13 @@ var/list/mats_to_remove = list() //Assoc list MAT | AMOUNT - for(var/x in mats) //Loop through all required materials - var/datum/material/req_mat = x + for(var/datum/material/req_mat as anything in mats) //Loop through all required materials + var/imat = req_mat if(!istype(req_mat)) req_mat = GET_MATERIAL_REF(req_mat) //Get the ref if necesary if(!materials[req_mat]) //Do we have the resource? return FALSE //Can't afford it - var/amount_required = mats[x] * multiplier + var/amount_required = mats[imat] * multiplier if(!(materials[req_mat] >= amount_required)) // do we have enough of the resource? return FALSE //Can't afford it mats_to_remove[req_mat] += amount_required //Add it to the assoc list of things to remove @@ -392,8 +391,8 @@ if(!mats || !mats.len) return FALSE - for(var/x in mats) //Loop through all required materials - var/datum/material/req_mat = x + for(var/datum/material/req_mat as anything in mats) //Loop through all required materials + var/imat = req_mat if(!istype(req_mat)) if(ispath(req_mat) || istext(req_mat)) //Is this an actual material, or is it a category? req_mat = GET_MATERIAL_REF(req_mat) //Get the ref @@ -404,7 +403,7 @@ // else // continue - if(!has_enough_of_material(req_mat, mats[x], multiplier))//Not a category, so just check the normal way + if(!has_enough_of_material(req_mat, mats[imat], multiplier))//Not a category, so just check the normal way return FALSE return TRUE diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm index b6a812ce9ab..9bc38204946 100644 --- a/code/datums/components/overlay_lighting.dm +++ b/code/datums/components/overlay_lighting.dm @@ -171,8 +171,7 @@ ///Clears the affected_turfs lazylist, removing from its contents the effects of being near the light. /datum/component/overlay_lighting/proc/clean_old_turfs() - for(var/t in affected_turfs) - var/turf/lit_turf = t + for(var/turf/lit_turf as anything in affected_turfs) lit_turf.dynamic_lumcount -= lum_power affected_turfs = null @@ -182,9 +181,12 @@ if(!current_holder) return var/atom/movable/light_source = GET_LIGHT_SOURCE + . = list() for(var/turf/lit_turf in view(lumcount_range, get_turf(light_source))) lit_turf.dynamic_lumcount += lum_power - LAZYADD(affected_turfs, lit_turf) + . += lit_turf + if(length(.)) + affected_turfs = . ///Clears the old affected turfs and populates the new ones. @@ -431,8 +433,7 @@ . = lum_power lum_power = new_lum_power var/difference = . - lum_power - for(var/t in affected_turfs) - var/turf/lit_turf = t + for(var/turf/lit_turf as anything in affected_turfs) lit_turf.dynamic_lumcount -= difference ///Moves the light directional_atom that emits our "light" based on our position and our direction diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 721beeaf4c6..ba8ace312df 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -13,9 +13,13 @@ var/weakref/weakref // Holder of weakref instance pointing to this datum var/datum_flags = NONE -#ifdef TESTING +#ifdef REFERENCE_TRACKING var/tmp/running_find_references var/tmp/last_find_references = 0 + #ifdef REFERENCE_TRACKING_DEBUG + ///Stores info about where refs are found, used for sanity checks and testing + var/list/found_refs + #endif #endif // Default implementation of clean-up code. @@ -26,8 +30,7 @@ //clear timers var/list/timers = active_timers active_timers = null - for(var/thing in timers) - var/datum/timedevent/timer = thing + for(var/datum/timedevent/timer as anything in timers) if (timer.spent) continue qdel(timer) @@ -41,8 +44,7 @@ if(dc) var/all_components = dc[/datum/component] if(length(all_components)) - for(var/I in all_components) - var/datum/component/C = I + for(var/datum/component/C as anything in all_components) qdel(C, FALSE, TRUE) else var/datum/component/C = all_components @@ -54,8 +56,7 @@ for(var/sig in lookup) var/list/comps = lookup[sig] if(length(comps)) - for(var/i in comps) - var/datum/component/comp = i + for(var/datum/component/comp as anything in comps) comp.UnregisterSignal(src, sig) else var/datum/component/comp = comps diff --git a/code/datums/game_masters/default.dm b/code/datums/game_masters/default.dm index d380476df2f..8f69b296afd 100644 --- a/code/datums/game_masters/default.dm +++ b/code/datums/game_masters/default.dm @@ -17,8 +17,7 @@ log_game_master("Got [best_events.len] choice\s for the next event.") var/list/weighted_events = list() - for(var/E in best_events) - var/datum/event2/meta/event = E + for(var/datum/event2/meta/event as anything in best_events) var/weight = event.get_weight() if(weight <= 0) continue @@ -71,8 +70,7 @@ // If no list is passed, all the events will be returned. /datum/game_master/default/proc/filter_events_by_departments(list/departments) . = list() - for(var/E in SSgame_master.available_events) - var/datum/event2/meta/event = E + for(var/datum/event2/meta/event as anything in SSgame_master.available_events) if(!event.enabled) continue if(event.chaotic_threshold && !ignore_round_chaos) diff --git a/code/datums/game_masters/other_game_masters.dm b/code/datums/game_masters/other_game_masters.dm index f62d83cfe37..cd454832510 100644 --- a/code/datums/game_masters/other_game_masters.dm +++ b/code/datums/game_masters/other_game_masters.dm @@ -3,8 +3,7 @@ // * Does not react to danger at all. /datum/game_master/classic/choose_event() var/list/weighted_events = list() - for(var/E in SSgame_master.available_events) - var/datum/event2/meta/event = E + for(var/datum/event2/meta/event as anything in SSgame_master.available_events) if(!event.enabled) continue weighted_events[event] = event.get_weight() @@ -31,8 +30,7 @@ /datum/game_master/brutal/choose_event() var/list/weighted_events = list() - for(var/E in SSgame_master.available_events) - var/datum/event2/meta/event = E + for(var/datum/event2/meta/event as anything in SSgame_master.available_events) if(!event.enabled) continue weighted_events[event] = event.get_weight() + (event.chaos * 2) diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index 12d1fee6254..c9f57c4d3fc 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -45,8 +45,7 @@ GLOBAL_DATUM(revdata, /datum/getrev) return if(header) . += "The following pull requests are currently test merged:" - for(var/line in testmerge) - var/datum/tgs_revision_information/test_merge/tm = line + for(var/datum/tgs_revision_information/test_merge/tm as anything in testmerge) var/cm = tm.pull_request_commit var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext_char(cm, 1, 11)) if(details && findtext(details, "\[s\]") && (!usr || !usr.client.holder)) diff --git a/code/datums/managed_browsers/_managed_browser.dm b/code/datums/managed_browsers/_managed_browser.dm index c915c7e86a9..6c702ddbdd1 100644 --- a/code/datums/managed_browsers/_managed_browser.dm +++ b/code/datums/managed_browsers/_managed_browser.dm @@ -16,10 +16,10 @@ GLOBAL_VAR(managed_browser_id_ticker) /datum/managed_browser/New(client/new_client) if(!new_client) - crash_with("Managed browser object was not given a client.") + stack_trace("Managed browser object was not given a client.") return if(!base_browser_id) - crash_with("Managed browser object does not have a base browser id defined in its type.") + stack_trace("Managed browser object does not have a base browser id defined in its type.") return my_client = new_client diff --git a/code/datums/mixed.dm b/code/datums/mixed.dm index 191868e4891..0b429156dae 100644 --- a/code/datums/mixed.dm +++ b/code/datums/mixed.dm @@ -28,7 +28,7 @@ /datum/data/record/Destroy(var/force) if(data_core.locked.Find(src)) if(!force) - crash_with("Someone tried to qdel a record that was in data_core.locked [log_info_line(src)]") + stack_trace("Someone tried to qdel a record that was in data_core.locked [log_info_line(src)]") return QDEL_HINT_LETMELIVE data_core.locked -= src data_core.medical -= src diff --git a/code/datums/observation/~cleanup.dm b/code/datums/observation/~cleanup.dm index 9dcc601436a..da902052bdd 100644 --- a/code/datums/observation/~cleanup.dm +++ b/code/datums/observation/~cleanup.dm @@ -40,8 +40,7 @@ GLOBAL_LIST_EMPTY(event_listen_count) /decl/observ/destroyed/proc/cleanup_global_listener(listener, listen_count) GLOB.global_listen_count -= listener - for(var/entry in GLOB.all_observable_events.events) - var/decl/observ/event = entry + for(var/decl/observ/event as anything in GLOB.all_observable_events.events) if(event.unregister_global(listener)) // log_debug("[event] - [listener] was deleted while still registered to global events.") // TODO: Apply axe, reimplement with datum component listeners if(!(--listen_count)) @@ -49,8 +48,7 @@ GLOBAL_LIST_EMPTY(event_listen_count) /decl/observ/destroyed/proc/cleanup_source_listeners(event_source, source_listener_count) GLOB.event_sources_count -= event_source - for(var/entry in GLOB.all_observable_events.events) - var/decl/observ/event = entry + for(var/decl/observ/event as anything in GLOB.all_observable_events.events) var/proc_owners = event.event_sources[event_source] if(proc_owners) for(var/proc_owner in proc_owners) @@ -61,8 +59,7 @@ GLOBAL_LIST_EMPTY(event_listen_count) /decl/observ/destroyed/proc/cleanup_event_listener(listener, listener_count) GLOB.event_listen_count -= listener - for(var/entry in GLOB.all_observable_events.events) - var/decl/observ/event = entry + for(var/decl/observ/event as anything in GLOB.all_observable_events.events) for(var/event_source in event.event_sources) if(event.unregister(event_source, listener)) // log_debug("[event] - [listener] was deleted while still listening to [event_source].") // TODO: Apply axe, reimplement with datum component listeners diff --git a/code/datums/orbit.dm b/code/datums/orbit.dm index 0176d7f23d1..adbd166d25a 100644 --- a/code/datums/orbit.dm +++ b/code/datums/orbit.dm @@ -110,8 +110,7 @@ /atom/Destroy(force = FALSE) . = ..() if (orbiters) - for (var/thing in orbiters) - var/datum/orbit/O = thing + for(var/datum/orbit/O as anything in orbiters) if (O.orbiter) O.orbiter.stop_orbit() @@ -123,8 +122,7 @@ /* /atom/movable/proc/transfer_observers_to(atom/movable/target) if(orbiters) - for(var/thing in orbiters) - var/datum/orbit/O = thing + for(var/datum/orbit/O as anything in orbiters) if(O.orbiter && isobserver(O.orbiter)) var/mob/dead/observer/D = O.orbiter D.ManualFollow(target) diff --git a/code/datums/outfits/jobs/medical.dm b/code/datums/outfits/jobs/medical.dm index dd5cb7fbcbe..b474f92f727 100644 --- a/code/datums/outfits/jobs/medical.dm +++ b/code/datums/outfits/jobs/medical.dm @@ -92,7 +92,7 @@ /decl/hierarchy/outfit/job/medical/paramedic name = OUTFIT_JOB_NAME("Paramedic") - uniform = /obj/item/clothing/under/rank/medical/scrubs/black + uniform = /obj/item/clothing/under/rank/medical/paramedic suit = /obj/item/clothing/suit/storage/toggle/fr_jacket shoes = /obj/item/clothing/shoes/boots/jackboots l_hand = /obj/item/weapon/storage/firstaid/regular @@ -103,5 +103,5 @@ /decl/hierarchy/outfit/job/medical/paramedic/emt name = OUTFIT_JOB_NAME("Emergency Medical Technician") - uniform = /obj/item/clothing/under/rank/medical/paramedic + uniform = /obj/item/clothing/under/rank/medical/paramedic_alt suit = /obj/item/clothing/suit/storage/toggle/labcoat/emt diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index c24dfcd922c..8da8d7c0004 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -51,8 +51,7 @@ animate(bar, pixel_y = shiftheight, time = 5, easing = SINE_EASING) /datum/progressbar/Destroy() - for(var/I in user.progressbars[bar.loc]) - var/datum/progressbar/P = I + for(var/datum/progressbar/P as anything in user.progressbars[bar.loc]) if(P != src && P.listindex > listindex) P.shiftDown() diff --git a/code/datums/reference_tracking.dm b/code/datums/reference_tracking.dm new file mode 100644 index 00000000000..3154f64740a --- /dev/null +++ b/code/datums/reference_tracking.dm @@ -0,0 +1,140 @@ +#ifdef REFERENCE_TRACKING + +/datum/proc/find_references(skip_alert) + running_find_references = type + if(usr?.client) + if(usr.client.running_find_references) + log_reftracker("CANCELLED search for references to a [usr.client.running_find_references].") + usr.client.running_find_references = null + running_find_references = null + //restart the garbage collector + SSgarbage.can_fire = TRUE + SSgarbage.next_fire = world.time + world.tick_lag + return + + if(!skip_alert && tgui_alert(usr,"Running this will lock everything up for about 5 minutes. Would you like to begin the search?", "Find References", list("Yes", "No")) != "Yes") + running_find_references = null + return + + //this keeps the garbage collector from failing to collect objects being searched for in here + SSgarbage.can_fire = FALSE + + if(usr?.client) + usr.client.running_find_references = type + + log_reftracker("Beginning search for references to a [type].") + + var/starting_time = world.time + + //Time to search the whole game for our ref + DoSearchVar(GLOB, "GLOB") //globals + log_reftracker("Finished searching globals") + + for(var/datum/thing in world) //atoms (don't beleive its lies) + DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) + log_reftracker("Finished searching atoms") + + for(var/datum/thing) //datums + DoSearchVar(thing, "Datums -> [thing.type]", search_time = starting_time) + log_reftracker("Finished searching datums") + + //Warning, attempting to search clients like this will cause crashes if done on live. Watch yourself + for(var/client/thing) //clients + DoSearchVar(thing, "Clients -> [thing.type]", search_time = starting_time) + log_reftracker("Finished searching clients") + + log_reftracker("Completed search for references to a [type].") + + if(usr?.client) + usr.client.running_find_references = null + running_find_references = null + + //restart the garbage collector + SSgarbage.can_fire = TRUE + SSgarbage.next_fire = world.time + world.tick_lag + +/datum/proc/DoSearchVar(potential_container, container_name, recursive_limit = 64, search_time = world.time) + #ifdef REFERENCE_TRACKING_DEBUG + if(!found_refs) + found_refs = list() + #endif + + if(usr?.client && !usr.client.running_find_references) + return + + if(!recursive_limit) + log_reftracker("Recursion limit reached. [container_name]") + return + + //Check each time you go down a layer. This makes it a bit slow, but it won't effect the rest of the game at all + #ifndef FIND_REF_NO_CHECK_TICK + CHECK_TICK + #endif + + if(istype(potential_container, /datum)) + var/datum/datum_container = potential_container + if(datum_container.last_find_references == search_time) + return + + datum_container.last_find_references = search_time + var/list/vars_list = datum_container.vars + + for(var/varname in vars_list) + #ifndef FIND_REF_NO_CHECK_TICK + CHECK_TICK + #endif + if (varname == "vars" || varname == "vis_locs") //Fun fact, vis_locs don't count for references + continue + var/variable = vars_list[varname] + + if(variable == src) + #ifdef REFERENCE_TRACKING_DEBUG + found_refs[varname] = TRUE + #endif + log_reftracker("Found [type] \ref[src] in [datum_container.type]'s \ref[datum_container] [varname] var. [container_name]") + continue + + if(islist(variable)) + DoSearchVar(variable, "[container_name] \ref[datum_container] -> [varname] (list)", recursive_limit - 1, search_time) + + else if(islist(potential_container)) + var/normal = IS_NORMAL_LIST(potential_container) + var/list/potential_cache = potential_container + for(var/element_in_list in potential_cache) + #ifndef FIND_REF_NO_CHECK_TICK + CHECK_TICK + #endif + //Check normal entrys + if(element_in_list == src) + #ifdef REFERENCE_TRACKING_DEBUG + found_refs[potential_cache] = TRUE + #endif + log_reftracker("Found [type] \ref[src] in list [container_name].") + continue + + var/assoc_val = null + if(!isnum(element_in_list) && normal) + assoc_val = potential_cache[element_in_list] + //Check assoc entrys + if(assoc_val == src) + #ifdef REFERENCE_TRACKING_DEBUG + found_refs[potential_cache] = TRUE + #endif + log_reftracker("Found [type] \ref[src] in list [container_name]\[[element_in_list]\]") + continue + //We need to run both of these checks, since our object could be hiding in either of them + //Check normal sublists + if(islist(element_in_list)) + DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", recursive_limit - 1, search_time) + //Check assoc sublists + if(islist(assoc_val)) + DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", recursive_limit - 1, search_time) + +/proc/qdel_and_find_ref_if_fail(datum/thing_to_del, force = FALSE) + thing_to_del.qdel_and_find_ref_if_fail(force) + +/datum/proc/qdel_and_find_ref_if_fail(force = FALSE) + SSgarbage.reference_find_on_fail["\ref[src]"] = TRUE + qdel(src, force) + +#endif diff --git a/code/datums/repositories/decls.dm b/code/datums/repositories/decls.dm index e6040a90dd0..fead498c63c 100644 --- a/code/datums/repositories/decls.dm +++ b/code/datums/repositories/decls.dm @@ -67,5 +67,5 @@ var/repository/decls/decls_repository // Initialiozed in /datum/global_init/New( /decl/Destroy() SHOULD_CALL_PARENT(FALSE) - crash_with("Prevented attempt to delete a decl instance: [log_info_line(src)]") + stack_trace("Prevented attempt to delete a decl instance: [log_info_line(src)]") return QDEL_HINT_LETMELIVE // Prevents decl destruction diff --git a/code/datums/soul_link.dm b/code/datums/soul_link.dm index 7bc652a8630..d15049d9246 100644 --- a/code/datums/soul_link.dm +++ b/code/datums/soul_link.dm @@ -6,13 +6,11 @@ var/list/shared_soul_links // Soul links we are a/the sharer of. /mob/living/Destroy() - for(var/s in owned_soul_links) - var/datum/soul_link/S = s + for(var/datum/soul_link/S as anything in owned_soul_links) S.owner_died(FALSE) - qdel(s) // If the owner is destroy()'d, the soullink is destroy()'d. + qdel(S) // If the owner is destroy()'d, the soullink is destroy()'d. owned_soul_links = null - for(var/s in shared_soul_links) - var/datum/soul_link/S = s + for(var/datum/soul_link/S as anything in shared_soul_links) S.sharer_died(FALSE) S.remove_soul_sharer(src) // If a sharer is destroy()'d, they are simply removed. shared_soul_links = null @@ -82,8 +80,7 @@ soul_owner = owner soul_sharers = sharers LAZYADD(owner.owned_soul_links, src) - for(var/l in sharers) - var/mob/living/L = l + for(var/mob/living/L as anything in sharers) LAZYADD(L.shared_soul_links, src) return TRUE @@ -144,8 +141,7 @@ /datum/soul_link/multi_sharer/replacement_pool/owner_died(gibbed, mob/living/owner) if(LAZYLEN(soul_sharers) && !gibbed) //let's not put them in some gibs var/list/souls = shuffle(soul_sharers.Copy()) - for(var/l in souls) - var/mob/living/L = l + for(var/mob/living/L as anything in souls) if(L.stat != DEAD && L.mind) L.mind.transfer_to(soul_owner) soul_owner.revive(TRUE, TRUE) diff --git a/code/datums/supplypacks/hydroponics.dm b/code/datums/supplypacks/hydroponics.dm index 069911606e5..4b47a77140f 100644 --- a/code/datums/supplypacks/hydroponics.dm +++ b/code/datums/supplypacks/hydroponics.dm @@ -153,6 +153,6 @@ cost = 50 containertype = /obj/structure/closet/crate/aether containername = "Hydroponics tray crate" - contains = list(/obj/machinery/portable_atmospherics/hydroponics{anchored = 0} = 3) + contains = list(/obj/machinery/portable_atmospherics/hydroponics{anchored = FALSE} = 3) access = access_hydroponics diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm index 28ed9f07bf2..eb7d350c5f6 100644 --- a/code/datums/supplypacks/medical.dm +++ b/code/datums/supplypacks/medical.dm @@ -66,8 +66,7 @@ /obj/item/weapon/surgical/bonegel, /obj/item/weapon/surgical/retractor, /obj/item/weapon/surgical/bonesetter, - /obj/item/weapon/surgical/circular_saw, - /obj/item/weapon/surgical/bioregen + /obj/item/weapon/surgical/circular_saw ) cost = 25 containertype = /obj/structure/closet/crate/secure/veymed @@ -203,7 +202,7 @@ /obj/item/clothing/under/rank/medical/paramedic, /obj/item/clothing/suit/storage/toggle/fr_jacket, /obj/item/clothing/mask/gas, - /obj/item/clothing/under/rank/medical/paramedic, + /obj/item/clothing/under/rank/medical/paramedic_alt, /obj/item/clothing/accessory/stethoscope, /obj/item/weapon/storage/firstaid/adv, /obj/item/clothing/shoes/boots/jackboots, @@ -306,8 +305,8 @@ /datum/supply_pack/med/medicalbiosuits name = "Medical biohazard gear" contains = list( - /obj/item/clothing/head/bio_hood = 3, - /obj/item/clothing/suit/bio_suit = 3, + /obj/item/clothing/head/bio_hood/modern = 3, + /obj/item/clothing/suit/bio_suit/modern = 3, /obj/item/clothing/head/bio_hood/virology = 2, /obj/item/clothing/suit/bio_suit/cmo, /obj/item/clothing/head/bio_hood/cmo, diff --git a/code/datums/supplypacks/medical_vr.dm b/code/datums/supplypacks/medical_vr.dm index 2d6a340f0af..4f2dc7e8fe3 100644 --- a/code/datums/supplypacks/medical_vr.dm +++ b/code/datums/supplypacks/medical_vr.dm @@ -50,4 +50,4 @@ cost = 90 containertype = /obj/structure/closet/crate/secure containername = "Compact Defibrillator crate" - access = access_medical_equip + access = access_medical_equip \ No newline at end of file diff --git a/code/datums/supplypacks/misc_vr.dm b/code/datums/supplypacks/misc_vr.dm index 04b27c7fbf0..6af1a797e2e 100644 --- a/code/datums/supplypacks/misc_vr.dm +++ b/code/datums/supplypacks/misc_vr.dm @@ -73,15 +73,44 @@ access = access_rd /datum/supply_pack/misc/ce_rig - name = "advanced voidsuit (empty)" + name = "advanced hardsuit (empty)" contains = list( /obj/item/weapon/rig/ce = 1 ) cost = 150 containertype = /obj/structure/closet/crate/secure/gear - containername = "advanced voidsuit crate" + containername = "advanced hardsuit crate" access = access_ce +/datum/supply_pack/misc/com_medical_rig + name = "commonwealth medical hardsuit (loaded)" + contains = list( + /obj/item/weapon/rig/baymed = 1 + ) + cost = 250 + containertype = /obj/structure/closet/crate/secure/gear + containername = "Commonwealth medical hardsuit crate" + access = access_medical + +/datum/supply_pack/misc/com_engineering_rig + name = "commonwealth engineering hardsuit (loaded)" + contains = list( + /obj/item/weapon/rig/bayeng = 1 + ) + cost = 250 + containertype = /obj/structure/closet/crate/secure/gear + containername = "Commonwealth medical hardsuit crate" + access = access_medical + +/datum/supply_pack/misc/zero_rig + name = "null hardsuit (jets)" + contains = list( + /obj/item/weapon/rig/zero = 1 + ) + cost = 75 + containertype = /obj/structure/closet/crate/secure/gear + containername = "null hardsuit crate" + /datum/supply_pack/misc/jetpack name = "jetpack (empty)" contains = list( diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm index 28663e11fc7..eff6fb84fd0 100644 --- a/code/datums/supplypacks/supply.dm +++ b/code/datums/supplypacks/supply.dm @@ -77,7 +77,7 @@ /obj/item/weapon/folder/yellow, /obj/item/weapon/hand_labeler, /obj/item/weapon/tape_roll, - /obj/structure/filingcabinet/chestdrawer{anchored = 0}, + /obj/structure/filingcabinet/chestdrawer{anchored = FALSE}, /obj/item/weapon/paper_bin ) name = "Office supplies" diff --git a/code/datums/supplypacks/voidsuits_vr.dm b/code/datums/supplypacks/voidsuits_vr.dm index b193881004d..bbe8fc094ad 100644 --- a/code/datums/supplypacks/voidsuits_vr.dm +++ b/code/datums/supplypacks/voidsuits_vr.dm @@ -38,4 +38,105 @@ cost = 20 containertype = /obj/structure/closet/crate/secure containername = "Pilot voidsuit crate" - access = access_pilot \ No newline at end of file + access = access_pilot + + +// Surplus! +/datum/supply_pack/voidsuits/com_mining + name = "Commonwealth mining voidsuit" + contains = list( + /obj/item/clothing/suit/space/void/mining/alt2, + /obj/item/clothing/head/helmet/space/void/mining/alt2 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth mining voidsuit crate" + access = access_mining + +/datum/supply_pack/voidsuits/com_anomaly + name = "Commonwealth anomaly suit" + contains = list( + /obj/item/clothing/suit/space/anomaly/alt, + /obj/item/clothing/head/helmet/space/anomaly/alt + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth anomaly suit crate" + access = access_xenoarch + +/datum/supply_pack/voidsuits/com_riot + name = "Commonwealth riot voidsuit" + contains = list( + /obj/item/clothing/suit/space/void/security/riot/alt, + /obj/item/clothing/head/helmet/space/void/security/riot/alt + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth riot voidsuit crate" + access = access_brig + +/datum/supply_pack/voidsuits/com_pilot + name = "Commonwealth pilot voidsuit" + contains = list( + /obj/item/clothing/suit/space/void/pilot/alt2, + /obj/item/clothing/head/helmet/space/void/pilot/alt2 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth pilot voidsuit crate" + access = access_pilot + +/datum/supply_pack/voidsuits/com_medical + name = "Commonwealth medical voidsuit" + contains = list( + /obj/item/clothing/suit/space/void/medical/alt2, + /obj/item/clothing/head/helmet/space/void/medical/alt2 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth medical voidsuit crate" +/datum/supply_pack/voidsuits/com_explore + + name = "Commonwealth exploration voidsuit" + contains = list( + /obj/item/clothing/suit/space/void/exploration/alt2, + /obj/item/clothing/head/helmet/space/void/exploration/alt2 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth exploration voidsuit crate" + access = access_explorer + +/datum/supply_pack/voidsuits/com_engineer + name = "Commonwealth engineering voidsuit" + contains = list( + /obj/item/clothing/suit/space/void/engineering/alt2, + /obj/item/clothing/head/helmet/space/void/engineering/alt2 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth engineering voidsuit crate" + access = access_engine + +/datum/supply_pack/voidsuits/com_atmos + name = "Commonwealth atmos voidsuit" + contains = list( + /obj/item/clothing/suit/space/void/atmos/alt2, + /obj/item/clothing/head/helmet/space/void/atmos/alt2 + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth atmos voidsuit crate" + access = access_atmospherics + +/datum/supply_pack/voidsuits/com_captain + name = "Commonwealth captain voidsuit" + contains = list( + /obj/item/clothing/suit/space/void/captain/alt, + /obj/item/clothing/head/helmet/space/void/captain/alt + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + name = "Commonwealth captain voidsuit crate" + access = access_captain + diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 8272b7d39b4..f6a8ebfbe07 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -1,8 +1,8 @@ /obj/structure/signpost icon = 'icons/obj/stationobjs.dmi' icon_state = "signpost" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE /obj/structure/signpost/attackby(obj/item/weapon/W as obj, mob/user as mob) return attack_hand(user) @@ -16,15 +16,15 @@ var/mark = "" icon = 'icons/misc/mark.dmi' icon_state = "blank" - anchored = 1 + anchored = TRUE layer = 99 mouse_opacity = 0 - unacidable = 1//Just to be sure. + unacidable = TRUE//Just to be sure. /obj/effect/beam name = "beam" - density = 0 - unacidable = 1//Just to be sure. + density = FALSE + unacidable = TRUE//Just to be sure. var/def_zone pass_flags = PASSTABLE @@ -33,8 +33,8 @@ name = "begin" icon = 'icons/obj/stationobjs.dmi' icon_state = "begin" - anchored = 1.0 - unacidable = 1 + anchored = TRUE + unacidable = TRUE /* * This item is completely unused, but removing it will break something in R&D and Radio code causing PDA and Ninja code to fail on compile @@ -58,7 +58,7 @@ /obj/effect/projection name = "Projection" desc = "This looks like a projection of something." - anchored = 1.0 + anchored = TRUE /obj/effect/shut_controller name = "shut controller" @@ -70,9 +70,9 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "showcase_1" desc = "A stand with the empty body of a cyborg bolted to it." - density = 1 - anchored = 1 - unacidable = 1//temporary until I decide whether the borg can be removed. -veyveyr + density = TRUE + anchored = TRUE + unacidable = TRUE//temporary until I decide whether the borg can be removed. -veyveyr /obj/structure/showcase/sign name = "WARNING: WILDERNESS" @@ -86,8 +86,8 @@ icon = 'icons/misc/beach.dmi' icon_state = "beachball" name = "beach ball" - density = 0 - anchored = 0 + density = FALSE + anchored = FALSE w_class = ITEMSIZE_LARGE force = 0.0 throwforce = 0.0 diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 7e72b6f3757..0256ec25e5c 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -19,8 +19,8 @@ icon = 'icons/obj/items.dmi' icon_state = "rcd" opacity = 0 - density = 0 - anchored = 0.0 + density = FALSE + anchored = FALSE var/stored_matter = 0 var/mode = 1 w_class = ITEMSIZE_NORMAL @@ -302,7 +302,7 @@ w_class = ITEMSIZE_HUGE can_hold = list(/obj/item/weapon/stock_parts) storage_slots = 50 - use_to_pickup = 1 + use_to_pickup = TRUE allow_quick_gather = 1 allow_quick_empty = 1 collection_mode = 1 @@ -320,7 +320,7 @@ w_class = ITEMSIZE_HUGE can_hold = list(/obj/item/weapon/stock_parts) storage_slots = 200 - use_to_pickup = 1 + use_to_pickup = TRUE allow_quick_gather = 1 allow_quick_empty = 1 collection_mode = 1 diff --git a/code/game/antagonist/_antagonist_setup.dm b/code/game/antagonist/_antagonist_setup.dm index 6f514b94132..c1e5002e745 100644 --- a/code/game/antagonist/_antagonist_setup.dm +++ b/code/game/antagonist/_antagonist_setup.dm @@ -46,7 +46,7 @@ var/global/list/antag_names_to_ids = list() antag.update_all_icons() /proc/populate_antag_type_list() - for(var/antag_type in typesof(/datum/antagonist)-/datum/antagonist) + for(var/antag_type in subtypesof(/datum/antagonist)) var/datum/antagonist/A = new antag_type all_antag_types[A.id] = A all_antag_spawnpoints[A.landmark_id] = list() diff --git a/code/game/antagonist/mutiny/mutineer.dm b/code/game/antagonist/mutiny/mutineer.dm index 480fc83c70e..85aecd71ea6 100644 --- a/code/game/antagonist/mutiny/mutineer.dm +++ b/code/game/antagonist/mutiny/mutineer.dm @@ -54,7 +54,7 @@ var/datum/antagonist/mutineer/mutineers proc/get_directive_candidates() var/list/candidates[0] - for(var/T in typesof(/datum/directive) - /datum/directive) + for(var/T in subtypesof(/datum/directive)) var/datum/directive/D = new T(src) if (D.meets_prerequisites()) candidates.Add(D) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f0851201d9a..3e4b2776960 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -11,7 +11,7 @@ var/pass_flags = 0 var/throwpass = 0 var/germ_level = GERM_LEVEL_AMBIENT // The higher the germ level, the more germ on the atom. - var/simulated = 1 //filter for actions - used by lighting overlays + var/simulated = TRUE //filter for actions - used by lighting overlays var/atom_say_verb = "says" var/bubble_icon = "normal" ///what icon the atom uses for speechbubbles var/fluorescent // Shows up under a UV light. @@ -83,9 +83,9 @@ // Must return an Initialize hint. Defined in code/__defines/subsystems.dm /atom/proc/Initialize(mapload, ...) if(QDELETED(src)) - crash_with("GC: -- [type] had initialize() called after qdel() --") + stack_trace("GC: -- [type] had initialize() called after qdel() --") if(initialized) - crash_with("Warning: [src]([type]) initialized multiple times!") + stack_trace("Warning: [src]([type]) initialized multiple times!") initialized = TRUE return INITIALIZE_HINT_NORMAL @@ -153,8 +153,7 @@ ASSERT(callback) ASSERT(isturf(loc)) var/list/turfs = trange(range, src) - for(var/t in turfs) - var/turf/T = t + for(var/turf/T as anything in turfs) GLOB.turf_entered_event.register(T, src, callback) //Unregister from prox listening in a certain range. You should do this BEFORE you move, but if you @@ -162,8 +161,7 @@ /atom/proc/unsense_proximity(var/range = 1, var/callback, var/center) ASSERT(isturf(center) || isturf(loc)) var/list/turfs = trange(range, center ? center : src) - for(var/t in turfs) - var/turf/T = t + for(var/turf/T as anything in turfs) GLOB.turf_entered_event.unregister(T, src, callback) @@ -454,7 +452,7 @@ if(!blood_DNA || !istype(blood_DNA, /list)) //if our list of DNA doesn't exist yet (or isn't a list) initialise it. blood_DNA = list() - was_bloodied = 1 + was_bloodied = TRUE if(!blood_color) blood_color = "#A10808" if(istype(M)) @@ -529,11 +527,9 @@ if(LAZYLEN(exclude_mobs)) seeing_mobs -= exclude_mobs - for(var/obj in seeing_objs) - var/obj/O = obj + for(var/obj/O as anything in seeing_objs) O.show_message(message, VISIBLE_MESSAGE, blind_message, AUDIBLE_MESSAGE) - for(var/mob in seeing_mobs) - var/mob/M = mob + for(var/mob/M as anything in seeing_mobs) if(M.see_invisible >= invisibility && MOB_CAN_SEE_PLANE(M, plane)) M.show_message(message, VISIBLE_MESSAGE, blind_message, AUDIBLE_MESSAGE) if(runemessage != -1) @@ -555,16 +551,13 @@ var/list/hearing_objs = hear["objs"] if(radio_message) - for(var/obj in hearing_objs) - var/obj/O = obj + for(var/obj/O as anything in hearing_objs) O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null) else - for(var/obj in hearing_objs) - var/obj/O = obj + for(var/obj/O as anything in hearing_objs) O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) - for(var/mob in hearing_mobs) - var/mob/M = mob + for(var/mob/M as anything in hearing_mobs) var/msg = message M.show_message(msg, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) if(runemessage != -1) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 1b47513e1b2..9dfba6c423f 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -3,7 +3,7 @@ appearance_flags = TILE_BOUND|PIXEL_SCALE|KEEP_TOGETHER|LONG_GLIDE glide_size = 8 var/last_move = null //The direction the atom last moved - var/anchored = 0 + var/anchored = FALSE // var/elevation = 2 - not used anywhere var/moving_diagonally var/move_speed = 10 @@ -134,8 +134,7 @@ oldarea.Exited(src, newloc) // Multi-tile objects can't reach here, otherwise you'd need to avoid uncrossing yourself - for(var/i in oldloc) - var/atom/movable/thing = i + for(var/atom/movable/thing as anything in oldloc) // We don't call parent so we are calling this for byond thing.Uncrossed(src) @@ -145,8 +144,7 @@ newarea.Entered(src, oldloc) // Multi-tile objects can't reach here, otherwise you'd need to avoid uncrossing yourself - for(var/i in loc) - var/atom/movable/thing = i + for(var/atom/movable/thing as anything in loc) // We don't call parent so we are calling this for byond thing.Crossed(src, oldloc) @@ -315,8 +313,7 @@ old_area.Exited(src, destination) // Uncross everything where we left - for(var/i in oldloc) - var/atom/movable/AM = i + for(var/atom/movable/AM as anything in oldloc) if(AM == src) continue AM.Uncrossed(src) @@ -341,8 +338,7 @@ destarea.Entered(src, oldloc) // We ignore ourselves because if we're multi-tile we might be in both old and new locs - for(var/i in destination) - var/atom/movable/AM = i + for(var/atom/movable/AM as anything in destination) if(AM == src) continue AM.Crossed(src, oldloc) @@ -364,8 +360,7 @@ loc = null // Uncross everything where we left (no multitile safety like above because we are definitely not still there) - for(var/i in oldloc) - var/atom/movable/AM = i + for(var/atom/movable/AM as anything in oldloc) AM.Uncrossed(src) // Exited() our loc and area @@ -378,8 +373,8 @@ /atom/movable/proc/onTransitZ(old_z,new_z) GLOB.z_moved_event.raise_event(src, old_z, new_z) - for(var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care. - var/atom/movable/AM = item + SEND_SIGNAL(src, COMSIG_MOVABLE_Z_CHANGED, old_z, new_z) + for(var/atom/movable/AM as anything in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care. AM.onTransitZ(old_z,new_z) /atom/movable/proc/glide_for(movetime) @@ -522,7 +517,7 @@ //Overlays /atom/movable/overlay var/atom/master = null - anchored = 1 + anchored = TRUE /atom/movable/overlay/New() for(var/x in src.verbs) diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index 3fb282d72d5..8371c395a44 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -258,8 +258,7 @@ //VOREStation Add /mob/living/carbon/human/proc/force_update_organs() - for(var/organ in organs + internal_organs) - var/obj/item/organ/O = organ + for(var/obj/item/organ/O as anything in organs + internal_organs) O.species = species //VOREStation Add End diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 908651abf90..1f2815426b4 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -65,8 +65,8 @@ desc = "It scans DNA structures." icon = 'icons/obj/Cryogenic2.dmi' icon_state = "scanner_0" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 50 active_power_usage = 300 @@ -274,7 +274,7 @@ desc = "Scan DNA." icon_keyboard = "med_key" icon_screen = "dna" - density = 1 + density = TRUE circuit = /obj/item/weapon/circuitboard/scan_consolenew var/selected_ui_block = 1.0 var/selected_ui_subblock = 1.0 @@ -290,7 +290,7 @@ var/obj/machinery/dna_scannernew/connected = null var/obj/item/weapon/disk/data/disk = null var/selected_menu_key = PAGE_UI - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 active_power_usage = 400 diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index c6af89ad754..5563d4f01bb 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -2,7 +2,7 @@ //Ling power's evolution menu entry datum should be contained alongside the mob proc for the actual power, in their own file. -var/list/powers = typesof(/datum/power/changeling) - /datum/power/changeling //needed for the badmin verb for now +var/list/powers = subtypesof(/datum/power/changeling) //needed for the badmin verb for now var/list/datum/power/changeling/powerinstances = list() /datum/power //Could be used by other antags too diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm index 4a84fde3711..fc54b328914 100644 --- a/code/game/gamemodes/changeling/powers/armblade.dm +++ b/code/game/gamemodes/changeling/powers/armblade.dm @@ -54,7 +54,7 @@ icon_state = "arm_blade" w_class = ITEMSIZE_HUGE force = 5 - anchored = 1 + anchored = TRUE throwforce = 0 //Just to be on the safe side throw_range = 0 throw_speed = 0 @@ -138,8 +138,8 @@ icon_state = "arm_blade" force = 40 armor_penetration = 15 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE pry = 1 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") defend_chance = 60 @@ -157,8 +157,8 @@ desc = "A grotesque claw made out of bone and flesh that cleaves through people as a hot knife through butter." icon_state = "ling_claw" force = 15 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") defend_chance = 50 projectile_parry_chance = 15 diff --git a/code/game/gamemodes/changeling/powers/armor.dm b/code/game/gamemodes/changeling/powers/armor.dm index aa6e2bf0b00..5a6db52833a 100644 --- a/code/game/gamemodes/changeling/powers/armor.dm +++ b/code/game/gamemodes/changeling/powers/armor.dm @@ -39,7 +39,7 @@ //it still ends up in your blood. (also balance but muh fluff) allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/tank/oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) //No armor at all. - canremove = 0 + canremove = FALSE /obj/item/clothing/suit/space/changeling/New() ..() @@ -58,7 +58,7 @@ flags = BLOCKHAIR //Again, no THICKMATERIAL. armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) body_parts_covered = HEAD|FACE|EYES - canremove = 0 + canremove = FALSE /obj/item/clothing/head/helmet/space/changeling/dropped() qdel(src) @@ -68,7 +68,7 @@ name = "fleshy grippers" icon_state = "lingspacesuit" action_button_name = "Toggle Grippers" - canremove = 0 + canremove = FALSE /obj/item/clothing/shoes/magboots/changeling/set_slowdown() slowdown = shoes? max(SHOES_SLOWDOWN, shoes.slowdown): SHOES_SLOWDOWN //So you can't put on magboots to make you walk faster. diff --git a/code/game/gamemodes/changeling/powers/fabricate_clothing.dm b/code/game/gamemodes/changeling/powers/fabricate_clothing.dm index 6ec87a64d44..c3c5f2aa15c 100644 --- a/code/game/gamemodes/changeling/powers/fabricate_clothing.dm +++ b/code/game/gamemodes/changeling/powers/fabricate_clothing.dm @@ -42,7 +42,7 @@ var/global/list/changeling_fabricated_clothing = list( desc = "The flesh all around us has grown a new layer of cells that can shift appearance and create a biological fabric that cannot be distinguished from \ ordinary cloth, allowing us to make ourselves appear to wear almost anything." origin_tech = list() //The base chameleon items have origin technology, which we will inherit if we don't null out this variable. - canremove = 0 //Since this is essentially flesh impersonating clothes, tearing someone's skin off as if it were clothing isn't possible. + canremove = FALSE //Since this is essentially flesh impersonating clothes, tearing someone's skin off as if it were clothing isn't possible. /obj/item/clothing/under/chameleon/changeling/emp_act(severity) //As these are purely organic, EMP does nothing to them. return @@ -63,7 +63,7 @@ var/global/list/changeling_fabricated_clothing = list( desc = "Our head is swelled with a large quanity of rapidly shifting skin cells. We can reform our head to resemble various hats and \ helmets that biologicals are so fond of wearing." origin_tech = list() - canremove = 0 + canremove = FALSE /obj/item/clothing/head/chameleon/changeling/emp_act(severity) return @@ -88,7 +88,7 @@ var/global/list/changeling_fabricated_clothing = list( item_state = "armor" desc = "The cells in our chest are rapidly shifting, ready to reform into material that can resemble most pieces of clothing." origin_tech = list() - canremove = 0 + canremove = FALSE /obj/item/clothing/suit/chameleon/changeling/emp_act(severity) return @@ -113,7 +113,7 @@ var/global/list/changeling_fabricated_clothing = list( item_state = "black" desc = "Our feet are overlayed with another layer of flesh and bone on top. We can reform our feet to resemble various boots and shoes." origin_tech = list() - canremove = 0 + canremove = FALSE /obj/item/clothing/shoes/chameleon/changeling/emp_act() return @@ -138,7 +138,7 @@ var/global/list/changeling_fabricated_clothing = list( item_state = "backpack" desc = "A large pouch imbedded in our back, it can shift form to resemble many common backpacks that other biologicals are fond of using." origin_tech = list() - canremove = 0 + canremove = FALSE /obj/item/weapon/storage/backpack/chameleon/changeling/emp_act() return @@ -166,7 +166,7 @@ var/global/list/changeling_fabricated_clothing = list( desc = "Our hands have a second layer of flesh on top. We can reform our hands to resemble a large variety of fabrics and materials that biologicals \ tend to wear on their hands. Remember that these won't protect your hands from harm." origin_tech = list() - canremove = 0 + canremove = FALSE /obj/item/clothing/gloves/chameleon/changeling/emp_act() return @@ -192,7 +192,7 @@ var/global/list/changeling_fabricated_clothing = list( desc = "A transparent visor of brittle chitin covers our face. We can reform it to resemble various masks that biologicals use. It can also utilize internal \ tanks.." origin_tech = list() - canremove = 0 + canremove = FALSE /obj/item/clothing/mask/chameleon/changeling/emp_act() return @@ -213,7 +213,7 @@ var/global/list/changeling_fabricated_clothing = list( item_state = "glasses" desc = "A transparent piece of eyewear made out of brittle chitin. We can reform it to resemble various glasses and goggles." origin_tech = list() - canremove = 0 + canremove = FALSE /obj/item/clothing/glasses/chameleon/changeling/emp_act() return @@ -238,7 +238,7 @@ var/global/list/changeling_fabricated_clothing = list( ) item_state = "utility" origin_tech = list() - canremove = 0 + canremove = FALSE /obj/item/weapon/storage/belt/chameleon/changeling/emp_act() return @@ -262,7 +262,7 @@ var/global/list/changeling_fabricated_clothing = list( electronic_warfare = 1 //The lack of RFID stuff makes it hard for AIs to track, I guess. *handwaves* registered_user = null access = null - canremove = 0 + canremove = FALSE /obj/item/weapon/card/id/syndicate/changeling/New(mob/user as mob) ..() diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 9d192890a01..3622998eef6 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -10,8 +10,8 @@ drop_sound = 'sound/items/drop/sword.ogg' pickup_sound = 'sound/items/pickup/sword.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - edge = 1 - sharp = 1 + edge = TRUE + sharp = TRUE /obj/item/weapon/melee/cultblade/cultify() return @@ -26,7 +26,7 @@ var/obj/item/organ/external/affecting = H.get_organ(zone) to_chat(user, "An inexplicable force rips through your [affecting.name], tearing the sword from your grasp!") //random amount of damage between half of the blade's force and the full force of the blade. - user.apply_damage(rand(force/2, force), BRUTE, zone, 0, sharp=1, edge=1) + user.apply_damage(rand(force/2, force), BRUTE, zone, 0, sharp = TRUE, edge = TRUE) user.Weaken(5) else if(!istype(user, /mob/living/simple_mob/construct)) to_chat(user, "An inexplicable force rips through you, tearing the sword from your grasp!") diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 241d6132756..37400109142 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -1,6 +1,6 @@ /obj/structure/cult - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE icon = 'icons/obj/cult.dmi' /obj/structure/cult/cultify() @@ -59,7 +59,7 @@ STOP_PROCESSING(SSobj, src) playsound(src,shatter_sound, 75, 1) isbroken = 1 - density = 0 + density = FALSE icon_state = "[initial(icon_state)]-broken" set_light(0) @@ -75,7 +75,7 @@ user.do_attack_animation(src) playsound(src,shatter_sound, 75, 1) isbroken = 1 - density = 0 + density = FALSE icon_state = "[initial(icon_state)]-broken" set_light(0) else @@ -94,7 +94,7 @@ START_PROCESSING(SSobj, src) to_chat(user, "You repair \the [src].") isbroken = 0 - density = 1 + density = TRUE icon_state = initial(icon_state) set_light(5) @@ -127,9 +127,9 @@ desc = "You're pretty sure that abyss is staring back." icon = 'icons/obj/cult.dmi' icon_state = "hole" - density = 1 - unacidable = 1 - anchored = 1.0 + density = TRUE + unacidable = TRUE + anchored = TRUE var/spawnable = null /obj/effect/gateway/active diff --git a/code/game/gamemodes/cult/cultify/obj.dm b/code/game/gamemodes/cult/cultify/obj.dm index 3ac41e00471..91dabc556fa 100644 --- a/code/game/gamemodes/cult/cultify/obj.dm +++ b/code/game/gamemodes/cult/cultify/obj.dm @@ -48,7 +48,7 @@ /obj/machinery/atmospherics/cultify() if(src.invisibility != INVISIBILITY_MAXIMUM) src.invisibility = INVISIBILITY_MAXIMUM - density = 0 + density = FALSE /obj/machinery/appliance/cooker/cultify() new /obj/structure/cult/talisman(loc) @@ -65,7 +65,7 @@ /obj/machinery/door/cultify() if(invisibility != INVISIBILITY_MAXIMUM) invisibility = INVISIBILITY_MAXIMUM - density = 0 + density = FALSE anim(target = src, a_icon = 'icons/effects/effects.dmi', a_icon_state = "breakdoor", sleeptime = 10) qdel(src) diff --git a/code/game/gamemodes/cult/narsie.dm b/code/game/gamemodes/cult/narsie.dm index 58684bb2a23..9c3504924f2 100644 --- a/code/game/gamemodes/cult/narsie.dm +++ b/code/game/gamemodes/cult/narsie.dm @@ -153,7 +153,7 @@ var/global/list/narsie_list = list() T.icon = 'icons/turf/walls.dmi' T.icon_state = "cult-narsie" T.opacity = 0 - T.density = 0 + T.density = FALSE set_light(1) /obj/singularity/narsie/large/consume(const/atom/A) //Has its own consume proc because it doesn't need energy and I don't want BoHs to explode it. --NEO diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 5a33a1d49a8..f62221f7529 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -22,11 +22,11 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa"," /obj/effect/rune desc = "A strange collection of symbols drawn in blood." - anchored = 1 + anchored = TRUE icon = 'icons/obj/rune.dmi' icon_state = "1" var/visibility = 0 - unacidable = 1 + unacidable = TRUE layer = TURF_LAYER diff --git a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm index aef330c1449..a74867d9905 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm @@ -16,7 +16,7 @@ /obj/singularity/narsie/large/exit/New() ..() - START_PROCESSING(SSobj, src) + START_PROCESSING(SSobj, src) /obj/singularity/narsie/large/exit/update_icon() overlays = 0 @@ -50,7 +50,7 @@ var/turf/T = A var/dist = get_dist(T, src) if (dist <= consume_range && T.density) - T.density = 0 + T.density = FALSE for (var/atom/movable/AM in T.contents) if (AM == src) // This is the snowflake. diff --git a/code/game/gamemodes/events/black_hole.dm b/code/game/gamemodes/events/black_hole.dm index a8b0071f657..b18310ed886 100644 --- a/code/game/gamemodes/events/black_hole.dm +++ b/code/game/gamemodes/events/black_hole.dm @@ -4,9 +4,9 @@ desc = "FUCK FUCK FUCK AAAHHH" icon_state = "bhole3" opacity = 1 - unacidable = 1 - density = 0 - anchored = 1 + unacidable = TRUE + density = FALSE + anchored = TRUE /obj/effect/bhole/New() spawn(4) @@ -54,9 +54,9 @@ //MOVEMENT if( prob(50) ) - src.anchored = 0 + src.anchored = FALSE step(src,pick(alldirs)) - src.anchored = 1 + src.anchored = TRUE /obj/effect/bhole/proc/grav(var/r, var/ex_act_force, var/pull_chance, var/turf_removal_chance) if(!isturf(loc)) //blackhole cannot be contained inside anything. Weird stuff might happen diff --git a/code/game/gamemodes/events/clang.dm b/code/game/gamemodes/events/clang.dm index fd6a36e3d46..5aa3372e327 100644 --- a/code/game/gamemodes/events/clang.dm +++ b/code/game/gamemodes/events/clang.dm @@ -13,8 +13,8 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 icon = 'icons/obj/objects.dmi' icon_state = "immrod" throwforce = 100 - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE /obj/effect/immovablerod/Bump(atom/clong) if(istype(clong, /turf/simulated/shuttle)) //Skip shuttles without actually deleting the rod diff --git a/code/game/gamemodes/events/dust.dm b/code/game/gamemodes/events/dust.dm index 750de2ebd56..85391b7352a 100644 --- a/code/game/gamemodes/events/dust.dm +++ b/code/game/gamemodes/events/dust.dm @@ -64,8 +64,8 @@ The "dust" will damage the hull of the station causin minor hull breaches. desc = "Dust in space." icon = 'icons/obj/meteor.dmi' icon_state = "space_dust" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/strength = 2 //ex_act severity number var/life = 2 //how many things we hit before qdel(src) diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 74f590a8486..b95ddde1ab9 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -107,7 +107,7 @@ mob hsb.loc = usr.loc to_chat(usr, "Sandbox: Created an airlock.") if("hsbcanister") - var/list/hsbcanisters = typesof(/obj/machinery/portable_atmospherics/canister/) - /obj/machinery/portable_atmospherics/canister/ + var/list/hsbcanisters = subtypesof(/obj/machinery/portable_atmospherics/canister) var/hsbcanister = tgui_input_list(usr, "Choose a canister to spawn:", "Sandbox", hsbcanisters) if(hsbcanister) new hsbcanister(usr.loc) diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm index 7d0ddc6c2ef..5dd0d64310e 100644 --- a/code/game/gamemodes/technomancer/catalog.dm +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -4,10 +4,10 @@ #define UTILITY_SPELLS "Utility" #define SUPPORT_SPELLS "Support" -var/list/all_technomancer_spells = typesof(/datum/technomancer/spell) - /datum/technomancer/spell -var/list/all_technomancer_equipment = typesof(/datum/technomancer/equipment) - /datum/technomancer/equipment -var/list/all_technomancer_consumables = typesof(/datum/technomancer/consumable) - /datum/technomancer/consumable -var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - /datum/technomancer/assistance +var/list/all_technomancer_spells = subtypesof(/datum/technomancer/spell) +var/list/all_technomancer_equipment = subtypesof(/datum/technomancer/equipment) +var/list/all_technomancer_consumables = subtypesof(/datum/technomancer/consumable) +var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance) /datum/technomancer var/name = "technomancer thing" diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm index 88aa93f4c21..0bdf378582d 100644 --- a/code/game/gamemodes/technomancer/core_obj.dm +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -7,13 +7,13 @@ item_state = "technomancer_core" w_class = ITEMSIZE_HUGE slot_flags = SLOT_BACK - unacidable = 1 + unacidable = TRUE origin_tech = list( TECH_MATERIAL = 8, TECH_ENGINEERING = 8, TECH_POWER = 8, TECH_BLUESPACE = 10, TECH_COMBAT = 7, TECH_MAGNET = 9, TECH_DATA = 5 ) sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/back.dmi' + SPECIES_TESHARI = 'icons/inventory/back/mob_teshari.dmi' ) var/energy = 10000 var/max_energy = 10000 diff --git a/code/game/gamemodes/technomancer/devices/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm index 7618708aad1..eec695278f2 100644 --- a/code/game/gamemodes/technomancer/devices/shield_armor.dm +++ b/code/game/gamemodes/technomancer/devices/shield_armor.dm @@ -58,8 +58,8 @@ if(istype(damage_source, /obj/item/projectile)) var/obj/item/projectile/P = damage_source - P.sharp = 0 - P.edge = 0 + P.sharp = FALSE + P.edge = FALSE P.embed_chance = 0 if(P.agony) var/agony_blocked = P.agony * (modified_block_percentage / 100) diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm index 9bf8dd578f9..1659b8f17bd 100644 --- a/code/game/gamemodes/technomancer/spells/energy_siphon.dm +++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm @@ -181,7 +181,7 @@ if(A == firer) // For this, you CAN shoot yourself. on_impact(A) - density = 0 + density = FALSE invisibility = 101 qdel(src) diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm index 2dc02614d01..26bd64d0b78 100644 --- a/code/game/jobs/access_datum.dm +++ b/code/game/jobs/access_datum.dm @@ -262,8 +262,8 @@ desc = "Station Network" region = ACCESS_REGION_RESEARCH -// /var/const/free_access_id = 43 -// /var/const/free_access_id = 44 +// /var/const/free_access_id = 43 // taken in VR +// /var/const/free_access_id = 44 // taken in VR /var/const/access_surgery = 45 /datum/access/surgery diff --git a/code/game/jobs/access_datum_vr.dm b/code/game/jobs/access_datum_vr.dm index bd3906f16c5..bdfef8a12b3 100644 --- a/code/game/jobs/access_datum_vr.dm +++ b/code/game/jobs/access_datum_vr.dm @@ -5,6 +5,12 @@ var/const/access_explorer = 43 desc = "Explorer" region = ACCESS_REGION_GENERAL +/var/const/access_pathfinder = 44 +/datum/access/pathfinder + id = access_pathfinder + desc = "Pathfinder" + region = ACCESS_REGION_GENERAL + var/const/access_pilot = 67 /datum/access/pilot id = access_pilot diff --git a/code/game/jobs/job/exploration_vr.dm b/code/game/jobs/job/exploration_vr.dm index d42685c2b72..f201406fbc0 100644 --- a/code/game/jobs/job/exploration_vr.dm +++ b/code/game/jobs/job/exploration_vr.dm @@ -43,8 +43,8 @@ pto_type = PTO_EXPLORATION dept_time_required = 20 - access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway) - minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway) + access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway, access_pathfinder) + minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway, access_pathfinder) outfit_type = /decl/hierarchy/outfit/job/pathfinder job_description = "The Pathfinder's job is to lead and manage expeditions, and is the primary authority on all off-station expeditions." alt_titles = list("Expedition Lead" = /datum/alt_title/expedition_lead, "Exploration Manager" = /datum/alt_title/exploration_manager) diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index b6f6cb25ac7..f1066caffcd 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -5,7 +5,7 @@ desc = "A device that draws power from bluespace and creates a permanent tracking beacon." level = 1 // underfloor layer = UNDER_JUNK_LAYER - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 0 var/obj/item/device/radio/beacon/Beacon diff --git a/code/game/machinery/CableLayer.dm b/code/game/machinery/CableLayer.dm index 8edc131ac81..d4045aefe8a 100644 --- a/code/game/machinery/CableLayer.dm +++ b/code/game/machinery/CableLayer.dm @@ -2,7 +2,7 @@ name = "automatic cable layer" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" - density = 1 + density = TRUE var/obj/structure/cable/last_piece var/obj/item/stack/cable_coil/cable var/max_cable = 100 diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 2200ef94c60..228857a2dce 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -3,8 +3,8 @@ desc = "Used for advanced medical procedures." icon = 'icons/obj/surgery.dmi' icon_state = "table2-idle" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 1 active_power_usage = 5 @@ -37,14 +37,14 @@ return if(3.0) if(prob(25)) - density = 0 + density = FALSE else return /obj/machinery/optable/attack_hand(mob/user as mob) if(HULK in usr.mutations) visible_message("\The [usr] destroys \the [src]!") - density = 0 + density = FALSE qdel(src) return diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index e53cd7818c1..c3be1bbf469 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/Cryogenic2_vr.dmi' //VOREStation Edit - Better icon. icon_state = "sleeperconsole" var/obj/machinery/sleeper/sleeper - anchored = 1 //About time someone fixed this. - density = 1 //VOREStation Edit - Big console + anchored = TRUE //About time someone fixed this. + density = TRUE //VOREStation Edit - Big console dir = 8 use_power = USE_POWER_IDLE idle_power_usage = 40 @@ -87,8 +87,8 @@ desc = "A stasis pod with built-in injectors, a dialysis machine, and a limited health scanner." icon = 'icons/obj/Cryogenic2_vr.dmi' //VOREStation Edit - Better icons icon_state = "sleeper_0" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/sleeper var/mob/living/carbon/human/occupant = null var/list/available_chemicals = list() diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index de0d8dbcd94..bd8edfcd8a8 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -6,8 +6,8 @@ name = "Body Scanner" icon = 'icons/obj/Cryogenic2.dmi' icon_state = "body_scanner_0" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/body_scanner use_power = USE_POWER_IDLE idle_power_usage = 60 @@ -474,9 +474,8 @@ infected = "Gangrene Detected:" var/unknown_body = 0 - for(var/thing in e.implants) - var/obj/item/weapon/implant/I = thing - var/obj/item/device/nif/N = thing //VOREStation Add: NIFs + for(var/obj/item/weapon/implant/I as anything in e.implants) + var/obj/item/device/nif/N = I //VOREStation Add: NIFs if(istype(I) && I.known_implant) imp += "[I] implanted:" if(istype(N) && N.known_implant) //VOREStation Add: NIFs @@ -546,8 +545,8 @@ icon = 'icons/obj/Cryogenic2.dmi' icon_state = "body_scannerconsole" dir = 8 - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/scanner_console var/printing = null diff --git a/code/game/machinery/adv_med_vr.dm b/code/game/machinery/adv_med_vr.dm index c7bcf0d0657..c4c1d933746 100644 --- a/code/game/machinery/adv_med_vr.dm +++ b/code/game/machinery/adv_med_vr.dm @@ -5,15 +5,14 @@ /obj/machinery/body_scanconsole icon = 'icons/obj/Cryogenic2_vr.dmi' icon_state = "scanner_terminal_off" - density = 1 + density = TRUE /obj/machinery/bodyscanner/proc/get_occupant_data_vr(list/incoming, mob/living/carbon/human/H) var/humanprey = 0 var/livingprey = 0 var/objectprey = 0 - for(var/belly in H.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in H.vore_organs) for(var/C in B) if(ishuman(C)) humanprey++ diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index aead0c79f1e..86f55631a4e 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -2,7 +2,7 @@ name = "\improper AI Liquid Dispenser" icon = 'icons/obj/device.dmi' icon_state = "liquid_dispenser" - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 var/uses = 20 diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 32cc9d0a3ff..228cf5472f4 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -31,7 +31,7 @@ icon_state = "alarm_0" layer = ABOVE_WINDOW_LAYER vis_flags = VIS_HIDE // They have an emissive that looks bad in openspace due to their wall-mounted nature - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 80 active_power_usage = 1000 //For heating/cooling rooms. 1000 joules equates to about 1 degree every 2 seconds for a single tile of air. @@ -50,7 +50,7 @@ var/rcon_setting = 2 var/rcon_time = 0 var/locked = 1 - panel_open = 0 // If it's been screwdrivered open. + panel_open = FALSE // If it's been screwdrivered open. var/aidisabled = 0 var/shorted = 0 circuit = /obj/item/weapon/circuitboard/airalarm diff --git a/code/game/machinery/airconditioner_vr.dm b/code/game/machinery/airconditioner_vr.dm index ea54edfa2e1..f9a14370419 100644 --- a/code/game/machinery/airconditioner_vr.dm +++ b/code/game/machinery/airconditioner_vr.dm @@ -7,8 +7,8 @@ desc = "A massive machine that can either add or remove thermal energy from the surrounding environment. Must be secured onto a powered wire node to function." icon = 'icons/obj/machines/thermoregulator_vr.dmi' icon_state = "lasergen" - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE use_power = USE_POWER_OFF //is powered directly from cables active_power_usage = 150 KILOWATTS //BIG POWER diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 29d9ed55626..27fc21f4f15 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -4,7 +4,7 @@ name = "Gas Sensor" desc = "Senses atmospheric conditions." - anchored = 1 + anchored = TRUE var/state = 0 var/id_tag diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 83fd5943823..783ee16225b 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -2,7 +2,7 @@ name = "canister" icon = 'icons/obj/atmos.dmi' icon_state = "yellow" - density = 1 + density = TRUE var/health = 100.0 w_class = ITEMSIZE_HUGE @@ -172,7 +172,7 @@ update_flag src.destroyed = 1 playsound(src, 'sound/effects/spray.ogg', 10, 1, -3) - src.density = 0 + src.density = FALSE update_icon() if (src.holding) diff --git a/code/game/machinery/atmoalter/clamp.dm b/code/game/machinery/atmoalter/clamp.dm index 318145c2292..a77999a6614 100644 --- a/code/game/machinery/atmoalter/clamp.dm +++ b/code/game/machinery/atmoalter/clamp.dm @@ -7,7 +7,7 @@ description_info = "Click-dragging this to yourself while adjacent will attempt to remove it from the pipe." icon = 'icons/atmos/clamp.dmi' icon_state = "pclamp0" - anchored = 1.0 + anchored = TRUE var/obj/machinery/atmospherics/pipe/simple/target = null var/open = 1 diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index e5e4b65ab4a..25f5e125670 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -5,7 +5,7 @@ icon_state = "meterX" var/obj/machinery/atmospherics/pipe/target = null var/list/pipes_on_turf = list() - anchored = 1.0 + anchored = TRUE power_channel = ENVIRON var/frequency = 0 var/id diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index dc530ecc2fd..e51b4825cc0 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -71,7 +71,7 @@ connected_port.connected_device = src connected_port.on = 1 //Activate port updates - anchored = 1 //Prevent movement + anchored = TRUE //Prevent movement //Actually enforce the air sharing var/datum/pipe_network/network = connected_port.return_network(src) @@ -89,7 +89,7 @@ if(network) network.gases -= air_contents - anchored = 0 + anchored = FALSE connected_port.connected_device = null connected_port = null diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm index f97a66bd78b..1a502c675f9 100644 --- a/code/game/machinery/atmoalter/pump.dm +++ b/code/game/machinery/atmoalter/pump.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/atmos.dmi' icon_state = "psiphon:0" - density = 1 + density = TRUE w_class = ITEMSIZE_NORMAL var/on = 0 diff --git a/code/game/machinery/atmoalter/pump_vr.dm b/code/game/machinery/atmoalter/pump_vr.dm index e056086baf8..2c3b5c14d9b 100644 --- a/code/game/machinery/atmoalter/pump_vr.dm +++ b/code/game/machinery/atmoalter/pump_vr.dm @@ -2,7 +2,7 @@ name = "Huge Air Pump" icon = 'icons/obj/atmos.dmi' icon_state = "siphon:0" - anchored = 1 + anchored = TRUE volume = 500000 use_power = USE_POWER_IDLE diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index f154e64d896..7ab58e2c88d 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/atmos.dmi' icon_state = "pscrubber:0" - density = 1 + density = TRUE w_class = ITEMSIZE_NORMAL var/on = 0 @@ -152,7 +152,7 @@ desc = "A larger variation of the portable scrubber, for industrial scrubbing of air. Must be turned on from a remote terminal." icon = 'icons/obj/atmos_vr.dmi' //VOREStation Edit - New Sprite icon_state = "scrubber:0" - anchored = 1 + anchored = TRUE volume = 500000 volume_rate = 7000 diff --git a/code/game/machinery/atmoalter/zvent.dm b/code/game/machinery/atmoalter/zvent.dm index 163e86a74da..d4f2ccfc027 100644 --- a/code/game/machinery/atmoalter/zvent.dm +++ b/code/game/machinery/atmoalter/zvent.dm @@ -3,8 +3,8 @@ icon = 'icons/obj/pipes.dmi' icon_state = "vent-db" - density = 0 - anchored=1 + density = FALSE + anchored=TRUE var/on = 0 var/volume_rate = 800 diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 8fa51418392..f079485f19f 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -2,8 +2,8 @@ name = "autolathe" desc = "It produces items using metal and glass." icon_state = "autolathe" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 active_power_usage = 2000 @@ -183,9 +183,8 @@ //Check if we still have the materials. var/coeff = (making.no_scale ? 1 : mat_efficiency) //stacks are unaffected by production coefficient - for(var/MAT in making.resources) - var/datum/material/used_material = MAT - var/amount_needed = making.resources[MAT] * coeff * multiplier + for(var/datum/material/used_material as anything in making.resources) + var/amount_needed = making.resources[used_material] * coeff * multiplier materials_used[used_material] = amount_needed if(LAZYLEN(materials_used)) diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 2790a5ec152..e5cf8da8e12 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -17,8 +17,8 @@ desc = "Converts plants into biomass, which can be used for fertilizer and sort-of-synthetic products." icon = 'icons/obj/biogenerator_vr.dmi' //VOREStation Edit icon_state = "biogen-stand" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/biogenerator use_power = USE_POWER_IDLE idle_power_usage = 40 diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index fe2c027eb1a..d00efc79b6c 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -7,8 +7,8 @@ icon = 'icons/obj/surgery_vr.dmi' //VOREStation Edit icon_state = "bioprinter" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE use_power = USE_POWER_IDLE idle_power_usage = 40 active_power_usage = 300 @@ -132,7 +132,7 @@ return if(container) - var/response = tgui_alert(user, "What do you want to do?", list("Bioprinter Menu", "Print Limbs", "Cancel")) + var/response = tgui_alert(user, "What do you want to do?", "Bioprinter Menu", list("Print Limbs", "Cancel")) if(response == "Print Limbs") printing_menu(user) else diff --git a/code/game/machinery/bomb_tester_vr.dm b/code/game/machinery/bomb_tester_vr.dm index ea9add72ceb..2273defdeac 100644 --- a/code/game/machinery/bomb_tester_vr.dm +++ b/code/game/machinery/bomb_tester_vr.dm @@ -7,8 +7,8 @@ desc = "A device that can calculate the potential explosive yield of provided gases." icon = 'icons/obj/machines/bomb_tester_vr.dmi' icon_state = "generic" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE idle_power_usage = 50 active_power_usage = 1.5 KILOWATTS @@ -309,7 +309,7 @@ simulation_results += "
Final Result: No detonation." /obj/machinery/bomb_tester/proc/canister_sim() - test_canister.anchored = 1 + test_canister.anchored = TRUE faketank.volume = tank1.air_contents.volume faketank.copy_from(tank1.air_contents) faketank_integrity = tank1.integrity @@ -346,7 +346,7 @@ update_use_power(USE_POWER_IDLE) update_icon() if(test_canister && test_canister.anchored && !test_canister.connected_port) - test_canister.anchored = 0 + test_canister.anchored = FALSE if(cancelled) return if(simulation_results == "Error") diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 19716f5d74b..e0fa69147b8 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -6,7 +6,7 @@ desc = "A remote control switch for something." var/id = null var/active = 0 - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 4 diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 68a93322c67..85f23cb1dbd 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -13,7 +13,7 @@ var/c_tag = null var/c_tag_order = 999 var/status = 1 - anchored = 1.0 + anchored = TRUE var/invuln = 0 var/bugged = 0 var/obj/item/weapon/camera_assembly/assembly = null @@ -174,7 +174,7 @@ if(weld(W, user)) if(assembly) assembly.loc = src.loc - assembly.anchored = 1 + assembly.anchored = TRUE assembly.camera_name = c_tag assembly.camera_network = english_list(network, NETWORK_DEFAULT, ",", ",") assembly.update_icon() @@ -232,7 +232,7 @@ user.setClickCooldown(user.get_attack_speed(W)) if (W.force >= src.toughness) user.do_attack_animation(src) - visible_message("[src] has been [W.attack_verb.len? pick(W.attack_verb) : "attacked"] with [W] by [user]!") + visible_message("[src] has been [LAZYLEN(W.attack_verb) ? pick(W.attack_verb) : "attacked"] with [W] by [user]!") if (istype(W, /obj/item)) //is it even possible to get into attackby() with non-items? var/obj/item/I = W if (I.hitsound) diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index d8facf17261..0660bff7591 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/monitors_vr.dmi' //VOREStation Edit - New Icons icon_state = "cameracase" w_class = ITEMSIZE_SMALL - anchored = 0 + anchored = FALSE matter = list(MAT_STEEL = 700,MAT_GLASS = 300) @@ -32,7 +32,7 @@ if(W.is_wrench() && isturf(src.loc)) playsound(src, W.usesound, 50, 1) to_chat(user, "You wrench the assembly into place.") - anchored = 1 + anchored = TRUE state = 1 update_icon() auto_turn() @@ -43,14 +43,14 @@ if(istype(W, /obj/item/weapon/weldingtool)) if(weld(W, user)) to_chat(user, "You weld the assembly securely into place.") - anchored = 1 + anchored = TRUE state = 2 return else if(W.is_wrench()) playsound(src, W.usesound, 50, 1) to_chat(user, "You unattach the assembly from its place.") - anchored = 0 + anchored = FALSE update_icon() state = 0 return @@ -71,7 +71,7 @@ if(weld(W, user)) to_chat(user, "You unweld the assembly from its place.") state = 1 - anchored = 1 + anchored = TRUE return diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 40ce15d2b0e..19800790981 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -7,7 +7,7 @@ desc = "A much more powerful version of the standard recharger that is specially designed for charging power cells." icon = 'icons/obj/power.dmi' icon_state = "recharger" - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE power_channel = EQUIP idle_power_usage = 5 @@ -73,12 +73,13 @@ charging = null charge_state = CHARGER_EMPTY - update_icon() if((stat & (BROKEN|NOPOWER)) || !anchored) update_use_power(USE_POWER_OFF) else update_use_power(USE_POWER_IDLE) + + update_icon() /obj/machinery/cell_charger/examine(mob/user) . = ..() @@ -130,16 +131,13 @@ if(charging) remove_item(user) user.visible_message("[user] removes [charging] from [src].", "You remove [charging] from [src].") - update_icon() /obj/machinery/cell_charger/attack_ai(mob/user) if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) // Borgs can remove the cell if they are near enough if(charging) - user.visible_message("[user] removes [charging] from [src].", "You remove [charging] from [src].") - charging.loc = src.loc - charging.update_icon() - charging = null - update_icon() + remove_item(user) + user.visible_message("[user] disconnects [charging] from [src].", "You disconnect [charging] from [src].") + /obj/machinery/cell_charger/emp_act(severity) if(stat & (BROKEN|NOPOWER)) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 53da61382e9..49c917f312e 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -29,8 +29,8 @@ /obj/machinery/clonepod name = "cloning pod" desc = "An electronically-lockable pod for growing organic tissue." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/clonepod icon = 'icons/obj/cloning.dmi' icon_state = "pod_0" @@ -255,11 +255,11 @@ to_chat(user, "Can not do that while [src] is in use.") else if(anchored) - anchored = 0 + anchored = FALSE connected.pods -= src connected = null else - anchored = 1 + anchored = TRUE playsound(src, W.usesound, 100, 1) if(anchored) user.visible_message("[user] secures [src] to the floor.", "You secure [src] to the floor.") diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index c965a54b151..4efec263f80 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -3,8 +3,8 @@ /obj/machinery/computer/operating name = "patient monitoring console" desc = "Used to monitor the vitals of a patient." - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE icon_keyboard = "med_key" icon_screen = "crew" circuit = /obj/item/weapon/circuitboard/operating diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index c6156b7a31b..cef5e15e065 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -1,6 +1,6 @@ /obj/structure/AIcore - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE name = "\improper AI core" icon = 'icons/mob/AI.dmi' icon_state = "0" @@ -18,7 +18,7 @@ playsound(src, P.usesound, 50, 1) if(do_after(user, 20 * P.toolspeed)) to_chat(user, "You wrench the frame into place.") - anchored = 1 + anchored = TRUE state = 1 if(istype(P, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = P @@ -36,7 +36,7 @@ playsound(src, P.usesound, 50, 1) if(do_after(user, 20 * P.toolspeed)) to_chat(user, "You unfasten the frame.") - anchored = 0 + anchored = FALSE state = 0 if(istype(P, /obj/item/weapon/circuitboard/aicore) && !circuit) playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) @@ -187,7 +187,7 @@ GLOBAL_LIST_BOILERPLATE(all_deactivated_AI_cores, /obj/structure/AIcore/deactiva name = "inactive AI" icon = 'icons/mob/AI.dmi' icon_state = "ai-empty" - anchored = 1 + anchored = TRUE state = 20//So it doesn't interact based on the above. Not really necessary. /obj/structure/AIcore/deactivated/Destroy() @@ -240,7 +240,7 @@ GLOBAL_LIST_BOILERPLATE(all_deactivated_AI_cores, /obj/structure/AIcore/deactiva user.visible_message("\The [user] decides not to unbolt \the [src].") return user.visible_message("\The [user] finishes unfastening \the [src]!") - anchored = 0 + anchored = FALSE return else user.visible_message("\The [user] starts to bolt \the [src] to the plating...") @@ -249,7 +249,7 @@ GLOBAL_LIST_BOILERPLATE(all_deactivated_AI_cores, /obj/structure/AIcore/deactiva user.visible_message("\The [user] decides not to bolt \the [src].") return user.visible_message("\The [user] finishes fastening down \the [src]!") - anchored = 1 + anchored = TRUE return else return ..() diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 73dc0ec4b4f..32fbaf3082f 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -8,8 +8,8 @@ icon_keyboard = "generic_key" icon_screen = "comm_logs" light_color = "#00b000" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/atmoscontrol req_access = list(access_ce) var/list/monitored_alarm_ids = null @@ -24,7 +24,7 @@ icon_screen = "pcu_atmo" icon_state = "pcu" icon_keyboard = "pcu_key" - density = 0 + density = FALSE /obj/machinery/computer/atmoscontrol/attack_ai(var/mob/user as mob) tgui_interact(user) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 054c9c2cc35..5f4ff28e058 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -1,8 +1,8 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /obj/structure/computerframe - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE name = "computer frame" icon = 'icons/obj/stock_parts.dmi' icon_state = "0" @@ -17,7 +17,7 @@ playsound(src, P.usesound, 50, 1) if(do_after(user, 20 * P.toolspeed)) to_chat(user, "You wrench the frame into place.") - src.anchored = 1 + src.anchored = TRUE src.state = 1 if(istype(P, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = P @@ -35,7 +35,7 @@ playsound(src, P.usesound, 50, 1) if(do_after(user, 20 * P.toolspeed)) to_chat(user, "You unfasten the frame.") - src.anchored = 0 + src.anchored = FALSE src.state = 0 if(istype(P, /obj/item/weapon/circuitboard) && !circuit) var/obj/item/weapon/circuitboard/B = P diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index f04aba5a253..765f6de69b3 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -13,12 +13,13 @@ var/list/network = list() var/datum/tgui_module/camera/camera + var/camera_datum_type = /datum/tgui_module/camera /obj/machinery/computer/security/Initialize() . = ..() if(!LAZYLEN(network)) network = get_default_networks() - camera = new(src, network) + camera = new camera_datum_type(src, network) /obj/machinery/computer/security/proc/get_default_networks() . = using_map.station_networks.Copy() @@ -64,36 +65,107 @@ icon_screen = null light_range_on = 0 network = list(NETWORK_THUNDER) - density = 0 + density = FALSE circuit = null +GLOBAL_LIST_EMPTY(entertainment_screens) /obj/machinery/computer/security/telescreen/entertainment name = "entertainment monitor" - desc = "Damn, why do they never have anything interesting on these things?" - icon = 'icons/obj/status_display.dmi' - icon_screen = "entertainment" + desc = "Damn, why do they never have anything interesting on these things? (Alt-click to toggle the display)" + icon = 'icons/obj/entertainment_monitor.dmi' + icon_state = "screen" + icon_screen = null light_color = "#FFEEDB" light_range_on = 2 network = list(NETWORK_THUNDER) circuit = /obj/item/weapon/circuitboard/security/telescreen/entertainment + camera_datum_type = /datum/tgui_module/camera/bigscreen + var/obj/item/device/radio/radio = null + var/obj/effect/overlay/vis/pinboard + var/weakref/showing + + var/enabled = TRUE // on or off /obj/machinery/computer/security/telescreen/entertainment/Initialize() + GLOB.entertainment_screens += src + + var/static/icon/mask = icon('icons/obj/entertainment_monitor.dmi', "mask") + + add_overlay("glass") + + pinboard = new() + pinboard.icon = icon + pinboard.icon_state = "pinboard" + pinboard.layer = 0.1 + pinboard.vis_flags = VIS_UNDERLAY|VIS_INHERIT_ID|VIS_INHERIT_PLANE + pinboard.appearance_flags = KEEP_TOGETHER + pinboard.add_filter("screen cutter", 1, alpha_mask_filter(icon = mask)) + vis_contents += pinboard + . = ..() + radio = new(src) radio.listening = TRUE radio.broadcasting = FALSE radio.set_frequency(ENT_FREQ) - radio.canhear_range = 7 // Same as default sight range. + radio.canhear_range = world.view // Same as default sight range. power_change() +/obj/machinery/computer/security/telescreen/entertainment/Destroy() + if(showing) + stop_showing() + vis_contents.Cut() + qdel_null(pinboard) + qdel_null(radio) + return ..() + +/obj/machinery/computer/security/telescreen/entertainment/proc/toggle() + enabled = !enabled + if(!enabled) + stop_showing() + radio?.on = FALSE + else if(operable()) + radio?.on = TRUE + +/obj/machinery/computer/security/telescreen/entertainment/Click(location, control, params) + var/list/modifiers = params2list(params) + if(modifiers["alt"]) + if(isliving(usr) && Adjacent(usr) && !usr.incapacitated()) + toggle() + visible_message("[usr] toggles [src] [enabled ? "on" : "off"].","You toggle [src] [enabled ? "on" : "off"].", runemessage = "click") + else + attack_hand(usr) + +/obj/machinery/computer/security/telescreen/entertainment/update_icon() + return // NUH + +/obj/machinery/computer/security/telescreen/entertainment/proc/show_thing(atom/thing) + if(!enabled) + return + if(showing) + stop_showing() + if(stat & NOPOWER) + return + showing = weakref(thing) + pinboard.vis_contents = list(thing) + +/obj/machinery/computer/security/telescreen/entertainment/proc/stop_showing() + // Reverse of the above + pinboard.vis_contents = null + showing = null + +/obj/machinery/computer/security/telescreen/entertainment/proc/maybe_stop_showing(weakref/thingref) + if(showing == thingref) + stop_showing() + /obj/machinery/computer/security/telescreen/entertainment/power_change() ..() - if(radio) - if(stat & NOPOWER) - radio.on = FALSE - else - radio.on = TRUE + if(stat & NOPOWER) + radio?.on = FALSE + stop_showing() + else if(enabled) + radio?.on = TRUE /obj/machinery/computer/security/wooden_tv name = "security camera monitor" diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 58565ead6e1..c15a9d15243 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -111,8 +111,7 @@ data["id_rank"] = modify && modify.assignment ? modify.assignment : "Unassigned" var/list/departments = list() - for(var/D in SSjob.get_all_department_datums()) - var/datum/department/dept = D + for(var/datum/department/dept as anything in SSjob.get_all_department_datums()) if(!dept.assignable) // No AI ID cards for you. continue if(dept.centcom_only && !is_centcom()) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 956c3fe2d79..ac06e34a867 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -2,8 +2,8 @@ name = "computer" icon = 'icons/obj/computer.dmi' icon_state = "computer" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 300 active_power_usage = 300 diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index 23a451eb69e..1d5392fc54f 100644 --- a/code/game/machinery/computer/guestpass.dm +++ b/code/game/machinery/computer/guestpass.dm @@ -85,7 +85,7 @@ vis_flags = VIS_HIDE // They have an emissive that looks bad in openspace due to their wall-mounted nature icon_keyboard = null icon_screen = "pass" - density = 0 + density = FALSE circuit = /obj/item/weapon/circuitboard/guestpass var/obj/item/weapon/card/id/giver diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 419e4d1ffee..a7d2da6ac55 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -501,7 +501,7 @@ icon_keyboard = "pcu_key" light_color = "#00b000" circuit = /obj/item/weapon/circuitboard/med_data/pcu - density = 0 + density = FALSE #undef FIELD #undef MED_FIELD diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 5eae5e82d08..f37f0f6c970 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -75,7 +75,7 @@ A.circuit = M A.state = 3 A.icon_state = "3" - A.anchored = 1 + A.anchored = TRUE qdel(src) else to_chat(to_chat(user, "You disconnect the monitor.")) @@ -98,7 +98,7 @@ A.circuit = M A.state = 4 A.icon_state = "4" - A.anchored = 1 + A.anchored = TRUE qdel(src) else attack_hand(user) diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index e8c69e000be..ab7d5aca4a7 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -15,7 +15,7 @@ light_color = "#00b000" req_one_access = list(access_heads) circuit = /obj/item/weapon/circuitboard/skills/pcu - density = 0 + density = FALSE var/obj/item/weapon/card/id/scan = null var/authenticated = null var/rank = null diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 3717da58c5d..a2f310aaf1e 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -5,8 +5,8 @@ name = "machine frame" icon = 'icons/obj/stock_parts.dmi' icon_state = "box_0" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_OFF var/obj/item/weapon/circuitboard/circuit = null var/list/components = null diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index d822bcb7392..35a060863e7 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -5,8 +5,8 @@ desc = "Used to cool people down for medical reasons. Totally." icon = 'icons/obj/cryogenics.dmi' // map only icon_state = "pod_preview" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE layer = UNDER_JUNK_LAYER interact_offline = 1 diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 51d97df592d..19ae2066059 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -14,7 +14,7 @@ icon = 'icons/obj/Cryogenic2_vr.dmi' //VOREStation Edit - New Icon icon_state = "cellconsole" circuit = /obj/item/weapon/circuitboard/cryopodcontrol - density = 0 + density = FALSE interact_offline = 1 var/mode = null @@ -183,7 +183,7 @@ desc = "A bewildering tangle of machinery and pipes." icon = 'icons/obj/Cryogenic2_vr.dmi' //VOREStation Edit - New Icon icon_state = "cryo_rear" - anchored = 1 + anchored = TRUE dir = WEST //Cryopods themselves. @@ -192,8 +192,8 @@ desc = "A man-sized pod for entering suspended animation." icon = 'icons/obj/Cryogenic2_vr.dmi' //VOREStation Edit - New Icon icon_state = "cryopod_0" //VOREStation Edit - New Icon - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE dir = WEST var/base_icon_state = "cryopod_0" //VOREStation Edit - New Icon @@ -373,8 +373,7 @@ hook_vr("despawn", list(to_despawn, src)) if(isliving(to_despawn)) var/mob/living/L = to_despawn - for(var/belly in L.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in L.vore_organs) for(var/mob/living/sub_L in B) despawn_occupant(sub_L) for(var/obj/item/W in B) @@ -491,6 +490,19 @@ for(var/datum/data/record/G in data_core.general) if((G.fields["name"] == to_despawn.real_name)) qdel(G) + + // Also check the hidden version of each datacore, if they're an offmap role. + var/datum/job/J = SSjob.get_job(job) + if(J?.offmap_spawn) + for(var/datum/data/record/R in data_core.hidden_general) + if((R.fields["name"] == to_despawn.real_name)) + qdel(R) + for(var/datum/data/record/T in data_core.hidden_security) + if((T.fields["name"] == to_despawn.real_name)) + qdel(T) + for(var/datum/data/record/G in data_core.hidden_medical) + if((G.fields["name"] == to_despawn.real_name)) + qdel(G) icon_state = base_icon_state diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 9b14dc68bb8..a72d814c791 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -13,8 +13,8 @@ Deployable items name = "deployable barrier" desc = "A deployable barrier. Swipe your ID card to lock/unlock it." icon = 'icons/obj/objects.dmi' - anchored = 0.0 - density = 1.0 + anchored = FALSE + density = TRUE icon_state = "barrier0" var/health = 100.0 var/maxhealth = 100.0 diff --git a/code/game/machinery/deployable_vr.dm b/code/game/machinery/deployable_vr.dm index 25fdd4ed60f..bbb835b7631 100644 --- a/code/game/machinery/deployable_vr.dm +++ b/code/game/machinery/deployable_vr.dm @@ -5,7 +5,7 @@ icon_state = "cutout_basic" maxhealth = 15 //Weaker than normal barricade - anchored = 0 + anchored = FALSE var/fake_name = "unknown" var/fake_desc = "You have to be closer to examine this creature." @@ -36,7 +36,7 @@ return toppled = TRUE icon_state = "cutout_pushed_over" - density = 0 + density = FALSE name = initial(name) desc = initial(desc) visible_message("[src] topples over!") @@ -46,7 +46,7 @@ return toppled = FALSE icon_state = initial(icon_state) - density = 1 + density = TRUE name = fake_name desc = fake_desc visible_message("[src] is uprighted to their proper position.") diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 674ff6e24d4..6e5618d39e0 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -13,7 +13,7 @@ 2=Network Access */ - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 4 diff --git a/code/game/machinery/doorbell_vr.dm b/code/game/machinery/doorbell_vr.dm index 1b6174a2ca2..d90a46000f1 100644 --- a/code/game/machinery/doorbell_vr.dm +++ b/code/game/machinery/doorbell_vr.dm @@ -7,7 +7,7 @@ use_power = USE_POWER_IDLE idle_power_usage = 10 active_power_usage = 200 - anchored = 1 + anchored = TRUE var/id_tag = null var/chime_sound = 'sound/machines/doorbell.ogg' diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 0d7474eb2f4..81c1e81ccf9 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -86,17 +86,17 @@ var/mob/living/carbon/human/X = user if(istype(X.species, /datum/species/xenos)) if(src.locked || src.welded) - visible_message("\The [user] begins digging into \the [src] internals!") + visible_message("\The [user] begins tearing into \the [src] internals!") src.do_animate("deny") - if(do_after(user,5 SECONDS,src)) - visible_message("\The [user] forces \the [src] open, sparks flying from its electronics!") + if(do_after(user,15 SECONDS,src)) + visible_message("\The [user] tears \the [src] open, sparks flying from its electronics!") src.do_animate("spark") - playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) + playsound(src, 'sound/machines/door/airlock_tear_apart.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) src.locked = 0 src.welded = 0 update_icon() open(1) - src.emag_act() + src.set_broken() //These aren't emags, these be CLAWS else if(src.density) visible_message("\The [user] begins forcing \the [src] open!") if(do_after(user, 5 SECONDS,src)) @@ -218,12 +218,12 @@ open_sound_powered = 'sound/machines/door/space1o.ogg' close_sound_powered = 'sound/machines/door/space1c.ogg' -/obj/machinery/door/airlock/external/glass/bolted +/obj/machinery/door/airlock/external/bolted icon_state = "door_locked" // So it looks visibly bolted in map editor locked = 1 // For convenience in making docking ports: one that is pre-bolted with frequency set! -/obj/machinery/door/airlock/external/glass/bolted/cycling +/obj/machinery/door/airlock/external/bolted/cycling frequency = 1379 /obj/machinery/door/airlock/glass_external @@ -1137,7 +1137,7 @@ About the new airlock wires panel: if (istype(da, /obj/structure/door_assembly/multi_tile)) da.set_dir(src.dir) - da.anchored = 1 + da.anchored = TRUE if(mineral) da.glass = mineral //else if(glass) @@ -1220,8 +1220,7 @@ About the new airlock wires panel: use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people //if the door is unpowered then it doesn't make sense to hear the woosh of a pneumatic actuator - for(var/P in player_list) - var/mob/M = P + for(var/mob/M as anything in player_list) if(!M || !M.client) continue var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds) @@ -1349,8 +1348,7 @@ About the new airlock wires panel: use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people has_beeped = 0 - for(var/P in player_list) - var/mob/M = P + for(var/mob/M as anything in player_list) if(!M || !M.client) continue var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds) diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index 83878767b71..3c91bd7c02a 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -152,7 +152,7 @@ name = "airlock sensor" desc = "Sends atmospheric readings to a nearby controller." - anchored = 1 + anchored = TRUE power_channel = ENVIRON var/id_tag @@ -237,7 +237,7 @@ layer = ABOVE_WINDOW_LAYER name = "access button" - anchored = 1 + anchored = TRUE power_channel = ENVIRON var/master_tag diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index c1e3f49718d..bba24a48888 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -86,7 +86,7 @@ src.operating = 1 playsound(src, open_sound, 100, 1) flick(icon_state_opening, src) - src.density = 0 + src.density = FALSE update_nearby_tiles() src.update_icon() src.set_opacity(0) @@ -106,7 +106,7 @@ playsound(src, close_sound, 100, 1) src.layer = closed_layer flick(icon_state_closing, src) - src.density = 1 + src.density = TRUE update_nearby_tiles() src.update_icon() if(src.istransparent) @@ -316,7 +316,7 @@ /obj/machinery/door/blast/regular/open icon_state = "pdoor0" - density = 0 + density = FALSE opacity = 0 // SUBTYPE: Shutters @@ -346,7 +346,7 @@ /obj/machinery/door/blast/gate/open icon_state = "tshutter0" - density = 0 + density = FALSE /obj/machinery/door/blast/gate/thin name = "thin gate" @@ -360,7 +360,7 @@ /obj/machinery/door/blast/gate/thin/open icon_state = "shutter2_1" - density = 0 + density = FALSE /obj/machinery/door/blast/gate/bars name = "prison bars" @@ -374,7 +374,7 @@ /obj/machinery/door/blast/gate/bars/open icon_state = "bars_1" - density = 0 + density = FALSE // SUBTYPE: Multi-tile // Pod doors ported from Paradise @@ -404,6 +404,13 @@ icon_state_closing = "closing" icon_state = "closed" +/obj/machinery/door/blast/multi_tile/four_tile_ver_sec + icon = 'icons/obj/doors/1x4blast_vert_sec.dmi' + bound_height = 128 + width = 4 + dir = NORTH + autoclose = TRUE + /obj/machinery/door/blast/multi_tile/four_tile_ver icon = 'icons/obj/doors/1x4blast_vert.dmi' bound_height = 128 @@ -422,6 +429,13 @@ width = 2 dir = NORTH +/obj/machinery/door/blast/multi_tile/four_tile_hor_sec + icon = 'icons/obj/doors/1x4blast_hor_sec.dmi' + bound_width = 128 + width = 4 + dir = EAST + autoclose = TRUE + /obj/machinery/door/blast/multi_tile/four_tile_hor icon = 'icons/obj/doors/1x4blast_hor.dmi' bound_width = 128 diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index e3098507f21..617397f071b 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -23,8 +23,8 @@ layer = ABOVE_WINDOW_LAYER desc = "A remote control for a door." req_access = list(access_brig) - anchored = 1.0 // can't pick it up - density = 0 // can walk through it. + anchored = TRUE // can't pick it up + density = FALSE // can walk through it. var/id = null // id of door it controls. var/activation_time = 0 var/timer_duration = 0 diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 9b4994892ac..d253a4dd689 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -6,9 +6,9 @@ desc = "It opens and closes." icon = 'icons/obj/doors/Doorint.dmi' icon_state = "door1" - anchored = 1 + anchored = TRUE opacity = 1 - density = 1 + density = TRUE can_atmos_pass = ATMOS_PASS_PROC layer = DOOR_OPEN_LAYER blocks_emissive = EMISSIVE_BLOCK_UNIQUE @@ -76,7 +76,7 @@ return /obj/machinery/door/Destroy() - density = 0 + density = FALSE update_nearby_tiles() . = ..() @@ -157,7 +157,7 @@ /obj/machinery/door/CanZASPass(turf/T, is_zone) if(is_zone) return !block_air_zones // Block merging unless block_air_zones = 0 - return !density // Block airflow unless density = 0 + return !density // Block airflow unless density = FALSE /obj/machinery/door/proc/bumpopen(mob/user as mob) if(operating) return @@ -429,7 +429,7 @@ icon_state = "door0" set_opacity(0) sleep(3) - src.density = 0 + src.density = FALSE update_nearby_tiles() sleep(7) src.layer = open_layer @@ -454,7 +454,7 @@ close_door_at = 0 do_animate("closing") sleep(3) - src.density = 1 + src.density = TRUE explosion_resistance = initial(explosion_resistance) src.layer = closed_layer update_nearby_tiles() diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 46f5167e8a5..96609e02a5f 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -15,7 +15,7 @@ icon_state = "door_open" req_one_access = list(access_eva) //access_atmospherics, access_engine_equip) opacity = 0 - density = 0 + density = FALSE layer = DOOR_OPEN_LAYER - 0.01 open_layer = DOOR_OPEN_LAYER - 0.01 // Just below doors when open closed_layer = DOOR_CLOSED_LAYER + 0.01 // Just above doors when closed @@ -288,8 +288,8 @@ new/obj/item/weapon/circuitboard/airalarm(src.loc) var/obj/structure/firedoor_assembly/FA = new/obj/structure/firedoor_assembly(src.loc) - FA.anchored = 1 - FA.density = 1 + FA.anchored = TRUE + FA.density = TRUE FA.wired = 1 FA.glass = glass FA.update_icon() diff --git a/code/game/machinery/doors/firedoor_assembly.dm b/code/game/machinery/doors/firedoor_assembly.dm index ab1de73c60b..829cce4e7c7 100644 --- a/code/game/machinery/doors/firedoor_assembly.dm +++ b/code/game/machinery/doors/firedoor_assembly.dm @@ -3,9 +3,9 @@ desc = "It can save lives." icon = 'icons/obj/doors/DoorHazard.dmi' icon_state = "door_construction" - anchored = 0 + anchored = FALSE opacity = 0 - density = 1 + density = TRUE var/wired = 0 var/glass = FALSE diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm index ef84d47f3d7..515ed18017c 100644 --- a/code/game/machinery/doors/unpowered.dm +++ b/code/game/machinery/doors/unpowered.dm @@ -22,4 +22,4 @@ name = "door" icon_state = "door1" opacity = 1 - density = 1 + density = TRUE diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index a50e54ba751..9d54018e7d7 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -50,14 +50,14 @@ if(operating == -1) ae.icon_state = "door_electronics_smoked" operating = 0 - src.density = 0 + src.density = FALSE playsound(src, "shatter", 70, 1) if(display_message) visible_message("[src] shatters!") qdel(src) /obj/machinery/door/window/Destroy() - density = 0 + density = FALSE update_nearby_tiles() return ..() @@ -117,7 +117,7 @@ sleep(10) explosion_resistance = 0 - density = 0 + density = FALSE update_icon() update_nearby_tiles() @@ -228,7 +228,7 @@ if (src.base_state == "right" || src.base_state == "rightsecure") wa.facing = "r" wa.set_dir(src.dir) - wa.anchored = 1 + wa.anchored = TRUE wa.created_name = name wa.state = "02" wa.step = 2 diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index cab4f5c37f0..7b8039cb6f9 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -1,9 +1,9 @@ var/list/doppler_arrays = list() /obj/machinery/doppler_array - anchored = 1 + anchored = TRUE name = "tachyon-doppler array" - density = 1 + density = TRUE desc = "A highly precise directional sensor array which measures the release of quants from decaying tachyons. The doppler shifting of the mirror-image formed by these quants can reveal the size, location and temporal affects of energetic disturbances within a large radius ahead of the array." dir = NORTH diff --git a/code/game/machinery/embedded_controller/docking_program.dm b/code/game/machinery/embedded_controller/docking_program.dm index 7adc3ba9d3b..1dca7665357 100644 --- a/code/game/machinery/embedded_controller/docking_program.dm +++ b/code/game/machinery/embedded_controller/docking_program.dm @@ -77,7 +77,7 @@ ..() if(id_tag) if(SSshuttles.docking_registry[id_tag]) - crash_with("Docking controller tag [id_tag] had multiple associated programs.") + stack_trace("Docking controller tag [id_tag] had multiple associated programs.") SSshuttles.docking_registry[id_tag] = src /datum/embedded_program/docking/Destroy() diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 196edfd224b..4a05005ac56 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -1,6 +1,6 @@ /obj/machinery/embedded_controller name = "Embedded Controller" - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 var/datum/embedded_program/program //the currently executing program @@ -67,8 +67,8 @@ icon = 'icons/obj/airlock_machines.dmi' icon_state = "airlock_control_standby" power_channel = ENVIRON - density = 0 - unacidable = 1 + density = FALSE + unacidable = TRUE var/id_tag //var/radio_power_use = 50 //power used to xmit signals diff --git a/code/game/machinery/event/stage_vr.dm b/code/game/machinery/event/stage_vr.dm index 1190498a214..1ed1e6c419a 100644 --- a/code/game/machinery/event/stage_vr.dm +++ b/code/game/machinery/event/stage_vr.dm @@ -3,8 +3,8 @@ desc = "It's a stage!" icon = 'icons/misc/event/stage.dmi' icon_state = "stage1" - anchored = 1.0 - density = 0 + anchored = TRUE + density = FALSE pixel_y = -224 pixel_x = -224 plane = -44 \ No newline at end of file diff --git a/code/game/machinery/exonet_node.dm b/code/game/machinery/exonet_node.dm index 8fe0e3b5f01..1eda308142a 100644 --- a/code/game/machinery/exonet_node.dm +++ b/code/game/machinery/exonet_node.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Edit icon_state = "exonet" //VOREStation Edit idle_power_usage = 2500 - density = 1 + density = TRUE var/on = 1 var/toggle = 1 diff --git a/code/game/machinery/fire_alarm.dm b/code/game/machinery/fire_alarm.dm index 4f976ab64ad..879a8ae7a8c 100644 --- a/code/game/machinery/fire_alarm.dm +++ b/code/game/machinery/fire_alarm.dm @@ -14,13 +14,13 @@ FIRE ALARM var/time = 10.0 var/timing = 0.0 var/lockdownbyai = 0 - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 6 power_channel = ENVIRON var/last_process = 0 - panel_open = 0 + panel_open = FALSE var/seclevel circuit = /obj/item/weapon/circuitboard/firealarm var/alarms_hidden = FALSE //If the alarms from this machine are visible on consoles @@ -199,7 +199,7 @@ Just a object used in constructing fire alarms var/time = 10.0 var/timing = 0.0 var/lockdownbyai = 0 - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 6 diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index d8b4a23994a..848108285bc 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -11,7 +11,7 @@ var/last_flash = 0 //Don't want it getting spammed like regular flashes var/strength = 10 //How weakened targets are when flashed. var/base_state = "mflash" - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 @@ -20,9 +20,9 @@ desc = "A portable flashing device. Wrench to activate and deactivate. Cannot detect slow movements." icon_state = "pflash1" strength = 8 - anchored = 0 + anchored = FALSE base_state = "pflash" - density = 1 + density = TRUE /obj/machinery/flasher/power_change() ..() diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 694a715bcd3..a5cc7d67508 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -3,7 +3,7 @@ desc = "Let there be light!" icon = 'icons/obj/machines/floodlight.dmi' icon_state = "flood00" - density = 1 + density = TRUE light_system = MOVABLE_LIGHT_DIRECTIONAL light_cone_y_offset = 8 var/on = 0 diff --git a/code/game/machinery/floor_light.dm b/code/game/machinery/floor_light.dm index 1bcb90a5965..a870245be9a 100644 --- a/code/game/machinery/floor_light.dm +++ b/code/game/machinery/floor_light.dm @@ -6,7 +6,7 @@ var/list/floor_light_cache = list() icon_state = "base" desc = "A backlit floor panel." layer = TURF_LAYER+0.001 - anchored = 0 + anchored = FALSE use_power = USE_POWER_ACTIVE idle_power_usage = 2 active_power_usage = 20 @@ -20,7 +20,7 @@ var/list/floor_light_cache = list() var/default_light_colour = LIGHT_COLOR_INCANDESCENT_BULB /obj/machinery/floor_light/prebuilt - anchored = 1 + anchored = TRUE /obj/machinery/floor_light/attackby(var/obj/item/W, var/mob/user) if(W.is_screwdriver()) diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm index c77dff55ecc..dfbf3c38df7 100644 --- a/code/game/machinery/floorlayer.dm +++ b/code/game/machinery/floorlayer.dm @@ -2,7 +2,7 @@ name = "automatic floor layer" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" - density = 1 + density = TRUE var/turf/old_turf var/on = 0 var/obj/item/stack/tile/T diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index d2ee11fbf8f..6a593ab5547 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -5,7 +5,7 @@ //Create global frame type list if it hasn't been made already. construction_frame_wall = list() construction_frame_floor = list() - for(var/R in typesof(/datum/frame/frame_types) - /datum/frame/frame_types) + for(var/R in subtypesof(/datum/frame/frame_types)) var/datum/frame/frame_types/type = new R if(type.frame_style == FRAME_STYLE_WALL) construction_frame_wall += type @@ -272,9 +272,8 @@ for(var/A in circuit.req_components) req_components[A] = circuit.req_components[A] req_component_names = circuit.req_components.Copy() - for(var/A in req_components) - var/obj/ct = A - req_component_names[A] = initial(ct.name) + for(var/obj/ct as anything in req_components) + req_component_names[ct] = initial(ct.name) /obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/datum/frame/frame_types/type, mob/user as mob) ..() diff --git a/code/game/machinery/gear_dispenser.dm b/code/game/machinery/gear_dispenser.dm index a2723a25975..70c97af29d7 100644 --- a/code/game/machinery/gear_dispenser.dm +++ b/code/game/machinery/gear_dispenser.dm @@ -80,15 +80,16 @@ var/list/dispenser_presets = list() var/spawned = list() voidsuit = new voidsuit_type(T) - spawned += voidsuit + spawned += voidsuit // We only add the voidsuit so the game doesn't try to put the tank/helmet/boots etc into their hands + // If we're supposed to make a helmet if(voidhelmet_type) // The coder may not have realized this type spawns its own helmet if(voidsuit.helmet) error("[src] created a voidsuit [voidsuit] and wants to add a helmet but it already has one") else - voidsuit.attach_helmet(new voidhelmet_type()) - spawned += voidhelmet + voidhelmet = new voidhelmet_type() + voidsuit.attach_helmet(voidhelmet) // If we're supposed to make boots if(magboots_type) // The coder may not have realized thist ype spawns its own boots @@ -97,7 +98,6 @@ var/list/dispenser_presets = list() else magboots = new magboots_type(voidsuit) voidsuit.boots = magboots - spawned += magboots if(refit) voidsuit.refit_for_species(user.species?.get_bodytype()) // does helmet and boots if they're attached @@ -109,7 +109,6 @@ var/list/dispenser_presets = list() else var/obj/item/life_support = new /obj/item/device/suit_cooling_unit(voidsuit) voidsuit.cooler = life_support - spawned += life_support else if(user.species?.breath_type) if(voidsuit.tank) error("[src] created a voidsuit [voidsuit] and wants to add a tank but it already has one") @@ -121,7 +120,6 @@ var/list/dispenser_presets = list() if(tankpath) var/obj/item/life_support = new tankpath(voidsuit) voidsuit.tank = life_support - spawned += life_support else voidsuit.audible_message("Dispenser warning: Unable to locate suitable airtank for user.") @@ -149,8 +147,8 @@ var/list/dispenser_presets = list() desc = "An industrial U-Tak-It Dispenser unit designed to fetch all kinds of equipment." icon = 'icons/obj/suitdispenser.dmi' icon_state = "geardispenser" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/list/dispenses = list(/datum/gear_disp/trash) // put your gear datums here! var/datum/gear_disp/one_setting var/global/list/gear_distributed_to = list() @@ -567,6 +565,100 @@ var/list/dispenser_presets = list() one_setting = /datum/gear_disp/voidsuit/autolok special_frame = "frame_grey" +////////////////////////////// MOEBIUS SUIT DISPENSERS /////////////////////////// +/datum/gear_disp/voidsuit/aether + name = "Aether Voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/aether + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/aether + +/obj/machinery/gear_dispenser/suit/aether + name = "\improper Aether Voidsuit Dispenser" + desc = "An industrial U-Tak-It Dispenser unit designed to fetch a specific Aether-produced high-end suit." + icon_state = "suitdispenserMB" + dispenser_flags = GD_ONEITEM|GD_NOGREED|GD_UNLIMITED + one_setting = /datum/gear_disp/voidsuit/aether + +/obj/machinery/gear_dispenser/suit_fancy/aether + name = "\improper Aether Voidsuit Dispenser" + desc = "A commercial U-Tak-It Dispenser unit designed to fetch a specific Aether-produced high-end suit." + dispenser_flags = GD_ONEITEM|GD_NOGREED|GD_UNLIMITED + one_setting = /datum/gear_disp/voidsuit/aether + special_frame = "frame_purple" + +////////////////////////////// COMMONWEALTH SUIT DISPENSERS /////////////////////////// +/datum/gear_disp/voidsuit/com_mining + name = "Commonwealth mining voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/mining/alt2 + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/mining/alt2 + +/datum/gear_disp/voidsuit/com_riot + name = "Commonwealth crowd control voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/security/riot/alt + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/security/riot/alt + +/datum/gear_disp/voidsuit/com_pilot + name = "Commonwealth pilot voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/pilot/alt2 + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/pilot/alt2 + +/datum/gear_disp/voidsuit/com_medical + name = "Commonwealth medical voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/medical/alt2 + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/medical/alt2 + +/datum/gear_disp/voidsuit/com_explorer + name = "Commonwealth explorer voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/exploration/alt2 + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/exploration/alt2 + +/datum/gear_disp/voidsuit/com_engineering + name = "Commonwealth engineering voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/engineering/alt2 + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/engineering/alt2 + +/datum/gear_disp/voidsuit/com_atmos + name = "Commonwealth atmos voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/atmos/alt2 + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/atmos/alt2 + +/datum/gear_disp/voidsuit/com_command + name = "Commonwealth command voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/captain/alt + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/captain/alt + +/obj/machinery/gear_dispenser/suit/commonwealth + name = "\improper Commonwealth Voidsuit Dispenser" + desc = "An industrial U-Tak-It Dispenser unit designed to fetch surplus Commonwealth voidsuits." + icon_state = "suitdispenserMB" + dispenser_flags = GD_NOGREED|GD_UNLIMITED + dispenses = list( + /datum/gear_disp/voidsuit/com_mining, + /datum/gear_disp/voidsuit/com_riot, + /datum/gear_disp/voidsuit/com_pilot, + /datum/gear_disp/voidsuit/com_medical, + /datum/gear_disp/voidsuit/com_explorer, + /datum/gear_disp/voidsuit/com_engineering, + /datum/gear_disp/voidsuit/com_atmos, + /datum/gear_disp/voidsuit/com_command + ) + +/obj/machinery/gear_dispenser/suit_fancy/commonwealth + name = "\improper Commonwealth Voidsuit Dispenser" + desc = "A commercial U-Tak-It Dispenser unit designed to fetch surplus Commonwealth voidsuits." + dispenser_flags = GD_NOGREED|GD_UNLIMITED + one_setting = /datum/gear_disp/voidsuit/aether + special_frame = "frame_red" + dispenses = list( + /datum/gear_disp/voidsuit/com_mining, + /datum/gear_disp/voidsuit/com_riot, + /datum/gear_disp/voidsuit/com_pilot, + /datum/gear_disp/voidsuit/com_medical, + /datum/gear_disp/voidsuit/com_explorer, + /datum/gear_disp/voidsuit/com_engineering, + /datum/gear_disp/voidsuit/com_atmos, + /datum/gear_disp/voidsuit/com_command + ) + // Adminbuse /obj/machinery/gear_dispenser/vv_get_dropdown() . = ..() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index fa9ab86e546..41851575af4 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -119,7 +119,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ hologram.icon = A.holo_icon //hologram.mouse_opacity = 0//So you can't click on it. //VOREStation Removal hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. - hologram.anchored = 1//So space wind cannot drag it. + hologram.anchored = TRUE//So space wind cannot drag it. hologram.name = "[A.name] (Hologram)"//If someone decides to right click. hologram.set_light(2) //hologram lighting hologram.color = color //painted holopad gives coloured holograms @@ -189,7 +189,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/hologram icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Edit - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 5 active_power_usage = 100 diff --git a/code/game/machinery/holoposter.dm b/code/game/machinery/holoposter.dm index 7a71d9fc641..2e1d609ccc5 100644 --- a/code/game/machinery/holoposter.dm +++ b/code/game/machinery/holoposter.dm @@ -4,7 +4,7 @@ GLOBAL_LIST_EMPTY(holoposters) desc = "A wall-mounted holographic projector displaying advertisements by all manner of factions. How much do they pay to advertise here?" icon = 'icons/obj/holoposter_vr.dmi' icon_state = "off" - anchored = 1 + anchored = TRUE use_power = 1 idle_power_usage = 80 power_channel = ENVIRON diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 7a3cd8c861e..b21fb1120cd 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -8,7 +8,7 @@ use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 4 - anchored = 1 + anchored = TRUE var/lit = 0 var/id = null var/on_icon = "sign_on" diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 70a2e3ce4c2..060bd029fc5 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -5,7 +5,7 @@ icon_state = "igniter1" var/id = null var/on = 1.0 - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 4 @@ -53,7 +53,7 @@ var/disable = 0 var/last_spark = 0 var/base_state = "migniter" - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 4 diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 5a63fd03beb..5a78697b2aa 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -2,8 +2,8 @@ name = "\improper IV drip" desc = "Helpful for giving someone blood! Or taking it away. It giveth, it taketh." icon = 'icons/obj/iv_drip.dmi' - anchored = 0 - density = 0 + anchored = FALSE + density = FALSE /obj/machinery/iv_drip/var/mob/living/carbon/human/attached = null diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index 8cb44be78ae..9aaa12fbcbd 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -14,8 +14,8 @@ icon = 'icons/obj/jukebox.dmi' icon_state = "jukebox2-nopower" var/state_base = "jukebox2" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE power_channel = EQUIP use_power = USE_POWER_IDLE idle_power_usage = 10 @@ -91,8 +91,7 @@ media_start_time = 0 update_music() //VOREStation Add - for(var/rem in remotes) - var/obj/item/device/juke_remote/remote = rem + for(var/obj/item/device/juke_remote/remote as anything in remotes) remote.update_music() //VOREStation Add End diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index 44a80c44452..e8a3544e435 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -7,7 +7,7 @@ icon = 'icons/obj/power_vr.dmi' // VOREStation Edit icon_state = "light1" layer = ABOVE_WINDOW_LAYER - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 power_channel = LIGHT diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index aed6cc368eb..26766addf6c 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -105,7 +105,7 @@ Class Procs: var/power_init_complete = FALSE var/list/component_parts = null //list of all the parts used to build it, if made from certain kinds of frames. var/uid - var/panel_open = 0 + var/panel_open = FALSE var/global/gl_uid = 1 var/clicksound // sound played on succesful interface. Just put it in the list of vars at the start. var/clickvol = 40 // volume @@ -176,7 +176,7 @@ Class Procs: pulse2.icon = 'icons/effects/effects.dmi' pulse2.icon_state = "empdisable" pulse2.name = "emp sparks" - pulse2.anchored = 1 + pulse2.anchored = TRUE pulse2.set_dir(pick(cardinal)) spawn(10) @@ -441,15 +441,15 @@ Class Procs: var/obj/structure/frame/A = new /obj/structure/frame(src.loc) var/obj/item/weapon/circuitboard/M = circuit A.circuit = M - A.anchored = 1 + A.anchored = TRUE A.frame_type = M.board_type if(A.frame_type.circuit) A.need_circuit = 0 if(A.frame_type.frame_class == FRAME_CLASS_ALARM || A.frame_type.frame_class == FRAME_CLASS_DISPLAY) - A.density = 0 + A.density = FALSE else - A.density = 1 + A.density = TRUE if(A.frame_type.frame_class == FRAME_CLASS_MACHINE) for(var/obj/D in component_parts) @@ -548,8 +548,7 @@ Class Procs: surviving_parts += new /obj/item/stack/cable_coil(null, 1) surviving_parts += new /obj/item/stack/cable_coil(null, 1) - for(var/a in surviving_parts) - var/atom/movable/A = a + for(var/atom/movable/A as anything in surviving_parts) A.forceMove(droploc) if(scatter && isturf(droploc)) var/turf/T = droploc diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index d702a300b57..f713cea2d0c 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -10,7 +10,7 @@ name = "Electromagnetic Generator" desc = "A device that uses station power to create points of magnetic energy." plane = PLATING_PLANE - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 50 @@ -188,8 +188,8 @@ name = "Magnetic Control Console" icon = 'icons/obj/airlock_machines.dmi' // uses an airlock machine icon, THINK GREEN HELP THE ENVIRONMENT - RECYCLING! icon_state = "airlock_control_standby" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 45 var/frequency = 1449 diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 25805c694e4..7e6721f109d 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -5,7 +5,7 @@ desc = "Shoots things into space." icon = 'icons/obj/stationobjs.dmi' icon_state = "mass_driver" - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 50 diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 6a92186ac50..90a623d0b9a 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -9,7 +9,7 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w name = "navigation beacon" desc = "A beacon used for bot navigation." plane = PLATING_PLANE - anchored = 1 + anchored = TRUE var/open = 0 // true if cover is open var/locked = 1 // true if controls are locked var/freq = null // DEPRECATED we don't use radios anymore! diff --git a/code/game/machinery/neonsign.dm b/code/game/machinery/neonsign.dm index 742a810d4ad..6e146af007f 100644 --- a/code/game/machinery/neonsign.dm +++ b/code/game/machinery/neonsign.dm @@ -9,7 +9,7 @@ use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 4 - anchored = 1 + anchored = TRUE var/lit = 0 var/id = null var/on_icon = "sign_on" diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 3f61837a16b..bd807f5d49a 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -161,7 +161,7 @@ GLOBAL_LIST_BOILERPLATE(allCasters, /obj/machinery/newscaster) var/hitstaken = 0 //Death at 3 hits from an item with force>=15 var/datum/feed_channel/viewing_channel = null light_range = 0 - anchored = 1 + anchored = TRUE var/obj/machinery/exonet_node/node = null circuit = /obj/item/weapon/circuitboard/newscaster // TGUI diff --git a/code/game/machinery/nuclear_bomb.dm b/code/game/machinery/nuclear_bomb.dm index cb83cddd925..b9646235c07 100644 --- a/code/game/machinery/nuclear_bomb.dm +++ b/code/game/machinery/nuclear_bomb.dm @@ -5,7 +5,7 @@ var/bomb_set desc = "Uh oh. RUN!!!!" icon = 'icons/obj/stationobjs.dmi' icon_state = "nuclearbomb0" - density = 1 + density = TRUE var/deployable = 0.0 var/extended = 0.0 var/lighthack = 0 @@ -157,7 +157,7 @@ var/bomb_set if(do_after(user,80 * O.toolspeed)) if(!src || !user) return user.visible_message("[user] crowbars [src] off of the anchors. It can now be moved.", "You jam the crowbar under the nuclear device and lift it off its anchors. You can now move it!") - anchored = 0 + anchored = FALSE removal_stage = 5 return ..() @@ -190,7 +190,7 @@ var/bomb_set onclose(user, "nuclearbomb") else if(deployable) if(removal_stage < 5) - anchored = 1 + anchored = TRUE visible_message("With a steely snap, bolts slide out of [src] and anchor it to the flooring!") else visible_message("\The [src] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.") @@ -336,7 +336,7 @@ var/bomb_set if(href_list["anchor"]) if(removal_stage == 5) - anchored = 0 + anchored = FALSE visible_message("\The [src] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.") return diff --git a/code/game/machinery/painter_vr.dm b/code/game/machinery/painter_vr.dm index 00e5ebcd5f1..e10311915df 100644 --- a/code/game/machinery/painter_vr.dm +++ b/code/game/machinery/painter_vr.dm @@ -10,8 +10,8 @@ desc = "A machine to give your apparel a fresh new color! Recommended to use with white items for best results." icon = 'icons/obj/vending_vr.dmi' icon_state = "colormate" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/list/processing = list() var/activecolor = "#FFFFFF" var/list/allowed_types = list( diff --git a/code/game/machinery/partslathe_vr.dm b/code/game/machinery/partslathe_vr.dm index 733486b5deb..77eefb94c96 100644 --- a/code/game/machinery/partslathe_vr.dm +++ b/code/game/machinery/partslathe_vr.dm @@ -21,8 +21,8 @@ icon = 'icons/obj/partslathe_vr.dmi' icon_state = "partslathe-idle" circuit = /obj/item/weapon/circuitboard/partslathe - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE use_power = USE_POWER_IDLE idle_power_usage = 30 active_power_usage = 5000 @@ -265,8 +265,7 @@ if(istype(copy_board)) data["copyBoard"] = copy_board.name var/list/req_components_ui = list() - for(var/CP in (copy_board.req_components || list())) - var/obj/comp_path = CP + for(var/obj/comp_path as anything in (copy_board.req_components || list())) var/comp_amt = copy_board.req_components[comp_path] if(comp_amt && (comp_path in partslathe_recipies)) req_components_ui.Add(list(list("name" = initial(comp_path.name), "qty" = comp_amt))) @@ -355,7 +354,7 @@ /obj/machinery/partslathe/proc/update_recipe_list() if(!partslathe_recipies) partslathe_recipies = list() - var/list/paths = typesof(/obj/item/weapon/stock_parts)-/obj/item/weapon/stock_parts + var/list/paths = subtypesof(/obj/item/weapon/stock_parts) for(var/type in paths) var/obj/item/weapon/stock_parts/I = new type() if(getHighestOriginTechLevel(I) > 1) diff --git a/code/game/machinery/pda_multicaster.dm b/code/game/machinery/pda_multicaster.dm index a70f1ede372..ef7612bf87f 100644 --- a/code/game/machinery/pda_multicaster.dm +++ b/code/game/machinery/pda_multicaster.dm @@ -3,8 +3,8 @@ desc = "This machine mirrors messages sent to it to specific departments." icon = 'icons/obj/stationobjs.dmi' icon_state = "pdamulti" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/telecomms/pda_multicaster use_power = USE_POWER_IDLE idle_power_usage = 750 diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 0d5e42f771a..0b4d054858c 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -3,8 +3,8 @@ desc = "A large machine that can rapidly dispense pipes." icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/unwrenched = 0 var/wait = 0 var/p_layer = PIPING_LAYER_REGULAR @@ -124,7 +124,7 @@ "[user] unfastens \the [src].", \ "You have unfastened \the [src]. Now it can be pulled somewhere else.", \ "You hear ratchet.") - src.anchored = 0 + src.anchored = FALSE src.stat |= MAINT src.unwrenched = 1 if (usr.machine==src) @@ -137,7 +137,7 @@ "[user] fastens \the [src].", \ "You have fastened \the [src]. Now it can dispense pipes.", \ "You hear ratchet.") - src.anchored = 1 + src.anchored = TRUE src.stat &= ~MAINT src.unwrenched = 0 power_change() @@ -149,8 +149,8 @@ desc = "A large machine that can rapidly dispense pipes. This one seems to dispsense disposal pipes." icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE disposals = TRUE //Allow you to drag-drop disposal pipes into it @@ -169,9 +169,9 @@ // adding a pipe dispensers that spawn unhooked from the ground /obj/machinery/pipedispenser/orderable - anchored = 0 + anchored = FALSE unwrenched = 1 /obj/machinery/pipedispenser/disposal/orderable - anchored = 0 + anchored = FALSE unwrenched = 1 diff --git a/code/game/machinery/pipe/pipelayer.dm b/code/game/machinery/pipe/pipelayer.dm index 9e0d3702eb3..3debf68f53e 100644 --- a/code/game/machinery/pipe/pipelayer.dm +++ b/code/game/machinery/pipe/pipelayer.dm @@ -2,7 +2,7 @@ name = "automatic pipe layer" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" - density = 1 + density = TRUE circuit = /obj/item/weapon/circuitboard/pipelayer var/turf/old_turf // Last turf we were on. var/old_dir // Last direction we were facing. diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm index f2d301e6b11..68ac2e2a3f7 100644 --- a/code/game/machinery/pointdefense.dm +++ b/code/game/machinery/pointdefense.dm @@ -22,8 +22,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) . = ..() if(id_tag) //No more than 1 controller please. - for(var/thing in pointdefense_controllers) - var/obj/machinery/pointdefense_control/PC = thing + for(var/obj/machinery/pointdefense_control/PC as anything in pointdefense_controllers) if(PC != src && PC.id_tag == id_tag) warning("Two [src] with the same id_tag of [id_tag]") id_tag = null @@ -98,8 +97,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) var/new_ident = input(user, "Enter a new ident tag.", "[src]", id_tag) as null|text if(new_ident && new_ident != id_tag && user.Adjacent(src) && CanInteract(user, GLOB.tgui_physical_state)) // Check for duplicate controllers with this ID - for(var/thing in pointdefense_controllers) - var/obj/machinery/pointdefense_control/PC = thing + for(var/obj/machinery/pointdefense_control/PC as anything in pointdefense_controllers) if(PC != src && PC.id_tag == id_tag) to_chat(user, "The [new_ident] network already has a controller.") return @@ -207,8 +205,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) if(!id_tag) return null var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) - for(var/thing in pointdefense_controllers) - var/obj/machinery/pointdefense_control/PDC = thing + for(var/obj/machinery/pointdefense_control/PDC as anything in pointdefense_controllers) if(PDC.id_tag == id_tag && (get_z(PDC) in connected_z_levels)) return PDC diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 2155b62bcb9..359410f4944 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -682,12 +682,11 @@ for(var/turf/T in oview(world.view, src)) seenturfs += T - for(var/mob in living_mob_list) - var/mob/M = mob + for(var/mob/M as anything in living_mob_list) if(M.z != z) //Skip continue if(get_turf(M) in seenturfs) - assess_and_assign(mob, targets, secondarytargets) + assess_and_assign(M, targets, secondarytargets) /* This was dumb. Why do this and then check line of sight later? for(var/mob/M in mobs_in_xray_view(world.view, src)) @@ -934,7 +933,7 @@ name = "turret frame" icon = 'icons/obj/turrets.dmi' icon_state = "turret_frame" - density=1 + density=TRUE var/target_type = /obj/machinery/porta_turret // The type we intend to build var/build_step = 0 //the current step in the building process var/finish_name="turret" //the name applied to the product turret diff --git a/code/game/machinery/reagents/pump.dm b/code/game/machinery/reagents/pump.dm index b73ce06a4a9..c48e8d9834e 100644 --- a/code/game/machinery/reagents/pump.dm +++ b/code/game/machinery/reagents/pump.dm @@ -8,8 +8,8 @@ conditions can cause different byproducts to be produced.
\ Magma or Lava can be pumped to produce mineralized fluid." - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE icon = 'icons/obj/machines/reagent.dmi' icon_state = "pump" diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index c2053951996..491aa22457e 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -4,7 +4,7 @@ desc = "A standard recharger for all devices that use power." icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Edit icon_state = "recharger0" - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 4 active_power_usage = 40000 //40 kW @@ -104,7 +104,7 @@ charging = null update_icon() -/obj/machinery/cell_charger/attack_ai(mob/user) +/obj/machinery/recharger/attack_ai(mob/user) if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) // Borgs can remove the cell if they are near enough if(charging) user.visible_message("[user] removes [charging] from [src].", "You remove [charging] from [src].") diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index cf2d4a978d5..de35add336c 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -3,8 +3,8 @@ desc = "A heavy duty rapid charging system, designed to quickly recharge cyborg power reserves." icon = 'icons/obj/objects.dmi' icon_state = "borgcharger0" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/recharge_station use_power = USE_POWER_IDLE idle_power_usage = 50 diff --git a/code/game/machinery/records_scanner.dm b/code/game/machinery/records_scanner.dm index c4e3ead84b0..b80548e876c 100644 --- a/code/game/machinery/records_scanner.dm +++ b/code/game/machinery/records_scanner.dm @@ -4,8 +4,8 @@ var/outputdir = 0 icon = 'icons/obj/stationobjs.dmi' icon_state = "scanner_idle" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/lastuser = null /obj/machinery/scanner/New() diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 03a8ab1665c..a8c4e21dbc9 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -25,7 +25,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() /obj/machinery/requests_console name = "requests console" desc = "A console intended to send requests to different departments on the station." - anchored = 1 + anchored = TRUE icon = 'icons/obj/terminals_vr.dmi' //VOREStation Edit icon_state = "req_comp_0" layer = ABOVE_WINDOW_LAYER diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 43c281e42ed..1f9c9c8f704 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -2,8 +2,8 @@ name = "robotic fabricator" icon = 'icons/obj/robotics.dmi' icon_state = "fab-idle" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/metal_amount = 0 var/operating = 0 var/obj/item/robot_parts/being_built = null diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index 0ae1785d503..4f29a3e347e 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -3,8 +3,8 @@ desc = "Extracts and bags seeds from produce." icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit icon_state = "sextractor" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE /obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 1b5ae2e763c..ac0615635a1 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -4,8 +4,8 @@ #define SHEATER_COOL 3 /obj/machinery/space_heater - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE icon = 'icons/obj/atmos.dmi' icon_state = "sheater0" name = "space heater" diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index c35085382be..bc7c4fcebe3 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -15,8 +15,8 @@ plane = TURF_PLANE layer = ABOVE_WINDOW_LAYER name = "status display" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE use_power = USE_POWER_IDLE idle_power_usage = 10 circuit = /obj/item/weapon/circuitboard/status_display diff --git a/code/game/machinery/status_display_ai.dm b/code/game/machinery/status_display_ai.dm index 618d6043dee..477c4d7937f 100644 --- a/code/game/machinery/status_display_ai.dm +++ b/code/game/machinery/status_display_ai.dm @@ -63,8 +63,8 @@ var/list/ai_status_emotions = list( icon_state = "frame" layer = ABOVE_WINDOW_LAYER name = "AI display" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE circuit = /obj/item/weapon/circuitboard/ai_status_display var/mode = 0 // 0 = Blank diff --git a/code/game/machinery/suit_cycler_datums.dm b/code/game/machinery/suit_cycler_datums.dm new file mode 100644 index 00000000000..e796213acf9 --- /dev/null +++ b/code/game/machinery/suit_cycler_datums.dm @@ -0,0 +1,344 @@ +GLOBAL_LIST_EMPTY(suit_cycler_departments) +GLOBAL_LIST_EMPTY(suit_cycler_species) +GLOBAL_LIST_EMPTY(suit_cycler_emagged) + +/datum/suit_cycler_choice + var/name = null + +/datum/suit_cycler_choice/department + /// Name of the choice in the suit cycler menu + name = null + /// Type path of the suit to produce + var/suit_becomes + /// Type path of the helmet to produce + var/helmet_becomes + +/datum/suit_cycler_choice/department/proc/can_refit_helmet(obj/item/clothing/head/helmet/helmet) + return helmet && !!helmet_becomes + +/datum/suit_cycler_choice/department/proc/do_refit_helmet(obj/item/clothing/head/helmet/helmet) + var/obj/item/clothing/tmp = new helmet_becomes() + helmet.name = "refitted [tmp.name]" + helmet.desc = tmp.desc + helmet.icon = tmp.icon + helmet.icon_state = tmp.icon_state + helmet.item_state = tmp.item_state + helmet.item_state_slots = tmp.item_state_slots?.Copy() + helmet.sprite_sheets = tmp.sprite_sheets?.Copy() + helmet.sprite_sheets_obj = tmp.sprite_sheets_obj?.Copy() + helmet.default_worn_icon = tmp.default_worn_icon + +/datum/suit_cycler_choice/department/proc/can_refit_suit(obj/item/clothing/suit/space/suit) + return suit && !!suit_becomes + +/datum/suit_cycler_choice/department/proc/do_refit_suit(obj/item/clothing/suit/space/suit) + var/obj/item/clothing/tmp = new suit_becomes() + suit.name = "refitted [tmp.name]" + suit.desc = tmp.desc + suit.icon = tmp.icon + suit.icon_state = tmp.icon_state + suit.item_state = tmp.item_state + suit.item_state_slots = tmp.item_state_slots?.Copy() + suit.sprite_sheets = tmp.sprite_sheets?.Copy() + suit.sprite_sheets_obj = tmp.sprite_sheets_obj?.Copy() + suit.default_worn_icon = tmp.default_worn_icon + +// Ye olde 'noop' choice for refits +/datum/suit_cycler_choice/department/noop + name = "No Change" +/datum/suit_cycler_choice/department/noop/can_refit_helmet(obj/item/clothing/head/helmet/helmet) + return TRUE +/datum/suit_cycler_choice/department/noop/do_refit_helmet(obj/item/clothing/head/helmet/helmet) + return +/datum/suit_cycler_choice/department/noop/can_refit_suit(obj/item/clothing/suit/space/suit) + return TRUE +/datum/suit_cycler_choice/department/noop/do_refit_suit(obj/item/clothing/suit/space/suit) + return + + + +/datum/suit_cycler_choice/department/eng/standard + name = "Engineering" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/engineering + suit_becomes = /obj/item/clothing/suit/space/void/engineering +/datum/suit_cycler_choice/department/eng/reinforced + name = "Reinforced Engineering" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/engineering/alt + suit_becomes = /obj/item/clothing/suit/space/void/engineering/alt +/datum/suit_cycler_choice/department/eng/commonwealth_standard + name = "Commonwealth Engineering" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/engineering/alt2 + suit_becomes = /obj/item/clothing/suit/space/void/engineering/alt2 +/datum/suit_cycler_choice/department/eng/atmospherics + name = "Atmospherics" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/atmos + suit_becomes = /obj/item/clothing/suit/space/void/atmos +/datum/suit_cycler_choice/department/eng/heavyduty + name = "Heavy Duty Atmos" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/atmos/alt + suit_becomes = /obj/item/clothing/suit/space/void/atmos/alt +/datum/suit_cycler_choice/department/eng/commonwealth_atmos + name = "Commonwealth Atmos" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/atmos/alt2 + suit_becomes = /obj/item/clothing/suit/space/void/atmos/alt2 +/datum/suit_cycler_choice/department/eng/hazmat + name = "HAZMAT" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/engineering/hazmat + suit_becomes = /obj/item/clothing/suit/space/void/engineering/hazmat +/datum/suit_cycler_choice/department/eng/construction + name = "Construction" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/engineering/construction + suit_becomes = /obj/item/clothing/suit/space/void/engineering/construction +/datum/suit_cycler_choice/department/eng/salvager + name = "Salvager" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/engineering/salvage + suit_becomes = /obj/item/clothing/suit/space/void/engineering/salvage + +/datum/suit_cycler_choice/department/crg/mining + name = "Mining" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/mining + suit_becomes = /obj/item/clothing/suit/space/void/mining +/datum/suit_cycler_choice/department/crg/frontiermining + name = "Frontier Mining" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/mining/alt + suit_becomes = /obj/item/clothing/suit/space/void/mining/alt +/datum/suit_cycler_choice/department/crg/commonwealth + name = "Commonwealth Mining" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/mining/alt2 + suit_becomes = /obj/item/clothing/suit/space/void/mining/alt2 + + +/datum/suit_cycler_choice/department/med/standard + name = "Medical" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/medical + suit_becomes = /obj/item/clothing/suit/space/void/medical +/datum/suit_cycler_choice/department/med/streamlined + name = "Vey-Medical Streamlined" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/medical/alt + suit_becomes = /obj/item/clothing/suit/space/void/medical/alt +/datum/suit_cycler_choice/department/med/commonwealth + name = "Commonwealth Medical" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/medical/alt2 + suit_becomes = /obj/item/clothing/suit/space/void/medical/alt2 +/datum/suit_cycler_choice/department/med/biohazard + name = "Biohazard" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/medical/bio + suit_becomes = /obj/item/clothing/suit/space/void/medical/bio +/datum/suit_cycler_choice/department/med/emt + name = "Emergency Medical Response" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/medical/emt + suit_becomes = /obj/item/clothing/suit/space/void/medical/emt + + +/datum/suit_cycler_choice/department/sec/standard + name = "Security" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/security + suit_becomes = /obj/item/clothing/suit/space/void/security +/datum/suit_cycler_choice/department/sec/riot + name = "Crowd Control" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/security/riot + suit_becomes = /obj/item/clothing/suit/space/void/security/riot +/datum/suit_cycler_choice/department/sec/commonwealth + name = "Commonwealth Crowd Control" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/security/riot/alt + suit_becomes = /obj/item/clothing/suit/space/void/security/riot/alt +/datum/suit_cycler_choice/department/sec/eva + name = "Security EVA" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/security/alt + suit_becomes = /obj/item/clothing/suit/space/void/security/alt + + +/datum/suit_cycler_choice/department/exp/standard + name = "Exploration" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/exploration + suit_becomes = /obj/item/clothing/suit/space/void/exploration +/datum/suit_cycler_choice/department/exp/medic + name = "Field Medic" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/expedition_medical + suit_becomes = /obj/item/clothing/suit/space/void/expedition_medical +/datum/suit_cycler_choice/department/exp/old + name = "Old Exploration" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/exploration/alt + suit_becomes = /obj/item/clothing/suit/space/void/exploration/alt +/datum/suit_cycler_choice/department/exp/commonwealth + name = "Commonwealth Exploration" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/exploration/alt2 + suit_becomes = /obj/item/clothing/suit/space/void/exploration/alt2 + + +/datum/suit_cycler_choice/department/pil/pilot + name = "Pilot" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/pilot + suit_becomes = /obj/item/clothing/suit/space/void/pilot +/datum/suit_cycler_choice/department/pil/pilot_blue + name = "Pilot Blue" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/pilot/alt + suit_becomes = /obj/item/clothing/suit/space/void/pilot/alt +/datum/suit_cycler_choice/department/pil/commonwealth + name = "Commonwealth Pilot" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/pilot/alt2 + suit_becomes = /obj/item/clothing/suit/space/void/pilot/alt2 + + +/datum/suit_cycler_choice/department/captain + name = "Manager" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/captain + suit_becomes = /obj/item/clothing/suit/space/void/captain +/datum/suit_cycler_choice/department/captain/commonwealth + name = "Commonwealth Captain" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/captain/alt + suit_becomes = /obj/item/clothing/suit/space/void/captain/alt + + +/datum/suit_cycler_choice/department/prototype + name = "Prototype" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/security/prototype + suit_becomes = /obj/item/clothing/suit/space/void/security/prototype + + +/datum/suit_cycler_choice/department/emag/merc + name = "^%###^%$" || "Mercenary" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/merc + suit_becomes = /obj/item/clothing/suit/space/void/merc +/datum/suit_cycler_choice/department/emag/pyro + name = "Charring" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/merc/fire + suit_becomes = /obj/item/clothing/suit/space/void/merc/fire + + +/datum/suit_cycler_choice/department/wizard + name = "Gem-Encrusted" || "Wizard" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/wizard + suit_becomes = /obj/item/clothing/suit/space/void/wizard + + +/datum/suit_cycler_choice/department/vintage/crew + name = "Vintage Crew" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb + suit_becomes = /obj/item/clothing/suit/space/void/refurb +/datum/suit_cycler_choice/department/vintage/eng + name = "Vintage Engineering" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/engineering + suit_becomes = /obj/item/clothing/suit/space/void/refurb/engineering +/datum/suit_cycler_choice/department/vintage/marine + name = "Vintage Marine" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/marine + suit_becomes = /obj/item/clothing/suit/space/void/refurb/marine +/datum/suit_cycler_choice/department/vintage/officer + name = "Vintage Officer" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/officer + suit_becomes = /obj/item/clothing/suit/space/void/refurb/officer +/datum/suit_cycler_choice/department/vintage/research + name = "Vintage Research (Bubble Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/research/alt + suit_becomes = /obj/item/clothing/suit/space/void/refurb/research +/datum/suit_cycler_choice/department/vintage/research/ch + name = "Vintage Research (Closed Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/research + suit_becomes = /obj/item/clothing/suit/space/void/refurb/research +/datum/suit_cycler_choice/department/vintage/med + name = "Vintage Medical (Bubble Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/medical/alt + suit_becomes = /obj/item/clothing/suit/space/void/refurb/medical +/datum/suit_cycler_choice/department/vintage/med/ch + name = "Vintage Medical (Closed Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/medical + suit_becomes = /obj/item/clothing/suit/space/void/refurb/medical +/datum/suit_cycler_choice/department/vintage/merc + name = "Vintage Mercenary" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/mercenary + suit_becomes = /obj/item/clothing/suit/space/void/refurb/mercenary +/datum/suit_cycler_choice/department/vintage/pilot + name = "Vintage Pilot (Bubble Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/pilot + suit_becomes = /obj/item/clothing/suit/space/void/refurb/pilot +/datum/suit_cycler_choice/department/vintage/pilot/ch + name = "Vintage Pilot (Closed Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/pilot/alt + suit_becomes = /obj/item/clothing/suit/space/void/refurb/pilot + + +/datum/suit_cycler_choice/department/talon/crew + name = "Talon Crew" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/talon +/datum/suit_cycler_choice/department/talon/eng + name = "Talon Engineering" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/engineering/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/engineering/talon +/datum/suit_cycler_choice/department/talon/med + name = "Talon Medical (Bubble Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/medical/alt/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/medical/talon +/datum/suit_cycler_choice/department/talon/med/ch + name = "Talon Medical (Closed Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/medical/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/medical/talon +/datum/suit_cycler_choice/department/talon/officer + name = "Talon Officer" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/officer/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/officer/talon +/datum/suit_cycler_choice/department/talon/pilot + name = "Talon Pilot (Bubble Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/pilot/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/pilot/talon +/datum/suit_cycler_choice/department/talon/pilot/ch + name = "Talon Pilot (Closed Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/pilot/alt/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/pilot/talon +/datum/suit_cycler_choice/department/talon/res + name = "Talon Research (Bubble Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/research/alt/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/research/talon +/datum/suit_cycler_choice/department/talon/res/ch + name = "Talon Research (Closed Helm)" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/research/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/research/talon +/datum/suit_cycler_choice/department/talon/marine + name = "Talon Marine" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/marine/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/marine/talon +/datum/suit_cycler_choice/department/talon/marine/alt + name = "Talon Mercenary" + helmet_becomes = /obj/item/clothing/head/helmet/space/void/refurb/mercenary/talon + suit_becomes = /obj/item/clothing/suit/space/void/refurb/mercenary/talon + + + +// Uses same logic as it used to, which is that it bases an assumption of 'we should have custom sprites' on +// the presence of the species in the sprite_sheets_obj list on the helmet and suit +/datum/suit_cycler_choice/species/proc/can_refit_to(...) + for(var/obj/item/clothing/C in args) + if(LAZYACCESS(C.sprite_sheets_obj, name)) + if(!(C.icon_state in cached_icon_states(C.sprite_sheets_obj[name]))) + return FALSE // Species was in sprite_sheets_obj, but had no sprite for this object in particular + + return TRUE + +/datum/suit_cycler_choice/species/proc/do_refit_to(...) + for(var/obj/item/clothing/C in args) + C.refit_for_species(name) + +/datum/suit_cycler_choice/species/noop + name = "No Change" +/datum/suit_cycler_choice/species/noop/can_refit_to(obj/item/clothing/head/helmet/helmet, obj/item/clothing/suit/space/suit) + return TRUE +/datum/suit_cycler_choice/species/noop/do_refit_to(obj/item/clothing/head/helmet/helmet, obj/item/clothing/suit/space/suit) + return + +/datum/suit_cycler_choice/species/human + name = SPECIES_HUMAN +/datum/suit_cycler_choice/species/skrell + name = SPECIES_SKRELL +/datum/suit_cycler_choice/species/unathi + name = SPECIES_UNATHI +/datum/suit_cycler_choice/species/tajaran + name = SPECIES_TAJ +/datum/suit_cycler_choice/species/teshari + name = SPECIES_TESHARI +/datum/suit_cycler_choice/species/akula + name = SPECIES_AKULA +/datum/suit_cycler_choice/species/sergal + name = SPECIES_SERGAL +/datum/suit_cycler_choice/species/vulpkanin + name = SPECIES_VULPKANIN diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 73741f9e47e..916d158e8a4 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -7,15 +7,15 @@ desc = "An industrial U-Stor-It Storage unit designed to accomodate all kinds of space suits. Its on-board equipment also allows the user to decontaminate the contents through a UV-ray purging cycle. There's a warning label dangling from the control pad, reading \"STRICTLY NO BIOLOGICALS IN THE CONFINES OF THE UNIT\"." icon = 'icons/obj/suitstorage.dmi' icon_state = "suitstorage000000100" //order is: [has helmet][has suit][has human][is open][is locked][is UV cycling][is powered][is dirty/broken] [is superUVcycling] - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/mob/living/carbon/human/OCCUPANT = null var/obj/item/clothing/suit/space/SUIT = null - var/SUIT_TYPE = null + var/suit_type = null var/obj/item/clothing/head/helmet/space/HELMET = null - var/HELMET_TYPE = null + var/helmet_type = null var/obj/item/clothing/mask/MASK = null //All the stuff that's gonna be stored insiiiiiiiiiiiiiiiiiiide, nyoro~n - var/MASK_TYPE = null //Erro's idea on standarising SSUs whle keeping creation of other SSU types easy: Make a child SSU, name it something then set the TYPE vars to your desired suit output. New() should take it from there by itself. + var/mask_type = null //Erro's idea on standarising SSUs whle keeping creation of other SSU types easy: Make a child SSU, name it something then set the TYPE vars to your desired suit output. New() should take it from there by itself. var/isopen = 0 var/islocked = 0 var/isUV = 0 @@ -29,18 +29,19 @@ //The units themselves///////////////// /obj/machinery/suit_storage_unit/standard_unit - SUIT_TYPE = /obj/item/clothing/suit/space - HELMET_TYPE = /obj/item/clothing/head/helmet/space - MASK_TYPE = /obj/item/clothing/mask/breath + suit_type = /obj/item/clothing/suit/space + helmet_type = /obj/item/clothing/head/helmet/space + mask_type = /obj/item/clothing/mask/breath -/obj/machinery/suit_storage_unit/New() +/obj/machinery/suit_storage_unit/Initialize() + . = ..() + if(suit_type) + SUIT = new suit_type(src) + if(helmet_type) + HELMET = new helmet_type(src) + if(mask_type) + MASK = new mask_type(src) update_icon() - if(SUIT_TYPE) - SUIT = new SUIT_TYPE(src) - if(HELMET_TYPE) - HELMET = new HELMET_TYPE(src) - if(MASK_TYPE) - MASK = new MASK_TYPE(src) /obj/machinery/suit_storage_unit/update_icon() var/hashelmet = 0 @@ -168,21 +169,9 @@ /obj/machinery/suit_storage_unit/proc/toggleUV(mob/user as mob) -// var/protected = 0 -// var/mob/living/carbon/human/H = user if(!panelopen) return - /*if(istype(H)) //Let's check if the guy's wearing electrically insulated gloves - if(H.gloves) - var/obj/item/clothing/gloves/G = H.gloves - if(istype(G,/obj/item/clothing/gloves/yellow)) - protected = 1 - - if(!protected) - playsound(src, "sparks", 75, 1, -1) - to_chat(user, "You try to touch the controls but you get zapped. There must be a short circuit somewhere.") - return*/ else //welp, the guy is protected, we can continue if(issuperUV) to_chat(user, "You slide the dial back towards \"185nm\".") @@ -194,21 +183,9 @@ /obj/machinery/suit_storage_unit/proc/togglesafeties(mob/user as mob) -// var/protected = 0 -// var/mob/living/carbon/human/H = user if(!panelopen) //Needed check due to bugs return - /*if(istype(H)) //Let's check if the guy's wearing electrically insulated gloves - if(H.gloves) - var/obj/item/clothing/gloves/G = H.gloves - if(istype(G,/obj/item/clothing/gloves/yellow)) - protected = 1 - - if(!protected) - playsound(src, "sparks", 75, 1, -1) - to_chat(user, "You try to touch the controls but you get zapped. There must be a short circuit somewhere.") - return*/ else to_chat(user, "You push the button. The coloured LED next to it changes.") safetieson = !safetieson @@ -335,30 +312,6 @@ updateUsrDialog() return -/* spawn(200) //Let's clean dat shit after 20 secs //Eh, this doesn't work - if(HELMET) - HELMET.clean_blood() - if(SUIT) - SUIT.clean_blood() - if(MASK) - MASK.clean_blood() - isUV = 0 //Cycle ends - update_icon() - updateUsrDialog() - - var/i - for(i=0,i<4,i++) //Gradually give the guy inside some damaged based on the intensity - spawn(50) - if(OCCUPANT) - if(issuperUV) - OCCUPANT.take_organ_damage(0,40) - to_chat(user, "Test. You gave him 40 damage") - else - OCCUPANT.take_organ_damage(0,8) - to_chat(user, "Test. You gave him 8 damage") - return*/ - - /obj/machinery/suit_storage_unit/proc/cycletimeleft() if(cycletime_left >= 1) cycletime_left-- @@ -371,8 +324,6 @@ if(!OCCUPANT) return -// for(var/obj/O in src) -// O.loc = src.loc if(OCCUPANT.client) if(user != OCCUPANT) @@ -426,14 +377,10 @@ usr.client.perspective = EYE_PERSPECTIVE usr.client.eye = src usr.loc = src -// usr.metabslow = 1 OCCUPANT = usr isopen = 0 //Close the thing after the guy gets inside update_icon() -// for(var/obj/O in src) -// qdel(O) - add_fingerprint(usr) updateUsrDialog() return @@ -475,8 +422,6 @@ OCCUPANT = M isopen = 0 //close ittt - //for(var/obj/O in src) - // O.loc = src.loc add_fingerprint(user) qdel(G) updateUsrDialog() @@ -535,15 +480,16 @@ //////////////////////////////REMINDER: Make it lock once you place some fucker inside. -//God this entire file is fucking awful +//God this entire file is fucking awful //Yes //Suit painter for Bay's special snowflake aliums. +GLOBAL_LIST_EMPTY(suit_cycler_typecache) /obj/machinery/suit_cycler name = "suit cycler" desc = "An industrial machine for painting and refitting voidsuits." - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE icon = 'icons/obj/suitstorage.dmi' icon_state = "suitstorage000000100" @@ -559,13 +505,31 @@ var/can_repair // If set, the cycler can repair voidsuits. var/electrified = 0 - //Departments that the cycler can paint suits to look like. - var/list/departments = list("Engineering","Mining","Medical","Security","Atmospherics","HAZMAT","Construction","Biohazard","Emergency Medical Response","Crowd Control","Security EVA") - //Species that the suits can be configured to fit. - var/list/species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_UNATHI,SPECIES_TAJ, SPECIES_TESHARI) + /// Departments that the cycler can paint suits to look like. Null assumes all except specially excluded ones. + /// No idea why these particular suits are the default cycler's options. + var/list/limit_departments = list( + /datum/suit_cycler_choice/department/eng/standard, + /datum/suit_cycler_choice/department/crg/mining, + /datum/suit_cycler_choice/department/med/standard, + /datum/suit_cycler_choice/department/sec/standard, + /datum/suit_cycler_choice/department/eng/atmospherics, + /datum/suit_cycler_choice/department/eng/hazmat, + /datum/suit_cycler_choice/department/eng/construction, + /datum/suit_cycler_choice/department/med/biohazard, + /datum/suit_cycler_choice/department/med/emt, + /datum/suit_cycler_choice/department/sec/riot, + /datum/suit_cycler_choice/department/sec/eva + ) + + /// Species that the cycler can refit suits for. Null assumes all except specially excluded ones. + var/list/limit_species - var/target_department - var/target_species + var/list/departments + var/list/species + var/list/emagged_departments + + var/datum/suit_cycler_choice/department/target_department + var/datum/suit_cycler_choice/species/target_species var/mob/living/carbon/human/occupant = null var/obj/item/clothing/suit/space/void/suit = null @@ -573,96 +537,187 @@ var/datum/wires/suit_storage_unit/wires = null -/obj/machinery/suit_cycler/New() - ..() +/obj/machinery/suit_cycler/Initialize() + . = ..() + departments = load_departments() + species = load_species() + emagged_departments = load_emagged() + limit_departments = null // just for mem + + target_department = departments["No Change"] + target_species = species["No Change"] + + if(!target_department || !target_species) + stat |= BROKEN + wires = new(src) - target_department = departments[1] - target_species = species[1] - if(!target_department || !target_species) qdel(src) /obj/machinery/suit_cycler/Destroy() qdel(wires) wires = null return ..() +/obj/machinery/suit_cycler/proc/load_departments() + var/list/typecache = GLOB.suit_cycler_typecache[type] + // First of our type + if(!typecache) + typecache = list() + GLOB.suit_cycler_typecache[type] = typecache + var/list/loaded = typecache["departments"] + // No departments loaded + if(!loaded) + loaded = list() + typecache["departments"] = loaded + for(var/datum/suit_cycler_choice/department/thing as anything in GLOB.suit_cycler_departments) + if(istype(thing, /datum/suit_cycler_choice/department/noop)) + loaded[thing.name] = thing + continue + if(limit_departments && !is_type_in_list(thing, limit_departments)) + continue + loaded[thing.name] = thing + + return loaded + +/obj/machinery/suit_cycler/proc/load_species() + var/list/typecache = GLOB.suit_cycler_typecache[type] + // First of our type + if(!typecache) + typecache = list() + GLOB.suit_cycler_typecache[type] = typecache + var/list/loaded = typecache["species"] + // No species loaded + if(!loaded) + loaded = list() + typecache["species"] = loaded + for(var/datum/suit_cycler_choice/species/thing as anything in GLOB.suit_cycler_species) + if(istype(thing, /datum/suit_cycler_choice/species/noop)) + loaded[thing.name] = thing + continue + if(limit_species && !is_type_in_list(thing, limit_species)) + continue + loaded[thing.name] = thing + + return loaded + +/obj/machinery/suit_cycler/proc/load_emagged() + var/list/typecache = GLOB.suit_cycler_typecache[type] + // First of our type + if(!typecache) + typecache = list() + GLOB.suit_cycler_typecache[type] = typecache + var/list/loaded = typecache["emagged"] + // No emagged loaded + if(!loaded) + loaded = list() + typecache["emagged"] = loaded + for(var/datum/suit_cycler_choice/department/thing as anything in GLOB.suit_cycler_emagged) + loaded[thing.name] = thing + + return loaded + /obj/machinery/suit_cycler/refit_only name = "Suit cycler" desc = "A dedicated industrial machine that can refit voidsuits for different species, but not change the suit's overall appearance or departmental scheme." model_text = "General Access" req_access = null - departments = list("No Change") + limit_departments = list() /obj/machinery/suit_cycler/engineering name = "Engineering suit cycler" model_text = "Engineering" req_access = list(access_construction) - departments = list("Engineering","Atmospherics","HAZMAT","Construction","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/eng + ) /obj/machinery/suit_cycler/mining name = "Mining suit cycler" model_text = "Mining" req_access = list(access_mining) - departments = list("Mining","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/crg + ) /obj/machinery/suit_cycler/security name = "Security suit cycler" model_text = "Security" req_access = list(access_security) - departments = list("Security","Crowd Control","Security EVA","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/sec + ) /obj/machinery/suit_cycler/medical name = "Medical suit cycler" model_text = "Medical" req_access = list(access_medical) - departments = list("Medical","Biohazard","Emergency Medical Response","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/med + ) /obj/machinery/suit_cycler/syndicate name = "Nonstandard suit cycler" model_text = "Nonstandard" req_access = list(access_syndicate) - departments = list("Mercenary", "Charring","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/emag + ) can_repair = 1 /obj/machinery/suit_cycler/exploration name = "Explorer suit cycler" model_text = "Exploration" - departments = list("Exploration","Expedition Medic","Old Exploration","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/exp + ) /obj/machinery/suit_cycler/pilot name = "Pilot suit cycler" model_text = "Pilot" - departments = list("Pilot Blue","Pilot","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/pil + ) /obj/machinery/suit_cycler/vintage name = "Vintage Crew suit cycler" model_text = "Vintage" - departments = list("Vintage Crew","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/vintage/crew + ) req_access = null /obj/machinery/suit_cycler/vintage/pilot name = "Vintage Pilot suit cycler" model_text = "Vintage Pilot" - departments = list("Vintage Pilot (Bubble Helm)","Vintage Pilot (Closed Helm)","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/vintage/pilot + ) /obj/machinery/suit_cycler/vintage/medsci name = "Vintage MedSci suit cycler" model_text = "Vintage MedSci" - departments = list("Vintage Medical (Bubble Helm)","Vintage Medical (Closed Helm)","Vintage Research (Bubble Helm)","Vintage Research (Closed Helm)","No Change") + limit_departments = list( + /datum/suit_cycler_choice/department/vintage/research, + /datum/suit_cycler_choice/department/vintage/med + ) /obj/machinery/suit_cycler/vintage/rugged name = "Vintage Ruggedized suit cycler" model_text = "Vintage Ruggedized" - departments = list("Vintage Engineering","Vintage Marine","Vintage Officer","Vintage Mercenary","No Change") + + limit_departments = list( + /datum/suit_cycler_choice/department/vintage/eng, + /datum/suit_cycler_choice/department/vintage/marine, + /datum/suit_cycler_choice/department/vintage/officer, + /datum/suit_cycler_choice/department/vintage/merc + ) /obj/machinery/suit_cycler/vintage/omni name = "Vintage Master suit cycler" model_text = "Vintage Master" - departments = list("Vintage Crew","Vintage Engineering","Vintage Pilot (Bubble Helm)","Vintage Pilot (Closed Helm)","Vintage Medical (Bubble Helm)","Vintage Medical (Closed Helm)","Vintage Research (Bubble Helm)","Vintage Research (Closed Helm)","Vintage Marine","Vintage Officer","Vintage Mercenary","No Change") - -/obj/machinery/suit_cycler/vintage/Initialize() - species -= SPECIES_TESHARI - return ..() + limit_departments = list( + /datum/suit_cycler_choice/department/vintage + ) /obj/machinery/suit_cycler/attack_ai(mob/user as mob) return attack_hand(user) @@ -807,8 +862,6 @@ //Clear the access reqs, disable the safeties, and open up all paintjobs. to_chat(user, "You run the sequencer across the interface, corrupting the operating protocols.") - departments = list("Engineering","Mining","Medical","Security","Atmospherics","HAZMAT","Construction","Biohazard","Crowd Control","Security EVA","Emergency Medical Response","^%###^%$", "Charring","No Change") - species = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_VULPKANIN) //VORESTATION EDIT emagged = 1 safeties = 0 @@ -842,8 +895,6 @@ /obj/machinery/suit_cycler/tgui_data(mob/user) var/list/data = list() - data["departments"] = departments - data["species"] = species data["model_text"] = model_text data["can_repair"] = can_repair data["userHasAccess"] = allowed(user) @@ -872,6 +923,28 @@ return data +/obj/machinery/suit_cycler/tgui_static_data(mob/user) + var/list/data = list() + + // tgui gets angy if you pass values too + var/list/department_keys = list() + for(var/key in departments) + department_keys += key + + // emagged at the bottom + if(emagged) + for(var/key in emagged_departments) + department_keys += key + + var/list/species_keys = list() + for(var/key in species) + species_keys += key + + data["departments"] = department_keys + data["species"] = species_keys + + return data + /obj/machinery/suit_cycler/tgui_act(action, params) if(..()) return TRUE @@ -890,13 +963,15 @@ if("department") var/choice = params["department"] if(choice in departments) - target_department = choice + target_department = departments[choice] + else if(emagged && (choice in emagged_departments)) + target_department = emagged_departments[choice] . = TRUE if("species") var/choice = params["species"] if(choice in species) - target_species = choice + target_species = species[choice] . = TRUE if("radlevel") @@ -1035,227 +1110,25 @@ return -//There HAS to be a less bloated way to do this. TODO: some kind of table/icon name coding? ~Z -//hold onto your hat, this sumbitch just got streamlined -KK +// "Streamlined" before? Ok. -Aro /obj/machinery/suit_cycler/proc/apply_paintjob() - var/obj/item/clothing/head/helmet/parent_helmet - var/obj/item/clothing/suit/space/parent_suit - var/turf/T = get_turf(src) if(!target_species || !target_department) return - //Now "Complete" with most departmental and variant suits, and sorted by department. These aren't available in the standard or emagged cycler lists because they're incomplete for most species. - switch(target_department) - if("No Change") - parent_helmet = helmet - parent_suit = suit - //Engineering and Engineering Variants - if("Engineering") - parent_helmet = /obj/item/clothing/head/helmet/space/void/engineering - parent_suit = /obj/item/clothing/suit/space/void/engineering - if("HAZMAT") - parent_helmet = /obj/item/clothing/head/helmet/space/void/engineering/hazmat - parent_suit = /obj/item/clothing/suit/space/void/engineering/hazmat - if("Construction") - parent_helmet = /obj/item/clothing/head/helmet/space/void/engineering/construction - parent_suit = /obj/item/clothing/suit/space/void/engineering/construction - if("Reinforced") - parent_helmet = /obj/item/clothing/head/helmet/space/void/engineering/alt - parent_suit = /obj/item/clothing/suit/space/void/engineering/alt - if("Salvager") - parent_helmet = /obj/item/clothing/head/helmet/space/void/engineering/salvage - parent_suit = /obj/item/clothing/suit/space/void/engineering/salvage - if("Atmospherics") - parent_helmet = /obj/item/clothing/head/helmet/space/void/atmos - parent_suit = /obj/item/clothing/suit/space/void/atmos - if("Heavy Duty Atmospherics") - parent_helmet = /obj/item/clothing/head/helmet/space/void/atmos/alt - parent_suit = /obj/item/clothing/suit/space/void/atmos/alt - //Mining and Mining Variants - if("Mining") - parent_helmet = /obj/item/clothing/head/helmet/space/void/mining - parent_suit = /obj/item/clothing/suit/space/void/mining - if("Frontier Miner") - parent_helmet = /obj/item/clothing/head/helmet/space/void/mining/alt - parent_suit = /obj/item/clothing/suit/space/void/mining/alt - //Medical and Medical Variants - if("Medical") - parent_helmet = /obj/item/clothing/head/helmet/space/void/medical - parent_suit = /obj/item/clothing/suit/space/void/medical - if("Biohazard") - parent_helmet = /obj/item/clothing/head/helmet/space/void/medical/bio - parent_suit = /obj/item/clothing/suit/space/void/medical/bio - if("Emergency Medical Response") - parent_helmet = /obj/item/clothing/head/helmet/space/void/medical/emt - parent_suit = /obj/item/clothing/suit/space/void/medical/emt - if("Vey-Medical Streamlined") - parent_helmet = /obj/item/clothing/head/helmet/space/void/medical/alt - parent_suit = /obj/item/clothing/suit/space/void/medical/alt - //Security and Security Variants - if("Security") - parent_helmet = /obj/item/clothing/head/helmet/space/void/security - parent_suit = /obj/item/clothing/suit/space/void/security - if("Crowd Control") - parent_helmet = /obj/item/clothing/head/helmet/space/void/security/riot - parent_suit = /obj/item/clothing/suit/space/void/security/riot - if("Security EVA") - parent_helmet = /obj/item/clothing/head/helmet/space/void/security/alt - parent_suit = /obj/item/clothing/suit/space/void/security/alt - //Exploration Department - if("Exploration") - parent_helmet = /obj/item/clothing/head/helmet/space/void/exploration - parent_suit = /obj/item/clothing/suit/space/void/exploration - if("Field Medic") - parent_helmet = /obj/item/clothing/head/helmet/space/void/expedition_medical - parent_suit = /obj/item/clothing/suit/space/void/expedition_medical - if("Old Exploration") - parent_helmet = /obj/item/clothing/head/helmet/space/void/exploration/alt - parent_suit = /obj/item/clothing/suit/space/void/exploration/alt - if("Pilot") - parent_helmet = /obj/item/clothing/head/helmet/space/void/pilot - parent_suit = /obj/item/clothing/suit/space/void/pilot - if("Pilot Blue") - parent_helmet = /obj/item/clothing/head/helmet/space/void/pilot/alt - parent_suit = /obj/item/clothing/suit/space/void/pilot/alt - //Antag Suits - if("^%###^%$" || "Mercenary") - parent_helmet = /obj/item/clothing/head/helmet/space/void/merc - parent_suit = /obj/item/clothing/suit/space/void/merc - if("Charring") - parent_helmet = /obj/item/clothing/head/helmet/space/void/merc/fire - parent_suit = /obj/item/clothing/suit/space/void/merc/fire - if("Gem-Encrusted" || "Wizard") - parent_helmet = /obj/item/clothing/head/helmet/space/void/wizard - parent_suit = /obj/item/clothing/suit/space/void/wizard - //Special or Event suits - if("Vintage Crew") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb - parent_suit = /obj/item/clothing/suit/space/void/refurb - if("Vintage Engineering") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/engineering - parent_suit = /obj/item/clothing/suit/space/void/refurb/engineering - if("Vintage Medical (Bubble Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/medical/alt - parent_suit = /obj/item/clothing/suit/space/void/refurb/medical - if("Vintage Medical (Closed Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/medical - parent_suit = /obj/item/clothing/suit/space/void/refurb/medical - if("Vintage Marine") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/marine - parent_suit = /obj/item/clothing/suit/space/void/refurb/marine - if("Vintage Officer") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/officer - parent_suit = /obj/item/clothing/suit/space/void/refurb/officer - if("Vintage Pilot (Bubble Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/pilot - parent_suit = /obj/item/clothing/suit/space/void/refurb/pilot - if("Vintage Pilot (Closed Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/pilot/alt - parent_suit = /obj/item/clothing/suit/space/void/refurb/pilot - if("Vintage Research (Bubble Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/research/alt - parent_suit = /obj/item/clothing/suit/space/void/refurb/research - if("Vintage Research (Closed Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/research - parent_suit = /obj/item/clothing/suit/space/void/refurb/research - if("Vintage Mercenary") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/mercenary - parent_suit = /obj/item/clothing/suit/space/void/refurb/mercenary - //BEGIN: Space for additional downstream variants - //VOREStation Addition Start - if("Manager") - parent_helmet = /obj/item/clothing/head/helmet/space/void/captain - parent_suit = /obj/item/clothing/suit/space/void/captain - if("Prototype") - parent_helmet = /obj/item/clothing/head/helmet/space/void/security/prototype - parent_suit = /obj/item/clothing/suit/space/void/security/prototype - if("Talon Crew") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/talon - if("Talon Engineering") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/engineering/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/engineering/talon - if("Talon Medical (Bubble Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/medical/alt/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/medical/talon - if("Talon Medical (Closed Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/medical/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/medical/talon - if("Talon Marine") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/marine/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/marine/talon - if("Talon Officer") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/officer/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/officer/talon - if("Talon Pilot (Bubble Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/pilot/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/pilot/talon - if("Talon Pilot (Closed Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/pilot/alt/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/pilot/talon - if("Talon Research (Bubble Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/research/alt/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/research/talon - if("Talon Research (Closed Helm)") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/research/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/research/talon - if("Talon Mercenary") - parent_helmet = /obj/item/clothing/head/helmet/space/void/refurb/mercenary/talon - parent_suit = /obj/item/clothing/suit/space/void/refurb/mercenary/talon - //VOREStation Addition End - //END: downstream variant space - if(target_species) - //Only run these checks if they have a sprite sheet defined, otherwise they use human's anyways, and there is almost definitely a sprite. - if((helmet!=null&&(target_species in helmet.sprite_sheets_obj))||(suit!=null&&(target_species in suit.sprite_sheets_obj))) - //Making sure all of our items have the sprites to be refitted. - var/helmet_check = ((helmet!=null && (initial(parent_helmet.icon_state) in icon_states(helmet.sprite_sheets_obj[target_species],1))) || helmet==null) - //If the helmet exists, only return true if there's also sprites for it. If the helmet doesn't exist, return true. - var/suit_check = ((suit!=null && (initial(parent_suit.icon_state) in icon_states(suit.sprite_sheets_obj[target_species],1))) || suit==null) - var/suit_helmet_check = ((suit!=null && suit.helmet!=null && (initial(parent_helmet.icon_state) in icon_states(suit.helmet.sprite_sheets_obj[target_species],1))) || suit==null || suit.helmet==null) - if(helmet_check && suit_check && suit_helmet_check) - if(helmet) - helmet.refit_for_species(target_species) - if(suit) - suit.refit_for_species(target_species) - if(suit.helmet) - suit.helmet.refit_for_species(target_species) - else - //If they don't, alert the user and stop here. - T.visible_message("[bicon(src)]Unable to apply specified cosmetics with specified species. Please try again with a different species or cosmetic option selected.") - return - else - if(helmet) - helmet.refit_for_species(target_species) - if(suit) - suit.refit_for_species(target_species) - if(suit.helmet) - suit.helmet.refit_for_species(target_species) - //look at this! isn't it beautiful? -KK (well ok not beautiful but it's a lot cleaner) - if(helmet && target_department != "No Change") - var/obj/item/clothing/H = new parent_helmet - helmet.name = "refitted [initial(parent_helmet.name)]" - helmet.desc = initial(parent_helmet.desc) - helmet.icon_state = initial(parent_helmet.icon_state) - helmet.item_state = initial(parent_helmet.item_state) - helmet.light_overlay = initial(parent_helmet.light_overlay) - helmet.item_state_slots = H.item_state_slots - qdel(H) + + // Helmet to new paint + if(target_department.can_refit_helmet(helmet)) + target_department.do_refit_helmet(helmet) + // Suit to new paint + if(target_department.can_refit_suit(suit)) + target_department.do_refit_suit(suit) + // Attached voidsuit helmet to new paint + if(target_department.can_refit_helmet(suit?.helmet)) + target_department.do_refit_helmet(suit.helmet) - if(suit && target_department != "No Change") - var/obj/item/clothing/S = new parent_suit - suit.name = "refitted [initial(parent_suit.name)]" - suit.desc = initial(parent_suit.desc) - suit.icon_state = initial(parent_suit.icon_state) - suit.item_state = initial(parent_suit.item_state) - suit.item_state_slots = S.item_state_slots - qdel(S) - - //can't believe I forgot to fix this- now helmets will properly cycle if they're attached to a suit -KK - if(suit.helmet && target_department != "No Change") - var/obj/item/clothing/AH = new parent_helmet - suit.helmet.name = "refitted [initial(parent_helmet.name)]" - suit.helmet.desc = initial(parent_helmet.desc) - suit.helmet.icon_state = initial(parent_helmet.icon_state) - suit.helmet.item_state = initial(parent_helmet.item_state) - suit.helmet.light_overlay = initial(parent_helmet.light_overlay) - suit.helmet.item_state_slots = AH.item_state_slots - qdel(AH) + // Species fitting for all 3 potential changes + if(target_species.can_refit_to(helmet, suit, suit?.helmet)) + target_species.do_refit_to(helmet, suit, suit?.helmet) + else + visible_message("[bicon(src)]Unable to apply specified cosmetics with specified species. Please try again with a different species or cosmetic option selected.") + return + \ No newline at end of file diff --git a/code/game/machinery/suit_storage_unit_vr.dm b/code/game/machinery/suit_storage_unit_vr.dm index 3a7a9b5b8b3..4337096a687 100644 --- a/code/game/machinery/suit_storage_unit_vr.dm +++ b/code/game/machinery/suit_storage_unit_vr.dm @@ -1,12 +1,7 @@ -/obj/machinery/suit_cycler - departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Emergency Medical Response","Crowd Control","Exploration","Pilot Blue","Pilot","Manager","Prototype","No Change") - species = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_VULPKANIN) - // Old Exploration is too WIP to use right now /obj/machinery/suit_cycler/exploration req_access = null req_one_access = list(access_explorer,access_medical_equip) - departments = list("Exploration","Field Medic","No Change") /obj/machinery/suit_cycler/pilot req_access = list(access_pilot) @@ -15,54 +10,46 @@ name = "Manager suit cycler" model_text = "Manager" req_access = list(access_captain) - departments = list("Manager","No Change") - -/obj/machinery/suit_cycler/captain/Initialize() //No Teshari Sprites - species -= SPECIES_TESHARI - return ..() + departments = list(/datum/suit_cycler_choice/department/captain) /obj/machinery/suit_cycler/prototype name = "Prototype suit cycler" model_text = "Prototype" req_access = list(access_hos) - departments = list("Prototype","No Change") - -/obj/machinery/suit_cycler/prototype/Initialize() //No Teshari Sprites - species -= SPECIES_TESHARI - return ..() + departments = list(/datum/suit_cycler_choice/department/prototype) /obj/machinery/suit_cycler/vintage/tcrew name = "Talon crew suit cycler" model_text = "Talon crew" req_access = list(access_talon) - departments = list("Talon Crew","No Change") + departments = list(/datum/suit_cycler_choice/department/talon/crew) /obj/machinery/suit_cycler/vintage/tpilot name = "Talon pilot suit cycler" model_text = "Talon pilot" req_access = list(access_talon) - departments = list("Talon Pilot (Bubble Helm)","Talon Pilot (Closed Helm)","No Change") + departments = list(/datum/suit_cycler_choice/department/talon/pilot) /obj/machinery/suit_cycler/vintage/tengi name = "Talon engineer suit cycler" model_text = "Talon engineer" req_access = list(access_talon) - departments = list("Talon Engineering","No Change") + departments = list(/datum/suit_cycler_choice/department/talon/eng) /obj/machinery/suit_cycler/vintage/tguard name = "Talon guard suit cycler" model_text = "Talon guard" req_access = list(access_talon) - departments = list("Talon Marine","Talon Mercenary","No Change") + departments = list(/datum/suit_cycler_choice/department/talon/marine) /obj/machinery/suit_cycler/vintage/tmedic name = "Talon doctor suit cycler" model_text = "Talon doctor" req_access = list(access_talon) - departments = list("Talon Medical (Bubble Helm)","Talon Medical (Closed Helm)","No Change") + departments = list(/datum/suit_cycler_choice/department/talon/med) /obj/machinery/suit_cycler/vintage/tcaptain name = "Talon captain suit cycler" model_text = "Talon captain" req_access = list(access_talon) - departments = list("Talon Officer","No Change") \ No newline at end of file + departments = list(/datum/suit_cycler_choice/department/talon/officer) \ No newline at end of file diff --git a/code/game/machinery/supplybeacon.dm b/code/game/machinery/supplybeacon.dm index c4d90818fcb..8c1bc87f3f2 100644 --- a/code/game/machinery/supplybeacon.dm +++ b/code/game/machinery/supplybeacon.dm @@ -26,8 +26,8 @@ icon = 'icons/obj/supplybeacon.dmi' icon_state = "beacon" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE layer = MOB_LAYER - 0.1 stat = 0 diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 2c59ec8b201..0d1f46b4cc7 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -10,8 +10,8 @@ desc = "This looks suspicious..." icon = 'icons/obj/device.dmi' icon_state = "syndbeacon" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/temptext = "" var/selfdestructing = 0 var/charges = 1 @@ -77,8 +77,8 @@ icon = 'icons/obj/singularity.dmi' icon_state = "beacon" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE layer = MOB_LAYER - 0.1 //so people can't hide it and it's REALLY OBVIOUS stat = 0 @@ -125,7 +125,7 @@ return if(anchored) - anchored = 0 + anchored = FALSE to_chat(user, "You unscrew the beacon from the floor.") playsound(src, W.usesound, 50, 1) disconnect_from_network() @@ -134,7 +134,7 @@ if(!connect_to_network()) to_chat(user, "This device must be placed over an exposed cable.") return - anchored = 1 + anchored = TRUE to_chat(user, "You screw the beacon to the floor and attach the cable.") playsound(src, W.usesound, 50, 1) return diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 813c756ab40..6cf3d624c71 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -15,8 +15,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "broadcaster" desc = "A dish-shaped machine used to broadcast processed subspace signals." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 25 machinetype = 5 @@ -135,10 +135,10 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept icon = 'icons/obj/stationobjs.dmi' icon_state = "allinone" desc = "A compact machine used for portable subspace telecommuniations processing." - density = 1 + density = TRUE use_power = USE_POWER_IDLE idle_power_usage = 20 - anchored = 1 + anchored = TRUE machinetype = 6 produces_heat = 0 var/intercept = 0 // if nonzero, broadcasts all messages to syndicate channel diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index b355d922609..c91881f0c32 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -83,12 +83,11 @@ data["linked"] = linked var/list/filter = list() - if(LAZYLEN(freq_listening)) - for(var/x in freq_listening) - filter.Add(list(list( - "name" = "[format_frequency(x)]", - "freq" = x, - ))) + for(var/x in freq_listening) + filter.Add(list(list( + "name" = "[format_frequency(x)]", + "freq" = x, + ))) data["filter"] = filter return data diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index 8d11f99619e..8c8b2fc6f7d 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -28,7 +28,7 @@ id = "CentCom Relay" hide = 1 toggled = 1 - //anchored = 1 + //anchored = TRUE //use_power = 0 //idle_power_usage = 0 produces_heat = 0 diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index fb4c92ab7b6..df8188d1a38 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -250,8 +250,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "broadcast receiver" desc = "This machine has a dish-like shape and green lights. It is designed to detect and process subspace radio activity." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 600 machinetype = 1 @@ -338,8 +338,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "hub" desc = "A mighty piece of hardware used to send/receive massive amounts of data." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 1600 machinetype = 7 @@ -375,8 +375,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "relay" desc = "A mighty piece of hardware used to send massive amounts of data far away." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 600 machinetype = 8 @@ -435,8 +435,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "bus" desc = "A mighty piece of hardware used to send massive amounts of data quickly." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 1000 machinetype = 2 @@ -491,8 +491,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "processor" desc = "This machine is used to process large quantities of information." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 600 machinetype = 3 @@ -533,8 +533,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon icon_state = "comm_server" desc = "A machine used to store data and network statistics." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 300 machinetype = 4 diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index cc8c2628034..29e8b51693c 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -122,8 +122,8 @@ /obj/machinery/teleport name = "teleport" icon = 'icons/obj/stationobjs.dmi' - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE var/lockeddown = 0 ////// diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index 621feae713d..43bc97c20a2 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/recycling.dmi' icon_state = "separator-AO1" layer = MOB_LAYER+1 // Overhead - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/transform_dead = 0 var/transform_standing = 0 diff --git a/code/game/machinery/transportpod.dm b/code/game/machinery/transportpod.dm index 145950291cf..a925a616fda 100644 --- a/code/game/machinery/transportpod.dm +++ b/code/game/machinery/transportpod.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/structures.dmi' icon_state = "borg_pod_opened" - density = 1 //thicc - anchored = 1 + density = TRUE //thicc + anchored = TRUE use_power = USE_POWER_OFF var/in_transit = 0 diff --git a/code/game/machinery/virtual_reality/vr_console.dm b/code/game/machinery/virtual_reality/vr_console.dm index 0f10b19e7fc..694d08fa139 100644 --- a/code/game/machinery/virtual_reality/vr_console.dm +++ b/code/game/machinery/virtual_reality/vr_console.dm @@ -6,8 +6,8 @@ var/base_state = "syndipod_" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/vr_sleeper var/mob/living/carbon/human/occupant = null var/mob/living/carbon/human/avatar = null diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index eff908c8982..b57a7a3ce8c 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -3,8 +3,8 @@ desc = "Not a hiding place. Unfit for pets." icon = 'icons/obj/machines/washing_machine_vr.dmi' //VOREStation Edit icon_state = "wm_1" //VOREStation Edit - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE clicksound = "button" clickvol = 40 diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 81c720bacdb..cab7caba172 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/device.dmi' icon_state = "syndbeacon" use_power = USE_POWER_OFF - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/charges = 1 var/insisting = 0 diff --git a/code/game/mecha/combat/gorilla.dm b/code/game/mecha/combat/gorilla.dm index fd62870d556..cb9b00ecf26 100644 --- a/code/game/mecha/combat/gorilla.dm +++ b/code/game/mecha/combat/gorilla.dm @@ -167,4 +167,4 @@ icon_state = "pzrwreck" plane = MOB_PLANE pixel_x = -16 - anchored = 1 // It's fucking huge. You aren't moving it. + anchored = TRUE // It's fucking huge. You aren't moving it. diff --git a/code/game/mecha/equipment/tools/clamp.dm b/code/game/mecha/equipment/tools/clamp.dm index 70f46ee35f5..1df39a41786 100644 --- a/code/game/mecha/equipment/tools/clamp.dm +++ b/code/game/mecha/equipment/tools/clamp.dm @@ -78,13 +78,13 @@ chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.") set_ready_state(FALSE) chassis.use_power(energy_drain) - O.anchored = 1 + O.anchored = TRUE var/T = chassis.loc if(do_after_cooldown(target)) if(T == chassis.loc && src == chassis.selected) cargo_holder.cargo += O O.loc = chassis - O.anchored = 0 + O.anchored = FALSE occupant_message("[target] succesfully loaded.") log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") else @@ -139,13 +139,13 @@ chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.") set_ready_state(FALSE) chassis.use_power(energy_drain) - O.anchored = 1 + O.anchored = TRUE var/T = chassis.loc if(do_after_cooldown(target)) if(T == chassis.loc && src == chassis.selected) cargo_holder.cargo += O O.loc = chassis - O.anchored = 0 + O.anchored = FALSE chassis.occupant_message("[target] succesfully loaded.") chassis.log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") else diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index dce2c3c9db8..26c57989494 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -3,8 +3,8 @@ desc = "A mech recharger, built into the floor." icon = 'icons/mecha/mech_bay.dmi' icon_state = "recharge_floor" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE layer = TURF_LAYER + 0.1 circuit = /obj/item/weapon/circuitboard/mech_recharger diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 8b0fd0e60b5..d6d51fa9232 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -3,8 +3,8 @@ icon_state = "mechfab-idle" name = "Exosuit Fabricator" desc = "A machine used for construction of mechas." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 20 active_power_usage = 5000 diff --git a/code/game/mecha/mech_prosthetics.dm b/code/game/mecha/mech_prosthetics.dm index 4fa531cdcaf..d88b9585d57 100644 --- a/code/game/mecha/mech_prosthetics.dm +++ b/code/game/mecha/mech_prosthetics.dm @@ -3,8 +3,8 @@ icon_state = "prosfab" name = "Prosthetics Fabricator" desc = "A machine used for construction of prosthetics." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 20 active_power_usage = 5000 diff --git a/code/game/mecha/mech_sensor.dm b/code/game/mecha/mech_sensor.dm index 33147e0ab11..59a611fa812 100644 --- a/code/game/mecha/mech_sensor.dm +++ b/code/game/mecha/mech_sensor.dm @@ -3,8 +3,8 @@ icon_state = "airlock_sensor_off" name = "mechatronic sensor" desc = "Regulates mech movement." - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE throwpass = 1 use_power = USE_POWER_IDLE layer = ON_WINDOW_LAYER diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index d472b733635..01175eb3b08 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -26,10 +26,10 @@ desc = "Exosuit" description_info = "Alt click to strafe." icon = 'icons/mecha/mecha.dmi' - density = 1 //Dense. To raise the heat. + density = TRUE //Dense. To raise the heat. opacity = 1 //Opaque. Menacing. - anchored = 1 //No pulling around. - unacidable = 1 //And no deleting hoomans inside + anchored = TRUE //No pulling around. + unacidable = TRUE //And no deleting hoomans inside layer = MOB_LAYER //Icon draw layer infra_luminosity = 15 //Byond implementation is bugged. var/initial_icon = null //Mech type for resetting icon. Only used for reskinning kits (see custom items) @@ -933,10 +933,10 @@ . = ..(obstacle) return if(istype(O, /obj/effect/portal)) //derpfix - src.anchored = 0 //I have no idea what this really fix. + src.anchored = FALSE //I have no idea what this really fix. O.Crossed(src) spawn(0)//countering portal teleport spawn(0), hurr - src.anchored = 1 + src.anchored = TRUE else if(O.anchored) obstacle.Bumped(src) else @@ -2688,7 +2688,7 @@ O.canmove = 1 O.name = AI.name O.real_name = AI.real_name - O.anchored = 1 + O.anchored = TRUE O.aiRestorePowerRoutine = 0 O.control_disabled = 1 // Can't control things remotely if you're stuck in a card! O.laws = AI.laws diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 467145309bc..82a83e601e8 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -91,7 +91,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/ripley(const_holder) const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "ripley0" - const_holder.density = 1 + const_holder.density = TRUE const_holder.overlays.len = 0 spawn() qdel(src) @@ -303,7 +303,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/gygax(const_holder) const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "gygax0" - const_holder.density = 1 + const_holder.density = TRUE spawn() qdel(src) return @@ -587,7 +587,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/serenity(const_holder) const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "gygax0" - const_holder.density = 1 + const_holder.density = TRUE spawn() qdel(src) return @@ -873,7 +873,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/firefighter(const_holder) const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "fireripley0" - const_holder.density = 1 + const_holder.density = TRUE spawn() qdel(src) return @@ -1097,7 +1097,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/durand(const_holder) const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "durand0" - const_holder.density = 1 + const_holder.density = TRUE spawn() qdel(src) return @@ -1381,7 +1381,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/odysseus(const_holder) const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "odysseus0" - const_holder.density = 1 + const_holder.density = TRUE spawn() qdel(src) return @@ -1594,7 +1594,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/phazon(const_holder) const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "phazon0" - const_holder.density = 1 + const_holder.density = TRUE spawn() qdel(src) return @@ -1876,7 +1876,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/janus(const_holder) const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "janus0" - const_holder.density = 1 + const_holder.density = TRUE spawn() qdel(src) return diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 7ca1e753fb9..5dbee5556bc 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -7,8 +7,8 @@ name = "Exosuit wreckage" desc = "Remains of some unfortunate mecha. Completely unrepairable." icon = 'icons/mecha/mecha.dmi' - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE opacity = 0 var/list/welder_salvage = list(/obj/item/stack/material/plasteel,/obj/item/stack/material/steel,/obj/item/stack/rods) var/list/wirecutters_salvage = list(/obj/item/stack/cable_coil) diff --git a/code/game/mecha/micro/mecha_construction_paths_vr.dm b/code/game/mecha/micro/mecha_construction_paths_vr.dm index 7019c643995..60d8d2d3b7d 100644 --- a/code/game/mecha/micro/mecha_construction_paths_vr.dm +++ b/code/game/mecha/micro/mecha_construction_paths_vr.dm @@ -22,7 +22,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/polecat(const_holder) const_holder.icon = 'icons/mecha/mech_construction_vr.dmi' const_holder.icon_state = "polecat0" - const_holder.density = 1 + const_holder.density = TRUE const_holder.overlays.len = 0 spawn() qdel(src) @@ -303,7 +303,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/gopher(const_holder) const_holder.icon = 'icons/mecha/mech_construction_vr.dmi' const_holder.icon_state = "gopher0" - const_holder.density = 1 + const_holder.density = TRUE const_holder.overlays.len = 0 spawn() qdel(src) @@ -512,7 +512,7 @@ const_holder.construct = new /datum/construction/reversible/mecha/weasel(const_holder) const_holder.icon = 'icons/mecha/mech_construction_vr.dmi' const_holder.icon_state = "weasel0" - const_holder.density = 1 + const_holder.density = TRUE const_holder.overlays.len = 0 spawn() qdel(src) diff --git a/code/game/mecha/micro/micro.dm b/code/game/mecha/micro/micro.dm index 97f86f74727..a30af28aa3e 100644 --- a/code/game/mecha/micro/micro.dm +++ b/code/game/mecha/micro/micro.dm @@ -9,7 +9,7 @@ /obj/mecha/micro icon = 'icons/mecha/micro.dmi' force = 10 //still a robot - anchored = 0 //light enough to push and pull, but you still can't just walk past them. Like people on non-help. + anchored = FALSE //light enough to push and pull, but you still can't just walk past them. Like people on non-help. opacity = 0 //small enough to see around, like people. step_energy_drain = 2 // They're light and small. A compact is gonna get better MPG than a truck. var/melee_cooldown = 10 diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 7b9aacf0911..5e6f0165615 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -1,7 +1,7 @@ /atom/movable - var/can_buckle = 0 + var/can_buckle = FALSE var/buckle_movable = 0 var/buckle_dir = 0 var/buckle_lying = -1 //bed-like behavior, forces mob.lying = buckle_lying if != -1 @@ -54,6 +54,10 @@ if(!can_buckle_check(M, forced)) return FALSE + if(M == src) + stack_trace("Recursive buckle warning: [M] being buckled to self.") + return + M.buckled = src M.facing_dir = null M.set_dir(buckle_dir ? buckle_dir : dir) @@ -176,8 +180,7 @@ return M /atom/movable/proc/handle_buckled_mob_movement(atom/old_loc, direct, movetime) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) if(!L.Move(loc, direct, movetime)) L.forceMove(loc, direct, movetime) L.last_move = last_move diff --git a/code/game/objects/effects/alien/aliens.dm b/code/game/objects/effects/alien/aliens.dm index 91aea937fff..50ad6ec2507 100644 --- a/code/game/objects/effects/alien/aliens.dm +++ b/code/game/objects/effects/alien/aliens.dm @@ -4,7 +4,6 @@ * Resin * Weeds * Acid - * Egg */ /* @@ -23,9 +22,9 @@ desc = "Looks like some kind of slimy growth." icon_state = "resin" - density = 1 + density = TRUE opacity = 1 - anchored = 1 + anchored = TRUE can_atmos_pass = ATMOS_PASS_NO var/health = 200 //var/mob/living/affecting = null @@ -54,7 +53,7 @@ /obj/effect/alien/resin/proc/healthcheck() if(health <=0) - density = 0 + density = FALSE qdel(src) return @@ -163,8 +162,8 @@ name = "growth" desc = "Weird organic growth." icon_state = "weeds" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE plane = TURF_PLANE layer = ABOVE_TURF_LAYER @@ -204,6 +203,7 @@ layer = ABOVE_TURF_LAYER+0.01 light_range = NODERANGE light_on = TRUE + light_color = "#673972" var/node_range = NODERANGE var/set_color = "#321D37" @@ -294,8 +294,7 @@ for(var/obj/effect/alien/weeds/W in orange(node_range, src)) nearby_weeds |= W - for(var/nbw in nearby_weeds) - var/obj/effect/alien/weeds/W = nbw + for(var/obj/effect/alien/weeds/W as anything in nearby_weeds) if(!W.linked_node) W.linked_node = src @@ -319,7 +318,7 @@ /obj/effect/alien/weeds/attackby(var/obj/item/weapon/W, var/mob/user) user.setClickCooldown(user.get_attack_speed(W)) - if(W.attack_verb.len) + if(LAZYLEN(W.attack_verb)) visible_message("\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]") else visible_message("\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]") @@ -374,9 +373,9 @@ desc = "Burbling corrossive stuff. I wouldn't want to touch it." icon_state = "acid" - density = 0 + density = FALSE opacity = 0 - anchored = 1 + anchored = TRUE var/atom/target var/ticks = 0 @@ -422,129 +421,4 @@ visible_message("[src.target] begins to crumble under the acid!") spawn(rand(150, 200)) tick() -/* - * Egg - */ -/var/const //for the status var - BURST = 0 - BURSTING = 1 - GROWING = 2 - GROWN = 3 - - MIN_GROWTH_TIME = 1800 //time it takes to grow a hugger - MAX_GROWTH_TIME = 3000 - -/obj/effect/alien/egg - desc = "It looks like a weird egg" - name = "egg" -// icon_state = "egg_growing" // So the egg looks 'grown', even though it's not. - icon_state = "egg" - density = 0 - anchored = 1 - - var/health = 100 - var/status = BURST //can be GROWING, GROWN or BURST; all mutually exclusive - -/obj/effect/alien/egg/New() -/* - if(config.aliens_allowed) - ..() - spawn(rand(MIN_GROWTH_TIME,MAX_GROWTH_TIME)) - Grow() - else - qdel(src) -*/ -/obj/effect/alien/egg/attack_hand(user as mob) - - var/mob/living/carbon/M = user - if(!istype(M) || !(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs)) - return attack_hand(user) - - switch(status) - if(BURST) - to_chat(user, "You clear the hatched egg.") - qdel(src) - return -/* if(GROWING) - to_chat(user, "The child is not developed yet.") - return - if(GROWN) - to_chat(user, "You retrieve the child.") - Burst(0) - return - -/obj/effect/alien/egg/proc/GetFacehugger() // Commented out for future edit. - return locate(/obj/item/clothing/mask/facehugger) in contents - -/obj/effect/alien/egg/proc/Grow() - icon_state = "egg" -// status = GROWN - status = BURST -// new /obj/item/clothing/mask/facehugger(src) - return -*/ -/obj/effect/alien/egg/proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining - if(status == GROWN || status == GROWING) -// var/obj/item/clothing/mask/facehugger/child = GetFacehugger() - icon_state = "egg_hatched" -/* flick("egg_opening", src) - status = BURSTING - spawn(15) - status = BURST - child.loc = get_turf(src) - - if(kill && istype(child)) - child.Die() - else - for(var/mob/M in range(1,src)) - if(CanHug(M)) - child.Attach(M) - break -*/ -/obj/effect/alien/egg/bullet_act(var/obj/item/projectile/Proj) - health -= Proj.damage - ..() - healthcheck() - return - -/obj/effect/alien/egg/attack_generic(var/mob/user, var/damage, var/attack_verb) - visible_message("[user] [attack_verb] the [src]!") - user.do_attack_animation(src) - health -= damage - healthcheck() - return - -/obj/effect/alien/egg/take_damage(var/damage) - health -= damage - healthcheck() - return - - -/obj/effect/alien/egg/attackby(var/obj/item/weapon/W, var/mob/user) - if(health <= 0) - return - if(W.attack_verb.len) - src.visible_message("\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]") - else - src.visible_message("\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]") - var/damage = W.force / 4.0 - - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - - if(WT.remove_fuel(0, user)) - damage = 15 - playsound(src, 'sound/items/Welder.ogg', 100, 1) - - src.health -= damage - src.healthcheck() - - -/obj/effect/alien/egg/proc/healthcheck() - if(health <= 0) - Burst() - -/obj/effect/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > 500 + T0C) - health -= 5 - healthcheck() \ No newline at end of file +//Xenomorph Effect egg removed, replaced with Structure Egg. \ No newline at end of file diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm index 9379234ca68..02866227058 100644 --- a/code/game/objects/effects/bump_teleporter.dm +++ b/code/game/objects/effects/bump_teleporter.dm @@ -7,8 +7,8 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list() var/id = null //id of this bump_teleporter. var/id_target = null //id of bump_teleporter which this moves you to. invisibility = 101 //nope, can't see this - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE opacity = 0 /obj/effect/bump_teleporter/New() diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm index 993cbc6edc1..5dad8accc43 100644 --- a/code/game/objects/effects/chem/foam.dm +++ b/code/game/objects/effects/chem/foam.dm @@ -6,8 +6,8 @@ name = "foam" icon_state = "foam" opacity = 0 - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE layer = OBJ_LAYER + 0.9 mouse_opacity = 0 animate_movement = 0 @@ -134,9 +134,9 @@ /obj/structure/foamedmetal icon = 'icons/effects/effects.dmi' icon_state = "metalfoam" - density = 1 + density = TRUE opacity = 1 // changed in New() - anchored = 1 + anchored = TRUE name = "foamed metal" desc = "A lightweight foamed metal wall." can_atmos_pass = ATMOS_PASS_NO @@ -147,7 +147,7 @@ update_nearby_tiles(1) /obj/structure/foamedmetal/Destroy() - density = 0 + density = FALSE update_nearby_tiles(1) return ..() diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index deb8ec8a0cb..2ea550d66d7 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -4,7 +4,7 @@ icon_state = "fuel" plane = DIRTY_PLANE layer = DIRTY_LAYER - anchored = 1 + anchored = TRUE var/amount = 1 generic_filth = TRUE persistent = FALSE @@ -51,7 +51,7 @@ /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel icon_state = "mustard" - anchored = 0 + anchored = FALSE /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/New(newLoc, amt = 1, d = 0) set_dir(d) //Setting this direction means you won't get torched by your own flamethrower. diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 7692dd334e0..b32777c65ab 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -8,8 +8,8 @@ var/global/list/image/splatter_cache=list() desc = "It's thick and gooey. Perhaps it's the chef's cooking?" var/drydesc = "It's dry and crusty. Someone is not doing their job." gender = PLURAL - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE plane = BLOOD_PLANE layer = BLOOD_DECAL_LAYER icon = 'icons/effects/blood.dmi' @@ -173,8 +173,8 @@ var/global/list/image/splatter_cache=list() name = "gibs" desc = "They look bloody and gruesome." gender = PLURAL - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/blood.dmi' icon_state = "gibbl5" random_icon_states = list("gib1", "gib2", "gib3", "gib5", "gib6") @@ -229,8 +229,8 @@ var/global/list/image/splatter_cache=list() name = "mucus" desc = "Disgusting mucus." gender = PLURAL - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/blood.dmi' icon_state = "mucus" random_icon_states = list("mucus") diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 5f980bfb3c5..84f228c6abe 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -2,8 +2,8 @@ name = "clutter" desc = "Someone should clean that up." gender = PLURAL - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/obj/objects.dmi' icon_state = "shards" @@ -13,7 +13,7 @@ gender = PLURAL icon = 'icons/obj/objects.dmi' icon_state = "ash" - anchored = 1 + anchored = TRUE /obj/effect/decal/cleanable/ash/attack_hand(mob/user as mob) to_chat(user, "[src] sifts through your fingers.") @@ -32,8 +32,8 @@ name = "dirt" desc = "Someone should clean that up." gender = PLURAL - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/effects.dmi' icon_state = "dirt" mouse_opacity = 0 @@ -42,8 +42,8 @@ name = "flour" desc = "It's still good. Four second rule!" gender = PLURAL - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/effects.dmi' icon_state = "flour" @@ -51,8 +51,8 @@ name = "glowing goo" desc = "Jeez. I hope that's not for lunch." gender = PLURAL - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE light_range = 1 icon = 'icons/effects/effects.dmi' icon_state = "greenglow" @@ -60,8 +60,8 @@ /obj/effect/decal/cleanable/cobweb name = "cobweb" desc = "Somebody should remove that." - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE plane = OBJ_PLANE icon = 'icons/effects/effects.dmi' icon_state = "cobweb1" @@ -69,8 +69,8 @@ /obj/effect/decal/cleanable/molten_item name = "gooey grey mass" desc = "It looks like a melted... something." - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE plane = OBJ_PLANE icon = 'icons/obj/chemical.dmi' icon_state = "molten" @@ -78,8 +78,8 @@ /obj/effect/decal/cleanable/cobweb2 name = "cobweb" desc = "Somebody should remove that." - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE plane = OBJ_PLANE icon = 'icons/effects/effects.dmi' icon_state = "cobweb2" @@ -89,8 +89,8 @@ name = "vomit" desc = "Gosh, how unpleasant." gender = PLURAL - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/blood.dmi' icon_state = "vomit_1" random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4") @@ -99,32 +99,32 @@ /obj/effect/decal/cleanable/tomato_smudge name = "tomato smudge" desc = "It's red." - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3") /obj/effect/decal/cleanable/egg_smudge name = "smashed egg" desc = "Seems like this one won't hatch." - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3") /obj/effect/decal/cleanable/pie_smudge //honk name = "smashed pie" desc = "It's pie cream from a cream pie." - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("smashed_pie") /obj/effect/decal/cleanable/fruit_smudge name = "smudge" desc = "Some kind of fruit smear." - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/effects/blood.dmi' icon_state = "mfloor1" random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index 62c8d894708..2915213d8a5 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -129,7 +129,7 @@ name = "poster" desc = "A large piece of space-resistant printed paper. " icon = 'icons/obj/contraband_vr.dmi' //VOREStation Edit - anchored = 1 + anchored = TRUE var/serial_number //Will hold the value of src.loc if nobody initialises it var/poster_type //So mappers can specify a desired poster var/ruined = 0 diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 8f92ea00895..f983a480fff 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/rune.dmi' plane = DIRTY_PLANE layer = DIRTY_LAYER - anchored = 1 + anchored = TRUE /obj/effect/decal/cleanable/crayon/New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune") ..() diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index f3a75ce3c28..3e5c46e1347 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -4,11 +4,11 @@ icon = 'icons/mob/screen1.dmi' icon_state = "arrow" plane = ABOVE_PLANE - anchored = 1 + anchored = TRUE mouse_opacity = 0 // Used for spray that you spray at walls, tables, hydrovats etc /obj/effect/decal/spraystill - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE plane = ABOVE_PLANE \ No newline at end of file diff --git a/code/game/objects/effects/decals/posters/posters.dm b/code/game/objects/effects/decals/posters/posters.dm index 5a4abf4d3f7..9f3496b4ff6 100644 --- a/code/game/objects/effects/decals/posters/posters.dm +++ b/code/game/objects/effects/decals/posters/posters.dm @@ -117,7 +117,7 @@ desc = "A large piece of space-resistant printed paper. " icon = 'icons/obj/contraband_vr.dmi' //VOREStation Edit icon_state = "poster" //VOREStation Edit - anchored = 1 + anchored = TRUE var/decl/poster/poster_decl = null var/target_poster_decl_path = /decl/poster var/roll_type = /obj/item/poster diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index 74525865435..95adae5e4b8 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -3,7 +3,7 @@ gender = PLURAL icon = 'icons/effects/blood.dmi' icon_state = "remains" - anchored = 0 + anchored = FALSE /obj/effect/decal/remains/human desc = "They look like human remains. They have a strange aura about them." diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 3665c77e918..8543c55a2b0 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -11,7 +11,7 @@ would spawn and follow the beaker, even if it is carried or thrown. name = "effect" icon = 'icons/effects/effects.dmi' mouse_opacity = 0 - unacidable = 1//So effect are not targeted by alien acid. + unacidable = TRUE//So effect are not targeted by alien acid. pass_flags = PASSTABLE | PASSGRILLE blocks_emissive = EMISSIVE_BLOCK_GENERIC light_on = TRUE @@ -60,7 +60,7 @@ steam.start() -- spawns the effect name = "steam" icon = 'icons/effects/effects.dmi' icon_state = "extinguish" - density = 0 + density = FALSE /datum/effect/effect/system/steam_spread/set_up(n = 3, c = 0, turf/loc) if(n > 10) @@ -98,7 +98,7 @@ steam.start() -- spawns the effect name = "sparks" icon_state = "sparks" var/amount = 6.0 - anchored = 1.0 + anchored = TRUE mouse_opacity = 0 /obj/effect/effect/sparks/Initialize() @@ -168,7 +168,7 @@ steam.start() -- spawns the effect name = "smoke" icon_state = "smoke" opacity = 1 - anchored = 0.0 + anchored = FALSE mouse_opacity = 0 var/amount = 6.0 var/time_to_live = 100 @@ -422,7 +422,7 @@ steam.start() -- spawns the effect /obj/effect/effect/ion_trails name = "ion trails" icon_state = "ion_trails" - anchored = 1.0 + anchored = TRUE /datum/effect/effect/system/ion_trail_follow var/turf/oldposition diff --git a/code/game/objects/effects/explosion_particles.dm b/code/game/objects/effects/explosion_particles.dm index 12a1e920201..449506197ad 100644 --- a/code/game/objects/effects/explosion_particles.dm +++ b/code/game/objects/effects/explosion_particles.dm @@ -3,7 +3,7 @@ icon = 'icons/effects/effects.dmi' icon_state = "explosion_particle" opacity = 1 - anchored = 1 + anchored = TRUE mouse_opacity = 0 /obj/effect/expl_particles/New() @@ -37,7 +37,7 @@ icon = 'icons/effects/96x96.dmi' icon_state = "explosion" opacity = 1 - anchored = 1 + anchored = TRUE mouse_opacity = 0 pixel_x = -32 pixel_y = -32 diff --git a/code/game/objects/effects/item_pickup_ghost.dm b/code/game/objects/effects/item_pickup_ghost.dm index 0944e2753ee..f23b8c8d8e0 100644 --- a/code/game/objects/effects/item_pickup_ghost.dm +++ b/code/game/objects/effects/item_pickup_ghost.dm @@ -1,5 +1,5 @@ /obj/effect/temporary_effect/item_pickup_ghost - anchored = 1 + anchored = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER mouse_opacity = 0//just in case something dumb happens diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index c462d3be888..ce1535601f1 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -2,9 +2,9 @@ name = "landmark" icon = 'icons/mob/screen1.dmi' icon_state = "x2" - anchored = 1.0 - unacidable = 1 - simulated = 0 + anchored = TRUE + unacidable = TRUE + simulated = FALSE invisibility = 100 var/delete_me = 0 @@ -24,7 +24,7 @@ return if("JoinLate") // Bit difference, since we need the spawn point to move. latejoin += src - simulated = 1 + simulated = TRUE // delete_me = 1 return if("JoinLateGateway") @@ -99,7 +99,7 @@ name = "start" icon = 'icons/mob/screen1.dmi' icon_state = "x" - anchored = 1.0 + anchored = TRUE /obj/effect/landmark/start/New() ..() @@ -117,12 +117,21 @@ else log_error("[type] mapped in but no using_map") +/obj/effect/landmark/hidden_level + delete_me = 1 +/obj/effect/landmark/hidden_level/Initialize() + . = ..() + if(using_map) + using_map.hidden_levels |= z + else + log_error("[type] mapped in but no using_map") + /obj/effect/landmark/virtual_reality name = "virtual_reality" icon = 'icons/mob/screen1.dmi' icon_state = "x" - anchored = 1.0 + anchored = TRUE /obj/effect/landmark/virtual_reality/New() ..() diff --git a/code/game/objects/effects/manifest.dm b/code/game/objects/effects/manifest.dm index ec45c7a0894..98d378faf5d 100644 --- a/code/game/objects/effects/manifest.dm +++ b/code/game/objects/effects/manifest.dm @@ -2,7 +2,7 @@ name = "manifest" icon = 'icons/mob/screen1.dmi' icon_state = "x" - unacidable = 1//Just to be sure. + unacidable = TRUE//Just to be sure. /obj/effect/manifest/New() diff --git a/code/game/objects/effects/map_effects/portal.dm b/code/game/objects/effects/map_effects/portal.dm index 094de59e2af..ede5cbdacac 100644 --- a/code/game/objects/effects/map_effects/portal.dm +++ b/code/game/objects/effects/map_effects/portal.dm @@ -50,8 +50,8 @@ when portals are shortly lived, or when portals are made to be obvious with spec opacity = TRUE plane = TURF_PLANE layer = ABOVE_TURF_LAYER - appearance_flags = PIXEL_SCALE|KEEP_TOGETHER // Removed TILE_BOUND so things not visible on the other side stay hidden from the viewer. - + appearance_flags = NONE + var/obj/effect/map_effect/portal/counterpart = null // The portal line or master that this is connected to, on the 'other side'. // Information used to apply `pixel_[x|y]` offsets so that the visuals line up. @@ -113,8 +113,7 @@ when portals are shortly lived, or when portals are made to be obvious with spec var/lowest_y = 0 // First pass is for finding the top right corner. - for(var/thing in vis_contents) - var/turf/T = thing + for(var/turf/T as anything in vis_contents) if(T.x > highest_x) highest_x = T.x if(T.y > highest_y) @@ -124,8 +123,7 @@ when portals are shortly lived, or when portals are made to be obvious with spec lowest_y = highest_y // Second one is for the bottom left corner. - for(var/thing in vis_contents) - var/turf/T = thing + for(var/turf/T as anything in vis_contents) if(T.x < lowest_x) lowest_x = T.x if(T.y < lowest_y) @@ -182,8 +180,7 @@ when portals are shortly lived, or when portals are made to be obvious with spec // Connects both sides of a portal together. /obj/effect/map_effect/portal/master/proc/find_counterparts() - for(var/thing in GLOB.all_portal_masters) - var/obj/effect/map_effect/portal/master/M = thing + for(var/obj/effect/map_effect/portal/master/M as anything in GLOB.all_portal_masters) if(M == src) continue if(M.counterpart) @@ -201,12 +198,11 @@ when portals are shortly lived, or when portals are made to be obvious with spec break if(!counterpart) - crash_with("Portal master [type] ([x],[y],[z]) could not find another portal master with a matching portal_id ([portal_id]).") + stack_trace("Portal master [type] ([x],[y],[z]) could not find another portal master with a matching portal_id ([portal_id]).") /obj/effect/map_effect/portal/master/proc/make_visuals() var/list/observed_turfs = list() - for(var/thing in portal_lines + src) - var/obj/effect/map_effect/portal/P = thing + for(var/obj/effect/map_effect/portal/P as anything in portal_lines + src) P.name = null P.icon_state = null @@ -230,8 +226,7 @@ when portals are shortly lived, or when portals are made to be obvious with spec // Shifts the portal's pixels in order to line up properly, as BYOND offsets the sprite when it holds multiple turfs inside `vis_contents`. // This undos the shift that BYOND did. /obj/effect/map_effect/portal/master/proc/apply_offset() - for(var/thing in portal_lines + src) - var/obj/effect/map_effect/portal/P = thing + for(var/obj/effect/map_effect/portal/P as anything in portal_lines + src) P.pixel_x = WORLD_ICON_SIZE * P.portal_distance_x P.pixel_y = WORLD_ICON_SIZE * P.portal_distance_y @@ -245,8 +240,7 @@ when portals are shortly lived, or when portals are made to be obvious with spec var/list/in_range = get_mobs_and_objs_in_view_fast(T, world.view, 0) var/list/mobs_to_relay = in_range["mobs"] - for(var/thing in mobs_to_relay) - var/mob/mob = thing + for(var/mob/mob as anything in mobs_to_relay) var/rendered = "[text]" mob.show_message(rendered) @@ -261,8 +255,7 @@ when portals are shortly lived, or when portals are made to be obvious with spec var/list/in_range = get_mobs_and_objs_in_view_fast(T, world.view, 0) var/list/mobs_to_relay = in_range["mobs"] - for(var/thing in mobs_to_relay) - var/mob/mob = thing + for(var/mob/mob as anything in mobs_to_relay) mob.show_message(rendered) ..() @@ -275,8 +268,7 @@ when portals are shortly lived, or when portals are made to be obvious with spec var/list/in_range = get_mobs_and_objs_in_view_fast(T, world.view, 0) var/list/mobs_to_relay = in_range["mobs"] - for(var/thing in mobs_to_relay) - var/mob/mob = thing + for(var/mob/mob as anything in mobs_to_relay) var/list/combined = mob.combine_message(message_pieces, verb, M) var/message = combined["formatted"] var/name_used = M.GetVoice() @@ -296,8 +288,7 @@ when portals are shortly lived, or when portals are made to be obvious with spec var/obj/effect/map_effect/portal/master/other_master = counterpart var/in_vis_contents = FALSE - for(var/thing in other_master.portal_lines + other_master) - var/obj/effect/map_effect/portal/P = thing + for(var/obj/effect/map_effect/portal/P as anything in other_master.portal_lines + other_master) if(P in true_turf.vis_locs) in_vis_contents = TRUE break diff --git a/code/game/objects/effects/map_effects/screen_shaker.dm b/code/game/objects/effects/map_effects/screen_shaker.dm index 29568242e5a..c8f5d413bd8 100644 --- a/code/game/objects/effects/map_effects/screen_shaker.dm +++ b/code/game/objects/effects/map_effects/screen_shaker.dm @@ -11,8 +11,7 @@ var/shake_strength = 1 // How much it shakes. /obj/effect/map_effect/interval/screen_shaker/trigger() - for(var/A in player_list) - var/mob/M = A + for(var/mob/M as anything in player_list) if(M.z == src.z && get_dist(src, M) <= shake_radius) shake_camera(M, shake_duration, shake_strength) ..() \ No newline at end of file diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index c49a4e06665..749797c433a 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -1,14 +1,14 @@ /obj/effect/mine name = "land mine" //The name and description are deliberately NOT modified, so you can't game the mines you find. desc = "A small explosive land mine." - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE icon = 'icons/obj/weapons.dmi' icon_state = "uglymine" var/triggered = 0 var/smoke_strength = 3 var/obj/item/weapon/mine/mineitemtype = /obj/item/weapon/mine - var/panel_open = 0 + var/panel_open = FALSE var/datum/wires/mines/wires = null var/camo_net = FALSE // Will the mine 'cloak' on deployment? diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index 725d26c1f5b..cd517098dc3 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -4,8 +4,8 @@ desc = "It's a ... present?" icon = 'icons/obj/items.dmi' icon_state = "strangepresent" - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE /obj/effect/temporary_effect name = "self deleting effect" diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 9fc898f8c81..c07f783e9e5 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -1,6 +1,6 @@ /obj/effect/overlay name = "overlay" - unacidable = 1 + unacidable = TRUE var/i_attached//Added for possible image attachments to objects. For hallucinations and the like. /obj/effect/overlay/beam//Not actually a projectile, just an effect. @@ -18,19 +18,19 @@ name = "Palm tree" icon = 'icons/misc/beach2.dmi' icon_state = "palm1" - density = 1 + density = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER - anchored = 1 + anchored = TRUE /obj/effect/overlay/palmtree_l name = "Palm tree" icon = 'icons/misc/beach2.dmi' icon_state = "palm2" - density = 1 + density = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER - anchored = 1 + anchored = TRUE /obj/effect/overlay/coconut name = "Coconuts" @@ -47,8 +47,8 @@ name = "wallrot" desc = "Ick..." icon = 'icons/effects/wallrot.dmi' - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER mouse_opacity = 0 @@ -62,7 +62,7 @@ name = "snow" icon = 'icons/turf/overlays.dmi' icon_state = "snow" - anchored = 1 + anchored = TRUE plane = TURF_PLANE // Todo: Add a version that gradually reaccumulates over time by means of alpha transparency. -Spades diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index c549a7e3d18..ae27e756957 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -5,12 +5,12 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal) desc = "Looks unstable. Best to test it with the clown." icon = 'icons/obj/stationobjs.dmi' icon_state = "portal" - density = 1 - unacidable = 1//Can't destroy energy portals. + density = TRUE + unacidable = TRUE//Can't destroy energy portals. var/failchance = 5 var/obj/item/target = null var/creator = null - anchored = 1.0 + anchored = TRUE /obj/effect/portal/Bumped(mob/M as mob|obj) if(istype(M,/mob) && !(istype(M,/mob/living))) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 65c8de0a617..ad8e57f0b1b 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -3,8 +3,8 @@ name = "web" desc = "it's stringy and sticky" icon = 'icons/effects/effects.dmi' - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE var/health = 15 //similar to weeds, but only barfed out by nurses manually @@ -23,7 +23,7 @@ /obj/effect/spider/attackby(var/obj/item/weapon/W, var/mob/user) user.setClickCooldown(user.get_attack_speed(W)) - if(W.attack_verb.len) + if(LAZYLEN(W.attack_verb)) visible_message("\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]") else visible_message("\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]") @@ -144,7 +144,7 @@ name = "spiderling" desc = "It never stays still for long." icon_state = "spiderling" - anchored = 0 + anchored = FALSE layer = HIDING_LAYER health = 3 var/last_itch = 0 diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 17d9a17123d..a9d13314289 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -5,7 +5,7 @@ var/stopper = 1 // stops throwers invisibility = 99 // nope cant see this shit plane = ABOVE_PLANE - anchored = 1 + anchored = TRUE icon = 'icons/mob/screen1.dmi' //VS Edit icon_state = "centermarker" //VS Edit diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 4d85b582fa3..7398633fc48 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -23,8 +23,7 @@ if(light_range > 0 && light_intensity > 0) var/list/turf/line = getline(starting.return_turf(), ending.return_turf()) tracing_line: - for(var/i in line) - var/turf/T = i + for(var/turf/T as anything in line) for(var/obj/effect/projectile_lighting/PL in T) if(PL.owner == instance_key) continue tracing_line diff --git a/code/game/objects/effects/zone_divider.dm b/code/game/objects/effects/zone_divider.dm index acab441d522..fa2ea82531c 100644 --- a/code/game/objects/effects/zone_divider.dm +++ b/code/game/objects/effects/zone_divider.dm @@ -4,8 +4,8 @@ icon = 'icons/mob/screen1.dmi' icon_state = "x3" invisibility = 101 //nope, can't see this - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE opacity = 0 can_atmos_pass = ATMOS_PASS_PROC diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index 3c5afc97158..fcec6803e4c 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -19,7 +19,7 @@ pulse.icon = 'icons/effects/effects.dmi' pulse.icon_state = "emppulse" pulse.name = "emp pulse" - pulse.anchored = 1 + pulse.anchored = TRUE spawn(20) qdel(pulse) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 8c527334c07..67d580dc245 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -21,7 +21,7 @@ // causeerrorheresoifixthis var/obj/item/master = null var/list/origin_tech = null //Used by R&D to determine what research bonuses it grants. - var/list/attack_verb = list() //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" + var/list/attack_verb //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" var/force = 0 var/heat_protection = 0 //flags which determine which body parts are protected from heat. Use the HEAD, UPPER_TORSO, LOWER_TORSO, etc. flags. See setup.dm @@ -49,9 +49,9 @@ var/permeability_coefficient = 1 // for chemicals/diseases var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up - var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N - var/list/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - var/list/armorsoak = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + var/canremove = TRUE //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N + var/list/armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) + var/list/armorsoak = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) var/list/allowed = null //suit storage stuff. var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers. var/zoomdevicename = null //name used for message when binoculars/scope is used @@ -63,12 +63,12 @@ //** These specify item/icon overrides for _slots_ - var/list/item_state_slots = list() //overrides the default item_state for particular slots. + var/list/item_state_slots //overrides the default item_state for particular slots. // Used to specify the icon file to be used when the item is worn. If not set the default icon for that slot will be used. // If icon_override or sprite_sheets are set they will take precendence over this, assuming they apply to the slot in question. // Only slot_l_hand/slot_r_hand are implemented at the moment. Others to be implemented as needed. - var/list/item_icons = list() + var/list/item_icons //** These specify item/icon overrides for _species_ @@ -79,11 +79,11 @@ ) If index term exists and icon_override is not set, this sprite sheet will be used. */ - var/list/sprite_sheets = list() + var/list/sprite_sheets // Species-specific sprite sheets for inventory sprites // Works similarly to worn sprite_sheets, except the alternate sprites are used when the clothing/refit_for_species() proc is called. - var/list/sprite_sheets_obj = list() + var/list/sprite_sheets_obj var/toolspeed = 1.0 // This is a multipler on how 'fast' a tool works. e.g. setting this to 0.5 will make the tool work twice as fast. var/attackspeed = DEFAULT_ATTACK_COOLDOWN // How long click delay will be when using this, in 1/10ths of a second. Checked in the user's get_attack_speed(). @@ -843,9 +843,9 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. return icon_override //2: species-specific sprite sheets (skipped for inhands) - if(LAZYLEN(sprite_sheets)) + if(LAZYLEN(sprite_sheets) && !inhands) var/sheet = sprite_sheets[body_type] - if(sheet && !inhands) + if(sheet) return sheet //3: slot-specific sprite sheets diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index f0d7fd8eb1d..70f5155b82d 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -27,7 +27,7 @@ open_sound = 'sound/items/zip.ogg' close_sound = 'sound/items/zip.ogg' var/item_path = /obj/item/bodybag - density = 0 + density = FALSE storage_capacity = (MOB_MEDIUM * 2) - 1 var/contains_body = 0 @@ -59,7 +59,7 @@ /obj/structure/closet/body_bag/close() if(..()) - density = 0 + density = FALSE return 1 return 0 diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 09cee5bb4c2..9a9e7ea0ae1 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -11,7 +11,7 @@ var/can_use = 1 var/obj/effect/dummy/chameleon/active_dummy = null var/saved_item = /obj/item/trash/cigbutt - var/saved_icon = 'icons/obj/clothing/masks.dmi' + var/saved_icon = 'icons/inventory/face/item.dmi' var/saved_icon_state = "cigbutt" var/saved_overlays @@ -86,8 +86,8 @@ /obj/effect/dummy/chameleon name = "" desc = "" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/can_move = 1 var/obj/item/device/chameleon/master = null diff --git a/code/game/objects/items/devices/communicator/UI_tgui.dm b/code/game/objects/items/devices/communicator/UI_tgui.dm index 989d68078ef..3759d23d4e8 100644 --- a/code/game/objects/items/devices/communicator/UI_tgui.dm +++ b/code/game/objects/items/devices/communicator/UI_tgui.dm @@ -24,8 +24,7 @@ cam_plane_masters = get_tgui_plane_masters() - for(var/plane in cam_plane_masters) - var/obj/screen/instance = plane + for(var/obj/screen/instance as anything in cam_plane_masters) instance.assigned_map = map_name instance.del_on_map_removal = FALSE instance.screen_loc = "[map_name]:CENTER" diff --git a/code/game/objects/items/devices/denecrotizer_vr.dm b/code/game/objects/items/devices/denecrotizer_vr.dm index 58815985506..8aeaba5b0d9 100644 --- a/code/game/objects/items/devices/denecrotizer_vr.dm +++ b/code/game/objects/items/devices/denecrotizer_vr.dm @@ -145,7 +145,7 @@ return FALSE if(!target.mind) user.visible_message("[user] gently presses [src] to [target]...", runemessage = "presses [src] to [target]") - if(do_after(user, revive_time, exclusive = 1, target = target)) + if(do_after(user, revive_time, exclusive = TASK_USER_EXCLUSIVE, target = target)) target.faction = user.faction target.revivedby = user.name target.ghostjoin = 1 @@ -166,7 +166,7 @@ /obj/item/device/denecrotizer/proc/ghostjoin_rez(mob/living/simple_mob/target, mob/living/user) user.visible_message("[user] gently presses [src] to [target]...", runemessage = "presses [src] to [target]") - if(do_after(user, revive_time, exclusive = 1, target = target)) + if(do_after(user, revive_time, exclusive = TASK_ALL_EXCLUSIVE, target = target)) target.faction = user.faction target.revivedby = user.name target.ai_holder.returns_home = FALSE @@ -190,7 +190,7 @@ /obj/item/device/denecrotizer/proc/basic_rez(mob/living/simple_mob/target, mob/living/user) //so medical can have a way to bring back people's pets or whatever, does not change any settings about the mob or offer it to ghosts. user.visible_message("[user] presses [src] to [target]...", runemessage = "presses [src] to [target]") - if(do_after(user, revive_time, exclusive = 1, target = target)) + if(do_after(user, revive_time, exclusive = TASK_ALL_EXCLUSIVE, target = target)) target.revive() target.sight = initial(target.sight) target.see_in_dark = initial(target.see_in_dark) diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index 99a5bc5fdda..2b7a31eb2c7 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -94,7 +94,7 @@ icon = 'icons/obj/device.dmi' icon_state = "geiger_wall" item_state = "geiger_wall" - anchored = 1 + anchored = TRUE scanning = 1 radiation_count = 0 plane = TURF_PLANE diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm index b221ff875c3..e92c45e151b 100644 --- a/code/game/objects/items/devices/hacktool.dm +++ b/code/game/objects/items/devices/hacktool.dm @@ -15,8 +15,7 @@ hack_state = new(src) /obj/item/device/multitool/hacktool/Destroy() - for(var/T in known_targets) - var/atom/target = T + for(var/atom/target as anything in known_targets) target.unregister(OBSERVER_EVENT_DESTROY, src) known_targets.Cut() qdel(hack_state) diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 809418b0232..cc902d3b6da 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -38,7 +38,7 @@ to_chat(user, "No exposed cable here to attach to.") return else - anchored = 1 + anchored = TRUE mode = 1 src.visible_message("[user] attaches [src] to the cable!") playsound(src, I.usesound, 50, 1) @@ -50,7 +50,7 @@ if (mode == 2) STOP_PROCESSING(SSobj, src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite STOP_PROCESSING_POWER_OBJECT(src) - anchored = 0 + anchored = FALSE mode = 0 src.visible_message("[user] detaches [src] from the cable!") set_light(0) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 258fa02632d..22cfcad31de 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -8,7 +8,7 @@ subspace_transmission = 1 canhear_range = 0 // can't hear headsets from very far away slot_flags = SLOT_EARS - sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/ears.dmi') + sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/ears/mob_teshari.dmi') var/translate_binary = 0 var/translate_hive = 0 diff --git a/code/game/objects/items/devices/radio/headset_vr.dm b/code/game/objects/items/devices/radio/headset_vr.dm index 1285ae0709a..59259dc7d45 100644 --- a/code/game/objects/items/devices/radio/headset_vr.dm +++ b/code/game/objects/items/devices/radio/headset_vr.dm @@ -22,8 +22,8 @@ icon_state = "nt_headset_alt" /obj/item/device/radio/headset - sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/ears.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/ears.dmi') + sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/ears/mob_teshari.dmi', + SPECIES_WEREBEAST = 'icons/inventory/ears/mob_vr_werebeast.dmi') /obj/item/device/radio/headset/mob_headset //Adminbus headset for simplemob shenanigans. name = "nonhuman radio receiver" diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index fb9f0dea794..cf3781f31b2 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/radio_vr.dmi' //VOREStation Edit - New Icon icon_state = "intercom" layer = ABOVE_WINDOW_LAYER - anchored = 1 + anchored = TRUE w_class = ITEMSIZE_LARGE canhear_range = 7 //VOREStation Edit flags = NOBLOODY @@ -147,7 +147,7 @@ A.pixel_y = pixel_y A.circuit = M A.set_dir(dir) - A.anchored = 1 + A.anchored = TRUE A.state = 2 A.update_icon() M.deconstruct(src) diff --git a/code/game/objects/items/devices/radio/jammer.dm b/code/game/objects/items/devices/radio/jammer.dm index ed527079042..ace17fa07d4 100644 --- a/code/game/objects/items/devices/radio/jammer.dm +++ b/code/game/objects/items/devices/radio/jammer.dm @@ -4,8 +4,7 @@ var/global/list/active_radio_jammers = list() var/turf/Tr = get_turf(radio) if(!Tr) return 0 //Nullspace radios don't get jammed. - for(var/jammer in active_radio_jammers) - var/obj/item/device/radio_jammer/J = jammer + for(var/obj/item/device/radio_jammer/J as anything in active_radio_jammers) var/turf/Tj = get_turf(J) if(J.on && Tj.z == Tr.z) //If we're on the same Z, it's worth checking. diff --git a/code/game/objects/items/devices/radio/radiopack.dm b/code/game/objects/items/devices/radio/radiopack.dm index 3bc222373fb..98cbd1064b4 100644 --- a/code/game/objects/items/devices/radio/radiopack.dm +++ b/code/game/objects/items/devices/radio/radiopack.dm @@ -2,7 +2,7 @@ name = "bluespace radio" desc = "A powerful radio that uses a tiny bluespace wormhole to send signals directly to subspace receivers and transmitters, bypassing the limitations of subspace." icon = 'icons/obj/device_vr.dmi' // VOREStation Edit - icon_override = 'icons/mob/back_vr.dmi' // VOREStation Edit + icon_override = 'icons/inventory/back/mob_vr.dmi' // VOREStation Edit icon_state = "radiopack" item_state = "radiopack" slot_flags = SLOT_BACK diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 79f38554b8f..1fac4f32265 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -133,8 +133,7 @@ HALOGEN COUNTER - Radcount on mobs var/unknown = 0 var/reagentdata[0] var/unknownreagents[0] - for(var/A in C.reagents.reagent_list) - var/datum/reagent/R = A + for(var/datum/reagent/R as anything in C.reagents.reagent_list) if(R.scannable) reagentdata["[R.id]"] = "\t[round(C.reagents.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - Overdose" : ""]
" else @@ -155,8 +154,7 @@ HALOGEN COUNTER - Radcount on mobs var/unknown = 0 var/stomachreagentdata[0] var/stomachunknownreagents[0] - for(var/B in C.ingested.reagent_list) - var/datum/reagent/R = B + for(var/datum/reagent/R as anything in C.ingested.reagent_list) if(R.scannable) stomachreagentdata["[R.id]"] = "\t[round(C.ingested.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.volume > R.overdose) ? " - Overdose" : ""]
" if (advscan == 0 || showadvscan == 0) @@ -179,8 +177,7 @@ HALOGEN COUNTER - Radcount on mobs var/unknown = 0 var/touchreagentdata[0] var/touchunknownreagents[0] - for(var/B in C.touching.reagent_list) - var/datum/reagent/R = B + for(var/datum/reagent/R as anything in C.touching.reagent_list) if(R.scannable) touchreagentdata["[R.id]"] = "\t[round(C.touching.get_reagent_amount(R.id), 1)]u [R.name][(R.overdose && R.can_overdose_touch && R.volume > R.overdose) ? " - Overdose" : ""]
" if (advscan == 0 || showadvscan == 0) diff --git a/code/game/objects/items/devices/scanners_vr.dm b/code/game/objects/items/devices/scanners_vr.dm index b0c928e5a29..1722617106b 100644 --- a/code/game/objects/items/devices/scanners_vr.dm +++ b/code/game/objects/items/devices/scanners_vr.dm @@ -54,8 +54,7 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob // Gather potential subtargets var/list/choices = list(M) if(istype(M)) - for(var/belly in M.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in M.vore_organs) for(var/mob/living/carbon/human/H in B) // I do want an istype choices += H // Subtargets diff --git a/code/game/objects/items/devices/text_to_speech.dm b/code/game/objects/items/devices/text_to_speech.dm index e962124022c..54510fb9a44 100644 --- a/code/game/objects/items/devices/text_to_speech.dm +++ b/code/game/objects/items/devices/text_to_speech.dm @@ -7,7 +7,7 @@ var/named /obj/item/device/text_to_speech/attack_self(mob/user as mob) - if(user.incapacitated(INCAPACITATION_ALL)) //Are you in a state to actual use the device? + if(user.incapacitated(INCAPACITATION_KNOCKDOWN|INCAPACITATION_DISABLED)) // EDIT: We can use the device only if we are not in certain types of incapacitation. We don't want chairs stopping us from texting!! to_chat(user, "You cannot activate the device in your state.") return @@ -27,3 +27,6 @@ audible_message("[bicon(src)] \The [src.name] states, \"[message]\"", runemessage = "synthesized speech") if(ismob(loc)) loc.audible_message("", runemessage = "\[TTS Voice\] [message]") + +/obj/item/device/text_to_speech/AltClick(mob/user) // QOL Change + attack_self(user) diff --git a/code/game/objects/items/devices/translocator_vr.dm b/code/game/objects/items/devices/translocator_vr.dm index e4d06975de0..5cf4f70038b 100644 --- a/code/game/objects/items/devices/translocator_vr.dm +++ b/code/game/objects/items/devices/translocator_vr.dm @@ -390,14 +390,14 @@ or don't wish to potentially have a random person teleported into you, it's sugg not carry this around."}, "OOC Warning", list("Take It","Leave It")) if(choice == "Leave It") return - ..() + return ..() /obj/item/device/perfect_tele_beacon/stationary name = "stationary translocator beacon" icon = 'icons/obj/radio_vr.dmi' icon_state = "floor_beacon" w_class = ITEMSIZE_HUGE - anchored = 1 + anchored = TRUE GLOBAL_LIST_BOILERPLATE(premade_tele_beacons, /obj/item/device/perfect_tele_beacon/stationary) @@ -462,7 +462,7 @@ GLOBAL_LIST_BOILERPLATE(premade_tele_beacons, /obj/item/device/perfect_tele_beac icon_state = "frontiertrans" beacons_left = 1 //Just one battery_lock = 1 - unacidable = 1 + unacidable = TRUE failure_chance = 0 //Percent var/phase_power = 75 diff --git a/code/game/objects/items/devices/tvcamera.dm b/code/game/objects/items/devices/tvcamera.dm index acf4b7cc3a9..b7d7933a883 100644 --- a/code/game/objects/items/devices/tvcamera.dm +++ b/code/game/objects/items/devices/tvcamera.dm @@ -8,6 +8,8 @@ var/channel = "NCS Northern Star News Feed" var/obj/machinery/camera/network/thunder/camera var/obj/item/device/radio/radio + var/weakref/showing + var/showing_name /obj/item/device/tvcamera/New() ..() @@ -45,9 +47,14 @@ /obj/item/device/tvcamera/attack_self(mob/user) add_fingerprint(user) user.set_machine(src) + show_ui(user) + +/obj/item/device/tvcamera/proc/show_ui(mob/user) var/dat = list() dat += "Channel name is: [channel ? channel : "unidentified broadcast"]
" dat += "Video streaming is [camera.status ? "on" : "off"]
" + if(camera.status && showing_name) + dat += "- You're showing [showing_name] to your viewers.
" dat += "Mic is [radio.broadcasting ? "on" : "off"]
" dat += "Sound is being broadcasted on frequency [format_frequency(radio.frequency)] ([get_frequency_name(radio.frequency)])
" var/datum/browser/popup = new(user, "Hovercamera", "Eye Buddy", 300, 390, src) @@ -67,8 +74,12 @@ camera.set_status(!camera.status) if(camera.status) to_chat(usr,"Video streaming activated. Broadcasting on channel '[channel]'") + show_tvs(loc) else to_chat(usr,"Video streaming deactivated.") + hide_tvs() + for(var/obj/machinery/computer/security/telescreen/entertainment/ES as anything in GLOB.entertainment_screens) + ES.stop_showing() update_icon() if(href_list["sound"]) radio.ToggleBroadcast() @@ -79,6 +90,50 @@ if(!href_list["close"]) attack_self(usr) +/obj/item/device/tvcamera/proc/show_tvs(atom/thing) + if(showing) + hide_tvs(showing) + + showing = weakref(thing) + showing_name = "[thing]" + for(var/obj/machinery/computer/security/telescreen/entertainment/ES as anything in GLOB.entertainment_screens) + ES.show_thing(thing) + + START_PROCESSING(SSobj, src) + +/obj/item/device/tvcamera/proc/hide_tvs() + if(!showing) + return + for(var/obj/machinery/computer/security/telescreen/entertainment/ES as anything in GLOB.entertainment_screens) + ES.maybe_stop_showing(showing) + STOP_PROCESSING(SSobj, src) + showing = null + showing_name = null + +/obj/item/device/tvcamera/Moved(atom/old_loc, direction, forced = FALSE, movetime) + . = ..() + if(camera.status && loc != old_loc) + show_tvs(loc) + +/obj/item/device/tvcamera/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if(camera.status && !isturf(target)) + show_tvs(target) + user.visible_message("[user] aims [src] at [target].", "You aim [src] at [target].") + if(user.machine == src) + show_ui(user) // refresh the UI + +/obj/item/device/tvcamera/process() + if(!showing) + return PROCESS_KILL + + var/atom/A = showing.resolve() + if(!A || QDELETED(A)) + show_tvs(loc) + + if(get_dist(get_turf(src), get_turf(A)) > 5) + show_tvs(loc) + /obj/item/device/tvcamera/update_icon() ..() if(camera.status) diff --git a/code/game/objects/items/poi_items.dm b/code/game/objects/items/poi_items.dm index 4300eeed71f..2c05f0cfca2 100644 --- a/code/game/objects/items/poi_items.dm +++ b/code/game/objects/items/poi_items.dm @@ -64,7 +64,7 @@ icon = 'icons/obj/closets/poireactor.dmi' closet_appearance = null catalogue_data = list(/datum/category_item/catalogue/information/objects/oldreactor) - climbable = 0 + climbable = FALSE starts_with = list( /obj/item/weapon/fuel_assembly/deuterium = 6) @@ -110,5 +110,5 @@ icon = 'icons/obj/atmos.dmi' icon_state = "yellow-1" catalogue_data = list(/datum/category_item/catalogue/information/objects/growthcanister) - anchored = 0 - density = 1 \ No newline at end of file + anchored = FALSE + density = TRUE \ No newline at end of file diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 06b0e9edce5..ddeac74b584 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -42,20 +42,20 @@ name = "\proper thermal vision" sight_mode = BORGTHERM icon_state = "thermal" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/inventory/eyes/item.dmi' /obj/item/borg/sight/meson name = "\proper meson vision" sight_mode = BORGMESON icon_state = "meson" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/inventory/eyes/item.dmi' /obj/item/borg/sight/material name = "\proper material scanner vision" sight_mode = BORGMATERIAL icon_state = "material" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/inventory/eyes/item.dmi' /obj/item/borg/sight/hud name = "hud" @@ -65,7 +65,7 @@ /obj/item/borg/sight/hud/med name = "medical hud" icon_state = "healthhud" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/inventory/eyes/item.dmi' /obj/item/borg/sight/hud/med/New() ..() @@ -76,7 +76,7 @@ /obj/item/borg/sight/hud/sec name = "security hud" icon_state = "securityhud" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/inventory/eyes/item.dmi' /obj/item/borg/sight/hud/sec/New() ..() diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 00fa10f1376..bf132c7cf96 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -4,7 +4,7 @@ desc = "A shooting target." icon = 'icons/obj/objects.dmi' icon_state = "target_h" - density = 0 + density = FALSE var/hp = 1800 var/icon/virtualIcon var/list/bulletholes = list() @@ -14,7 +14,7 @@ for(var/obj/structure/target_stake/T in view(3,src)) if(T.pinned_target == src) T.pinned_target = null - T.density = 1 + T.density = TRUE break ..() // delete target @@ -51,8 +51,8 @@ if(stake) if(stake.pinned_target) - stake.density = 1 - density = 0 + stake.density = TRUE + density = FALSE layer = OBJ_LAYER loc = user.loc diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 629a3834337..f065ec3ea17 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -408,7 +408,7 @@ to_chat(user, "You can't apply a splint to the arm you're using!") return user.visible_message("[user] starts to apply \the [src] to their [limb].", "You start to apply \the [src] to your [limb].", "You hear something being wrapped.") - if(do_after(user, 50, M, exclusive = TRUE)) + if(do_after(user, 50, M, exclusive = TASK_USER_EXCLUSIVE)) if(affecting.splinted) to_chat(user, "[M]'s [limb] is already splinted!") return diff --git a/code/game/objects/items/stacks/medical_vr.dm b/code/game/objects/items/stacks/medical_vr.dm index 4599bb43f9c..9ba54cea331 100644 --- a/code/game/objects/items/stacks/medical_vr.dm +++ b/code/game/objects/items/stacks/medical_vr.dm @@ -43,16 +43,14 @@ var/clotted = 0 var/too_far_gone = 0 - for(var/org in H.organs) //'organs' is just external organs, as opposed to 'internal_organs' - var/obj/item/organ/external/affecting = org + for(var/obj/item/organ/external/affecting as anything in H.organs) //'organs' is just external organs, as opposed to 'internal_organs' // No amount of clotting is going to help you here. if(affecting.open) too_far_gone++ continue - for(var/wnd in affecting.wounds) - var/datum/wound/W = wnd + for(var/datum/wound/W as anything in affecting.wounds) // No need if(W.bandaged) continue diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 10c85fa7e4c..ba5db2b33b2 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -16,7 +16,7 @@ if (istype(M,/mob/living/silicon/robot)) //Repairing cyborgs var/mob/living/silicon/robot/R = M if (R.getBruteLoss() || R.getFireLoss()) - if(do_after(user, 7 * toolspeed, exclusive = TRUE)) + if(do_after(user, 7 * toolspeed, R, exclusive = TASK_ALL_EXCLUSIVE)) R.adjustBruteLoss(-15) R.adjustFireLoss(-15) R.updatehealth() @@ -51,9 +51,9 @@ else if(can_use(1)) user.setClickCooldown(user.get_attack_speed(src)) if(S.open >= 2) - if(do_after(user, 5 * toolspeed, exclusive = TRUE)) + if(do_after(user, 5 * toolspeed, S, exclusive = TASK_ALL_EXCLUSIVE)) S.heal_damage(restoration_internal, restoration_internal, robo_repair = 1) - else if(do_after(user, 5 * toolspeed, exclusive = TRUE)) + else if(do_after(user, 5 * toolspeed, S, exclusive = TASK_ALL_EXCLUSIVE)) S.heal_damage(restoration_external,restoration_external, robo_repair =1) H.updatehealth() use(1) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index e80afbef414..d5d1fe42d17 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -56,14 +56,17 @@ icon_state = "[initial(icon_state)]_3" item_state = initial(icon_state) +/obj/item/stack/proc/get_examine_string() + if(!uses_charge) + return "There [src.amount == 1 ? "is" : "are"] [src.amount] [src.singular_name]\s in the stack." + else + return "There is enough charge for [get_amount()]." + /obj/item/stack/examine(mob/user) . = ..() if(Adjacent(user)) - if(!uses_charge) - . += "There are [src.amount] [src.singular_name]\s in the stack." - else - . += "There is enough charge for [get_amount()]." + . += get_examine_string() /obj/item/stack/attack_self(mob/user) tgui_interact(user) diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 062feaeaa71..c2d2b171c90 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -263,8 +263,8 @@ desc = "" icon = 'icons/obj/toy.dmi' icon_state = "null" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE /* * Toy swords @@ -827,8 +827,8 @@ desc = "A very generic plushie. It seems to not want to exist." icon = 'icons/obj/toy.dmi' icon_state = "ianplushie" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE var/phrase = "I don't want to exist anymore!" var/searching = FALSE var/opened = FALSE // has this been slit open? this will allow you to store an object in a plushie. @@ -1442,7 +1442,7 @@ name = "inflatable duck" desc = "No bother to sink or swim when you can just float!" icon_state = "inflatable" - icon = 'icons/obj/clothing/belts.dmi' + icon = 'icons/inventory/belt/item.dmi' slot_flags = SLOT_BELT drop_sound = 'sound/items/drop/rubber.ogg' @@ -1537,8 +1537,8 @@ desc = "A generic balloon. How boring." icon = 'icons/obj/toy.dmi' icon_state = "ghostballoon" - anchored = 0 - density = 0 + anchored = FALSE + density = FALSE /obj/structure/balloon/attack_hand(mob/user) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index e09c9b1e5de..1a109bab917 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -190,7 +190,7 @@ /obj/item/trash/spitgum name = "old gum" desc = "A disgusting chewed up wad of gum." - icon = 'icons/obj/clothing/masks.dmi' + icon = 'icons/inventory/face/item.dmi' icon_state = "spit-gum" drop_sound = 'sound/items/drop/flesh.ogg' pickup_sound = 'sound/items/pickup/flesh.ogg' @@ -198,7 +198,7 @@ /obj/item/trash/lollibutt name = "lollipop stick" desc = "A lollipop stick devoid of pop." - icon = 'icons/obj/clothing/masks.dmi' + icon = 'icons/inventory/face/item.dmi' icon_state = "pop-stick" drop_sound = 'sound/items/drop/component.ogg' pickup_sound = 'sound/items/pickup/component.ogg' @@ -206,7 +206,7 @@ /obj/item/trash/spitwad name = "spit wad" desc = "A disgusting spitwad." - icon = 'icons/obj/clothing/masks.dmi' + icon = 'icons/inventory/face/item.dmi' icon_state = "spit-chew" drop_sound = 'sound/items/drop/flesh.ogg' pickup_sound = 'sound/items/pickup/flesh.ogg' diff --git a/code/game/objects/items/uav.dm b/code/game/objects/items/uav.dm index ddd4bcda095..b1ff2723a8c 100644 --- a/code/game/objects/items/uav.dm +++ b/code/game/objects/items/uav.dm @@ -12,7 +12,7 @@ var/obj/item/weapon/cell/cell var/cell_type = null //Can put a starting cell here - density = 1 //Is dense, but not anchored, so you can swap with it + density = TRUE //Is dense, but not anchored, so you can swap with it slowdown = 1.5 //Heevvee. health = 100 @@ -97,8 +97,10 @@ return // Can disasemble or reassemble from packed or off (and this one takes time) if("(Dis)Assemble") - if(can_transition_to(state == UAV_PACKED ? UAV_OFF : UAV_PACKED, user) && do_after(user, 10 SECONDS, src)) - return toggle_packed(user) + if(can_transition_to(state == UAV_PACKED ? UAV_OFF : UAV_PACKED, user)) + user.visible_message("[user] starts [state == UAV_PACKED ? "unpacking" : "packing"] [src].", "You start [state == UAV_PACKED ? "unpacking" : "packing"] [src].") + if(do_after(user, 10 SECONDS, src)) + return toggle_packed(user) // Can toggle power from on and off if("Toggle Power") if(can_transition_to(state == UAV_ON ? UAV_OFF : UAV_ON, user)) diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 5eca1139a12..200e99f8e1e 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -11,8 +11,9 @@ RSF icon = 'icons/obj/tools_vr.dmi' //VOREStation Edit icon_state = "rsf" //VOREStation Edit opacity = 0 - density = 0 - anchored = 0.0 + density = FALSE + anchored = FALSE + matter = list(DEFAULT_WALL_MATERIAL = 25000) var/stored_matter = 30 var/mode = 1 var/obj/item/weapon/reagent_containers/glasstype = /obj/item/weapon/reagent_containers/food/drinks/metaglass diff --git a/code/game/objects/items/weapons/augment_items.dm b/code/game/objects/items/weapons/augment_items.dm index c0df9c9688e..bfef21ae13d 100644 --- a/code/game/objects/items/weapons/augment_items.dm +++ b/code/game/objects/items/weapons/augment_items.dm @@ -18,7 +18,7 @@ w_class = ITEMSIZE_SMALL force = 15 armor_penetration = 25 - sharp = 1 + sharp = TRUE attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") defend_chance = 10 projectile_parry_chance = 5 @@ -31,7 +31,7 @@ w_class = ITEMSIZE_HUGE force = 30 armor_penetration = 15 - edge = 1 + edge = TRUE pry = 1 defend_chance = 40 projectile_parry_chance = 20 \ No newline at end of file diff --git a/code/game/objects/items/weapons/chewables.dm b/code/game/objects/items/weapons/chewables.dm index 186263897ba..93a2df16157 100644 --- a/code/game/objects/items/weapons/chewables.dm +++ b/code/game/objects/items/weapons/chewables.dm @@ -1,7 +1,7 @@ /obj/item/clothing/mask/chewable name = "chewable item master" desc = "If you are seeing this, ahelp it." - icon = 'icons/obj/clothing/masks.dmi' + icon = 'icons/inventory/face/item.dmi' drop_sound = 'sound/items/drop/food.ogg' body_parts_covered = 0 @@ -252,7 +252,7 @@ /obj/item/clothing/mask/chewable/candy/pocky //ADDITION 04/17/2021 name = "chocolate pocky" desc = "A chocolate-coated biscuit stick." - icon_state = "pocky" + icon_state = "pockystick" item_state = "pocky" /obj/item/clothing/mask/chewable/candy/pocky/process() diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 15170138d30..ade55cbecaf 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -376,7 +376,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/trash/cigbutt name = "cigarette butt" desc = "A manky old cigarette butt." - icon = 'icons/obj/clothing/masks.dmi' + icon = 'icons/inventory/face/item.dmi' icon_state = "cigbutt" randpixel = 10 w_class = ITEMSIZE_TINY diff --git a/code/game/objects/items/weapons/circuitboards/circuitboard.dm b/code/game/objects/items/weapons/circuitboards/circuitboard.dm index 8b913eaf45d..c1989902a24 100644 --- a/code/game/objects/items/weapons/circuitboards/circuitboard.dm +++ b/code/game/objects/items/weapons/circuitboards/circuitboard.dm @@ -9,8 +9,8 @@ icon = 'icons/obj/module.dmi' icon_state = "id_mod" origin_tech = list(TECH_DATA = 2) - density = 0 - anchored = 0 + density = FALSE + anchored = FALSE w_class = ITEMSIZE_SMALL force = 5.0 throwforce = 5.0 diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 2162941ac30..744cc130e21 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -6,7 +6,7 @@ w_class = ITEMSIZE_SMALL force = 2.0 det_time = null - unacidable = 1 + unacidable = TRUE var/stage = 0 var/state = 0 diff --git a/code/game/objects/items/weapons/id cards/id_stacks_vr.dm b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm index 2bdd52bfa92..13680cadbea 100644 --- a/code/game/objects/items/weapons/id cards/id_stacks_vr.dm +++ b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm @@ -8,209 +8,269 @@ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n") /obj/item/weapon/card/id/generic + name = "Generic ID" initial_sprite_stack = list("base-stamp", "top-generic", "stamp-silhouette", "clip") //Central /obj/item/weapon/card/id/centcom + name = "Central Command ID" initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-white", "stripe-gold") /obj/item/weapon/card/id/centcom/vip + name = "VIP ID" initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold", "stripe-gold") //ERT /obj/item/weapon/card/id/centcom/ERT + name = "Emergency Responder ID" initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-red", "stripe-red") /obj/item/weapon/card/id/centcom/ERT/medic + name = "Emergency Medical Responder ID" initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-medblu", "stripe-medblu") /obj/item/weapon/card/id/centcom/ERT/commander + name = "Emergency Response Commander ID" initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold", "stripe-gold") /obj/item/weapon/card/id/centcom/ERT/engineer + name = "Emergency Engineering Responder ID" initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-orange", "stripe-orange") /obj/item/weapon/card/id/centcom/ERT/janitor + name = "Emergency Cleanup Responder ID" initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-purple", "stripe-purple") //Silver /obj/item/weapon/card/id/silver + name = "Silver ID" initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n") /obj/item/weapon/card/id/silver/secretary + name = "Secretary's ID" initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n") /obj/item/weapon/card/id/silver/hop + name = "Head of Personnel ID" initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold") //Gold /obj/item/weapon/card/id/gold + name = "Gold ID" initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n") /obj/item/weapon/card/id/gold/captain + name = "Captain's ID" initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold") /obj/item/weapon/card/id/gold/captain/spare + name = "Spare ID" initial_sprite_stack = list("base-stamp-gold", "top-gold", "stamp-n") //Medical /obj/item/weapon/card/id/medical + name = "Medical ID" initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n") /obj/item/weapon/card/id/medical/chemist + name = "Chemist's ID" initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-orange") /obj/item/weapon/card/id/medical/geneticist + name = "Geneticist's ID" initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-purple") /obj/item/weapon/card/id/medical/psych + name = "Psychologist's ID" initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-brown") /obj/item/weapon/card/id/medical/virologist + name = "Virologist's ID" initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-green") /obj/item/weapon/card/id/medical/emt + name = "Emergency Medical Technician's ID" initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-blue") /obj/item/weapon/card/id/medical/head + name = "Chief Medical Officer's ID" initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "pips-gold") //Security /obj/item/weapon/card/id/security + name = "Security ID" initial_sprite_stack = list("base-stamp", "top-red", "stamp-n") /obj/item/weapon/card/id/security/detective + name = "Detective's ID" initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-brown") /obj/item/weapon/card/id/security/warden + name = "Warden's ID" initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-white") /obj/item/weapon/card/id/security/head + name = "Head of Security's ID" initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "pips-gold") //Engineering /obj/item/weapon/card/id/engineering + name = "Engineering ID" initial_sprite_stack = list("base-stamp", "top-orange", "stamp-n") /obj/item/weapon/card/id/engineering/atmos + name = "Atmospherics ID" initial_sprite_stack = list("base-stamp", "top-orange", "stripe-medblu", "stamp-n") /obj/item/weapon/card/id/engineering/head + name = "Chief Engineer's ID" initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "pips-gold") //Science /obj/item/weapon/card/id/science + name = "Science ID" initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n") /obj/item/weapon/card/id/science/roboticist + name = "Roboticist's ID" initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-brown") /obj/item/weapon/card/id/science/xenobiologist + name = "Xenobiologist's ID" initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-orange") /obj/item/weapon/card/id/science/xenobotanist + name = "Xenobotanist's ID" initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-green") /obj/item/weapon/card/id/science/head + name = "Research Director's ID" initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "pips-gold") //Cargo /obj/item/weapon/card/id/cargo + name = "Cargo ID" initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n") /obj/item/weapon/card/id/cargo/miner + name = "Miner's ID" initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "stripe-purple") /obj/item/weapon/card/id/cargo/head + name = "Quartermaster's ID" initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-white") //Civilian /obj/item/weapon/card/id/civilian + name = "Civilian ID" initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n") /obj/item/weapon/card/id/civilian/chaplain + name = "Chaplain's ID" initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-cross", "stripe-white") /obj/item/weapon/card/id/civilian/journalist + name = "Journalist's ID" initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-red") /obj/item/weapon/card/id/civilian/pilot + name = "Pilot's ID" initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-olive") /obj/item/weapon/card/id/civilian/entertainer - initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-brown") + name = "Entertainer's ID" + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-brown") /obj/item/weapon/card/id/civilian/clown + name = "Clown's ID" initial_sprite_stack = list("base-stamp", "top-rainbow", "stamp-n") /obj/item/weapon/card/id/civilian/mime + name = "Mime's ID" initial_sprite_stack = list("base-stamp", "top-white", "stamp-n", "stripe-black") /obj/item/weapon/card/id/civilian/internal_affairs + name = "Internal Affairs ID" initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-black") //Service /obj/item/weapon/card/id/civilian/service + name = "Service ID" initial_sprite_stack = list("base-stamp", "top-green", "stamp-n") /obj/item/weapon/card/id/civilian/service/botanist + name = "Botanist's ID" initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-darkgreen") /obj/item/weapon/card/id/civilian/service/bartender + name = "Bartender's ID" initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-black") /obj/item/weapon/card/id/civilian/service/chef + name = "Chef's ID" initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-white") /obj/item/weapon/card/id/civilian/service/janitor + name = "Janitor's ID" initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-purple") //Exploration /obj/item/weapon/card/id/exploration + name = "Exploration ID" initial_sprite_stack = list("base-stamp", "top-olive", "stamp-n") /obj/item/weapon/card/id/exploration/fm + name = "Field Medic's ID" initial_sprite_stack = list("base-stamp", "top-olive", "stamp-n", "stripe-medblu") /obj/item/weapon/card/id/exploration/head + name = "Pathfinder's ID" initial_sprite_stack = list("base-stamp-silver", "top-olive", "stamp-n", "pips-white") //Talon /obj/item/weapon/card/id/talon + name = "Talon ID" initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette") /obj/item/weapon/card/id/talon/doctor + name = "Talon Medical ID" initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-medblu", "stripe-medblu") /obj/item/weapon/card/id/talon/engineer + name = "Talon Engineering ID" initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-orange", "stripe-orange") /obj/item/weapon/card/id/talon/officer + name = "Talon Security ID" initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-red", "stripe-red") /obj/item/weapon/card/id/talon/pilot + name = "Talon Pilot ID" initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-purple", "stripe-purple") /obj/item/weapon/card/id/talon/captain + name = "Talon Captain ID" initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-gold", "stripe-gold") //Antags /obj/item/weapon/card/id/syndicate + name = "Syndicate ID" initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s") /obj/item/weapon/card/id/syndicate/officer + name = "Syndicate Officer ID" initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s", "pips-gold", "stripe-gold") \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 8538980b9c9..34110d59249 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -5,9 +5,9 @@ desc = "Used to implant occupants with loyalty implants." icon = 'icons/obj/machines/implantchair.dmi' icon_state = "implantchair" - density = 1 + density = TRUE opacity = 0 - anchored = 1 + anchored = TRUE var/ready = 1 var/malfunction = 0 diff --git a/code/game/objects/items/weapons/implants/neuralbasic.dm b/code/game/objects/items/weapons/implants/neuralbasic.dm index 18d472154bb..5743640aa8f 100644 --- a/code/game/objects/items/weapons/implants/neuralbasic.dm +++ b/code/game/objects/items/weapons/implants/neuralbasic.dm @@ -16,7 +16,7 @@ my_brain.implant_assist(target_state) if(H.isSynthetic() && H.get_FBP_type() != FBP_CYBORG) //If this on an FBP, it's just an extra inefficient attachment to whatever their brain is. robotic_brain = TRUE - if(my_brain && my_brain.can_assist()) + if(istype(my_brain) && my_brain.can_assist()) START_PROCESSING(SSobj, src) /obj/item/weapon/implant/neural/Destroy() diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm index 93526c2ac05..0006e7acd11 100644 --- a/code/game/objects/items/weapons/material/chainsaw.dm +++ b/code/game/objects/items/weapons/material/chainsaw.dm @@ -42,8 +42,8 @@ attack_verb = list("shredded", "ripped", "torn") playsound(src, 'sound/weapons/chainsaw_startup.ogg',40,1) force = active_force - edge = 1 - sharp = 1 + edge = TRUE + sharp = TRUE on = 1 update_icon() else @@ -55,8 +55,8 @@ attack_verb = list("bluntly hit", "beat", "knocked") playsound(src, 'sound/weapons/chainsaw_turnoff.ogg',40,1) force = inactive_force - edge = 0 - sharp = 0 + edge = FALSE + sharp = FALSE on = 0 update_icon() diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm index 349c2124995..1d32db48889 100644 --- a/code/game/objects/items/weapons/material/kitchen.dm +++ b/code/game/objects/items/weapons/material/kitchen.dm @@ -15,24 +15,44 @@ edge = TRUE force_divisor = 0.1 // 6 when wielded with hardness 60 (steel) thrown_force_divisor = 0.25 // 5 when thrown with weight 20 (steel) - var/weakref/loaded //Weakref for currently loaded food object. + var/scoop_volume = 5 + var/loaded // Name for currently loaded food object. + var/loaded_color // Color for currently loaded food object. -/obj/item/weapon/material/kitchen/utensil/New() - ..() +/obj/item/weapon/material/kitchen/utensil/Initialize() + . = ..() if (prob(60)) src.pixel_y = rand(0, 4) - create_reagents(5) - return + create_reagents(scoop_volume) /obj/item/weapon/material/kitchen/utensil/update_icon() . = ..() cut_overlays() - var/obj/item/weapon/reagent_containers/food/snacks/eaten = loaded?.resolve() - if(eaten) + if(loaded) var/image/I = new(icon, "loadedfood") - I.color = eaten.filling_color + I.color = loaded_color add_overlay(I) +/obj/item/weapon/material/kitchen/utensil/proc/load_food(var/mob/user, var/obj/item/weapon/reagent_containers/food/snacks/loading) + if (reagents.total_volume > 0) + to_chat(user, SPAN_DANGER("There is already something on \the [src].")) + return + if (!loading?.reagents?.total_volume) + to_chat(user, SPAN_NOTICE("Nothing to scoop up in \the [loading]!")) + + + loaded = "\the [loading]" + user.visible_message( \ + "\The [user] scoops up some of [loaded] with \the [src]!", + SPAN_NOTICE("You scoop up some of [loaded] with \the [src]!") + ) + loading.bitecount++ + loading.reagents.trans_to_obj(src, min(loading.reagents.total_volume, scoop_volume)) + loaded_color = loading.filling_color + if (loading.reagents.total_volume <= 0) + qdel(loading) + update_icon() + /obj/item/weapon/material/kitchen/utensil/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) if(!istype(M)) return ..() @@ -46,19 +66,18 @@ return ..() if (loaded && reagents.total_volume > 0) - var/atom/movable/eaten = loaded?.resolve() reagents.trans_to_mob(M, reagents.total_volume, CHEM_INGEST) - if(eaten) - if(M == user) - if(!M.can_eat(eaten)) - return - M.visible_message(SPAN_NOTICE("\The [user] eats some of \the [eaten] with \the [src].")) - else - user.visible_message(SPAN_WARNING("\The [user] begins to feed \the [M]!")) - if(!(M.can_force_feed(user, eaten) && do_mob(user, M, 5 SECONDS))) - return - M.visible_message(SPAN_NOTICE("\The [user] feeds some of \the [eaten] to \the [M] with \the [src].")) - playsound(src,'sound/items/eatfood.ogg', rand(10,40), 1) + if(M == user) + if(!M.can_eat(loaded)) + return + M.visible_message("\The [user] eats some of [loaded] with \the [src].") + else + user.visible_message(SPAN_WARNING("\The [user] begins to feed \the [M]!")) + if(!(M.can_force_feed(user, loaded) && do_mob(user, M, 5 SECONDS))) + return + M.visible_message("\The [user] feeds some of [loaded] to \the [M] with \the [src].") + playsound(src,'sound/items/eatfood.ogg', rand(10,40), 1) + loaded = null update_icon() return else diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index 44ffb44e39c..9a939bc290b 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -14,8 +14,8 @@ /obj/item/weapon/material/butterfly/update_force() if(active) - edge = 1 - sharp = 1 + edge = TRUE + sharp = TRUE ..() //Updates force. throwforce = max(3,force-3) hitsound = 'sound/weapons/bladeslice.ogg' @@ -24,8 +24,8 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") else force = 3 - edge = 0 - sharp = 0 + edge = FALSE + sharp = FALSE hitsound = initial(hitsound) icon_state = initial(icon_state) w_class = initial(w_class) @@ -63,8 +63,8 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "knife" desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE force_divisor = 0.15 // 9 when wielded with hardness 60 (steel) matter = list(MAT_STEEL = 12000) origin_tech = list(TECH_MATERIAL = 1) diff --git a/code/game/objects/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm index 602cf18da85..2927cb97860 100644 --- a/code/game/objects/items/weapons/material/material_weapons.dm +++ b/code/game/objects/items/weapons/material/material_weapons.dm @@ -8,8 +8,8 @@ throw_speed = 3 throw_range = 7 w_class = ITEMSIZE_NORMAL - sharp = 0 - edge = 0 + sharp = FALSE + edge = FALSE item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', @@ -120,8 +120,8 @@ playsound(src, "shatter", 70, 1) dulled = 1 if(is_sharp() || has_edge()) - sharp = 0 - edge = 0 + sharp = FALSE + edge = FALSE /obj/item/weapon/material/proc/repair(var/repair_amount, var/repair_time, mob/living/user) if(!fragile) diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index 301fff76009..d16627d8d97 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -1,7 +1,7 @@ /obj/item/weapon/material/harpoon name = "harpoon" - sharp = 1 - edge = 0 + sharp = TRUE + edge = FALSE desc = "Tharr she blows!" icon_state = "harpoon" item_state = "harpoon" @@ -16,8 +16,8 @@ force_divisor = 0.2 // 12 with hardness 60 (steel) thrown_force_divisor = 0.75 // 15 with weight 20 (steel) w_class = ITEMSIZE_SMALL - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 1) attack_verb = list("chopped", "torn", "cut") applies_material_colour = 0 diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm index cbf03b45351..45a83ca1dae 100644 --- a/code/game/objects/items/weapons/material/shards.dm +++ b/code/game/objects/items/weapons/material/shards.dm @@ -6,8 +6,8 @@ desc = "Made of nothing. How does this even exist?" // set based on material, if this desc is visible it's a bug (shards default to being made of glass) icon_state = "large" randpixel = 8 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE w_class = ITEMSIZE_SMALL force_divisor = 0.25 // 7.5 with hardness 30 (glass) thrown_force_divisor = 0.5 diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm index 4454b0b0663..b2d26f823e3 100644 --- a/code/game/objects/items/weapons/material/swords.dm +++ b/code/game/objects/items/weapons/material/swords.dm @@ -5,8 +5,8 @@ slot_flags = SLOT_BELT force_divisor = 0.7 // 42 when wielded with hardnes 60 (steel) thrown_force_divisor = 0.5 // 10 when thrown with weight 20 (steel) - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' drop_sound = 'sound/items/drop/sword.ogg' diff --git a/code/game/objects/items/weapons/material/thrown.dm b/code/game/objects/items/weapons/material/thrown.dm index 0e632de06bf..dcfaad58019 100644 --- a/code/game/objects/items/weapons/material/thrown.dm +++ b/code/game/objects/items/weapons/material/thrown.dm @@ -6,8 +6,8 @@ thrown_force_divisor = 0.75 // 15 with weight 20 (steel) throw_speed = 10 throw_range = 15 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE /obj/item/weapon/material/star/New() ..() diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index f4d62bdc773..588902f250c 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -90,8 +90,8 @@ unwielded_force_divisor = 0.25 force_divisor = 0.7 // 10/42 with hardness 60 (steel) and 0.25 unwielded divisor dulled_divisor = 0.75 //Still metal on a stick - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE w_class = ITEMSIZE_LARGE slot_flags = SLOT_BACK force_wielded = 30 @@ -153,8 +153,8 @@ unwielded_force_divisor = 0.375 thrown_force_divisor = 1.5 // 22.5 when thrown with weight 15 (glass) throw_speed = 3 - edge = 0 - sharp = 1 + edge = FALSE + sharp = TRUE hitsound = 'sound/weapons/bladeslice.ogg' mob_throw_hit_sound = 'sound/weapons/pierce.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") @@ -176,8 +176,8 @@ thrown_force_divisor = 1 default_material = "MAT_STEEL" fragile = 0 - sharp = 1 - edge = 0 + sharp = TRUE + edge = FALSE /obj/item/weapon/material/twohanded/riding_crop name = "riding crop" diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index f6c9774e2e2..7610c85dfd1 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -4,8 +4,8 @@ var/active_throwforce var/active_w_class var/active_embed_chance = 0 //In the off chance one of these is supposed to embed, you can just tweak this var - sharp = 0 - edge = 0 + sharp = FALSE + edge = FALSE armor_penetration = 50 flags = NOCONDUCT | NOBLOODY var/lrange = 2 @@ -54,8 +54,8 @@ embed_chance = active_embed_chance force = active_force throwforce = active_throwforce - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE w_class = active_w_class playsound(src, 'sound/weapons/saberon.ogg', 50, 1) update_icon() @@ -224,8 +224,8 @@ w_class = ITEMSIZE_NORMAL origin_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 4) attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE can_cleave = TRUE /obj/item/weapon/melee/energy/axe/activate(mob/living/user) @@ -276,8 +276,8 @@ w_class = ITEMSIZE_SMALL flags = NOBLOODY origin_tech = list(TECH_MAGNET = 3, TECH_ILLEGAL = 4) - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE colorable = TRUE drop_sound = 'sound/items/drop/sword.ogg' pickup_sound = 'sound/items/pickup/sword.ogg' @@ -358,8 +358,8 @@ active_force = 5 active_throwforce = 3 active_embed_chance = 0 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE armor_penetration = 0 flags = NOBLOODY lrange = 2 @@ -427,9 +427,9 @@ item_state = "blade" force = 40 //Normal attacks deal very high damage - about the same as wielded fire axe armor_penetration = 100 - sharp = 1 - edge = 1 - anchored = 1 // Never spawned outside of inventory, should be fine. + sharp = TRUE + edge = TRUE + anchored = TRUE // Never spawned outside of inventory, should be fine. throwforce = 1 //Throwing or dropping the item deletes it. throw_speed = 1 throw_range = 1 @@ -514,8 +514,8 @@ desc = "Concentrated energy forming a sharp tip at the end of a long rod." icon_state = "espear" armor_penetration = 75 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE force = 5 throwforce = 10 throw_speed = 7 diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 781ea5a4635..54413bb6e0b 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -59,8 +59,8 @@ force = 30 throwforce = 10 w_class = ITEMSIZE_NORMAL - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' can_speak = 1 diff --git a/code/game/objects/items/weapons/melee/misc_vr.dm b/code/game/objects/items/weapons/melee/misc_vr.dm index fd228ba9c42..b14a36e1f40 100644 --- a/code/game/objects/items/weapons/melee/misc_vr.dm +++ b/code/game/objects/items/weapons/melee/misc_vr.dm @@ -10,7 +10,7 @@ force = 15 throwforce = 10 w_class = ITEMSIZE_NORMAL - sharp = 1 - edge = 0 + sharp = TRUE + edge = FALSE attack_verb = list("stabbed", "lunged at", "dextrously struck", "sliced", "lacerated", "impaled", "diced", "charioted") hitsound = 'sound/weapons/bladeslice.ogg' \ No newline at end of file diff --git a/code/game/objects/items/weapons/mop_deploy.dm b/code/game/objects/items/weapons/mop_deploy.dm index 2e2ea6aebc7..95de86abee5 100644 --- a/code/game/objects/items/weapons/mop_deploy.dm +++ b/code/game/objects/items/weapons/mop_deploy.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/janitor.dmi' icon_state = "mop" force = 3 - anchored = 1 // Never spawned outside of inventory, should be fine. + anchored = TRUE // Never spawned outside of inventory, should be fine. throwforce = 1 //Throwing or dropping the item deletes it. throw_speed = 1 throw_range = 1 diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 91c173d5304..80ec8d7f7c5 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -14,7 +14,7 @@ var/global/list/cached_icons = list() amount_per_transfer_from_this = 10 possible_transfer_amounts = list(10,20,30,60) volume = 60 - unacidable = 0 + unacidable = FALSE flags = OPENCONTAINER var/paint_type = "red" diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm index f9b0c11a17f..cb00c93fd01 100644 --- a/code/game/objects/items/weapons/policetape.dm +++ b/code/game/objects/items/weapons/policetape.dm @@ -32,7 +32,7 @@ var/list/tape_roll_applications = list() /obj/item/tape name = "tape" icon = 'icons/policetape.dmi' - anchored = 1 + anchored = TRUE layer = WINDOW_LAYER var/lifted = 0 var/crumpled = 0 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index e6370499a0c..325980756f1 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -5,10 +5,10 @@ /obj/item/weapon/storage/backpack name = "backpack" desc = "You wear this on your back and put items into it." - icon = 'icons/obj/clothing/backpack.dmi' + icon = 'icons/inventory/back/item.dmi' icon_state = "backpack" sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/back.dmi' + SPECIES_TESHARI = 'icons/inventory/back/mob_teshari.dmi' ) w_class = ITEMSIZE_LARGE slot_flags = SLOT_BACK @@ -70,7 +70,6 @@ w_class = ITEMSIZE_LARGE max_w_class = ITEMSIZE_NORMAL max_storage_space = ITEMSIZE_COST_NORMAL * 100 // can store a ton of shit! - item_state_slots = null /obj/item/weapon/storage/backpack/cultpack name = "trophy rack" diff --git a/code/game/objects/items/weapons/storage/backpack_vr.dm b/code/game/objects/items/weapons/storage/backpack_vr.dm index 59505d3f716..a3c1e346191 100644 --- a/code/game/objects/items/weapons/storage/backpack_vr.dm +++ b/code/game/objects/items/weapons/storage/backpack_vr.dm @@ -1,8 +1,8 @@ /obj/item/weapon/storage/backpack/saddlebag name = "Horse Saddlebags" desc = "A saddle that holds items. Seems slightly bulky." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "saddlebag" icon_state = "saddlebag" max_storage_space = INVENTORY_DUFFLEBAG_SPACE //Saddlebags can hold more, like dufflebags @@ -29,8 +29,8 @@ /obj/item/weapon/storage/backpack/saddlebag_common //Shared bag for other taurs with sturdy backs name = "Taur Saddlebags" desc = "A saddle that holds items. Seems slightly bulky." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "saddlebag" icon_state = "saddlebag" var/icon_base = "saddlebag" @@ -53,8 +53,8 @@ /obj/item/weapon/storage/backpack/saddlebag_common/robust //Shared bag for other taurs with sturdy backs name = "Robust Saddlebags" desc = "A saddle that holds items. Seems robust." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "robustsaddle" icon_state = "robustsaddle" icon_base = "robustsaddle" @@ -62,8 +62,8 @@ /obj/item/weapon/storage/backpack/saddlebag_common/vest //Shared bag for other taurs with sturdy backs name = "Taur Duty Vest" desc = "An armored vest with the armor modules replaced with various handy compartments with decent storage capacity. Useless for protection though. Holds less than a saddle." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "taurvest" icon_state = "taurvest" icon_base = "taurvest" @@ -77,8 +77,8 @@ /obj/item/weapon/storage/backpack sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/back.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/back.dmi') + SPECIES_TESHARI = 'icons/inventory/back/mob_teshari.dmi', + SPECIES_WEREBEAST = 'icons/inventory/back/mob_vr_werebeast.dmi') /obj/item/weapon/storage/backpack/ert max_storage_space = INVENTORY_DUFFLEBAG_SPACE @@ -88,63 +88,63 @@ /obj/item/weapon/storage/backpack/explorer name = "exploration backpack" desc = "A backpack for carrying a large number of supplies easily." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "explorer" /obj/item/weapon/storage/backpack/satchel/explorer name = "exploration satchel" desc = "A satchel for carrying a large number of supplies easily." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "explorer_satchel" item_state_slots = null /obj/item/weapon/storage/backpack/messenger/explorer name = "exploration messenger bag" desc = "A sturdy backpack worn over one shoulder." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "explorer_courier" item_state_slots = null /obj/item/weapon/storage/backpack/dufflebag/explorer name = "exploration dufflebag" desc = "A large dufflebag for holding extra supplies." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "explorer_duffle" ///Talon Bags/// /obj/item/weapon/storage/backpack/talon - name = "ITV backpack" + name = "Talon backpack" desc = "A backpack for carrying a large number of supplies easily." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "talon" /obj/item/weapon/storage/backpack/satchel/talon - name = "ITV satchel" + name = "Talon satchel" desc = "A satchel for carrying a large number of supplies easily." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "talon_satchel" item_state_slots = null /obj/item/weapon/storage/backpack/messenger/talon - name = "ITV messenger bag" + name = "Talon messenger bag" desc = "A sturdy backpack worn over one shoulder." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "talon_courier" item_state_slots = null /obj/item/weapon/storage/backpack/dufflebag/talon - name = "ITV dufflebag" + name = "Talon dufflebag" desc = "A large dufflebag for holding extra supplies." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "talon_duffle" ///Roboticist Bags/// @@ -152,16 +152,16 @@ /obj/item/weapon/storage/backpack/satchel/roboticist name = "roboticist satchel" desc = "A satchel for carrying a large number of spare parts easily." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "satchel-robo" icon_state = "satchel-robo" /obj/item/weapon/storage/backpack/roboticist name = "roboticist backpack" desc = "A backpack for carrying a large number of spare parts easily." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "backpack-robo" icon_state = "backpack-robo" @@ -170,23 +170,23 @@ /obj/item/weapon/storage/backpack/vietnam name = "vietnam backpack" desc = "There are tangos in the trees! We need napalm right now! Why is my gun jammed?" - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "nambackpack" icon_state = "nambackpack" /obj/item/weapon/storage/backpack/russian name = "russian backpack" desc = "Useful for carrying large quantities of vodka." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "ru_rucksack" icon_state = "ru_rucksack" /obj/item/weapon/storage/backpack/korean name = "korean backpack" desc = "Insert witty description here." - icon = 'icons/obj/clothing/backpack_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon = 'icons/inventory/back/item_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' item_state = "kr_rucksack" icon_state = "kr_rucksack" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 40d6cfbe235..a9f9d312f4f 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -21,7 +21,7 @@ allow_quick_gather = 1 allow_quick_empty = 1 display_contents_with_number = 0 // UNStABLE AS FuCK, turn on when it stops crashing clients - use_to_pickup = 1 + use_to_pickup = TRUE slot_flags = SLOT_BELT drop_sound = 'sound/items/drop/backpack.ogg' pickup_sound = 'sound/items/pickup/backpack.ogg' diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 5412fab07c4..dbe0292263f 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -1,7 +1,7 @@ /obj/item/weapon/storage/belt name = "belt" desc = "Can hold various things." - icon = 'icons/obj/clothing/belts.dmi' + icon = 'icons/inventory/belt/item.dmi' icon_state = "utility" storage_slots = 7 max_storage_space = ITEMSIZE_COST_NORMAL * 7 //This should ensure belts always have enough room to store whatever. @@ -11,7 +11,7 @@ equip_sound = 'sound/items/toolbelt_equip.ogg' drop_sound = 'sound/items/drop/toolbelt.ogg' pickup_sound = 'sound/items/pickup/toolbelt.ogg' - sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/belt.dmi') + sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/belt/mob_teshari.dmi') var/show_above_suit = 0 diff --git a/code/game/objects/items/weapons/storage/belt_vr.dm b/code/game/objects/items/weapons/storage/belt_vr.dm index b07630de399..ba86f3f2f9f 100644 --- a/code/game/objects/items/weapons/storage/belt_vr.dm +++ b/code/game/objects/items/weapons/storage/belt_vr.dm @@ -1,13 +1,13 @@ /obj/item/weapon/storage/belt sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/belt.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/belt.dmi') + SPECIES_TESHARI = 'icons/inventory/belt/mob_teshari.dmi', + SPECIES_WEREBEAST = 'icons/inventory/belt/mob_vr_werebeast.dmi') /obj/item/weapon/storage/belt/explorer name = "explorer's belt" desc = "A versatile belt with several pouches. It can hold a very wide variety of items, but less items overall than a dedicated belt. Still, it's useful for any explorer who wants to be prepared for anything they might find." - icon = 'icons/obj/clothing/belts_vr.dmi' - icon_override = 'icons/mob/belt_vr.dmi' + icon = 'icons/inventory/belt/item_vr.dmi' + icon_override = 'icons/inventory/belt/mob_vr.dmi' icon_state = "explo_belt" item_state = "explorer_belt" storage_slots = 5 //makes it strictly inferior to any specialized belt as they have seven slots, but it's far more versatile @@ -54,7 +54,7 @@ /obj/item/weapon/storage/belt/explorer/pathfinder name = "pathfinder's belt" desc = "A deluxe belt with many pouches. It can hold a very wide variety of items, but less items overall than a dedicated belt. Still, it's useful for any explorer who wants to be prepared for anything they might find." - icon = 'icons/obj/clothing/belts_vr.dmi' + icon = 'icons/inventory/belt/item_vr.dmi' icon_state = "pathfinder_belt" item_state = "explorer_belt" storage_slots = 7 //two more, bringing it on par with normal belts diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 0c4a51b8675..4e31dd5f9a8 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -497,7 +497,7 @@ storage_slots = 24 can_hold = list(/obj/item/weapon/light/tube, /obj/item/weapon/light/bulb) max_storage_space = ITEMSIZE_COST_SMALL * 24 //holds 24 items of w_class 2 - use_to_pickup = 1 // for picking up broken bulbs, not that most people will try + use_to_pickup = TRUE // for picking up broken bulbs, not that most people will try /obj/item/weapon/storage/box/lights/bulbs starts_with = list(/obj/item/weapon/light/bulb = 24) @@ -525,7 +525,7 @@ max_w_class = ITEMSIZE_NORMAL can_hold = list(/obj/item/organ) max_storage_space = ITEMSIZE_COST_NORMAL * 5 // Formally 21. Odd numbers are bad. - use_to_pickup = 1 // for picking up broken bulbs, not that most people will try + use_to_pickup = TRUE // for picking up broken bulbs, not that most people will try /obj/item/weapon/storage/box/freezer/red icon_state = "portafreezer_red" diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index ca9709b3fb9..84c1637a3e7 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -137,8 +137,7 @@ /obj/item/stack/medical/advanced/bruise_pack, /obj/item/stack/nanopaste, /obj/item/device/healthanalyzer/advanced, - /obj/item/weapon/autopsy_scanner, - /obj/item/weapon/surgical/bioregen + /obj/item/weapon/autopsy_scanner ) starts_with = list( @@ -153,8 +152,7 @@ /obj/item/weapon/surgical/FixOVein, /obj/item/stack/medical/advanced/bruise_pack, /obj/item/device/healthanalyzer/advanced, - /obj/item/weapon/autopsy_scanner, - /obj/item/weapon/surgical/bioregen + /obj/item/weapon/autopsy_scanner ) /obj/item/weapon/storage/firstaid/clotting @@ -184,7 +182,7 @@ can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/dice,/obj/item/weapon/paper) allow_quick_gather = 1 allow_quick_empty = 1 - use_to_pickup = 1 + use_to_pickup = TRUE use_sound = 'sound/items/storage/pillbottle.ogg' max_storage_space = ITEMSIZE_COST_TINY * 14 max_w_class = ITEMSIZE_TINY diff --git a/code/game/objects/items/weapons/storage/firstaid_vr.dm b/code/game/objects/items/weapons/storage/firstaid_vr.dm index 91a2c77d972..1da6c9c3162 100644 --- a/code/game/objects/items/weapons/storage/firstaid_vr.dm +++ b/code/game/objects/items/weapons/storage/firstaid_vr.dm @@ -83,7 +83,8 @@ /obj/item/stack/medical/advanced/bruise_pack, /obj/item/stack/nanopaste, /obj/item/device/healthanalyzer, - /obj/item/weapon/autopsy_scanner + /obj/item/weapon/autopsy_scanner, + /obj/item/weapon/surgical/bioregen ) starts_with = list( @@ -98,9 +99,11 @@ /obj/item/weapon/surgical/FixOVein, /obj/item/stack/medical/advanced/bruise_pack, /obj/item/device/healthanalyzer, - /obj/item/weapon/autopsy_scanner + /obj/item/weapon/autopsy_scanner, + /obj/item/weapon/surgical/bioregen ) + /obj/item/weapon/storage/firstaid/clotting icon_state = "clottingkit" diff --git a/code/game/objects/items/weapons/storage/laundry_basket.dm b/code/game/objects/items/weapons/storage/laundry_basket.dm index e8e2cc59e41..db6b304f319 100644 --- a/code/game/objects/items/weapons/storage/laundry_basket.dm +++ b/code/game/objects/items/weapons/storage/laundry_basket.dm @@ -14,7 +14,7 @@ max_w_class = ITEMSIZE_LARGE max_storage_space = ITEMSIZE_COST_NORMAL * 8 storage_slots = 20 - use_to_pickup = 1 + use_to_pickup = TRUE allow_quick_empty = 1 allow_quick_gather = 1 collection_mode = 1 @@ -79,7 +79,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "offhand" name = "second hand" - use_to_pickup = 0 + use_to_pickup = FALSE /obj/item/weapon/storage/laundry_basket/offhand/dropped(mob/user as mob) user.drop_from_inventory(linked) diff --git a/code/game/objects/items/weapons/storage/pouches.dm b/code/game/objects/items/weapons/storage/pouches.dm index 38d0660894a..62e04c0764c 100644 --- a/code/game/objects/items/weapons/storage/pouches.dm +++ b/code/game/objects/items/weapons/storage/pouches.dm @@ -4,7 +4,7 @@ /obj/item/weapon/storage/pouch name = "storage pouch (medium)" desc = "This storage pouch can be used to provide some additional storage for quick access." - icon = 'icons/obj/clothing/pouches.dmi' + icon = 'icons/inventory/pockets/item.dmi' slot_flags = SLOT_POCKET drop_sound = 'sound/items/drop/backpack.ogg' pickup_sound = 'sound/items/pickup/backpack.ogg' @@ -23,7 +23,7 @@ if(user.get_active_hand() == src || user.get_inactive_hand() == src) return TRUE // Skip delay - if(insert_delay && !do_after(user, 2 SECONDS, src, needhand = TRUE, exclusive = TRUE)) + if(insert_delay && !do_after(user, 2 SECONDS, src, needhand = TRUE, exclusive = TASK_USER_EXCLUSIVE)) return FALSE // Moved or whatever if(W in src) @@ -36,7 +36,7 @@ if(user.get_active_hand() == src || user.get_inactive_hand() == src) return TRUE // Skip delay - if(remove_delay && !do_after(user, 2 SECONDS, src, needhand = TRUE, exclusive = TRUE)) + if(remove_delay && !do_after(user, 2 SECONDS, src, needhand = TRUE, exclusive = TASK_USER_EXCLUSIVE)) return FALSE // Moved or whatever if(W in src) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 957a3c73f68..36093fa2cf9 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -186,8 +186,8 @@ force = 8.0 w_class = ITEMSIZE_NO_CONTAINER max_w_class = ITEMSIZE_LARGE // This was 8 previously... - anchored = 1.0 - density = 0 + anchored = TRUE + density = FALSE cant_hold = list(/obj/item/weapon/storage/secure/briefcase) starts_with = list( /obj/item/weapon/paper, diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 8bc546a87aa..73f8b7728e8 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -158,6 +158,15 @@ usr.put_in_l_hand(src) src.add_fingerprint(usr) +/obj/item/weapon/storage/AltClick(mob/user) + if(user in is_seeing) + src.close(user) + // I would think there should be some incap check here or something + // But MouseDrop doesn't use one (as of this writing), so... + else if(isliving(user) && Adjacent(user)) + src.open(user) + else + return ..() /obj/item/weapon/storage/proc/return_inv() @@ -520,7 +529,10 @@ F.update_icon(1) for(var/mob/M in is_seeing) - M?.client.screen -= W + if(!M.client || QDELETED(M)) + hide_from(M) + else + M.client.screen -= W if(new_location) if(ismob(loc)) @@ -653,9 +665,20 @@ /obj/item/weapon/storage/verb/quick_empty() set name = "Empty Contents" set category = "Object" + set src in view(1) - if(((!(ishuman(usr) || isrobot(usr))) && (src.loc != usr)) || usr.stat || usr.restrained()) + // Only humans and robots can dump contents + if(!(ishuman(usr) || isrobot(usr))) return + + // Hard to do when you're KO'd + if(usr.incapacitated()) + return + + // Has to be at least adjacent (just for safety, src in view should handle this already) + if(!Adjacent(usr)) + return + drop_contents() /obj/item/weapon/storage/proc/drop_contents() // why is this a proc? literally just for RPEDs diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index cd2f7e05afb..fe8f6f1a007 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -6,8 +6,8 @@ item_state = "baton" slot_flags = SLOT_BELT force = 15 - sharp = 0 - edge = 0 + sharp = FALSE + edge = FALSE throwforce = 7 flags = NOCONDUCT w_class = ITEMSIZE_NORMAL diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 89e150330af..61a7448334d 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -98,8 +98,8 @@ desc = "Cut, cut, and once more cut." icon_state = "scalpel" force = 10.0 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE w_class = ITEMSIZE_TINY slot_flags = SLOT_EARS throwforce = 5.0 @@ -172,8 +172,8 @@ origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) matter = list(MAT_STEEL = 20000,MAT_GLASS = 10000) attack_verb = list("attacked", "slashed", "sawed", "cut") - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE /obj/item/weapon/surgical/circular_saw/manager name = "energetic bone diverter" diff --git a/code/game/objects/items/weapons/tanks/tank_types_vr.dm b/code/game/objects/items/weapons/tanks/tank_types_vr.dm index 68c18aebd25..b40ae4a2105 100644 --- a/code/game/objects/items/weapons/tanks/tank_types_vr.dm +++ b/code/game/objects/items/weapons/tanks/tank_types_vr.dm @@ -2,7 +2,7 @@ name = "double emergency phoron tank" desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable." icon = 'icons/obj/tank_vr.dmi' - icon_override = 'icons/mob/belt_vr.dmi' + icon_override = 'icons/inventory/belt/mob_vr.dmi' icon_state = "emergency_double_vox" gauge_icon = "indicator_double" gauge_cap = 3 @@ -39,7 +39,7 @@ /obj/item/weapon/tank/vox //Can't be a child of phoron or the gas amount gets screwey. icon = 'icons/obj/tank_vr.dmi' - icon_override = 'icons/mob/back_vr.dmi' + icon_override = 'icons/inventory/back/mob_vr.dmi' icon_state = "phoron_vox" gauge_cap = 3 gauge_icon = "indicator_double" @@ -82,7 +82,7 @@ /obj/item/weapon/tank/emergency/phoron icon = 'icons/obj/tank_vr.dmi' - icon_override = 'icons/mob/belt_vr.dmi' + icon_override = 'icons/inventory/belt/mob_vr.dmi' icon_state = "emergency_phoron_vox" gauge_icon = "indicator_smalltank" volume = 6 diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 69e795cb6b5..0c6c78dbbe6 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -6,7 +6,7 @@ var/list/global/tank_gauge_cache = list() name = "tank" icon = 'icons/obj/tank.dmi' sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/back.dmi' + SPECIES_TESHARI = 'icons/inventory/back/mob_teshari.dmi' ) drop_sound = 'sound/items/drop/gascan.ogg' pickup_sound = 'sound/items/pickup/gascan.ogg' diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm index d1be9f9ae66..7b673c0b7e5 100644 --- a/code/game/objects/items/weapons/tools/screwdriver.dm +++ b/code/game/objects/items/weapons/tools/screwdriver.dm @@ -19,7 +19,7 @@ pickup_sound = 'sound/items/pickup/screwdriver.ogg' matter = list(MAT_STEEL = 75) attack_verb = list("stabbed") - sharp = 1 + sharp = TRUE toolspeed = 1 tool_qualities = list(TOOL_SCREWDRIVER) var/random_color = TRUE diff --git a/code/game/objects/items/weapons/tools/wirecutters.dm b/code/game/objects/items/weapons/tools/wirecutters.dm index ea9a0c47d5c..a8f64d4f101 100644 --- a/code/game/objects/items/weapons/tools/wirecutters.dm +++ b/code/game/objects/items/weapons/tools/wirecutters.dm @@ -19,8 +19,8 @@ usesound = 'sound/items/wirecutter.ogg' drop_sound = 'sound/items/drop/wirecutter.ogg' pickup_sound = 'sound/items/pickup/wirecutter.ogg' - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE toolspeed = 1 tool_qualities = list(TOOL_WIRECUTTER) var/random_color = TRUE diff --git a/code/game/objects/items/weapons/towels.dm b/code/game/objects/items/weapons/towels.dm index 77e1c43960a..119c9d7419f 100644 --- a/code/game/objects/items/weapons/towels.dm +++ b/code/game/objects/items/weapons/towels.dm @@ -15,11 +15,11 @@ ..() switch(slot) if(slot_head) - sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi') + sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi') if(slot_wear_suit) - sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi') + sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi') if(slot_belt) - sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/belt.dmi') + sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/belt/mob_teshari.dmi') /obj/item/weapon/towel/attack_self(mob/living/user as mob) user.visible_message(text("[] uses [] to towel themselves off.", user, src)) diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm index d3f9ce5ed2d..0cf9db2b576 100644 --- a/code/game/objects/items/weapons/traps.dm +++ b/code/game/objects/items/weapons/traps.dm @@ -50,7 +50,7 @@ deployed = 1 user.drop_from_inventory(src) update_icon() - anchored = 1 + anchored = TRUE /obj/item/weapon/beartrap/attack_hand(mob/user as mob) if(has_buckled_mobs() && can_use(user)) @@ -63,7 +63,7 @@ user.visible_message("[victim] has been freed from \the [src] by [user].") for(var/A in buckled_mobs) unbuckle_mob(A) - anchored = 0 + anchored = FALSE else if(deployed && can_use(user)) user.visible_message( "[user] starts to disarm \the [src].", @@ -78,7 +78,7 @@ "You have disarmed \the [src]!" ) deployed = 0 - anchored = 0 + anchored = FALSE update_icon() else ..() @@ -116,7 +116,7 @@ //trap the victim in place set_dir(L.dir) - can_buckle = 1 + can_buckle = TRUE buckle_mob(L) L.Stun(stun_length) to_chat(L, "The steel jaws of \the [src] bite into you, trapping you in place!") @@ -137,7 +137,7 @@ ) attack_mob(L) if(!has_buckled_mobs()) - anchored = 0 + anchored = FALSE deployed = 0 update_icon() ..() @@ -210,7 +210,7 @@ "[user] has collected \the [src].", "You have collected \the [src]!" ) - anchored = 0 + anchored = FALSE update_icon() else ..() @@ -235,7 +235,7 @@ playsound(src, 'sound/items/Wirecutter.ogg',40, 1) user.drop_from_inventory(src) forceMove(get_turf(src)) - anchored = 1 + anchored = TRUE update_icon() /obj/item/weapon/material/barbedwire/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/game/objects/items/weapons/traps_vr.dm b/code/game/objects/items/weapons/traps_vr.dm index f1338f691d5..0b7c543f02f 100644 --- a/code/game/objects/items/weapons/traps_vr.dm +++ b/code/game/objects/items/weapons/traps_vr.dm @@ -1,7 +1,7 @@ /obj/item/weapon/beartrap slot_flags = SLOT_MASK item_icons = list( - slot_wear_mask_str = 'icons/mob/mask_vr.dmi' + slot_wear_mask_str = 'icons/inventory/face/mob_vr.dmi' ) /obj/item/weapon/beartrap/equipped() diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index be45bfa822a..28e38a0d700 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -94,12 +94,12 @@ icon = 'icons/effects/effects.dmi' icon_state = "energynet" - density = 1 + density = TRUE opacity = 0 mouse_opacity = 1 - anchored = 0 + anchored = FALSE - can_buckle = 1 + can_buckle = TRUE buckle_lying = 0 buckle_dir = SOUTH diff --git a/code/game/objects/mob_spawner_vr.dm b/code/game/objects/mob_spawner_vr.dm index a3f01c53718..3693bf85e2b 100644 --- a/code/game/objects/mob_spawner_vr.dm +++ b/code/game/objects/mob_spawner_vr.dm @@ -3,7 +3,7 @@ desc = "This shouldn't be seen, yell at a dev." icon = 'icons/effects/effects.dmi' icon_state = "rift" - anchored = 1 + anchored = TRUE var/last_spawn = 0 var/spawn_delay = 10 MINUTES @@ -76,7 +76,7 @@ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) user.do_attack_animation(src) - visible_message("\The [src] has been [I.attack_verb.len ? "[pick(I.attack_verb)]":"attacked"] with \the [I] by [user].") + visible_message("\The [src] has been [LAZYLEN(I.attack_verb) ? "[pick(I.attack_verb)]":"attacked"] with \the [I] by [user].") take_damage(I.force) /obj/structure/mob_spawner/bullet_act(var/obj/item/projectile/Proj) @@ -153,7 +153,7 @@ It also makes it so a ghost wont know where all the goodies/mobs are. mob_faction = "wild animal" total_spawns = -1 destructible = 0 - anchored = 1 + anchored = TRUE invisibility = 101 spawn_types = list( /mob/living/simple_mob/animal/passive/gaslamp = 20, @@ -171,7 +171,7 @@ It also makes it so a ghost wont know where all the goodies/mobs are. total_spawns = -1 destructible = 1 health = 50 - anchored = 1 + anchored = TRUE icon = 'icons/mob/actions.dmi' icon_state = "alien_egg" spawn_types = list( @@ -190,7 +190,7 @@ It also makes it so a ghost wont know where all the goodies/mobs are. total_spawns = 1 destructible = 1 health = 50 - anchored = 1 + anchored = TRUE icon = 'icons/mob/actions.dmi' icon_state = "alien_egg" spawn_types = list( diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 9f16a6b9c9d..ac7fe2b2092 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -5,12 +5,12 @@ //Used to store information about the contents of the object. var/list/matter var/w_class // Size of the object. - var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj. + var/unacidable = FALSE //universal "unacidabliness" var, here so you can use it in any obj. animate_movement = 2 var/throwforce = 1 var/catchable = 1 // can it be caught on throws/flying? - var/sharp = 0 // whether this object cuts - var/edge = 0 // whether this object is more likely to dismember + var/sharp = FALSE // whether this object cuts + var/edge = FALSE // whether this object is more likely to dismember var/pry = 0 //Used in attackby() to open doors var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! var/damtype = "brute" diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index 06a5e75fd12..f61567d6de7 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -464,7 +464,7 @@ /obj/random/multiple/ore_pile/item_to_spawn() return pick( - prob(10);list( + /*prob(10);list( /obj/item/weapon/ore/bauxite, /obj/item/weapon/ore/bauxite, /obj/item/weapon/ore/bauxite, @@ -475,7 +475,7 @@ /obj/item/weapon/ore/bauxite, /obj/item/weapon/ore/bauxite, /obj/item/weapon/ore/bauxite - ), + ),*/ prob(10);list( /obj/item/weapon/ore/coal, /obj/item/weapon/ore/coal, @@ -488,7 +488,7 @@ /obj/item/weapon/ore/coal, /obj/item/weapon/ore/coal ), - prob(10);list( + /*prob(10);list( /obj/item/weapon/ore/copper, /obj/item/weapon/ore/copper, /obj/item/weapon/ore/copper, @@ -499,7 +499,7 @@ /obj/item/weapon/ore/copper, /obj/item/weapon/ore/copper, /obj/item/weapon/ore/copper - ), + ),*/ prob(3);list( /obj/item/weapon/ore/diamond, /obj/item/weapon/ore/diamond, @@ -598,11 +598,11 @@ prob(2);list( /obj/item/weapon/ore/verdantium, /obj/item/weapon/ore/verdantium - ), + ),/* prob(2);list( /obj/item/weapon/ore/void_opal, /obj/item/weapon/ore/void_opal - ), + ),*/ ) /obj/random/multiple/corp_crate diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 48e62010cc5..41db4704fdb 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -946,7 +946,7 @@ /obj/random/thermalponcho name = "random thermal poncho" desc = "This is a thermal poncho spawn." - icon = 'icons/obj/clothing/ties.dmi' + icon = 'icons/inventory/accessory/item.dmi' icon_state = "classicponcho" /obj/random/thermalponcho/item_to_spawn() @@ -959,7 +959,7 @@ /obj/random/pouch name = "Random Storage Pouch" desc = "This is a random storage pouch." - icon = 'icons/obj/clothing/pouches.dmi' + icon = 'icons/inventory/pockets/item.dmi' icon_state = "random" /obj/random/pouch/item_to_spawn() diff --git a/code/game/objects/random/spacesuits.dm b/code/game/objects/random/spacesuits.dm index 2d394625b94..5db5bbb074d 100644 --- a/code/game/objects/random/spacesuits.dm +++ b/code/game/objects/random/spacesuits.dm @@ -4,7 +4,7 @@ /obj/random/multiple/voidsuit name = "Random Voidsuit" desc = "This is a random voidsuit." - icon = 'icons/obj/clothing/spacesuits.dmi' + icon = 'icons/inventory/suit/item.dmi' icon_state = "void" /obj/random/multiple/voidsuit/item_to_spawn() @@ -98,7 +98,7 @@ /obj/random/multiple/voidsuit/mining name = "Random Mining Voidsuit" desc = "This is a random mining voidsuit." - icon = 'icons/obj/clothing/spacesuits.dmi' + icon = 'icons/inventory/suit/item.dmi' icon_state = "rig-mining" /obj/random/multiple/voidsuit/mining/item_to_spawn() @@ -116,7 +116,7 @@ /obj/random/multiple/voidsuit/engineering name = "Random Engineering Voidsuit" desc = "This is a random engineering voidsuit." - icon = 'icons/obj/clothing/spacesuits.dmi' + icon = 'icons/inventory/suit/item.dmi' icon_state = "rig-engineering" /obj/random/multiple/voidsuit/engineering/item_to_spawn() @@ -146,7 +146,7 @@ /obj/random/multiple/voidsuit/security name = "Random Security Voidsuit" desc = "This is a random security voidsuit." - icon = 'icons/obj/clothing/spacesuits.dmi' + icon = 'icons/inventory/suit/item.dmi' icon_state = "rig-sec" /obj/random/multiple/voidsuit/security/item_to_spawn() @@ -168,7 +168,7 @@ /obj/random/multiple/voidsuit/medical name = "Random Medical Voidsuit" desc = "This is a random medical voidsuit." - icon = 'icons/obj/clothing/spacesuits.dmi' + icon = 'icons/inventory/suit/item.dmi' icon_state = "rig-medical" /obj/random/multiple/voidsuit/medical/item_to_spawn() @@ -194,7 +194,7 @@ /obj/random/multiple/voidsuit/vintage name = "Random Vintage Voidsuit" desc = "This is a random vintage voidsuit." - icon = 'icons/obj/clothing/spacesuits.dmi' + icon = 'icons/inventory/suit/item.dmi' icon_state = "rig-vintagecrew" /obj/random/multiple/voidsuit/vintage/item_to_spawn() diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index f023f3e3950..67d76a8c893 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -10,8 +10,8 @@ var/list/climbers var/block_turf_edges = FALSE // If true, turf edge icons will not be made on the turf this occupies. - var/list/connections = list("0", "0", "0", "0") - var/list/other_connections = list("0", "0", "0", "0") + var/list/connections + var/list/other_connections var/list/blend_objects = newlist() // Objects which to blend with var/list/noblend_objects = newlist() //Objects to avoid blending with (such as children of listed blend objects. @@ -252,6 +252,5 @@ return TRUE /obj/structure/proc/refresh_neighbors() - for(var/thing in RANGE_TURFS(1, src)) - var/turf/T = thing + for(var/turf/T as anything in RANGE_TURFS(1, src)) T.update_icon() diff --git a/code/game/objects/structures/alien/alien egg.dm b/code/game/objects/structures/alien/alien egg.dm new file mode 100644 index 00000000000..7ca4bd37b77 --- /dev/null +++ b/code/game/objects/structures/alien/alien egg.dm @@ -0,0 +1,117 @@ +#define MAX_PROGRESS 100 + +/obj/structure/alien/egg //Gurg Addition, working alien egg structure. + desc = "It looks like a weird egg." + name = "egg" + icon_state = "egg_growing" + density = 0 + anchored = 1 + var/progress = 0 + +/obj/structure/alien/egg/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/structure/alien/egg/Destroy() + STOP_PROCESSING(SSobj, src) + . = ..() + +/obj/structure/alien/egg/CanUseTopic(var/mob/user) + return isobserver(user) ? STATUS_INTERACTIVE : STATUS_CLOSE + +/obj/structure/alien/egg/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["spawn"]) + attack_ghost(usr) + +/obj/structure/alien/egg/process() + progress++ + if(progress >= MAX_PROGRESS) + for(var/mob/observer/dead/O in observer_mob_list) + if(O.client) + to_chat(O, "An alien is ready to hatch at [get_area(src.loc)]! (spawn)") + STOP_PROCESSING(SSobj, src) + update_icon() + +/obj/structure/alien/egg/update_icon() + if(progress == -1) + icon_state = "egg_opened" + else if(progress < MAX_PROGRESS) + icon_state = "egg_growing" + else + icon_state = "egg" + + // Ghostjoinable icon + var/static/image/I + if(!I) + I = image('icons/mob/hud_vr.dmi', "ghostjoin") + I.invisibility = INVISIBILITY_OBSERVER + I.plane = PLANE_GHOSTS + I.appearance_flags = KEEP_APART|RESET_TRANSFORM + + if(progress >= MAX_PROGRESS) + add_overlay(I) + else + cut_overlay(I) + + +/obj/structure/alien/egg/attack_ghost(var/mob/observer/dead/user) + // Still a ghost? + if(!istype(user)) + tgui_alert_async(user, "You have to be an observer to join as this Xenomorph larva.") + return + + // Check for bans properly. + if(jobban_isbanned(user, "Xenomorph")) + tgui_alert_async(user, "You are banned from playing a Xenomorph, so you can't join as this Xenomorph larva.") + return + + // Check for respawn + if(!user.MayRespawn(1)) + tgui_alert_async(user, "You aren't allowed to respawn, so you can't join as this Xenomorph larva.") + return + + if(progress == -1) + tgui_alert_async(user, "That egg has already hatched.") + else if(progress >= MAX_PROGRESS) + tgui_alert_async(user, "Are you sure you want to join as a Xenomorph larva?", "Become Larva", list("Yes","No"), CALLBACK(src, .proc/ghost_dunk), 20 SECONDS) + else + tgui_alert_async(user, "\The [src] has not yet matured.") + +/obj/structure/alien/egg/proc/ghost_dunk(choice) + if(choice != "Yes") + return + var/mob/observer/dead/user = usr + if(progress < MAX_PROGRESS || !istype(user)) + return + + progress = -1 // No harvesting pls. + flick("egg_opening",src) + sleep(5) //5ds animation + + if(!src || !istype(user)) + visible_message("\The [src] writhes with internal motion, but nothing comes out.") + progress = MAX_PROGRESS // Someone else can have a go. + return // What a pain. + + // Create the mob, transfer over key. + var/mob/living/carbon/alien/larva/larva = new(get_turf(src)) + + // Move the ghost in + if(user.mind) + user.mind.active = TRUE + user.mind.transfer_to(larva) + else + larva.ckey = user.ckey + qdel(user) + + visible_message("\The [src] splits open with a wet slithering noise, and \the [larva] writhes free!") + + // Turn us into a hatched egg. + name = "hatched alien egg" + desc += " This one has hatched." + update_icon() + +#undef MAX_PROGRESS diff --git a/code/game/objects/structures/alien/alien.dm b/code/game/objects/structures/alien/alien.dm new file mode 100644 index 00000000000..31a609e5a52 --- /dev/null +++ b/code/game/objects/structures/alien/alien.dm @@ -0,0 +1,62 @@ +/obj/structure/alien //Gurg Addition, framework for alien eggs. + name = "alien thing" + desc = "There's something alien about this." + icon = 'icons/mob/alien.dmi' + layer = ABOVE_JUNK_LAYER + var/health = 50 + +/obj/structure/alien/proc/healthcheck() + if(health <=0) + set_density(0) + qdel(src) + return + +/obj/structure/alien/bullet_act(var/obj/item/projectile/Proj) + health -= Proj.damage + ..() + healthcheck() + return + +/obj/structure/alien/ex_act(severity) + switch(severity) + if(1.0) + health-=50 + if(2.0) + health-=50 + if(3.0) + if (prob(50)) + health-=50 + else + health-=25 + healthcheck() + return + +/obj/structure/alien/hitby(AM as mob|obj) + ..() + visible_message("\The [src] was hit by \the [AM].") + var/tforce = 0 + if(ismob(AM)) + tforce = 10 + else + tforce = AM:throwforce + playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) + health = max(0, health - tforce) + healthcheck() + ..() + return + +/obj/structure/alien/attack_generic() + attack_hand(usr) + +/obj/structure/alien/attackby(var/obj/item/weapon/W, var/mob/user) + health = max(0, health - W.force) + playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) + healthcheck() + ..() + return + +/obj/structure/alien/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(air_group) return 0 + if(istype(mover) && mover.checkpass(PASSGLASS)) + return !opacity + return !density diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index 2e2f4052b8b..cbb95e955f8 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -375,6 +375,12 @@ persistence_id = "library_private" req_one_access = list(access_library) +/obj/structure/sign/painting/away_areas // for very hard-to-get-to areas + name = "\improper Remote Painting Exhibit mounting" + desc = "For art pieces made in the depths of space." + desc_with_canvas = "A painting hung where only the determined can reach it." + persistence_id = "away_area" + /obj/structure/sign/painting/Initialize(mapload, dir, building) . = ..() if(persistence_id) diff --git a/code/game/objects/structures/barricades.dm b/code/game/objects/structures/barricades.dm index 34ab6025c73..098b126d003 100644 --- a/code/game/objects/structures/barricades.dm +++ b/code/game/objects/structures/barricades.dm @@ -4,8 +4,8 @@ desc = "This space is blocked off by a barricade." icon = 'icons/obj/structures.dmi' icon_state = "barricade" - anchored = 1.0 - density = 1.0 + anchored = TRUE + density = TRUE var/health = 100 var/maxhealth = 100 var/datum/material/material @@ -144,7 +144,8 @@ var/image/I for(var/i = 1 to 4) - I = image('icons/obj/sandbags.dmi', "sandbags[connections[i]]", dir = 1<<(i-1)) + var/connect = connections?[i] || 0 + I = image('icons/obj/sandbags.dmi', "sandbags[connect]", dir = 1<<(i-1)) I.color = material.icon_colour add_overlay(I) diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm index f064f983b78..e692170fc8f 100644 --- a/code/game/objects/structures/barsign.dm +++ b/code/game/objects/structures/barsign.dm @@ -4,7 +4,7 @@ plane = ABOVE_PLANE icon_state = "empty" appearance_flags = 0 - anchored = 1 + anchored = TRUE var/cult = 0 /obj/structure/sign/double/barsign/proc/get_valid_states(initial=1) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index c7bab19f0fa..50869c4497c 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -164,7 +164,7 @@ LINEN BINS desc = "A linen bin. It looks rather cosy." icon = 'icons/obj/structures.dmi' icon_state = "linenbin-full" - anchored = 1 + anchored = TRUE var/amount = 20 var/list/sheets = list() var/obj/item/hidden = null diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index 58674def1a5..abd06658980 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -5,8 +5,8 @@ icon_state = "catwalk" plane = DECAL_PLANE layer = DECAL_LAYER - density = 0 - anchored = 1.0 + density = FALSE + anchored = TRUE var/hatch_open = FALSE var/plating_color = null var/obj/item/stack/tile/plated_tile = null @@ -51,7 +51,8 @@ var/image/I if(!hatch_open) for(var/i = 1 to 4) - I = image(icon, "catwalk[connections[i]]", dir = 1<<(i-1)) + var/connect = connections?[i] || 0 + I = image(icon, "catwalk[connect]", dir = 1<<(i-1)) add_overlay(I) if(plating_color) I = image(icon, "plated") @@ -136,8 +137,8 @@ name = "plated catwalk spawner" icon = 'icons/turf/catwalks.dmi' icon_state = "catwalk_plated" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE var/activated = FALSE plane = DECAL_PLANE layer = DECAL_LAYER diff --git a/code/game/objects/structures/crates_lockers/__closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm index f111d191968..fb27ea69776 100644 --- a/code/game/objects/structures/crates_lockers/__closets.dm +++ b/code/game/objects/structures/crates_lockers/__closets.dm @@ -4,7 +4,7 @@ desc = "It's a basic storage unit." icon = 'icons/obj/closets/bases/closet.dmi' icon_state = "base" - density = 1 + density = TRUE w_class = ITEMSIZE_HUGE layer = UNDER_JUNK_LAYER blocks_emissive = EMISSIVE_BLOCK_GENERIC diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index 14e1c276b23..38656415527 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -16,7 +16,7 @@ icon_state = "closed_unlocked" seal_tool = null breakout_sound = 'sound/weapons/thudswoosh.ogg' - anchored = 1 + anchored = TRUE max_closets = 1 opened = 1 closet_appearance = null // Special icon for us diff --git a/code/game/objects/structures/crates_lockers/closets/egg_vr.dm b/code/game/objects/structures/crates_lockers/closets/egg_vr.dm index dabc8fd88bb..19d3f8b4527 100644 --- a/code/game/objects/structures/crates_lockers/closets/egg_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/egg_vr.dm @@ -3,7 +3,7 @@ desc = "It's an egg; it's smooth to the touch." //This is the default egg. icon = 'icons/obj/egg_vr.dmi' icon_state = "egg" - density = 0 //Just in case there's a lot of eggs, so it doesn't block hallways/areas. + density = FALSE //Just in case there's a lot of eggs, so it doesn't block hallways/areas. var/icon_closed = "egg" var/icon_opened = "egg_open" var/icon_locked = "egg" diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index 0c91f7aecfd..6ba78a90a0d 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -12,7 +12,7 @@ name = "administrative supply closet" desc = "It's a storage unit for things that have no right being here." closet_appearance = /decl/closet_appearance/tactical - anchored = 0 + anchored = FALSE /obj/structure/closet/gimmick/russian name = "russian surplus closet" @@ -44,7 +44,7 @@ name = "\improper Thunderdome closet" desc = "Everything you need!" closet_appearance = /decl/closet_appearance/thunderdomered - anchored = 1 + anchored = TRUE /obj/structure/closet/thunderdome/tdred name = "red-team Thunderdome closet" diff --git a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm index 18b81142b4a..cd51af7b2ae 100644 --- a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm @@ -220,8 +220,8 @@ desc = "It's wall-mounted storage unit for an AutoLok suit." icon = 'icons/obj/closets/bases/wall_double.dmi' closet_appearance = /decl/closet_appearance/wall_double/autolok - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE wall_mounted = 1 store_mobs = 0 @@ -236,8 +236,8 @@ desc = "It's wall-mounted storage unit for an emergency suit." icon = 'icons/obj/closets/bases/wall.dmi' closet_appearance = /decl/closet_appearance/wall/emergency - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE wall_mounted = 1 store_mobs = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index b1b8bf90988..bc2ab8781cc 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -34,6 +34,7 @@ /obj/item/clothing/under/rank/nurse, /obj/item/clothing/under/rank/orderly, /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/labcoat/modern, /obj/item/clothing/suit/storage/toggle/fr_jacket, /obj/item/clothing/shoes/white, /obj/item/weapon/cartridge/medical, @@ -128,6 +129,7 @@ /obj/item/clothing/under/rank/chief_medical_officer/skirt, /obj/item/clothing/suit/storage/toggle/labcoat/cmo, /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, + /obj/item/clothing/suit/storage/toggle/labcoat/modern/cmo, /obj/item/weapon/cartridge/cmo, /obj/item/clothing/gloves/sterile/latex, /obj/item/clothing/shoes/brown, @@ -224,8 +226,8 @@ desc = "It's a secure wall-mounted storage unit for first aid supplies." plane = TURF_PLANE layer = ABOVE_TURF_LAYER - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE wall_mounted = 1 store_mobs = 0 req_access = list(access_medical_equip) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 66383849f06..a3fdc31f244 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -33,6 +33,7 @@ /obj/item/clothing/under/rank/research_director/rdalt, /obj/item/clothing/under/rank/research_director/dress_rd, /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/labcoat/modern, /obj/item/weapon/cartridge/rd, /obj/item/clothing/shoes/white, /obj/item/clothing/shoes/laceup/brown, @@ -54,6 +55,7 @@ starts_with = list( /obj/item/clothing/under/rank/scientist, /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/labcoat/modern, /obj/item/clothing/shoes/white, /obj/item/weapon/melee/umbrella, // vorestation addition, /obj/item/clothing/glasses/science, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 9fae830b44c..85b9367b7d5 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -3,7 +3,7 @@ desc = "It's an immobile card-locked storage unit." icon = 'icons/obj/closet.dmi' icon_state = "secure1" - density = 1 + density = TRUE opened = 0 var/locked = 1 var/broken = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index d1ed2f8e9ae..1e6467d94c7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -260,7 +260,7 @@ GLOBAL_LIST_BOILERPLATE(all_brig_closets, /obj/structure/closet/secure_closet/br name = "brig locker" req_access = list(access_brig) closet_appearance = /decl/closet_appearance/secure_closet/brig - anchored = 1 + anchored = TRUE var/id = null starts_with = list( @@ -270,7 +270,7 @@ GLOBAL_LIST_BOILERPLATE(all_brig_closets, /obj/structure/closet/secure_closet/br /obj/structure/closet/secure_closet/posters name = "morale storage" req_access = list(access_security) - anchored = 1 + anchored = TRUE starts_with = list( /obj/item/poster/nanotrasen, @@ -297,7 +297,7 @@ GLOBAL_LIST_BOILERPLATE(all_brig_closets, /obj/structure/closet/secure_closet/br name = "wall locker" req_access = list(access_security) closet_appearance = /decl/closet_appearance/wall - density = 1 + density = TRUE //too small to put a man in large = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index dc6e92355d7..9b66918be0d 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -3,8 +3,8 @@ desc = "An incredibly lifelike marble carving" icon = 'icons/obj/statue.dmi' icon_state = "human_male" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE health = 0 //destroying the statue kills the mob within blocks_emissive = EMISSIVE_BLOCK_UNIQUE var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock @@ -17,7 +17,7 @@ if(L && (ishuman(L) || L.isMonkey() || iscorgi(L))) if(L.buckled) L.buckled = 0 - L.anchored = 0 + L.anchored = FALSE if(L.client) L.client.perspective = EYE_PERSPECTIVE L.client.eye = src diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 8ccf80bf18d..07c5276a6fe 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -187,8 +187,8 @@ closet_appearance = /decl/closet_appearance/wall/hydrant plane = TURF_PLANE layer = ABOVE_TURF_LAYER - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE wall_mounted = 1 store_mobs = 0 @@ -207,7 +207,7 @@ name = "first-aid closet" desc = "It's wall-mounted storage unit for first aid supplies." closet_appearance = /decl/closet_appearance/wall/medical - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE wall_mounted = 1 store_mobs = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/walllocker.dm b/code/game/objects/structures/crates_lockers/closets/walllocker.dm index babaad28a5a..2b09bc1ce65 100644 --- a/code/game/objects/structures/crates_lockers/closets/walllocker.dm +++ b/code/game/objects/structures/crates_lockers/closets/walllocker.dm @@ -6,8 +6,8 @@ name = "Wall Locker" icon = 'icons/obj/closets/bases/wall.dmi' closet_appearance = /decl/closet_appearance/wall - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE store_mobs = 0 wall_mounted = 1 @@ -85,8 +85,8 @@ name = "Wall Cabinet" icon = 'icons/obj/closets/bases/wall_double.dmi' closet_appearance = /decl/closet_appearance/wall_double - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE store_mobs = 0 wall_mounted = 1 plane = TURF_PLANE @@ -113,8 +113,8 @@ name = "Kitchen Cabinet" icon = 'icons/obj/closets/bases/wall_double.dmi' closet_appearance = /decl/closet_appearance/wall_double/kitchen - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE /obj/structure/closet/walllocker_double/kitchen/north pixel_y = 32 @@ -157,8 +157,8 @@ name = "fire-safety closet" desc = "It's a storage cabinet packed with fire-fighting supplies." closet_appearance = /decl/closet_appearance/wall_double/fire_safety - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE starts_with = list( /obj/item/clothing/suit/fire/firefighter, diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 5eb36f6dc3a..ead22e53e96 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -206,6 +206,7 @@ /obj/item/clothing/under/rank/scientist/skirt = 2, /obj/item/clothing/under/rank/scientist/turtleneck = 3, /obj/item/clothing/suit/storage/toggle/labcoat = 3, + /obj/item/clothing/suit/storage/toggle/labcoat/modern = 3, /obj/item/clothing/shoes/white = 3, /obj/item/clothing/shoes/slippers = 3, /obj/item/clothing/suit/storage/hooded/wintercoat/science, diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index c17085bec1c..cfa6ece8a86 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -5,7 +5,7 @@ desc = "A rectangular steel crate." icon = 'icons/obj/closets/bases/crate.dmi' closet_appearance = /decl/closet_appearance/crate - climbable = 1 + climbable = TRUE dir = 4 //Spawn facing 'forward' by default. var/points_per_crate = 5 var/rigged = 0 diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 7c8f95ea430..1ceded17fd8 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -3,7 +3,7 @@ desc = "A hefty wooden crate." icon = 'icons/obj/storage.dmi' icon_state = "densecrate" - density = 1 + density = TRUE var/list/starts_with /obj/structure/largecrate/Initialize() diff --git a/code/game/objects/structures/crates_lockers/vehiclecage.dm b/code/game/objects/structures/crates_lockers/vehiclecage.dm index 31862846ff1..c3a04e9267f 100644 --- a/code/game/objects/structures/crates_lockers/vehiclecage.dm +++ b/code/game/objects/structures/crates_lockers/vehiclecage.dm @@ -3,7 +3,7 @@ desc = "A large metal lattice that seems to exist solely to annoy consumers." icon = 'icons/obj/storage.dmi' icon_state = "vehicle_cage" - density = 1 + density = TRUE var/obj/vehicle/my_vehicle var/my_vehicle_type var/paint_color = "#666666" diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index 9de63fd3d03..1d533181255 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -6,7 +6,7 @@ plane = MOB_PLANE layer = ABOVE_MOB_LAYER opacity = 1 - density = 0 + density = FALSE /obj/structure/curtain/open icon_state = "open" diff --git a/code/game/objects/structures/dancepole_vr.dm b/code/game/objects/structures/dancepole_vr.dm index 0c9397142d2..3a548f11332 100644 --- a/code/game/objects/structures/dancepole_vr.dm +++ b/code/game/objects/structures/dancepole_vr.dm @@ -4,8 +4,8 @@ desc = "Engineered for your entertainment" icon = 'icons/obj/objects_vr.dmi' icon_state = "dancepole" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE /obj/structure/dancepole/attackby(var/obj/item/O as obj, var/mob/user as mob) if(O.is_screwdriver()) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 0f18d967b35..fc1ae0ef597 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -3,9 +3,9 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "glassbox1" desc = "A display case for prized possessions. It taunts you to kick it." - density = 1 - anchored = 1 - unacidable = 1//Dissolving the case would also delete the gun. + density = TRUE + anchored = TRUE + unacidable = TRUE//Dissolving the case would also delete the gun. var/health = 30 var/occupied = 1 var/destroyed = 0 @@ -37,7 +37,7 @@ /obj/structure/displaycase/proc/healthcheck() if (src.health <= 0) if (!( src.destroyed )) - src.density = 0 + src.density = FALSE src.destroyed = 1 new /obj/item/weapon/material/shard( src.loc ) playsound(src, "shatter", 70, 1) diff --git a/code/game/objects/structures/dogbed.dm b/code/game/objects/structures/dogbed.dm index bf9a65f8ebb..b8ad1095fde 100644 --- a/code/game/objects/structures/dogbed.dm +++ b/code/game/objects/structures/dogbed.dm @@ -3,6 +3,6 @@ desc = "A bed made especially for dogs, or other similarly sized pets." icon = 'icons/obj/furniture.dmi' icon_state = "dogbed" - can_buckle = 1 + can_buckle = TRUE buckle_dir = SOUTH buckle_lying = 1 \ No newline at end of file diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 5a786cacd80..108e824616a 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -2,8 +2,8 @@ name = "airlock assembly" icon = 'icons/obj/doors/door_assembly.dmi' icon_state = "door_as_0" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE w_class = ITEMSIZE_HUGE var/state = 0 var/base_icon_state = "" @@ -176,7 +176,7 @@ playsound(src, WT.usesound, 50, 1) if(istext(glass)) user.visible_message("[user] welds the [glass] plating off the airlock assembly.", "You start to weld the [glass] plating off the airlock assembly.") - if(do_after(user, 40 * WT.toolspeed)) + if(do_after(user, 4 SECONDS * WT.toolspeed, src, exclusive = TASK_ALL_EXCLUSIVE)) if(!src || !WT.isOn()) return to_chat(user, "You welded the [glass] plating off!") var/M = text2path("/obj/item/stack/material/[glass]") @@ -184,14 +184,14 @@ glass = 0 else if(glass == 1) user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly.") - if(do_after(user, 40 * WT.toolspeed)) + if(do_after(user, 4 SECONDS * WT.toolspeed, src, exclusive = TASK_ALL_EXCLUSIVE)) if(!src || !WT.isOn()) return to_chat(user, "You welded the glass panel out!") new /obj/item/stack/material/glass/reinforced(src.loc) glass = 0 else if(!anchored) user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.") - if(do_after(user, 40 * WT.toolspeed)) + if(do_after(user, 4 SECONDS * WT.toolspeed, src, exclusive = TASK_ALL_EXCLUSIVE)) if(!src || !WT.isOn()) return to_chat(user, "You dissasembled the airlock assembly!") new /obj/item/stack/material/steel(src.loc, 4) @@ -207,7 +207,7 @@ else user.visible_message("[user] begins securing the airlock assembly to the floor.", "You starts securing the airlock assembly to the floor.") - if(do_after(user, 40 * W.toolspeed)) + if(do_after(user, 4 SECONDS * W.toolspeed, src, exclusive = TASK_ALL_EXCLUSIVE)) if(!src) return to_chat(user, "You [anchored? "un" : ""]secured the airlock assembly!") anchored = !anchored @@ -218,7 +218,7 @@ to_chat(user, "You need one length of coil to wire the airlock assembly.") return user.visible_message("[user] wires the airlock assembly.", "You start to wire the airlock assembly.") - if(do_after(user, 40) && state == 0 && anchored) + if(do_after(user, 4 SECONDS, src, exclusive = TASK_ALL_EXCLUSIVE) && state == 0 && anchored) if (C.use(1)) src.state = 1 to_chat(user, "You wire the airlock.") @@ -227,7 +227,7 @@ playsound(src, W.usesound, 100, 1) user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.") - if(do_after(user, 40 * W.toolspeed)) + if(do_after(user, 4 SECONDS * W.toolspeed, src, exclusive = TASK_ALL_EXCLUSIVE)) if(!src) return to_chat(user, "You cut the airlock wires.!") new/obj/item/stack/cable_coil(src.loc, 1) @@ -237,7 +237,7 @@ playsound(src, W.usesound, 100, 1) user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.") - if(do_after(user, 40)) + if(do_after(user, 4 SECONDS, src, exclusive = TASK_ALL_EXCLUSIVE)) if(!src) return user.drop_item() W.loc = src @@ -255,7 +255,7 @@ playsound(src, W.usesound, 100, 1) user.visible_message("\The [user] starts removing the electronics from the airlock assembly.", "You start removing the electronics from the airlock assembly.") - if(do_after(user, 40 * W.toolspeed)) + if(do_after(user, 4 SECONDS * W.toolspeed, src, exclusive = TASK_ALL_EXCLUSIVE)) if(!src) return to_chat(user, "You removed the airlock electronics!") src.state = 1 @@ -270,7 +270,7 @@ if(material_name == "rglass") playsound(src, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") - if(do_after(user, 40) && !glass) + if(do_after(user, 4 SECONDS, src, exclusive = TASK_ALL_EXCLUSIVE) && !glass) if (S.use(1)) to_chat(user, "You installed reinforced glass windows into the airlock assembly.") glass = 1 @@ -282,7 +282,7 @@ if(S.get_amount() >= 2) playsound(src, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") - if(do_after(user, 40) && !glass) + if(do_after(user, 4 SECONDS, src, exclusive = TASK_ALL_EXCLUSIVE) && !glass) if (S.use(2)) to_chat(user, "You installed [material_display_name(material_name)] plating into the airlock assembly.") glass = material_name @@ -291,7 +291,7 @@ playsound(src, W.usesound, 100, 1) to_chat(user, "Now finishing the airlock.") - if(do_after(user, 40 * W.toolspeed)) + if(do_after(user, 4 SECONDS * W.toolspeed, src, exclusive = TASK_ALL_EXCLUSIVE)) if(!src) return to_chat(user, "You finish the airlock!") var/path diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index ca515e230f8..2859d55dfbe 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -65,8 +65,7 @@ s.set_up(12, 1, src) s.start() if(has_buckled_mobs()) - for(var/a in buckled_mobs) - var/mob/living/L = a + for(var/mob/living/L as anything in buckled_mobs) L.burn_skin(85) to_chat(L, "You feel a deep shock course through your body!") sleep(1) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index a5717bdf6e5..fdfae03727e 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/closet.dmi' icon_state = "extinguisher_closed" layer = ABOVE_WINDOW_LAYER - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE var/obj/item/weapon/extinguisher/has_extinguisher var/opened = 0 diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index f584fd8838b..29159503abb 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -6,8 +6,8 @@ icon = 'icons/obj/closet.dmi' //Not bothering to move icons out for now. But its dumb still. icon_state = "fireaxe1000" layer = ABOVE_WINDOW_LAYER - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE var/open = 0 var/hitstaken = 0 var/locked = 1 diff --git a/code/game/objects/structures/fitness.dm b/code/game/objects/structures/fitness.dm index f41fbfa8cf8..f84c9508e73 100644 --- a/code/game/objects/structures/fitness.dm +++ b/code/game/objects/structures/fitness.dm @@ -1,13 +1,13 @@ /obj/structure/fitness icon = 'icons/obj/stationobjs.dmi' - anchored = 1 + anchored = TRUE var/being_used = 0 /obj/structure/fitness/punchingbag name = "punching bag" desc = "A punching bag." icon_state = "punchingbag" - density = 1 + density = TRUE var/list/hit_message = list("hit", "punch", "kick", "robust") /obj/structure/fitness/punchingbag/attack_hand(var/mob/living/carbon/human/user) diff --git a/code/game/objects/structures/fitness_vr.dm b/code/game/objects/structures/fitness_vr.dm index 99978fe27cc..960becca412 100644 --- a/code/game/objects/structures/fitness_vr.dm +++ b/code/game/objects/structures/fitness_vr.dm @@ -3,11 +3,11 @@ desc = "Firm yet springy, perhaps this could be useful!" icon = 'icons/obj/fitness_vr.dmi' icon_state = "ropes" - density = 1 + density = TRUE throwpass = 1 - climbable = 1 + climbable = TRUE layer = WINDOW_LAYER - anchored = 1 + anchored = TRUE flags = ON_BORDER /obj/structure/fitness/boxing_ropes/CanPass(atom/movable/mover, turf/target) //sets it so that players can enter turf from all directions except the main direction. if(istype(mover) && mover.checkpass(PASSTABLE)) @@ -60,12 +60,12 @@ desc = "Firm yet springy, perhaps this could be useful!" icon = 'icons/obj/fitness_vr.dmi' icon_state = "ropes" - density = 1 + density = TRUE throwpass = 1 - climbable = 1 + climbable = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER - anchored = 1 + anchored = TRUE flags = ON_BORDER /obj/structure/fitness/boxing_ropes_bottom/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) @@ -120,11 +120,11 @@ desc = "A sturdy post that looks like it could support even the most heaviest of heavy weights!" icon = 'icons/obj/fitness_vr.dmi' icon_state = "turnbuckle" - density = 1 + density = TRUE throwpass = 1 - climbable = 1 + climbable = TRUE layer = WINDOW_LAYER - anchored = 1 + anchored = TRUE flags = ON_BORDER /obj/structure/fitness/boxing_turnbuckle/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm index ccb3106886f..6f7963509e4 100644 --- a/code/game/objects/structures/flora/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -15,6 +15,7 @@ var/harvest_tool = null // The type of item used to harvest the plant. var/harvest_count = 0 + var/destroy_on_harvest = FALSE var/randomize_harvest_count = TRUE var/max_harvests = 0 @@ -53,6 +54,8 @@ else to_chat(user, "You harvest \the [AM] from \the [src].") + if(harvest_count >= max_harvests && destroy_on_harvest) + qdel(src) return ..(W, user) @@ -66,11 +69,12 @@ /obj/structure/flora/proc/spawn_harvest(var/path = null, var/mob/user = null) if(!ispath(path)) return 0 - var/turf/Target = get_turf(src) + + var/atom/movable/AM = new path() if(user) - Target = get_turf(user) - - var/atom/movable/AM = new path(Target) + user.put_in_hands(AM) + else + AM.forceMove(drop_location()) harvest_count++ return AM @@ -80,6 +84,12 @@ name = "bush" icon = 'icons/obj/flora/snowflora.dmi' icon_state = "snowbush1" + + destroy_on_harvest = TRUE + harvest_tool = /obj/item/weapon/material/knife + randomize_harvest_count = FALSE + harvest_loot = list(/obj/item/stack/material/fiber = 1) + max_harvests = 1 /obj/structure/flora/bush/New() ..() @@ -99,6 +109,12 @@ name = "bush" icon = 'icons/obj/flora/ausflora.dmi' icon_state = "firstbush_1" + + destroy_on_harvest = TRUE + harvest_tool = /obj/item/weapon/material/knife + randomize_harvest_count = FALSE + harvest_loot = list(/obj/item/stack/material/fiber = 1) + max_harvests = 1 /obj/structure/flora/ausbushes/New() ..() diff --git a/code/game/objects/structures/flora/flora_vr.dm b/code/game/objects/structures/flora/flora_vr.dm index b7f722324c3..58ea426d976 100644 --- a/code/game/objects/structures/flora/flora_vr.dm +++ b/code/game/objects/structures/flora/flora_vr.dm @@ -79,14 +79,14 @@ icon = 'icons/obj/flora/amayastuff.dmi' desc = "Small stones sit beside this large boulder. Moss grows on the top of each of them." icon_state = "bigboulder1" - density = 1 + density = TRUE /obj/structure/flora/bboulder2 name = "jagged large boulder" icon = 'icons/obj/flora/amayastuff.dmi' desc = "This boulder has had plates broken off it. Moss grows in the cracks and across the top." icon_state = "bigboulder2" - density = 1 + density = TRUE /obj/structure/flora/rocks1 name = "rocks" diff --git a/code/game/objects/structures/flora/grass.dm b/code/game/objects/structures/flora/grass.dm index 92717f4beb4..0ed4e9c19c5 100644 --- a/code/game/objects/structures/flora/grass.dm +++ b/code/game/objects/structures/flora/grass.dm @@ -2,7 +2,7 @@ /obj/structure/flora/grass name = "grass" icon = 'icons/obj/flora/snowflora.dmi' - anchored = 1 + anchored = TRUE /obj/structure/flora/grass/brown icon_state = "snowgrass1bb" diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm index f2cf86e5573..3598523671e 100644 --- a/code/game/objects/structures/flora/trees.dm +++ b/code/game/objects/structures/flora/trees.dm @@ -1,8 +1,8 @@ //trees /obj/structure/flora/tree name = "tree" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE pixel_x = -16 plane = MOB_PLANE // You know what, let's play it safe. layer = ABOVE_MOB_LAYER diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 39d30dabfb2..9b006ee27fc 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -1,7 +1,7 @@ /obj/structure/girder icon_state = "girder" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE plane = PLATING_PLANE w_class = ITEMSIZE_HUGE var/state = 0 @@ -68,7 +68,7 @@ /obj/structure/girder/displaced icon_state = "displaced" - anchored = 0 + anchored = FALSE health = 50 cover = 25 @@ -79,7 +79,7 @@ /obj/structure/girder/proc/displace() name = "displaced [girder_material.display_name] [initial(name)]" icon_state = "displaced" - anchored = 0 + anchored = FALSE health = (displaced_health - round(current_damage / 4)) cover = 25 @@ -134,7 +134,7 @@ /obj/structure/girder/proc/reset_girder() name = "[girder_material.display_name] [initial(name)]" - anchored = 1 + anchored = TRUE cover = initial(cover) health = min(max_health - current_damage,max_health) state = 0 diff --git a/code/game/objects/structures/gravemarker.dm b/code/game/objects/structures/gravemarker.dm index ff02bb4ae21..af5c1708999 100644 --- a/code/game/objects/structures/gravemarker.dm +++ b/code/game/objects/structures/gravemarker.dm @@ -3,10 +3,10 @@ desc = "An object used in marking graves." icon_state = "gravemarker" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE throwpass = 1 - climbable = 1 + climbable = TRUE layer = ABOVE_JUNK_LAYER diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 18a07462fc9..ea1a9346c1f 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -3,8 +3,8 @@ desc = "A flimsy lattice of metal rods, with screws to secure it to the floor." icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons icon_state = "grille" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE pressure_resistance = 5*ONE_ATMOSPHERE layer = TABLE_LAYER explosion_resistance = 1 @@ -167,7 +167,7 @@ /obj/structure/grille/proc/healthcheck() if(health <= 0) if(!destroyed) - density = 0 + density = FALSE destroyed = 1 update_icon() new /obj/item/stack/rods(get_turf(src)) @@ -223,7 +223,7 @@ /obj/structure/grille/broken destroyed = 1 icon_state = "grille-b" - density = 0 + density = FALSE /obj/structure/grille/broken/New() ..() diff --git a/code/game/objects/structures/handrail.dm b/code/game/objects/structures/handrail.dm index 8519cb4e305..6a48e946540 100644 --- a/code/game/objects/structures/handrail.dm +++ b/code/game/objects/structures/handrail.dm @@ -3,6 +3,6 @@ icon = 'icons/obj/handrail.dmi' icon_state = "handrail" desc = "A safety railing with buckles to secure yourself to when floor isn't stable enough." - density = 0 - anchored = 1 - can_buckle = 1 + density = FALSE + anchored = TRUE + can_buckle = TRUE diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 8a6377d0fe0..92dc20cec6d 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -23,8 +23,8 @@ /obj/structure/inflatable name = "inflatable wall" desc = "An inflated membrane. Do not puncture." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE opacity = 0 can_atmos_pass = ATMOS_PASS_DENSITY @@ -154,8 +154,8 @@ /obj/structure/inflatable/door //Based on mineral door code name = "inflatable door" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE opacity = 0 icon = 'icons/obj/inflatable.dmi' @@ -204,7 +204,7 @@ isSwitchingStates = 1 flick("door_opening",src) sleep(10) - density = 0 + density = FALSE opacity = 0 state = 1 update_icon() @@ -214,7 +214,7 @@ isSwitchingStates = 1 flick("door_closing",src) sleep(10) - density = 1 + density = TRUE opacity = 0 state = 0 update_icon() diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index fba31409f51..46a888e55f2 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -6,8 +6,8 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) description_info = "You can use alt-click while holding a mop to stow the mop. Alt-click holding a reagent container will empty the contents into the bucket without trying to put the container in any attached trash bag." icon = 'icons/obj/janitor.dmi' icon_state = "cart" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE flags = OPENCONTAINER climbable = TRUE //copypaste sorry @@ -374,8 +374,8 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) name = "janicart" icon = 'icons/obj/vehicles.dmi' icon_state = "pussywagon" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE flags = OPENCONTAINER //copypaste sorry var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite @@ -456,8 +456,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) ..() update_layer() if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) if(L.loc != loc) L.buckled = null //Temporary, so Move() succeeds. L.buckled = src //Restoring @@ -467,8 +466,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart) /obj/structure/bed/chair/janicart/proc/update_mob() if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) L.set_dir(dir) switch(dir) if(SOUTH) diff --git a/code/game/objects/structures/kitchen_foodcart_vr.dm b/code/game/objects/structures/kitchen_foodcart_vr.dm index 04c3f1de5fe..4fb56b038bd 100644 --- a/code/game/objects/structures/kitchen_foodcart_vr.dm +++ b/code/game/objects/structures/kitchen_foodcart_vr.dm @@ -3,9 +3,9 @@ icon = 'icons/obj/kitchen_vr.dmi' icon_state = "foodcart-0" desc = "The ultimate in food transport! When opened you notice two compartments with odd blue glows to them. One feels very warm, while the other is very cold." - anchored = 0 + anchored = FALSE opacity = 0 - density = 1 + density = TRUE /obj/structure/foodcart/Initialize() . = ..() diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 53323bb4b90..48e9e113e8e 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -5,8 +5,8 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "spike" desc = "A spike for collecting meat from animals." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/meat = 0 var/occupied var/meat_type diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 8c1879ec80a..30999cd3d6e 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -3,8 +3,8 @@ desc = "A lightweight support lattice." icon = 'icons/obj/structures.dmi' icon_state = "latticefull" - density = 0 - anchored = 1.0 + density = FALSE + anchored = TRUE w_class = ITEMSIZE_NORMAL plane = PLATING_PLANE diff --git a/code/game/objects/structures/ledges.dm b/code/game/objects/structures/ledges.dm index cf7c88fc484..b90e406cb2e 100644 --- a/code/game/objects/structures/ledges.dm +++ b/code/game/objects/structures/ledges.dm @@ -2,10 +2,10 @@ name = "rock ledge" desc = "An easily scaleable rocky ledge." icon = 'icons/obj/ledges.dmi' - density = 1 + density = TRUE throwpass = 1 - climbable = 1 - anchored = 1 + climbable = TRUE + anchored = TRUE var/solidledge = 1 flags = ON_BORDER layer = STAIRS_LAYER @@ -17,23 +17,23 @@ name = "rock ledge" desc = "An easily scaleable rocky ledge." icon = 'icons/obj/ledges.dmi' - density = 1 + density = TRUE throwpass = 1 - climbable = 1 - anchored = 1 + climbable = TRUE + anchored = TRUE layer = STAIRS_LAYER /obj/structure/ledge/ledge_nub desc = "Part of a rocky ledge." icon_state = "ledge-nub" - density = 0 + density = FALSE solidledge = 0 /obj/structure/ledge/ledge_stairs name = "rock stairs" desc = "A colorful set of rocky stairs" icon_state = "ledge-stairs" - density = 0 + density = FALSE solidledge = 0 /obj/structure/ledge/CanPass(atom/movable/mover, turf/target) diff --git a/code/game/objects/structures/map_blocker_vr.dm b/code/game/objects/structures/map_blocker_vr.dm index 52be6c40350..bd56b08d6e2 100644 --- a/code/game/objects/structures/map_blocker_vr.dm +++ b/code/game/objects/structures/map_blocker_vr.dm @@ -4,10 +4,10 @@ desc = "You can't go there!" icon = 'icons/turf/wall_masks.dmi' icon_state = "rdebug" - anchored = 1.0 + anchored = TRUE opacity = 0 - density = 1 - unacidable = 1 + density = TRUE + unacidable = TRUE /obj/effect/blocker/Initialize() // For non-gateway maps. . = ..() diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 0eb4775c23b..4fc64a5c52d 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -5,13 +5,13 @@ icon = 'icons/obj/watercloset.dmi' icon_state = "mirror" layer = ABOVE_WINDOW_LAYER - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/shattered = 0 var/glass = 1 var/datum/tgui_module/appearance_changer/mirror/M -/obj/structure/mirror/New(var/loc, var/dir, var/building = 0, mob/user as mob) +/obj/structure/mirror/Initialize(mapload, var/dir, var/building = 0, mob/user as mob) M = new(src, null) if(building) glass = 0 diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 5d5e4fb630b..064281c9a94 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -3,8 +3,8 @@ desc = "Fill it with water, but don't forget a mop!" icon = 'icons/obj/janitor.dmi' icon_state = "mopbucket" - density = 1 - climbable = 1 + density = TRUE + climbable = TRUE w_class = ITEMSIZE_NORMAL pressure_resistance = 5 flags = OPENCONTAINER diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index a908f3f0c0a..5d9ddb65e6d 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -16,10 +16,10 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "morgue1" dir = EAST - density = 1 + density = TRUE var/obj/structure/m_tray/connected = null var/list/occupants = list() - anchored = 1.0 + anchored = TRUE /obj/structure/morgue/Destroy() if(connected) @@ -147,10 +147,10 @@ desc = "Apply corpse before closing." icon = 'icons/obj/stationobjs.dmi' icon_state = "morguet" - density = 1 + density = TRUE plane = TURF_PLANE var/obj/structure/morgue/connected = null - anchored = 1 + anchored = TRUE throwpass = 1 /obj/structure/m_tray/Destroy() diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index d655581c923..8b54df0c6c4 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -3,8 +3,8 @@ desc = "Completely impassable - or are they?" icon = 'icons/obj/stationobjs.dmi' //Change this. icon_state = "plasticflaps" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE layer = MOB_LAYER plane = MOB_PLANE explosion_resistance = 5 diff --git a/code/game/objects/structures/props/swarm.dm b/code/game/objects/structures/props/swarm.dm index 51f59072f40..0498674a6f8 100644 --- a/code/game/objects/structures/props/swarm.dm +++ b/code/game/objects/structures/props/swarm.dm @@ -39,7 +39,7 @@ STOP_PROCESSING(SSobj, src) playsound(src,shatter_sound, 75, 1) isbroken = 1 - density = 0 + density = FALSE icon_state = "[initial(icon_state)]-broken" set_light(0) @@ -55,7 +55,7 @@ user.do_attack_animation(src) playsound(src,shatter_sound, 75, 1) isbroken = 1 - density = 0 + density = FALSE icon_state = "[initial(icon_state)]-broken" set_light(0) else @@ -119,7 +119,7 @@ STOP_PROCESSING(SSobj, src) playsound(src,shatter_sound, 75, 1) isbroken = 1 - density = 0 + density = FALSE icon_state = "[initial(icon_state)]-broken" set_light(0) @@ -135,7 +135,7 @@ user.do_attack_animation(src) playsound(src,shatter_sound, 75, 1) isbroken = 1 - density = 0 + density = FALSE icon_state = "[initial(icon_state)]-broken" set_light(0) else diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm index 876e58c4e32..a4a8e83887c 100644 --- a/code/game/objects/structures/railing.dm +++ b/code/game/objects/structures/railing.dm @@ -3,11 +3,11 @@ name = "railing" desc = "A standard steel railing, painted orange. Play stupid games, win stupid prizes." icon = 'icons/obj/railing.dmi' - density = 1 + density = TRUE throwpass = 1 - climbable = 1 + climbable = TRUE layer = WINDOW_LAYER - anchored = 1 + anchored = TRUE flags = ON_BORDER icon_state = "railing0" var/broken = FALSE @@ -26,7 +26,7 @@ ..() // TODO - "constructed" is not passed to us. We need to find a way to do this safely. if (constructed) // player-constructed railings - anchored = 0 + anchored = FALSE if(climbable) verbs += /obj/structure/proc/climb_on diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 22af69d08b1..50071efe4e9 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -10,8 +10,8 @@ FLOOR SAFES desc = "A huge chunk of metal with a dial embedded in it. Fine print on the dial reads \"Scarborough Arms - 2 tumbler safe, guaranteed thermite resistant, explosion resistant, and assistant resistant.\"" icon = 'icons/obj/structures.dmi' icon_state = "safe" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/open = 0 //is the safe open? var/tumbler_1_pos //the tumbler position- from 0 to 72 var/tumbler_1_open //the tumbler position to open at- 0 to 72 @@ -170,7 +170,7 @@ FLOOR SAFES /obj/structure/safe/floor name = "floor safe" icon_state = "floorsafe" - density = 0 + density = FALSE level = 1 //underfloor plane = PLATING_PLANE layer = ABOVE_UTILITY diff --git a/code/game/objects/structures/salvageable.dm b/code/game/objects/structures/salvageable.dm index faf6c788aae..0a35848d8d2 100644 --- a/code/game/objects/structures/salvageable.dm +++ b/code/game/objects/structures/salvageable.dm @@ -2,8 +2,8 @@ name = "broken macninery" desc = "Broken beyond repair, but looks like you can still salvage something from this if you had a prying implement." icon = 'icons/obj/salvageable.dmi' - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/salvageable_parts = list() /obj/structure/salvageable/proc/dismantle() diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 0ea4d1db252..4afb514fe71 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -1,8 +1,8 @@ /obj/structure/sign icon = 'icons/obj/decals.dmi' - anchored = 1 + anchored = TRUE opacity = 0 - density = 0 + density = FALSE plane = OBJ_PLANE //VOREStation Edit layer = ABOVE_JUNK_LAYER //VOREStation Edit w_class = ITEMSIZE_NORMAL diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm index c0385b3132b..e7799fcf8fa 100644 --- a/code/game/objects/structures/simple_doors.dm +++ b/code/game/objects/structures/simple_doors.dm @@ -1,7 +1,7 @@ /obj/structure/simple_door name = "door" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE can_atmos_pass = ATMOS_PASS_DENSITY icon = 'icons/obj/doors/material_doors.dmi' @@ -102,7 +102,7 @@ playsound(src, material.dooropen_noise, 100, 1) flick("[material.door_icon_base]opening",src) sleep(10) - density = 0 + density = FALSE set_opacity(0) state = 1 update_icon() @@ -114,7 +114,7 @@ playsound(src, material.dooropen_noise, 100, 1) flick("[material.door_icon_base]closing",src) sleep(10) - density = 1 + density = TRUE set_opacity(1) state = 0 update_icon() diff --git a/code/game/objects/structures/snowman.dm b/code/game/objects/structures/snowman.dm index f3041e02877..7299f1e62e1 100644 --- a/code/game/objects/structures/snowman.dm +++ b/code/game/objects/structures/snowman.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/snowman.dmi' icon_state = "snowman" desc = "A happy little snowman smiles back at you!" - anchored = 1 + anchored = TRUE /obj/structure/snowman/attack_hand(mob/user as mob) if(user.a_intent == I_HURT) diff --git a/code/game/objects/structures/stasis_cage.dm b/code/game/objects/structures/stasis_cage.dm index f4791f37f21..b9cae77fa3e 100644 --- a/code/game/objects/structures/stasis_cage.dm +++ b/code/game/objects/structures/stasis_cage.dm @@ -3,7 +3,7 @@ desc = "A high-tech animal cage, designed to keep contained fauna docile and safe." icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit icon_state = "critteropen" - density = 1 + density = TRUE var/mob/living/simple_mob/contained diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm index ebba811fb95..697e8cffbc6 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm @@ -80,6 +80,6 @@ /obj/structure/bed/nest/proc/healthcheck() if(health <=0) - density = 0 + density = FALSE qdel(src) return diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 7bc8128ba6b..e858ad6ac6e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -13,8 +13,8 @@ icon = 'icons/obj/furniture.dmi' icon_state = "bed" pressure_resistance = 15 - anchored = 1 - can_buckle = 1 + anchored = TRUE + can_buckle = TRUE buckle_dir = SOUTH buckle_lying = 1 var/datum/material/material @@ -197,7 +197,7 @@ desc = "A portable bed-on-wheels made for transporting medical patients." icon = 'icons/obj/rollerbed.dmi' icon_state = "rollerbed" - anchored = 0 + anchored = FALSE surgery_odds = 50 //VOREStation Edit var/bedtype = /obj/structure/bed/roller var/rollertype = /obj/item/roller @@ -297,12 +297,12 @@ if(M.buckled == src) M.pixel_y = 6 M.old_y = 6 - density = 1 + density = TRUE icon_state = "[initial(icon_state)]_up" else M.pixel_y = 0 M.old_y = 0 - density = 0 + density = FALSE icon_state = "[initial(icon_state)]" update_icon() return ..() 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 0bdc32340f1..4a3c5b53ff8 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -63,8 +63,7 @@ ..() update_layer() if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) L.set_dir(dir) /obj/structure/bed/chair/verb/rotate_clockwise() @@ -134,7 +133,7 @@ ..(newloc,"steel","orange") /obj/structure/bed/chair/office - anchored = 0 + anchored = FALSE buckle_movable = 1 /obj/structure/bed/chair/office/update_icon() @@ -151,8 +150,7 @@ playsound(src, 'sound/effects/roll.ogg', 100, 1) /obj/structure/bed/chair/office/handle_buckled_mob_movement(atom/new_loc, direction, movetime) - for(var/A in buckled_mobs) - var/mob/living/occupant = A + for(var/mob/living/occupant as anything in buckled_mobs) occupant.buckled = null occupant.Move(loc, direction, movetime) occupant.buckled = src diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools_vr.dm b/code/game/objects/structures/stool_bed_chair_nest/stools_vr.dm index e513e72f2ac..c1f55061397 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools_vr.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools_vr.dm @@ -9,7 +9,7 @@ throwforce = 10 w_class = ITEMSIZE_HUGE base_icon = "bar_stool_base" - anchored = 1 + anchored = TRUE /obj/item/weapon/stool/baystool/padded icon_state = "bar_stool_padded_preview" //set for the map diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 3641d57fda7..2521055dadd 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -3,7 +3,7 @@ desc = "You sit in this. Either by will or force." icon = 'icons/obj/wheelchair.dmi' icon_state = "wheelchair" - anchored = 0 + anchored = FALSE buckle_movable = 1 var/folded_type = /obj/item/wheelchair @@ -51,8 +51,7 @@ . = ..() if(.) if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) L.set_dir(dir) /obj/structure/bed/chair/wheelchair/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -95,8 +94,7 @@ var/turf/T = null //--1---Move occupant---1--// if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) L.buckled = null step(L, direction) L.buckled = src @@ -128,8 +126,7 @@ . = ..() playsound(src, 'sound/effects/roll.ogg', 75, 1) if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/occupant = A + for(var/mob/living/occupant as anything in buckled_mobs) if(!driving) occupant.buckled = null occupant.Move(src.loc) diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index 9a2b18e8c66..3a1bf843866 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -5,8 +5,8 @@ desc = "A simple yet bulky storage device for gas tanks. Has room for up to ten oxygen tanks, and ten phoron tanks." icon = 'icons/obj/objects.dmi' icon_state = "dispenser" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE w_class = ITEMSIZE_HUGE var/oxygentanks = TANK_DISPENSER_CAPACITY var/phorontanks = TANK_DISPENSER_CAPACITY @@ -76,10 +76,10 @@ else if(I.is_wrench()) if(anchored) to_chat(user, "You lean down and unwrench [src].") - anchored = 0 + anchored = FALSE else to_chat(user, "You wrench [src] into place.") - anchored = 1 + anchored = TRUE return else if(user.a_intent != I_HURT) to_chat(user, "[I] does not fit into [src].") diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm index 7802e258ea8..0e29fed20b9 100644 --- a/code/game/objects/structures/target_stake.dm +++ b/code/game/objects/structures/target_stake.dm @@ -4,7 +4,7 @@ desc = "A thin platform with negatively-magnetized wheels." icon = 'icons/obj/objects.dmi' icon_state = "target_stake" - density = 1 + density = TRUE w_class = ITEMSIZE_HUGE var/obj/item/target/pinned_target // the current pinned target @@ -16,7 +16,7 @@ else // Sanity check: if the pinned target can't be found in immediate view pinned_target = null - density = 1 + density = TRUE /obj/structure/target_stake/attackby(obj/item/W as obj, mob/user as mob) // Putting objects on the stake. Most importantly, targets @@ -24,8 +24,8 @@ return // get rid of that pinned target first! if(istype(W, /obj/item/target)) - density = 0 - W.density = 1 + density = FALSE + W.density = TRUE user.remove_from_mob(W) W.loc = loc W.layer = ABOVE_JUNK_LAYER @@ -36,8 +36,8 @@ /obj/structure/target_stake/attack_hand(mob/user as mob) // taking pinned targets off! if(pinned_target) - density = 1 - pinned_target.density = 0 + density = TRUE + pinned_target.density = FALSE pinned_target.layer = OBJ_LAYER pinned_target.loc = user.loc diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index 6053d26ea2e..402d560923a 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -6,9 +6,9 @@ /obj/structure/transit_tube icon = 'icons/obj/pipes/transit_tube.dmi' icon_state = "E-W" - density = 1 + density = TRUE layer = ABOVE_JUNK_LAYER - anchored = 1.0 + anchored = TRUE var/list/tube_dirs = null var/exit_delay = 2 var/enter_delay = 1 @@ -40,8 +40,8 @@ icon = 'icons/obj/pipes/transit_tube_pod.dmi' icon_state = "pod" animate_movement = FORWARD_STEPS - anchored = 1.0 - density = 1 + anchored = TRUE + density = TRUE var/moving = 0 var/datum/gas_mixture/air_contents = new() @@ -334,7 +334,7 @@ current_tube.pod_stopped(src, dir) break - density = 1 + density = TRUE // If the pod is no longer in a tube, move in a line until stopped or slowed to a halt. // /turf/inertial_drift appears to only work on mobs, and re-implementing some of the @@ -427,7 +427,7 @@ tube_dirs = parse_dirs(icon_state) if(copytext(icon_state, 1, 3) == "D-" || findtextEx(icon_state, "Pass")) - density = 0 + density = FALSE diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm index 281ddf1cd60..85eab74a094 100644 --- a/code/game/objects/structures/trash_pile_vr.dm +++ b/code/game/objects/structures/trash_pile_vr.dm @@ -3,8 +3,8 @@ desc = "A heap of garbage, but maybe there's something interesting inside?" icon = 'icons/obj/trash_piles.dmi' icon_state = "randompile" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE var/list/searchedby = list()// Characters that have searched this trashpile, with values of searched time. var/mob/living/hider // A simple animal that might be hiding in the pile diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm index 7bf83c73c9b..3113d6a71ec 100644 --- a/code/game/objects/structures/under_wardrobe.dm +++ b/code/game/objects/structures/under_wardrobe.dm @@ -3,7 +3,7 @@ desc = "Holds item of clothing you shouldn't be showing off in the hallways." icon = 'icons/obj/closet.dmi' icon_state = "cabinet_closed" - density = 1 + density = TRUE /obj/structure/undies_wardrobe/attack_hand(var/mob/user) if(!human_who_can_use_underwear(user)) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 60bff00cec5..17b1455b45b 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -5,8 +5,8 @@ desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean." icon = 'icons/obj/watercloset.dmi' icon_state = "toilet" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/open = 0 //if the lid is up var/cistern = 0 //if the cistern bit is open var/w_items = 0 //the combined w_class of all the items in the cistern @@ -130,8 +130,8 @@ desc = "The HU-452, an experimental urinal." icon = 'icons/obj/watercloset.dmi' icon_state = "urinal" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE /obj/structure/urinal/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/grab)) @@ -154,8 +154,8 @@ desc = "The HS-451. Installed in the 2550s by the Hygiene Division." icon = 'icons/obj/watercloset.dmi' icon_state = "shower" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE use_power = USE_POWER_OFF var/on = 0 var/obj/effect/mist/mymist = null @@ -182,7 +182,7 @@ icon_state = "mist" plane = MOB_PLANE layer = ABOVE_MOB_LAYER - anchored = 1 + anchored = TRUE mouse_opacity = 0 /obj/machinery/shower/attack_hand(mob/M as mob) @@ -265,12 +265,11 @@ /obj/machinery/shower/process() if(!on) return - for(var/thing in loc) - var/atom/movable/AM = thing - var/mob/living/L = thing - if(istype(AM) && AM.simulated) + for(var/atom/movable/AM in loc) + if(AM.simulated) wash(AM) - if(istype(L)) + if(isliving(AM)) + var/mob/living/L = AM process_heat(L) wash_floor() reagents.add_reagent("water", reagents.get_free_space()) @@ -311,7 +310,7 @@ icon = 'icons/obj/watercloset.dmi' icon_state = "sink" desc = "A sink used for washing one's hands and face." - anchored = 1 + anchored = TRUE var/busy = 0 //Something's being washed at the moment /obj/structure/sink/MouseDrop_T(var/obj/item/thing, var/mob/user) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 57734b929c2..0677c6a09d7 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -13,8 +13,8 @@ name = "windoor assembly" icon = 'icons/obj/doors/windoor.dmi' icon_state = "l_windoor_assembly01" - anchored = 0 - density = 0 + anchored = FALSE + density = FALSE dir = NORTH w_class = ITEMSIZE_NORMAL @@ -36,7 +36,7 @@ ..() if(constructed) state = "01" - anchored = 0 + anchored = FALSE switch(start_dir) if(NORTH, SOUTH, EAST, WEST) set_dir(start_dir) @@ -47,7 +47,7 @@ update_nearby_tiles(need_rebuild=1) /obj/structure/windoor_assembly/Destroy() - density = 0 + density = FALSE update_nearby_tiles() ..() @@ -113,7 +113,7 @@ if(do_after(user, 40 * W.toolspeed)) if(!src) return to_chat(user,"You've secured the windoor assembly!") - src.anchored = 1 + src.anchored = TRUE step = 0 //Unwrenching an unsecure assembly un-anchors it. Step 4 undone @@ -124,7 +124,7 @@ if(do_after(user, 40 * W.toolspeed)) if(!src) return to_chat(user,"You've unsecured the windoor assembly!") - src.anchored = 0 + src.anchored = FALSE step = null //Adding cable to the assembly. Step 5 complete. @@ -200,7 +200,7 @@ if(!src) return - density = 1 //Shouldn't matter but just incase + density = TRUE //Shouldn't matter but just incase to_chat(user,"You finish the windoor!") if(secure) @@ -212,7 +212,7 @@ windoor.icon_state = "rightsecureopen" windoor.base_state = "rightsecure" windoor.set_dir(src.dir) - windoor.density = 0 + windoor.density = FALSE if(created_name) windoor.name = created_name spawn(0) @@ -234,7 +234,7 @@ windoor.icon_state = "rightopen" windoor.base_state = "right" windoor.set_dir(src.dir) - windoor.density = 0 + windoor.density = FALSE if(created_name) windoor.name = created_name spawn(0) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 6083a38a794..12922d655a3 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -2,13 +2,13 @@ name = "window" desc = "A window." icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons - density = 1 + density = TRUE can_atmos_pass = ATMOS_PASS_PROC w_class = ITEMSIZE_NORMAL layer = WINDOW_LAYER pressure_resistance = 4*ONE_ATMOSPHERE - anchored = 1.0 + anchored = TRUE flags = ON_BORDER var/maxhealth = 14.0 var/maximal_heat = T0C + 100 // Maximal heat before this window begins taking damage from fire @@ -167,7 +167,7 @@ tforce = I.throwforce if(reinf) tforce *= 0.25 if(health - tforce <= 7 && !reinf) - anchored = 0 + anchored = FALSE update_verbs() update_nearby_icons() step(src, get_dir(AM, src)) @@ -325,7 +325,7 @@ user.do_attack_animation(src) hit(W.force) if(health <= 7) - anchored = 0 + anchored = FALSE update_nearby_icons() step(src, get_dir(user, src)) else @@ -392,7 +392,7 @@ //player-constructed windows if (constructed) - anchored = 0 + anchored = FALSE state = 0 update_verbs() @@ -405,7 +405,7 @@ /obj/structure/window/Destroy() - density = 0 + density = FALSE update_nearby_tiles() var/turf/location = loc . = ..() diff --git a/code/game/objects/structures/window_spawner.dm b/code/game/objects/structures/window_spawner.dm index dfeecb7be72..53298bbbdfb 100644 --- a/code/game/objects/structures/window_spawner.dm +++ b/code/game/objects/structures/window_spawner.dm @@ -7,8 +7,8 @@ name = "window grille spawner" icon = 'icons/obj/structures.dmi' icon_state = "wingrille" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE pressure_resistance = 4*ONE_ATMOSPHERE can_atmos_pass = ATMOS_PASS_NO var/win_path = /obj/structure/window/basic diff --git a/code/game/objects/stumble_into_vr.dm b/code/game/objects/stumble_into_vr.dm index e52a2f6ce5f..610afea5501 100644 --- a/code/game/objects/stumble_into_vr.dm +++ b/code/game/objects/stumble_into_vr.dm @@ -41,7 +41,7 @@ /obj/structure/kitchenspike/stumble_into(mob/living/M) playsound(src, "sound/weapons/pierce.ogg", 25, 1, -1) visible_message("[M] [pick("ran", "slammed")] into the spikes on \the [src]!") - M.apply_damage(15, BRUTE, sharp=1) + M.apply_damage(15, BRUTE, sharp = TRUE) M.Weaken(5) M.stop_flying() @@ -77,7 +77,9 @@ M.Weaken(2) M.stop_flying() if(get_turf(M) == get_turf(src)) - M.forceMove(get_step(src, src.dir)) + var/turf/T = get_step(src, src.dir) + if(T?.Enter(M, get_turf(src))) + M.forceMove(T) else M.forceMove(get_turf(src)) diff --git a/code/game/periodic_news.dm b/code/game/periodic_news.dm index a3d89313c53..a5eb2042bec 100644 --- a/code/game/periodic_news.dm +++ b/code/game/periodic_news.dm @@ -109,7 +109,7 @@ var/global/list/newscaster_standard_feeds = list(/datum/news_announcement/bluesp var/global/tmp/announced_news_types = list() /proc/check_for_newscaster_updates(type) - for(var/subtype in typesof(type)-type) + for(var/subtype in subtypesof(type)) var/datum/news_announcement/news = new subtype() if(news.round_time * 10 <= world.time && !(subtype in announced_news_types)) announced_news_types += subtype diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 579b6f6aeae..9217d132bb7 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -6,9 +6,9 @@ name = "shuttle window" icon = 'icons/obj/podwindows.dmi' icon_state = "0_0" //The states are a bitflag for connecting window directions, then connecting shuttle wall directions - density = 1 + density = TRUE opacity = 0 - anchored = 1 + anchored = TRUE can_atmos_pass = ATMOS_PASS_NO var/window_flags = 0 // Bitflags to indicate connected windows @@ -48,8 +48,8 @@ /obj/structure/shuttle/engine name = "engine" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE /obj/structure/shuttle/engine/heater name = "heater" diff --git a/code/game/sound.dm b/code/game/sound.dm index 08685cb0a2b..ce4c33d37b1 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -17,8 +17,7 @@ var/list/listeners = player_list if(!ignore_walls) //these sounds don't carry through walls listeners = listeners & hearers(maxdistance,turf_source) - for(var/P in listeners) - var/mob/M = P + for(var/mob/M as anything in listeners) if(!M || !M.client) continue var/turf/T = get_turf(M) diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index 3ef89064f77..e1900bfe97d 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -232,7 +232,7 @@ var/list/flooring_types /decl/flooring/snow name = "snow" desc = "A layer of many tiny bits of frozen water. It's hard to tell how deep it is." - icon = 'icons/turf/snow_new.dmi' + icon = 'icons/turf/outdoors.dmi' icon_base = "snow" footstep_sounds = list("human" = list( 'sound/effects/footstep/snow1.ogg', diff --git a/code/game/turfs/flooring/flooring_premade.dm b/code/game/turfs/flooring/flooring_premade.dm index 148eb41df98..9cad0bd727b 100644 --- a/code/game/turfs/flooring/flooring_premade.dm +++ b/code/game/turfs/flooring/flooring_premade.dm @@ -390,7 +390,7 @@ //**** Here lives snow **** /turf/simulated/floor/snow name = "snow" - icon = 'icons/turf/snow_new.dmi' + icon = 'icons/turf/outdoors.dmi' icon_state = "snow" initial_flooring = /decl/flooring/snow var/list/crossed_dirs = list() diff --git a/code/game/turfs/simulated/floor_attackby.dm b/code/game/turfs/simulated/floor_attackby.dm index 9aa7ecce6de..8342a5d6e83 100644 --- a/code/game/turfs/simulated/floor_attackby.dm +++ b/code/game/turfs/simulated/floor_attackby.dm @@ -12,6 +12,7 @@ if(!(C.is_screwdriver() && flooring && (flooring.flags & TURF_REMOVE_SCREWDRIVER)) && try_graffiti(user, C)) return + // Multi-z roof building if(istype(C, /obj/item/stack/tile/roofing)) var/expended_tile = FALSE // To track the case. If a ceiling is built in a multiz zlevel, it also necessarily roofs it against weather var/turf/T = GetAbove(src) @@ -56,6 +57,7 @@ break return + // Floor has flooring set if(!is_plating()) if(istype(C, /obj/item/weapon)) try_deconstruct_tile(C, user) @@ -66,7 +68,10 @@ else if(istype(C, /obj/item/stack/tile)) try_replace_tile(C, user) return + + // Floor is plating (or no flooring) else + // Placing wires on plating if(istype(C, /obj/item/stack/cable_coil)) if(broken || burnt) to_chat(user, "This section is too damaged to support anything. Use a welder to fix the damage.") @@ -74,6 +79,7 @@ var/obj/item/stack/cable_coil/coil = C coil.turf_place(src, user) return + // Placing flooring on plating else if(istype(C, /obj/item/stack)) if(broken || burnt) to_chat(user, "This section is too damaged to support anything. Use a welder to fix the damage.") @@ -102,10 +108,11 @@ set_flooring(use_flooring) playsound(src, 'sound/items/Deconstruct.ogg', 80, 1) return - // Repairs. + // Plating repairs and removal else if(istype(C, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/welder = C - if(welder.isOn() && (is_plating())) + if(welder.isOn()) + // Needs repairs if(broken || burnt) if(welder.remove_fuel(0,user)) to_chat(user, "You fix some dents on the broken plating.") @@ -115,6 +122,22 @@ broken = null else to_chat(user, "You need more welding fuel to complete this task.") + // Deconstructing plating + else + var/base_type = get_base_turf_by_area(src) + if(type == base_type || !base_type) + to_chat(user, "There's nothing under [src] to expose by cutting.") + return + if(!can_remove_plating(user)) + return + + user.visible_message("[user] begins cutting through [src].", "You begin cutting through [src].") + // This is slow because it's a potentially hostile action to just cut through places into space in the middle of the bar and such + // Presumably also the structural floor is thick? + if(do_after(user, 10 SECONDS, src, TRUE, exclusive = TASK_ALL_EXCLUSIVE)) + if(!can_remove_plating(user)) + return // Someone slapped down some flooring or cables or something + do_remove_plating(C, user, base_type) /turf/simulated/floor/proc/try_deconstruct_tile(obj/item/weapon/W as obj, mob/user as mob) if(W.is_crowbar()) @@ -160,4 +183,32 @@ return if(flooring) return - attackby(T, user) \ No newline at end of file + attackby(T, user) + +/turf/simulated/floor/proc/can_remove_plating(mob/user) + if(!is_plating()) + to_chat(user, "\The [src] can't be cut through!") + return FALSE + if(locate(/obj/structure) in contents) + to_chat(user, "\The [src] has structures that must be removed before cutting!") + return FALSE + return TRUE + +/turf/simulated/floor/proc/do_remove_plating(obj/item/weapon/W, mob/user, base_type) + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.remove_fuel(5,user)) + to_chat(user, "You don't have enough fuel in [WT] finish cutting through [src].") + return + playsound(src, WT.usesound, 80, 1) + + // Keep in mind, turfs can never actually be deleted in byond, after this line + // our turf is just 'magically changed' to the new type and src refers to that + ChangeTurf(base_type, preserve_outdoors = TRUE) + + var/static/list/floors_that_need_lattice = list( + /turf/space, + /turf/simulated/open + ) + if(is_type_in_list(src, floors_that_need_lattice)) + new /obj/structure/lattice(src) diff --git a/code/game/turfs/simulated/outdoors/snow.dm b/code/game/turfs/simulated/outdoors/snow.dm index 07a6804803e..fc4832d8454 100644 --- a/code/game/turfs/simulated/outdoors/snow.dm +++ b/code/game/turfs/simulated/outdoors/snow.dm @@ -53,6 +53,16 @@ desc = "Looks slippery." edge_blending_priority = 0 +/turf/simulated/floor/outdoors/ice/dark + name = "black ice" + icon_state = "ice_dark" + desc = "An uneven surface of dark rocks glazed over by solid ice. Looks slippey, maybe even painful" + +/turf/simulated/floor/outdoors/ice/dark_smooth + name = "smooth black ice" + icon_state = "ice_dark_smooth" + desc = "Dark rock that has been smoothened to be perfectly even. It's coated in a layer of slippey ice" + /turf/simulated/floor/outdoors/ice/Entered(var/mob/living/M) sleep(1 * world.tick_lag) if(istype(M, /mob/living)) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index c3d1f1aa310..72edce45038 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -9,7 +9,7 @@ if(density) can_open = WALL_OPENING //flick("[material.icon_base]fwall_opening", src) - density = 0 + density = FALSE blocks_air = ZONE_BLOCKED update_icon() update_air() @@ -21,7 +21,7 @@ else can_open = WALL_OPENING //flick("[material.icon_base]fwall_closing", src) - density = 1 + density = TRUE blocks_air = AIR_BLOCKED update_icon() update_air() diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index 0f7b4bb60cd..1a90472ac1e 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -106,7 +106,7 @@ name = "autojoin wall" icon_state = "light" opacity = 1 - density = 1 + density = TRUE blocks_air = 1 var/base_state = "light" //The base iconstate to base sprites on diff --git a/code/game/turfs/simulated/wall_types_vr.dm b/code/game/turfs/simulated/wall_types_vr.dm index 3961e7d22a6..b4bb8a5c042 100644 --- a/code/game/turfs/simulated/wall_types_vr.dm +++ b/code/game/turfs/simulated/wall_types_vr.dm @@ -20,7 +20,7 @@ icon = 'icons/turf/stomach_vr.dmi' icon_state = "flesh" opacity = 1 - density = 1 + density = TRUE blocks_air = 1 /turf/simulated/flesh/colour @@ -29,7 +29,7 @@ icon = 'icons/turf/stomach_vr.dmi' icon_state = "colorable-wall" opacity = 1 - density = 1 + density = TRUE blocks_air = 1 /turf/simulated/flesh/attackby() @@ -67,7 +67,7 @@ var/list/flesh_overlay_cache = list() icon = 'icons/goonstation/turf/meatland.dmi' icon_state = "bloodwall_2" opacity = 1 - density = 1 + density = TRUE blocks_air = 1 /turf/simulated/goreeyes @@ -76,7 +76,7 @@ var/list/flesh_overlay_cache = list() icon = 'icons/goonstation/turf/meatland.dmi' icon_state = "bloodwall_4" opacity = 1 - density = 1 + density = TRUE blocks_air = 1 /turf/simulated/shuttle/wall/flock diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 7f5421a1f52..be1605e0a91 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -4,7 +4,7 @@ icon = 'icons/turf/wall_masks.dmi' icon_state = "generic" opacity = 1 - density = 1 + density = TRUE blocks_air = 1 thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall @@ -267,8 +267,8 @@ O.desc = "Looks hot." O.icon = 'icons/effects/fire.dmi' O.icon_state = "2" - O.anchored = 1 - O.density = 1 + O.anchored = TRUE + O.density = TRUE O.plane = ABOVE_PLANE if(girder_material.integrity >= 150 && !girder_material.is_brittle()) //Strong girders will remain in place when a wall is melted. diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 33bd3eaa2aa..aa8d775b9b7 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -9,7 +9,7 @@ thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT can_build_into_floor = TRUE var/keep_sprite = FALSE - var/edge = 0 //If we're an edge + var/edge = FALSE //If we're an edge var/forced_dirs = 0 //Force this one to pretend it's an overedge turf /turf/space/Initialize() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index bd7df8d2805..2f54db48473 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -171,7 +171,7 @@ if(istype(mover)) // turf/Enter(...) will perform more advanced checks return !density - crash_with("Non movable passed to turf CanPass : [mover]") + stack_trace("Non movable passed to turf CanPass : [mover]") return FALSE //There's a lot of QDELETED() calls here if someone can figure out how to optimize this but not runtime when something gets deleted by a Bump/CanPass/Cross call, lemme know or go ahead and fix this mess - kevinz000 @@ -238,19 +238,17 @@ /turf/proc/AdjacentTurfs(var/check_blockage = TRUE) . = list() - for(var/t in (trange(1,src) - src)) - var/turf/T = t + for(var/turf/T as anything in (trange(1,src) - src)) if(check_blockage) if(!T.density) if(!LinkBlocked(src, T) && !TurfBlockedNonWindow(T)) - . += t + . += T else - . += t + . += T /turf/proc/CardinalTurfs(var/check_blockage = TRUE) . = list() - for(var/ad in AdjacentTurfs(check_blockage)) - var/turf/T = ad + for(var/turf/T as anything in AdjacentTurfs(check_blockage)) if(T.x == src.x || T.y == src.y) . += T diff --git a/code/game/turfs/turf_changing.dm b/code/game/turfs/turf_changing.dm index 85292aa2b3f..492f3ef65b8 100644 --- a/code/game/turfs/turf_changing.dm +++ b/code/game/turfs/turf_changing.dm @@ -41,6 +41,7 @@ var/old_directional_opacity = directional_opacity var/old_outdoors = outdoors var/old_dangerous_objects = dangerous_objects + var/old_dynamic_lumcount = dynamic_lumcount var/turf/Ab = GetAbove(src) if(Ab) @@ -111,6 +112,8 @@ lighting_corner_SW = old_lighting_corner_SW lighting_corner_NW = old_lighting_corner_NW + dynamic_lumcount = old_dynamic_lumcount + if(SSlighting.subsystem_initialized) lighting_object = old_lighting_object diff --git a/code/game/turfs/unsimulated/planetary.dm b/code/game/turfs/unsimulated/planetary.dm index 9fe487410f9..8e08b8d26d7 100644 --- a/code/game/turfs/unsimulated/planetary.dm +++ b/code/game/turfs/unsimulated/planetary.dm @@ -6,7 +6,7 @@ icon = 'icons/turf/walls.dmi' icon_state = "riveted" opacity = 1 - density = 1 + density = TRUE alpha = 0 blocks_air = 0 diff --git a/code/game/turfs/unsimulated/shuttle.dm b/code/game/turfs/unsimulated/shuttle.dm index cb70c6c36db..ced6d2804bb 100644 --- a/code/game/turfs/unsimulated/shuttle.dm +++ b/code/game/turfs/unsimulated/shuttle.dm @@ -8,7 +8,7 @@ name = "wall" icon_state = "light" opacity = 1 - density = 1 + density = TRUE blocks_air = 1 /turf/unsimulated/shuttle/wall/dark diff --git a/code/game/turfs/unsimulated/walls.dm b/code/game/turfs/unsimulated/walls.dm index 6f13cdb54b4..878a12404ae 100644 --- a/code/game/turfs/unsimulated/walls.dm +++ b/code/game/turfs/unsimulated/walls.dm @@ -3,7 +3,7 @@ icon = 'icons/turf/walls.dmi' icon_state = "riveted" opacity = 1 - density = 1 + density = TRUE blocks_air = TRUE /turf/unsimulated/wall/fakeglass diff --git a/code/game/vehicles/vehicle.dm b/code/game/vehicles/vehicle.dm index 1250c7d961a..b7361ea7f78 100644 --- a/code/game/vehicles/vehicle.dm +++ b/code/game/vehicles/vehicle.dm @@ -3,9 +3,9 @@ /obj/vehicle name = "Vehicle" icon = 'icons/vehicles/vehicles.dmi' - density = 1 - anchored = 1 - unacidable = 1 //To avoid the pilot-deleting shit that came with mechas + density = TRUE + anchored = TRUE + unacidable = TRUE //To avoid the pilot-deleting shit that came with mechas layer = MOB_LAYER //var/can_move = 1 var/mob/living/carbon/occupant = null diff --git a/code/global.dm b/code/global.dm index 1fde7aca07a..674c81f8eec 100644 --- a/code/global.dm +++ b/code/global.dm @@ -1,6 +1,6 @@ //#define TESTING -#if DM_VERSION < 506 -#warn This compiler is out of date. You may experience issues with projectile animations. +#if DM_VERSION < 512 +#error This compiler is out of date Please update to at least BYOND 512. #endif // Items that ask to be called every cycle. diff --git a/code/modules/admin/admin_secrets.dm b/code/modules/admin/admin_secrets.dm index 89f032071cd..e8ab89101c4 100644 --- a/code/modules/admin/admin_secrets.dm +++ b/code/modules/admin/admin_secrets.dm @@ -12,7 +12,7 @@ var/datum/admin_secrets/admin_secrets = new() for(var/datum/admin_secret_category/category in categories) category_assoc[category.type] = category - for(var/item_type in (typesof(/datum/admin_secret_item) - /datum/admin_secret_item)) + for(var/item_type in subtypesof(/datum/admin_secret_item)) var/datum/admin_secret_item/secret_item = item_type if(!initial(secret_item.name)) continue diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index fd11766653d..e9d63621b06 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -302,7 +302,7 @@ to_chat(usr, "Looks like you didn't select a mob.") return - var/list/possible_modifiers = typesof(/datum/modifier) - /datum/modifier + var/list/possible_modifiers = subtypesof(/datum/modifier) var/new_modifier_type = tgui_input_list(usr, "What modifier should we add to [L]?", "Modifier Type", possible_modifiers) if(!new_modifier_type) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 0d9bceb9961..60542d5a052 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -238,8 +238,7 @@ Example: USING PROCCALL = BLOCKING, SELECT = FORCE_NULLS, PRIORITY = HIGH SELECT do CHECK_TICK finished = TRUE - for(var/i in running) - var/datum/SDQL2_query/query = i + for(var/datum/SDQL2_query/query as anything in running) if(QDELETED(query)) running -= query continue @@ -562,8 +561,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null location = list(location) if(type == "*") - for(var/i in location) - var/datum/d = i + for(var/datum/d as anything in location) if(d.can_vv_get() || superuser) out += d SDQL2_TICK_CHECK diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 8b62db269fa..2f6cfc3a217 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -63,8 +63,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) return var/list/dat = list("[title]") dat += "Refresh

" - for(var/I in l2b) - var/datum/admin_help/AH = I + for(var/datum/admin_help/AH as anything in l2b) dat += "Ticket #[AH.id]: [AH.initiator_key_name]: [AH.name]
" usr << browse(dat.Join(), "window=ahelp_list[state];size=600x480") @@ -73,8 +72,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /datum/admin_help_tickets/proc/stat_entry() var/num_disconnected = 0 stat("Active Tickets:", astatclick.update("[active_tickets.len]")) - for(var/I in active_tickets) - var/datum/admin_help/AH = I + for(var/datum/admin_help/AH as anything in active_tickets) if(AH.initiator) stat("#[AH.id]. [AH.initiator_key_name]:", AH.statclick.update()) else @@ -100,8 +98,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //Get a ticket given a ckey /datum/admin_help_tickets/proc/CKey2ActiveTicket(ckey) - for(var/I in active_tickets) - var/datum/admin_help/AH = I + for(var/datum/admin_help/AH as anything in active_tickets) if(AH.initiator_ckey == ckey) return AH @@ -637,8 +634,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /proc/ircadminwho() var/list/message = list("Admins: ") var/list/admin_keys = list() - for(var/adm in GLOB.admins) - var/client/C = adm + for(var/client/C as anything in GLOB.admins) admin_keys += "[C][C.holder.fakekey ? "(Stealth)" : ""][C.is_afk() ? "(AFK)" : ""]" for(var/admin in admin_keys) diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index 5e9c63949b6..290b04bdde1 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -49,8 +49,8 @@ H.cl = M.client /obj/effect/bmode//Cleaning up the tree a bit - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE layer = LAYER_HUD_BASE plane = PLANE_PLAYER_HUD dir = NORTH @@ -179,8 +179,8 @@ return 1 /obj/effect/bmode/buildholder - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/client/cl = null var/obj/effect/bmode/builddir/builddir = null var/obj/effect/bmode/buildhelp/buildhelp = null diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 8b7aa490875..8b0baa59676 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -518,7 +518,7 @@ if(istype(M.loc.loc,/area/engineering/engine_room)) if(istype(M,/obj/machinery/power/rad_collector)) var/obj/machinery/power/rad_collector/Rad = M - Rad.anchored = 1 + Rad.anchored = TRUE Rad.connect_to_network() var/obj/item/weapon/tank/phoron/Phoron = new/obj/item/weapon/tank/phoron(Rad) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index fe21599691a..a581d3fb82c 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -282,8 +282,7 @@ Ccomp's first proc. GLOB.respawn_timers -= target var/found_client = FALSE - for(var/c in GLOB.clients) - var/client/C = c + for(var/client/C as anything in GLOB.clients) if(C.ckey == target) found_client = C to_chat(C, "You may now respawn. You should roleplay as if you learned nothing about the round during your time with the dead.") @@ -862,7 +861,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/view = src.view if(view == world.view) - view = tgui_input_list(usr, "Select view range:", "FUCK YE", 7, list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)) + view = tgui_input_list(usr, "Select view range:", "FUCK YE", list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)) else view = world.view mob.set_viewsize(view) @@ -886,13 +885,13 @@ Traitors and the like can also be revived with the previous role mostly intact. var/choice if(ticker.mode.auto_recall_shuttle) - choice = tgui_input_list(usr, "The shuttle will just return if you call it. Call anyway?", list("Confirm", "Cancel")) + choice = tgui_input_list(usr, "The shuttle will just return if you call it. Call anyway?", "Shuttle Call", list("Confirm", "Cancel")) if(choice == "Confirm") emergency_shuttle.auto_recall = 1 //enable auto-recall else return - choice = tgui_input_list(usr, "Is this an emergency evacuation or a crew transfer?", list("Emergency", "Crew Transfer")) + choice = tgui_input_list(usr, "Is this an emergency evacuation or a crew transfer?", "Shuttle Call", list("Emergency", "Crew Transfer")) if (choice == "Emergency") emergency_shuttle.call_evac() else diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index 1a27de10c4f..d7b2c1ffff2 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -20,7 +20,7 @@ var/const/commandos_possible = 6 //if more Commandos are needed in the future var/datum/antagonist/deathsquad/team - var/choice = tgui_input_list(usr, "Select type of strike team:", list("Heavy Asset Protection", "Mercenaries")) + var/choice = tgui_input_list(usr, "Select type of strike team:", "Strike Team", list("Heavy Asset Protection", "Mercenaries")) if(!choice) return diff --git a/code/modules/admin/view_variables/modify_variables.dm b/code/modules/admin/view_variables/modify_variables.dm index b270fc1bc8f..8863e76533e 100644 --- a/code/modules/admin/view_variables/modify_variables.dm +++ b/code/modules/admin/view_variables/modify_variables.dm @@ -46,8 +46,7 @@ GLOBAL_PROTECT(VVpixelmovement) var/things = get_all_of_type(type, subtypes) var/i = 0 - for(var/thing in things) - var/datum/D = thing + for(var/datum/D as anything in things) i++ //try one of 3 methods to shorten the type text: // fancy type, @@ -98,7 +97,7 @@ GLOBAL_PROTECT(VVpixelmovement) L += var_value if(IS_VALID_ASSOC_KEY(var_value)) - switch(tgui_alert(usr, "Would you like to associate a value with the list entry?","List VV","Yes","No")) + switch(tgui_alert(usr, "Would you like to associate a value with the list entry?","List VV",list("Yes","No"))) if("Yes") L[var_value] = mod_list_add_ass(O) //hehe if (O) @@ -117,7 +116,7 @@ GLOBAL_PROTECT(VVpixelmovement) return if(L.len > 1000) - var/confirm = tgui_alert(src, "The list you're trying to edit is very long, continuing may crash the server.", "Warning", "Continue", "Abort") + var/confirm = tgui_alert(src, "The list you're trying to edit is very long, continuing may crash the server.", "Long List!", list("Warning", "Continue", "Abort")) if(confirm != "Continue") return @@ -181,7 +180,7 @@ GLOBAL_PROTECT(VVpixelmovement) return var/assoc = 0 if(IS_VALID_ASSOC_KEY(L[index])) - var/prompt = tgui_alert(src, "Do you want to edit the key or its assigned value?", "Associated List", "Key", "Assigned Value", "Cancel") + var/prompt = tgui_alert(src, "Do you want to edit the key or its assigned value?", "Associated List", list("Key", "Assigned Value", "Cancel")) if (prompt == "Cancel") return if (prompt == "Assigned Value") diff --git a/code/modules/admin/view_variables/topic_list.dm b/code/modules/admin/view_variables/topic_list.dm index c437a58a17a..1f535f2b423 100644 --- a/code/modules/admin/view_variables/topic_list.dm +++ b/code/modules/admin/view_variables/topic_list.dm @@ -10,7 +10,7 @@ mod_list(target, null, "list", "contents", target_index, autodetect_class = FALSE) if(href_list[VV_HK_LIST_REMOVE]) var/variable = target[target_index] - var/prompt = tgui_alert(usr, "Do you want to remove item number [target_index] from list?", "Confirm", "Yes", "No") + var/prompt = tgui_alert(usr, "Do you want to remove item number [target_index] from list?", "Confirm", list("Yes", "No")) if (prompt != "Yes") return target.Cut(target_index, target_index+1) diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm index edd55a4c040..78f16a96a0c 100644 --- a/code/modules/ai/ai_holder.dm +++ b/code/modules/ai/ai_holder.dm @@ -175,11 +175,10 @@ var/list/choices = list() for(var/typechoice in types) var/list/found = list() - for(var/mob in searching) // Isnt't there a helper for this, maybe? I forget. - var/atom/M = mob + for(var/atom/M as anything in searching) // Isnt't there a helper for this, maybe? I forget. if(!(M.z in levels_working)) continue - if(!istype(mob,typechoice)) + if(!istype(M,typechoice)) continue found += M choices["[typechoice] ([found.len])"] = found // Prettified name for the user input below) @@ -190,8 +189,7 @@ href_list["datumrefresh"] = "\ref[src]" return var/list/selected = choices[choice] - for(var/mob in selected) - var/mob/living/L = mob + for(var/mob/living/L as anything in selected) if(!istype(L)) to_chat(usr,"Skipping incompatible mob: [L] [ADMIN_COORDJMP(L)]") continue diff --git a/code/modules/ai/ai_holder_combat.dm b/code/modules/ai/ai_holder_combat.dm index e2e1ecbdea0..760031985e0 100644 --- a/code/modules/ai/ai_holder_combat.dm +++ b/code/modules/ai/ai_holder_combat.dm @@ -132,8 +132,7 @@ ai_log("test_projectile_safety() : Test projectile did[!would_hit_primary_target ? " NOT " : " "]hit \the [AM]", AI_LOG_DEBUG) // Make sure we don't have a chance to shoot our friends. - for(var/a in hit_things) - var/atom/A = a + for(var/atom/A as anything in hit_things) ai_log("test_projectile_safety() : Evaluating \the [A] ([A.type]).", AI_LOG_TRACE) if(isliving(A)) // Don't shoot at our friends, even if they're behind the target, as RNG can make them get hit. var/mob/living/L = A diff --git a/code/modules/ai/ai_holder_communication.dm b/code/modules/ai/ai_holder_communication.dm index beddb689249..caafe5c8b8a 100644 --- a/code/modules/ai/ai_holder_communication.dm +++ b/code/modules/ai/ai_holder_communication.dm @@ -84,8 +84,7 @@ if(rand(0,200) < speak_chance) // Check if anyone is around to 'appreciate' what we say. var/alone = TRUE - for(var/m in viewers(holder)) - var/mob/M = m + for(var/mob/M as anything in viewers(holder)) if(M.client) alone = FALSE break diff --git a/code/modules/artifice/deadringer.dm b/code/modules/artifice/deadringer.dm index b5edd577843..b10c05c9427 100644 --- a/code/modules/artifice/deadringer.dm +++ b/code/modules/artifice/deadringer.dm @@ -104,60 +104,60 @@ temp = corpse.get_equipped_item(slot_w_uniform) var/obj/item/clothing/c_type = H.get_equipped_item(slot_w_uniform) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_wear_suit)) corpse.equip_to_slot_or_del(new /obj/item/clothing/suit/chameleon/changeling(corpse), slot_wear_suit) temp = corpse.get_equipped_item(slot_wear_suit) var/obj/item/clothing/c_type = H.get_equipped_item(slot_wear_suit) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_shoes)) corpse.equip_to_slot_or_del(new /obj/item/clothing/shoes/chameleon/changeling(corpse), slot_shoes) temp = corpse.get_equipped_item(slot_shoes) var/obj/item/clothing/c_type = H.get_equipped_item(slot_shoes) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_gloves)) corpse.equip_to_slot_or_del(new /obj/item/clothing/gloves/chameleon/changeling(corpse), slot_gloves) temp = corpse.get_equipped_item(slot_gloves) var/obj/item/clothing/c_type = H.get_equipped_item(slot_gloves) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_l_ear)) temp = H.get_equipped_item(slot_l_ear) corpse.equip_to_slot_or_del(new temp.type(corpse), slot_l_ear) temp = corpse.get_equipped_item(slot_l_ear) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_glasses)) corpse.equip_to_slot_or_del(new /obj/item/clothing/glasses/chameleon/changeling(corpse), slot_glasses) temp = corpse.get_equipped_item(slot_glasses) var/obj/item/clothing/c_type = H.get_equipped_item(slot_glasses) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_wear_mask)) corpse.equip_to_slot_or_del(new /obj/item/clothing/mask/chameleon/changeling(corpse), slot_wear_mask) temp = corpse.get_equipped_item(slot_wear_mask) var/obj/item/clothing/c_type = H.get_equipped_item(slot_wear_mask) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_head)) corpse.equip_to_slot_or_del(new /obj/item/clothing/head/chameleon/changeling(corpse), slot_head) temp = corpse.get_equipped_item(slot_head) var/obj/item/clothing/c_type = H.get_equipped_item(slot_head) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_belt)) corpse.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/chameleon/changeling(corpse), slot_belt) temp = corpse.get_equipped_item(slot_belt) var/obj/item/clothing/c_type = H.get_equipped_item(slot_belt) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE if(H.get_equipped_item(slot_back)) corpse.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/chameleon/changeling(corpse), slot_back) temp = corpse.get_equipped_item(slot_back) var/obj/item/clothing/c_type = H.get_equipped_item(slot_back) temp.disguise(c_type.type) - temp.canremove = 0 + temp.canremove = FALSE corpse.identifying_gender = H.identifying_gender corpse.flavor_texts = H.flavor_texts.Copy() corpse.real_name = H.real_name diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 67bf2c851cb..66ed0c186a5 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -65,11 +65,11 @@ for(var/i = 1 to limit) var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(current_spot) I.master = src - I.density = 1 + I.density = TRUE I.set_dir(dir) if(!step(I, I.dir)) //Try to take a step in that direction return //Couldn't, oh well, we hit a wall or something. Beam should qdel itself in it's Bump(). - I.density = 0 + I.density = FALSE i_beams |= I I.visible = visible @@ -127,8 +127,7 @@ return TRUE if("visible") visible = !visible - for(var/ibeam in i_beams) - var/obj/effect/beam/i_beam/I = ibeam + for(var/obj/effect/beam/i_beam/I as anything in i_beams) I.visible = visible CHECK_TICK return TRUE @@ -148,7 +147,7 @@ icon_state = "ibeam" var/obj/item/device/assembly/infra/master = null var/visible = 0 - anchored = 1 + anchored = TRUE /obj/effect/beam/i_beam/Initialize() . = ..() diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 9e6043a7803..f0422f41160 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -375,8 +375,7 @@ /datum/asset/spritesheet/vending/register() populate_vending_products() - for(var/k in GLOB.vending_products) - var/atom/item = k + for(var/atom/item as anything in GLOB.vending_products) if(!ispath(item, /atom)) continue @@ -388,14 +387,6 @@ if(ispath(item, /obj/item/weapon/reagent_containers/food/drinks/glass2) && !ispath(item, /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask)) var/obj/item/weapon/reagent_containers/food/drinks/glass2/G = item icon_state = initial(G.base_icon) - if(ispath(item, /obj/item/clothing/suit)) - var/obj/item/clothing/suit/U = item - if(initial(U.index)) - icon_file = "icons/obj/clothing/suits_[initial(U.index)].dmi" - if(ispath(item, /obj/item/clothing/under)) - var/obj/item/clothing/under/U = item - if(initial(U.index)) - icon_file = "icons/obj/clothing/uniforms_[initial(U.index)].dmi" if(ispath(item, /obj/item/weapon/reagent_containers/hypospray/autoinjector)) icon_state += "0" diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index 331e96efa43..5781085c5e3 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -4,8 +4,8 @@ name = "bluespace artillery control" icon_state = "control_boxp1" icon = 'icons/obj/machines/particle_accelerator2.dmi' - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE /obj/machinery/artillerycontrol/process() if(src.reload<180) @@ -14,11 +14,11 @@ /obj/structure/artilleryplaceholder name = "artillery" icon = 'icons/obj/machines/artillery.dmi' - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE /obj/structure/artilleryplaceholder/decorative - density = 0 + density = FALSE /obj/machinery/artillerycontrol/attack_hand(mob/user as mob) user.set_machine(src) diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index de22b807de9..69fec5dcdf9 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -3,15 +3,15 @@ desc = "A mysterious gateway built by unknown hands. It allows for faster than light travel to far-flung locations and even alternate realities." //VOREStation Edit icon = 'icons/obj/machines/gateway.dmi' icon_state = "off" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/active = 0 /obj/machinery/gateway/Initialize() update_icon() if(dir == SOUTH) - density = 0 + density = FALSE . = ..() /obj/machinery/gateway/update_icon() @@ -23,8 +23,9 @@ //this is da important part wot makes things go +GLOBAL_DATUM(gateway_station, /obj/machinery/gateway/centerstation) /obj/machinery/gateway/centerstation - density = 1 + density = TRUE icon_state = "offcenter" use_power = USE_POWER_IDLE @@ -35,11 +36,28 @@ var/obj/machinery/gateway/centeraway/awaygate = null /obj/machinery/gateway/centerstation/Initialize() + if(GLOB.gateway_station) + warning("[src] at [x],[y],[z] appears to be an additional station-gateway") + else + GLOB.gateway_station = src + update_icon() wait = world.time + config.gateway_delay //+ thirty minutes default - awaygate = locate(/obj/machinery/gateway/centeraway) + + if(GLOB.gateway_away) + awaygate = GLOB.gateway_away + else + awaygate = locate(/obj/machinery/gateway/centeraway) + . = ..() - density = 1 //VOREStation Add + density = TRUE //VOREStation Add + +/obj/machinery/gateway/centerstation/Destroy() + if(awaygate?.stationgate == src) + awaygate.stationgate = null + if(GLOB.gateway_station == src) + GLOB.gateway_station = null + return ..() /obj/machinery/gateway/centerstation/update_icon() if(active) @@ -48,7 +66,7 @@ icon_state = "offcenter" /* VOREStation Removal - Doesn't do anything /obj/machinery/gateway/centerstation/New() - density = 1 + density = TRUE */ //VOREStation Removal End /obj/machinery/gateway/centerstation/process() @@ -158,6 +176,8 @@ //VOREStation Addition Start: Abduction! if(istype(M, /mob/living) && dest.abductor) var/mob/living/L = M + if(L.nutrition > 500) + L.nutrition = 500 //If the aim is to negate people overpreparing, then they shouldn't be able to stuff themselves full of food either. //Situations to get the mob out of if(L.buckled) L.buckled.unbuckle_mob() @@ -204,8 +224,11 @@ /obj/machinery/gateway/centerstation/attackby(obj/item/device/W as obj, mob/user as mob) if(istype(W,/obj/item/device/multitool)) - if(!awaygate) - awaygate = locate(/obj/machinery/gateway/centeraway) + if(!awaygate) + if(GLOB.gateway_away) + awaygate = GLOB.gateway_away + else + awaygate = locate(/obj/machinery/gateway/centeraway) if(!awaygate) // We still can't find the damn thing because there is no destination. to_chat(user, "Error: Programming failed. No destination found.") return @@ -215,24 +238,40 @@ return /////////////////////////////////////Away//////////////////////// - - +GLOBAL_DATUM(gateway_away, /obj/machinery/gateway/centeraway) /obj/machinery/gateway/centeraway - density = 1 + density = TRUE icon_state = "offcenter" use_power = USE_POWER_OFF var/calibrated = 1 var/list/linked = list() //a list of the connected gateway chunks var/ready = 0 - var/obj/machinery/gateway/centeraway/stationgate = null + var/obj/machinery/gateway/centerstation/stationgate = null +/obj/machinery/gateway/centeraway/New() + density = TRUE /obj/machinery/gateway/centeraway/Initialize() + if(GLOB.gateway_away) + warning("[src] at [x],[y],[z] appears to be an additional away-gateway") + else + GLOB.gateway_away = src + update_icon() - stationgate = locate(/obj/machinery/gateway/centerstation) + + if(GLOB.gateway_station) + stationgate = GLOB.gateway_station + else + stationgate = locate(/obj/machinery/gateway/centerstation) . = ..() - density = 1 //VOREStation Add + density = TRUE //VOREStation Add +/obj/machinery/gateway/centeraway/Destroy() + if(stationgate?.awaygate == src) + stationgate.awaygate = null + if(GLOB.gateway_away == src) + GLOB.gateway_away = null + return ..() /obj/machinery/gateway/centeraway/update_icon() if(active) @@ -240,10 +279,6 @@ return icon_state = "offcenter" -/obj/machinery/gateway/centeraway/New() - density = 1 - - /obj/machinery/gateway/centeraway/proc/detect() linked = list() //clear the list var/turf/T = loc @@ -317,7 +352,10 @@ return else // VOREStation Add - stationgate = locate(/obj/machinery/gateway/centerstation) + if(GLOB.gateway_station) + stationgate = GLOB.gateway_station + else + stationgate = locate(/obj/machinery/gateway/centerstation) if(!stationgate) to_chat(user, "Error: Recalibration failed. No destination found... That can't be good.") return diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm index 39292a52c18..7f4eeaf3a1d 100644 --- a/code/modules/awaymissions/loot_vr.dm +++ b/code/modules/awaymissions/loot_vr.dm @@ -63,7 +63,7 @@ //credits var/amount = rand(2,6) var/list/possible_spawns = list() - for(var/cash_type in typesof(/obj/item/weapon/spacecash) - /obj/item/weapon/spacecash) + for(var/cash_type in subtypesof(/obj/item/weapon/spacecash)) possible_spawns += cash_type var/cash_type = pick(possible_spawns) @@ -352,7 +352,7 @@ /**********************************/ /obj/structure/symbol - anchored = 1 + anchored = TRUE layer = 3.5 name = "strange symbol" icon = 'icons/obj/decals_vr.dmi' diff --git a/code/modules/blob/blob.dm b/code/modules/blob/blob.dm index 587214a0cb2..5218a78c7fe 100644 --- a/code/modules/blob/blob.dm +++ b/code/modules/blob/blob.dm @@ -6,9 +6,9 @@ light_range = 2 light_color = "#b5ff5b" desc = "Some blob creature thingy" - density = 1 + density = TRUE opacity = 0 - anchored = 1 + anchored = TRUE mouse_opacity = 2 var/maxHealth = 30 @@ -193,7 +193,7 @@ update_nearby_tiles() /obj/effect/blob/shield/Destroy() - density = 0 + density = FALSE update_nearby_tiles() ..() diff --git a/code/modules/blob2/blobs/base_blob.dm b/code/modules/blob2/blobs/base_blob.dm index f9c9eb588d8..14f7eb54c0b 100644 --- a/code/modules/blob2/blobs/base_blob.dm +++ b/code/modules/blob2/blobs/base_blob.dm @@ -111,8 +111,7 @@ GLOBAL_LIST_EMPTY(all_blobs) shuffle_inplace(blobs_to_affect) - for(var/L in blobs_to_affect) - var/obj/structure/blob/B = L + for(var/obj/structure/blob/B as anything in blobs_to_affect) if(B.faction != faction) continue diff --git a/code/modules/blob2/blobs/core.dm b/code/modules/blob2/blobs/core.dm index cd4a68a3088..2b5cefa89d7 100644 --- a/code/modules/blob2/blobs/core.dm +++ b/code/modules/blob2/blobs/core.dm @@ -197,8 +197,7 @@ var/list/blob_cores = list() if(!difficulty_threshold) return var/list/valid_types = list() - for(var/thing in subtypesof(/datum/blob_type)) - var/datum/blob_type/BT = thing + for(var/datum/blob_type/BT as anything in subtypesof(/datum/blob_type)) if(initial(BT.difficulty) > difficulty_threshold) // Too hard. continue if(initial(BT.difficulty) < difficulty_floor) // Too easy. diff --git a/code/modules/blob2/overmind/overmind.dm b/code/modules/blob2/overmind/overmind.dm index 6df0cba6295..cdfe6d766aa 100644 --- a/code/modules/blob2/overmind/overmind.dm +++ b/code/modules/blob2/overmind/overmind.dm @@ -57,14 +57,12 @@ var/list/overminds = list() return ..(newloc) /mob/observer/blob/Destroy() - for(var/BL in GLOB.all_blobs) - var/obj/structure/blob/B = BL + for(var/obj/structure/blob/B as anything in GLOB.all_blobs) if(B && B.overmind == src) B.overmind = null B.update_icon() //reset anything that was ours - for(var/BLO in blob_mobs) - var/mob/living/simple_mob/blob/spore/BM = BLO + for(var/mob/living/simple_mob/blob/spore/BM as anything in blob_mobs) if(BM) BM.overmind = null BM.update_icons() diff --git a/code/modules/blob2/overmind/types/synchronous_mesh.dm b/code/modules/blob2/overmind/types/synchronous_mesh.dm index e234756b2d8..acf9441b71a 100644 --- a/code/modules/blob2/overmind/types/synchronous_mesh.dm +++ b/code/modules/blob2/overmind/types/synchronous_mesh.dm @@ -34,8 +34,7 @@ if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && (C.overmind == B.overmind) ) //if it doesn't have the same 'ownership' or is a core or node, don't split damage to it blobs_to_hurt += C - for(var/thing in blobs_to_hurt) - var/obj/structure/blob/C = thing + for(var/obj/structure/blob/C as anything in blobs_to_hurt) if(C == B) continue // We'll damage this later. diff --git a/code/modules/busy_space/loremaster.dm b/code/modules/busy_space/loremaster.dm index 28dca0055b0..9c2f0f55b46 100644 --- a/code/modules/busy_space/loremaster.dm +++ b/code/modules/busy_space/loremaster.dm @@ -7,7 +7,7 @@ var/datum/lore/loremaster/loremaster = new/datum/lore/loremaster /datum/lore/loremaster/New() - var/list/paths = typesof(/datum/lore/organization) - /datum/lore/organization + var/list/paths = subtypesof(/datum/lore/organization) for(var/path in paths) // Some intermediate paths are not real organizations (ex. /datum/lore/organization/mil). Only do ones with names var/datum/lore/organization/instance = path diff --git a/code/modules/busy_space_vr/loremaster.dm b/code/modules/busy_space_vr/loremaster.dm index 28dca0055b0..9c2f0f55b46 100644 --- a/code/modules/busy_space_vr/loremaster.dm +++ b/code/modules/busy_space_vr/loremaster.dm @@ -7,7 +7,7 @@ var/datum/lore/loremaster/loremaster = new/datum/lore/loremaster /datum/lore/loremaster/New() - var/list/paths = typesof(/datum/lore/organization) - /datum/lore/organization + var/list/paths = subtypesof(/datum/lore/organization) for(var/path in paths) // Some intermediate paths are not real organizations (ex. /datum/lore/organization/mil). Only do ones with names var/datum/lore/organization/instance = path diff --git a/code/modules/busy_space_vr/organizations.dm b/code/modules/busy_space_vr/organizations.dm index 05df67ce87a..ec30b2a2a8f 100644 --- a/code/modules/busy_space_vr/organizations.dm +++ b/code/modules/busy_space_vr/organizations.dm @@ -1402,7 +1402,7 @@ ////////////////////////////////////////////////////////////////////////////////// // Other -/datum/lore/organization/other/kitsuhana //sorry KHI, but you're not a coherent stellar government, and you're definitely not a TSC. you get to go in the Others pool. +/datum/lore/organization/other/kitsuhana //sorry KHI, but you're not a coherent stellar government, and you're definitely not a TSC. you get to go in the Others pool. //makes sense to me! name = "Kitsuhana Heavy Industries" short_name = "" //whitespace haaaack desc = "A large post-scarcity amalgamation of races, Kitsuhana is no longer a company but rather a loose association of 'members' \ diff --git a/code/modules/catalogue/cataloguer.dm b/code/modules/catalogue/cataloguer.dm index 8f7f3152f3e..92ed97f347e 100644 --- a/code/modules/catalogue/cataloguer.dm +++ b/code/modules/catalogue/cataloguer.dm @@ -78,8 +78,7 @@ GLOBAL_LIST_EMPTY(all_cataloguers) if(isturf(target) && (!target.can_catalogue())) var/turf/T = target - for(var/a in T) // If we can't scan the turf, see if we can scan anything on it, to help with aiming. - var/atom/A = a + for(var/atom/A as anything in T) // If we can't scan the turf, see if we can scan anything on it, to help with aiming. if(A.can_catalogue()) target = A break @@ -149,8 +148,7 @@ GLOBAL_LIST_EMPTY(all_cataloguers) // Figure out who may have helped out. var/list/contributers = list() var/list/contributer_names = list() - for(var/thing in player_list) - var/mob/living/L = thing + for(var/mob/living/L as anything in player_list) if(L == user) continue if(!istype(L)) @@ -169,8 +167,7 @@ GLOBAL_LIST_EMPTY(all_cataloguers) if(istype(I)) var/list/discoveries = I.discover(user, list(user.name) + contributer_names) // If one discovery leads to another, the list returned will have all of them. if(LAZYLEN(discoveries)) - for(var/D in discoveries) - var/datum/category_item/catalogue/data = D + for(var/datum/category_item/catalogue/data as anything in discoveries) points_gained += data.value // Give out points. @@ -208,23 +205,20 @@ GLOBAL_LIST_EMPTY(all_cataloguers) // First, get everything able to be scanned. var/list/scannable_atoms = list() - for(var/a in view(world.view, user)) - var/atom/A = a + for(var/atom/A as anything in view(world.view, user)) if(A.can_catalogue()) // Not passing the user is intentional, so they don't get spammed. scannable_atoms += A // Highlight things able to be scanned. var/filter = filter(type = "outline", size = 1, color = "#00FF00") - for(var/a in scannable_atoms) - var/atom/A = a + for(var/atom/A as anything in scannable_atoms) A.filters += filter to_chat(user, span("notice", "\The [src] is highlighting scannable objects in green, if any exist.")) sleep(2 SECONDS) // Remove the highlights. - for(var/a in scannable_atoms) - var/atom/A = a + for(var/atom/A as anything in scannable_atoms) if(QDELETED(A)) continue A.filters -= filter @@ -271,14 +265,12 @@ GLOBAL_LIST_EMPTY(all_cataloguers) else dat += "
" - for(var/G in GLOB.catalogue_data.categories) - var/datum/category_group/group = G + for(var/datum/category_group/group as anything in GLOB.catalogue_data.categories) var/list/group_dat = list() var/show_group = FALSE group_dat += "[group.name]" - for(var/I in group.items) - var/datum/category_item/catalogue/item = I + for(var/datum/category_item/catalogue/item as anything in group.items) if(item.visible || debug) group_dat += "[item.name]" show_group = TRUE diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index fb267e39231..7a22dc451c7 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -74,13 +74,12 @@ if(href_list["discord_reg"]) var/their_id = html_decode(href_list["discord_reg"]) var/sane = FALSE - for(var/item in GLOB.pending_discord_registrations) - var/list/L = item + for(var/list/L as anything in GLOB.pending_discord_registrations) if(!islist(L)) - GLOB.pending_discord_registrations -= item + GLOB.pending_discord_registrations -= L continue if(L["ckey"] == ckey && L["id"] == their_id) - GLOB.pending_discord_registrations -= list(item) + GLOB.pending_discord_registrations -= list(L) var/time = L["time"] if((world.realtime - time) > 10 MINUTES) to_chat(src, "Sorry, that link has expired. Please request another on Discord.") diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 0f1f8e9bacd..6128eb2c64a 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -5,26 +5,33 @@ /datum/category_item/player_setup_item/general/language/load_character(var/savefile/S) S["language"] >> pref.alternate_languages + testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]") S["language_prefixes"] >> pref.language_prefixes /datum/category_item/player_setup_item/general/language/save_character(var/savefile/S) S["language"] << pref.alternate_languages + testing("LANGSANI: Saved to [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]") S["language_prefixes"] << pref.language_prefixes /datum/category_item/player_setup_item/general/language/sanitize_character() - if(!islist(pref.alternate_languages)) pref.alternate_languages = list() + if(!islist(pref.alternate_languages)) + testing("LANGSANI: Sanitizing languages on [pref.client]'s character [pref.real_name || "-name not yet loaded-"] because their character has no languages list") + pref.alternate_languages = list() if(pref.species) var/datum/species/S = GLOB.all_species[pref.species] if(!istype(S)) + testing("LANGSANI: Failed sani on [pref.client]'s character [pref.real_name || "-name not yet loaded-"] because their species ([pref.species]) isn't in the global list") return if(pref.alternate_languages.len > S.num_alternate_languages) + testing("LANGSANI: Truncated [pref.client]'s character [pref.real_name || "-name not yet loaded-"] language list because it was too long (len: [pref.alternate_languages.len], allowed: [S.num_alternate_languages])") pref.alternate_languages.len = S.num_alternate_languages // Truncate to allowed length // Sanitize illegal languages for(var/language in pref.alternate_languages) var/datum/language/L = GLOB.all_languages[language] if(!istype(L) || (L.flags & RESTRICTED) || (!(language in S.secondary_langs) && !is_lang_whitelisted(pref.client, L))) + testing("LANGSANI: Removed [L?.name || "lang not found"] from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] because it failed allowed checks") pref.alternate_languages -= language if(isnull(pref.language_prefixes) || !pref.language_prefixes.len) diff --git a/code/modules/client/preference_setup/global/02_settings.dm b/code/modules/client/preference_setup/global/02_settings.dm index f213c15a8af..8f047985c71 100644 --- a/code/modules/client/preference_setup/global/02_settings.dm +++ b/code/modules/client/preference_setup/global/02_settings.dm @@ -29,8 +29,7 @@ // Arrange preferences that have never been enabled/disabled. var/list/client_preference_keys = list() - for(var/cp in get_client_preferences()) - var/datum/client_preference/client_pref = cp + for(var/datum/client_preference/client_pref as anything in get_client_preferences()) client_preference_keys += client_pref.key if((client_pref.key in pref.preferences_enabled) || (client_pref.key in pref.preferences_disabled)) continue @@ -57,8 +56,7 @@ . += "Preferences
" . += "" var/mob/pref_mob = preference_mob() - for(var/cp in get_client_preferences()) - var/datum/client_preference/client_pref = cp + for(var/datum/client_preference/client_pref as anything in get_client_preferences()) if(!client_pref.may_toggle(pref_mob)) continue diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index 25eae07ff1b..5333d176f3b 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -5,8 +5,7 @@ var/list/_client_preferences_by_type /proc/get_client_preferences() if(!_client_preferences) _client_preferences = list() - for(var/ct in subtypesof(/datum/client_preference)) - var/datum/client_preference/client_type = ct + for(var/datum/client_preference/client_type as anything in subtypesof(/datum/client_preference)) if(initial(client_type.description)) _client_preferences += new client_type() return _client_preferences @@ -21,16 +20,14 @@ var/list/_client_preferences_by_type /proc/get_client_preference_by_key(var/preference) if(!_client_preferences_by_key) _client_preferences_by_key = list() - for(var/ct in get_client_preferences()) - var/datum/client_preference/client_pref = ct + for(var/datum/client_preference/client_pref as anything in get_client_preferences()) _client_preferences_by_key[client_pref.key] = client_pref return _client_preferences_by_key[preference] /proc/get_client_preference_by_type(var/preference) if(!_client_preferences_by_type) _client_preferences_by_type = list() - for(var/ct in get_client_preferences()) - var/datum/client_preference/client_pref = ct + for(var/datum/client_preference/client_pref as anything in get_client_preferences()) _client_preferences_by_type[client_pref.type] = client_pref return _client_preferences_by_type[preference] diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index e5822353990..299e742cfd8 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -12,9 +12,8 @@ var/list/gear_datums = list() /hook/startup/proc/populate_gear_list() //create a list of gear datums to sort - for(var/geartype in typesof(/datum/gear)-/datum/gear) - var/datum/gear/G = geartype - if(initial(G.type_category) == geartype) + for(var/datum/gear/G as anything in subtypesof(/datum/gear)) + if(initial(G.type_category) == G) continue var/use_name = initial(G.display_name) var/use_category = initial(G.sort_category) @@ -32,7 +31,7 @@ var/list/gear_datums = list() if(!loadout_categories[use_category]) loadout_categories[use_category] = new /datum/loadout_category(use_category) var/datum/loadout_category/LC = loadout_categories[use_category] - gear_datums[use_name] = new geartype + gear_datums[use_name] = new G LC.gear[use_name] = gear_datums[use_name] loadout_categories = sortAssoc(loadout_categories) diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index d367caeb40e..8df33da7287 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm @@ -13,8 +13,7 @@ /datum/gear/accessory/armband/New() ..() var/list/armbands = list() - for(var/armband in (typesof(/obj/item/clothing/accessory/armband) - typesof(/obj/item/clothing/accessory/armband/med/color))) - var/obj/item/clothing/accessory/armband_type = armband + for(var/obj/item/clothing/accessory/armband_type as anything in (typesof(/obj/item/clothing/accessory/armband) - typesof(/obj/item/clothing/accessory/armband/med/color))) armbands[initial(armband_type.name)] = armband_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(armbands)) @@ -71,8 +70,7 @@ /datum/gear/accessory/wcoat/New() ..() var/list/wcoats = list() - for(var/wcoat in typesof(/obj/item/clothing/accessory/wcoat)) - var/obj/item/clothing/accessory/wcoat_type = wcoat + for(var/obj/item/clothing/accessory/wcoat_type as anything in typesof(/obj/item/clothing/accessory/wcoat)) wcoats[initial(wcoat_type.name)] = wcoat_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(wcoats)) @@ -84,8 +82,7 @@ /datum/gear/accessory/holster/New() ..() var/list/holsters = list() - for(var/holster in typesof(/obj/item/clothing/accessory/holster)) - var/obj/item/clothing/accessory/holster_type = holster + for(var/obj/item/clothing/accessory/holster_type as anything in typesof(/obj/item/clothing/accessory/holster)) holsters[initial(holster_type.name)] = holster_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(holsters)) @@ -97,8 +94,7 @@ /datum/gear/accessory/tie/New() ..() var/list/ties = list() - for(var/tie in typesof(/obj/item/clothing/accessory/tie)) - var/obj/item/clothing/accessory/tie_type = tie + for(var/obj/item/clothing/accessory/tie_type as anything in typesof(/obj/item/clothing/accessory/tie)) ties[initial(tie_type.name)] = tie_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(ties)) @@ -110,8 +106,7 @@ /datum/gear/accessory/scarf/New() ..() var/list/scarfs = list() - for(var/scarf in typesof(/obj/item/clothing/accessory/scarf)) - var/obj/item/clothing/accessory/scarf_type = scarf + for(var/obj/item/clothing/accessory/scarf_type as anything in typesof(/obj/item/clothing/accessory/scarf)) scarfs[initial(scarf_type.name)] = scarf_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(scarfs)) @@ -132,8 +127,7 @@ /datum/gear/accessory/jacket/New() ..() var/list/jackets = list() - for(var/jacket in typesof(/obj/item/clothing/accessory/jacket)) - var/obj/item/clothing/accessory/jacket_type = jacket + for(var/obj/item/clothing/accessory/jacket_type as anything in typesof(/obj/item/clothing/accessory/jacket)) jackets[initial(jacket_type.name)] = jacket_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(jackets)) @@ -179,8 +173,7 @@ /datum/gear/accessory/fannypack/New() ..() var/list/fannys = list() - for(var/fanny in typesof(/obj/item/weapon/storage/belt/fannypack)) - var/obj/item/weapon/storage/belt/fannypack/fanny_type = fanny + for(var/obj/item/weapon/storage/belt/fannypack/fanny_type as anything in typesof(/obj/item/weapon/storage/belt/fannypack)) fannys[initial(fanny_type.name)] = fanny_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(fannys)) @@ -280,8 +273,7 @@ /datum/gear/accessory/asym/New() ..() var/list/asyms = list() - for(var/asym in typesof(/obj/item/clothing/accessory/asymmetric)) - var/obj/item/clothing/accessory/asymmetric_type = asym + for(var/obj/item/clothing/accessory/asymmetric_type as anything in typesof(/obj/item/clothing/accessory/asymmetric)) asyms[initial(asymmetric_type.name)] = asymmetric_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(asyms)) diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm b/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm index 3278aa23f8f..50f52d1e48d 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories_vr.dm @@ -117,6 +117,6 @@ Talon pin */ /datum/gear/accessory/talonpin - display_name = "ITV pin" - description = "A small enamel pin of the ITV logo." + display_name = "Talon pin" + description = "A small enamel pin of the Talon logo." path = /obj/item/clothing/accessory/talon \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index 719eb6fcfc1..8b566fe3c98 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -53,8 +53,7 @@ /datum/gear/plushie/New() ..() var/list/plushies = list() - for(var/plushie in subtypesof(/obj/item/toy/plushie/) - /obj/item/toy/plushie/therapy) - var/obj/item/toy/plushie/plushie_type = plushie + for(var/obj/item/toy/plushie/plushie_type as anything in subtypesof(/obj/item/toy/plushie) - /obj/item/toy/plushie/therapy) plushies[initial(plushie_type.name)] = plushie_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(plushies)) @@ -66,8 +65,7 @@ /datum/gear/figure/New() ..() var/list/figures = list() - for(var/figure in typesof(/obj/item/toy/figure/) - /obj/item/toy/figure) - var/obj/item/toy/figure/figure_type = figure + for(var/obj/item/toy/figure/figure_type as anything in subtypesof(/obj/item/toy/figure)) figures[initial(figure_type.name)] = figure_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(figures)) diff --git a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm index 94739c56bbd..9b72d27abab 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm @@ -6,8 +6,7 @@ /datum/gear/ball/New() ..() var/list/balls = list() - for(var/ball in typesof(/obj/item/toy/tennis/)) - var/obj/item/toy/tennis/ball_type = ball + for(var/obj/item/toy/tennis/ball_type as anything in typesof(/obj/item/toy/tennis/)) balls[initial(ball_type.name)] = ball_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(balls)) @@ -19,8 +18,7 @@ /datum/gear/character/New() ..() var/list/characters = list() - for(var/character in typesof(/obj/item/toy/character/) - /obj/item/toy/character) - var/obj/item/toy/character/character_type = character + for(var/obj/item/toy/character/character_type as anything in subtypesof(/obj/item/toy/character)) characters[initial(character_type.name)] = character_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(characters)) @@ -32,8 +30,7 @@ /datum/gear/mechtoy/New() ..() var/list/mechs = list() - for(var/mech in typesof(/obj/item/toy/mecha/) - /obj/item/toy/mecha/) - var/obj/item/toy/mecha/mech_type = mech + for(var/obj/item/toy/mecha/mech_type as anything in subtypesof(/obj/item/toy/mecha)) mechs[initial(mech_type.name)] = mech_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(mechs)) diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index 2513757c1c0..0c06774d9b3 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -169,8 +169,7 @@ /datum/gear/head/pin/New() ..() var/list/pins = list() - for(var/pin in typesof(/obj/item/clothing/head/pin)) - var/obj/item/clothing/head/pin/pin_type = pin + for(var/obj/item/clothing/head/pin/pin_type as anything in typesof(/obj/item/clothing/head/pin)) pins[initial(pin_type.name)] = pin_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(pins)) @@ -182,8 +181,7 @@ /datum/gear/head/hardhat/New() ..() var/list/hardhats = list() - for(var/hardhat in typesof(/obj/item/clothing/head/hardhat)) - var/obj/item/clothing/head/hardhat/hardhat_type = hardhat + for(var/obj/item/clothing/head/hardhat/hardhat_type as anything in typesof(/obj/item/clothing/head/hardhat)) hardhats[initial(hardhat_type.name)] = hardhat_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(hardhats)) @@ -223,8 +221,7 @@ /datum/gear/head/santahat/New() ..() var/list/santahats = list() - for(var/santahat in typesof(/obj/item/clothing/head/santa)) - var/obj/item/clothing/head/santa/santahat_type = santahat + for(var/obj/item/clothing/head/santa/santahat_type as anything in typesof(/obj/item/clothing/head/santa)) santahats[initial(santahat_type.name)] = santahat_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(santahats)) diff --git a/code/modules/client/preference_setup/loadout/loadout_head_vr.dm b/code/modules/client/preference_setup/loadout/loadout_head_vr.dm index 5dfabc578c3..3aaddefa5cd 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head_vr.dm @@ -53,10 +53,10 @@ Talon hats */ /datum/gear/head/cap/talon - display_name = "cap, ITV" + display_name = "cap, Talon" path = /obj/item/clothing/head/soft/talon /datum/gear/head/beret/talon - display_name = "beret, ITV" + display_name = "beret, Talon" path = /obj/item/clothing/head/beret diff --git a/code/modules/client/preference_setup/loadout/loadout_smoking.dm b/code/modules/client/preference_setup/loadout/loadout_smoking.dm index 96db8bf2fe0..f9442518b23 100644 --- a/code/modules/client/preference_setup/loadout/loadout_smoking.dm +++ b/code/modules/client/preference_setup/loadout/loadout_smoking.dm @@ -48,7 +48,6 @@ /datum/gear/cigarettes/New() ..() var/list/cigarettes = list() - for(var/cigarette in (typesof(/obj/item/weapon/storage/fancy/cigarettes) - typesof(/obj/item/weapon/storage/fancy/cigarettes/killthroat))) - var/obj/item/weapon/storage/fancy/cigarettes/cigarette_brand = cigarette + for(var/obj/item/weapon/storage/fancy/cigarettes/cigarette_brand as anything in (typesof(/obj/item/weapon/storage/fancy/cigarettes) - typesof(/obj/item/weapon/storage/fancy/cigarettes/killthroat))) cigarettes[initial(cigarette_brand.name)] = cigarette_brand gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cigarettes)) diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index a1771a67ee3..8fb7c84c170 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -133,43 +133,39 @@ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(hoodies)) /datum/gear/suit/labcoat - display_name = "labcoat" + display_name = "labcoat selection, public" path = /obj/item/clothing/suit/storage/toggle/labcoat -/datum/gear/suit/labcoat/blue - display_name = "labcoat, blue" - path = /obj/item/clothing/suit/storage/toggle/labcoat/blue +/datum/gear/suit/labcoat/New() + ..() + var/list/labcoats = list( + "White labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat, + "Blue-edge labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/blue_edge, + "Green labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/green, + "Orange labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/orange, + "Purple labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/purple, + "Pink labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/pink, + "Red labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/red, + "Yellow labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/yellow + ) + gear_tweaks += new/datum/gear_tweak/path(labcoats) -/datum/gear/suit/labcoat/blue_edge - display_name = "labcoat, blue-edged" - path = /obj/item/clothing/suit/storage/toggle/labcoat/blue_edge +/datum/gear/suit/labcoat_cmo + display_name = "labcoat selection, cmo" + path = /obj/item/clothing/suit/storage/toggle/labcoat/cmo + allowed_roles = list("Chief Medical Officer") -/datum/gear/suit/labcoat/green - display_name = "labcoat, green" - path = /obj/item/clothing/suit/storage/toggle/labcoat/green - -/datum/gear/suit/labcoat/orange - display_name = "labcoat, orange" - path = /obj/item/clothing/suit/storage/toggle/labcoat/orange - -/datum/gear/suit/labcoat/purple - display_name = "labcoat, purple" - path = /obj/item/clothing/suit/storage/toggle/labcoat/purple - -/datum/gear/suit/labcoat/pink - display_name = "labcoat, pink" - path = /obj/item/clothing/suit/storage/toggle/labcoat/pink - -/datum/gear/suit/labcoat/red - display_name = "labcoat, red" - path = /obj/item/clothing/suit/storage/toggle/labcoat/red - -/datum/gear/suit/labcoat/yellow - display_name = "labcoat, yellow" - path = /obj/item/clothing/suit/storage/toggle/labcoat/yellow +/datum/gear/suit/labcoat_cmo/New() + ..() + var/list/labcoats = list( + "CMO labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/cmo, + "CMO labcoat (alt)" = /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, + "CMO labcoat (modern)" = /obj/item/clothing/suit/storage/toggle/labcoat/modern/cmo + ) + gear_tweaks += new/datum/gear_tweak/path(labcoats) /datum/gear/suit/labcoat/emt - display_name = "labcoat, EMT (Medical)" + display_name = "labcoat, EMT" path = /obj/item/clothing/suit/storage/toggle/labcoat/emt allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") @@ -187,6 +183,11 @@ path = /obj/item/clothing/suit/storage/apron/overalls cost = 1 +/datum/gear/suit/cyberpunk + display_name = "cyberpunk jacket" + path = /obj/item/clothing/suit/cyberpunk + cost = 2 + /datum/gear/suit/poncho display_name = "poncho selection" path = /obj/item/clothing/accessory/poncho @@ -201,98 +202,89 @@ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(ponchos)) /datum/gear/suit/roles/poncho - display_name = "poncho, cargo" + display_name = "poncho selection, departments" path = /obj/item/clothing/accessory/poncho/roles/cargo cost = 1 -/datum/gear/suit/roles/poncho/security - display_name = "poncho, security" - path = /obj/item/clothing/accessory/poncho/roles/security +/datum/gear/suit/roles/poncho/New() + ..() + var/list/ponchos = list( + "Cargo poncho" = /obj/item/clothing/accessory/poncho/roles/cargo, + "Security poncho" = /obj/item/clothing/accessory/poncho/roles/security, + "Medical poncho" = /obj/item/clothing/accessory/poncho/roles/medical, + "Engineering poncho" = /obj/item/clothing/accessory/poncho/roles/engineering, + "Science poncho" = /obj/item/clothing/accessory/poncho/roles/science + ) + gear_tweaks += new/datum/gear_tweak/path(ponchos) -/datum/gear/suit/roles/poncho/medical - display_name = "poncho, medical" - path = /obj/item/clothing/accessory/poncho/roles/medical -/datum/gear/suit/roles/poncho/engineering - display_name = "poncho, engineering" - path = /obj/item/clothing/accessory/poncho/roles/engineering +/datum/gear/suit/roles/cloak + display_name = "cloak selection, departments" + path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo + cost = 1 -/datum/gear/suit/roles/poncho/science - display_name = "poncho, science" - path = /obj/item/clothing/accessory/poncho/roles/science +/datum/gear/suit/roles/cloak/New() + ..() + var/list/cloaks = list( + "Cargo cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/cargo, + "Mining cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/mining, + "Security cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/security, + "Service cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/service, + "Engineer cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/engineer, + "Atmos cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/atmos, + "Research cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/research, + "Medical cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/medical + ) + gear_tweaks += new/datum/gear_tweak/path(cloaks) -/datum/gear/suit/roles/poncho/cloak/hos +/datum/gear/suit/roles/cloak_hos display_name = "cloak, head of security" path = /obj/item/clothing/accessory/poncho/roles/cloak/hos allowed_roles = list("Head of Security") + cost = 1 -/datum/gear/suit/roles/poncho/cloak/cmo +/datum/gear/suit/roles/cloak_cmo display_name = "cloak, chief medical officer" path = /obj/item/clothing/accessory/poncho/roles/cloak/cmo allowed_roles = list("Chief Medical Officer") + cost = 1 -/datum/gear/suit/roles/poncho/cloak/ce +/datum/gear/suit/roles/cloak_ce display_name = "cloak, chief engineer" path = /obj/item/clothing/accessory/poncho/roles/cloak/ce allowed_roles = list("Chief Engineer") + cost = 1 -/datum/gear/suit/roles/poncho/cloak/rd +/datum/gear/suit/roles/cloak_rd display_name = "cloak, research director" path = /obj/item/clothing/accessory/poncho/roles/cloak/rd allowed_roles = list("Research Director") + cost = 1 -/datum/gear/suit/roles/poncho/cloak/qm +/datum/gear/suit/roles/cloak_qm display_name = "cloak, quartermaster" path = /obj/item/clothing/accessory/poncho/roles/cloak/qm allowed_roles = list("Quartermaster") + cost = 1 -/datum/gear/suit/roles/poncho/cloak/captain +/datum/gear/suit/roles/cloak_captain display_name = "cloak, site manager" path = /obj/item/clothing/accessory/poncho/roles/cloak/captain allowed_roles = list("Site Manager") + cost = 1 -/datum/gear/suit/roles/poncho/cloak/hop +/datum/gear/suit/roles/cloak_hop display_name = "cloak, head of personnel" path = /obj/item/clothing/accessory/poncho/roles/cloak/hop allowed_roles = list("Head of Personnel") + cost = 1 -/datum/gear/suit/roles/poncho/cloak/cargo - display_name = "cloak, cargo" - path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo - -/datum/gear/suit/roles/poncho/cloak/mining - display_name = "cloak, mining" - path = /obj/item/clothing/accessory/poncho/roles/cloak/mining - -/datum/gear/suit/roles/poncho/cloak/security - display_name = "cloak, security" - path = /obj/item/clothing/accessory/poncho/roles/cloak/security - -/datum/gear/suit/roles/poncho/cloak/service - display_name = "cloak, service" - path = /obj/item/clothing/accessory/poncho/roles/cloak/service - -/datum/gear/suit/roles/poncho/cloak/engineer - display_name = "cloak, engineer" - path = /obj/item/clothing/accessory/poncho/roles/cloak/engineer - -/datum/gear/suit/roles/poncho/cloak/atmos - display_name = "cloak, atmos" - path = /obj/item/clothing/accessory/poncho/roles/cloak/atmos - -/datum/gear/suit/roles/poncho/cloak/research - display_name = "cloak, science" - path = /obj/item/clothing/accessory/poncho/roles/cloak/research - -/datum/gear/suit/roles/poncho/cloak/medical - display_name = "cloak, medical" - path = /obj/item/clothing/accessory/poncho/roles/cloak/medical - -/datum/gear/suit/roles/poncho/cloak/custom //A colorable cloak - display_name = "cloak (colorable)" +/datum/gear/suit/cloak_custom //A colorable cloak + display_name = "cloak, colorable" path = /obj/item/clothing/accessory/poncho/roles/cloak/custom + cost = 1 -/datum/gear/suit/roles/poncho/cloak/custom/New() +/datum/gear/suit/cloak_custom/New() ..() gear_tweaks += gear_tweak_free_color_choice @@ -301,44 +293,49 @@ path = /obj/item/clothing/suit/unathi/robe cost = 1 -/datum/gear/suit/black_lawyer_jacket - display_name = "suit jacket, black" +/datum/gear/suit/lawyer_jackets + display_name = "suit jacket selection" path = /obj/item/clothing/suit/storage/toggle/internalaffairs -/datum/gear/suit/blue_lawyer_jacket - display_name = "suit jacket, blue" - path = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket - -/datum/gear/suit/purple_lawyer_jacket - display_name = "suit jacket, purple" - path = /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket +/datum/gear/suit/lawyer_jackets/New() + ..() + var/list/jackets = list( + "Black suit jacket" = /obj/item/clothing/suit/storage/toggle/internalaffairs, + "Blue suit jacket" = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket, + "Purple suit jacket" = /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket + ) + gear_tweaks += new/datum/gear_tweak/path(jackets) /datum/gear/suit/suspenders display_name = "suspenders" path = /obj/item/clothing/suit/suspenders /datum/gear/suit/forensics - display_name = "forensics long, red" + display_name = "forensics uniform selection (Detective)" path = /obj/item/clothing/suit/storage/forensics/red/long allowed_roles = list("Detective") -/datum/gear/suit/forensics/blue - display_name = "forensics long, blue" - path = /obj/item/clothing/suit/storage/forensics/blue/long - allowed_roles = list("Detective") +/datum/gear/suit/forensics/New() + ..() + var/list/uniforms = list( + "Red, long uniform" = /obj/item/clothing/suit/storage/forensics/red/long, + "Blue, long uniform" = /obj/item/clothing/suit/storage/forensics/blue/long, + "Red, short uniform" = /obj/item/clothing/suit/storage/forensics/red, + "Blue, short uniform" = /obj/item/clothing/suit/storage/forensics/blue + ) + gear_tweaks += new/datum/gear_tweak/path(uniforms) -/datum/gear/suit/forensics/blue/short - display_name = "forensics, blue" - path = /obj/item/clothing/suit/storage/forensics/blue - allowed_roles = list("Detective") +/datum/gear/suit/qm_coat + display_name = "coat, quartermaster" + path = /obj/item/clothing/suit/storage/qm + allowed_roles = list("Quartermaster") -/datum/gear/suit/forensics/red/short - display_name = "forensics, red" - path = /obj/item/clothing/suit/storage/forensics/red - allowed_roles = list("Detective") +/datum/gear/suit/cargo_coat + display_name = "coat, cargo tech" + path = /obj/item/clothing/suit/storage/cargo + allowed_roles = list("Quartermaster","Shaft Miner","Cargo Technician","Head of Personnel") // winter coats go here - /datum/gear/suit/wintercoat display_name = "winter coat" path = /obj/item/clothing/suit/storage/hooded/wintercoat @@ -403,7 +400,6 @@ path = /obj/item/clothing/suit/storage/hooded/wintercoat/science allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist", "Xenobotanist") - /datum/gear/suit/wintercoat/science/robotics display_name = "winter coat, robotics" path = /obj/item/clothing/suit/storage/hooded/wintercoat/science/robotics @@ -474,7 +470,6 @@ /datum/gear/suit/wintercoat/cosmic display_name = "winter coat, cosmic" path = /obj/item/clothing/suit/storage/hooded/wintercoat/cosmic - // winter coats end here /datum/gear/suit/varsity @@ -502,20 +497,18 @@ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(tracks)) /datum/gear/suit/flannel - display_name = "grey flannel" + display_name = "flannel jacket selection" path = /obj/item/clothing/suit/storage/flannel -/datum/gear/suit/flannel/red - display_name = "red flannel" - path = /obj/item/clothing/suit/storage/flannel/red - -/datum/gear/suit/flannel/aqua - display_name = "aqua flannel" - path = /obj/item/clothing/suit/storage/flannel/aqua - -/datum/gear/suit/flannel/brown - display_name = "brown flannel" - path = /obj/item/clothing/suit/storage/flannel/brown +/datum/gear/suit/flannel/New() + ..() + var/list/flannel = list( + "Grey flannel" = /obj/item/clothing/suit/storage/flannel, + "Red flannel" = /obj/item/clothing/suit/storage/flannel/red, + "Aqua flannel" = /obj/item/clothing/suit/storage/flannel/aqua, + "Brown flannel" = /obj/item/clothing/suit/storage/flannel/brown + ) + gear_tweaks += new/datum/gear_tweak/path(flannel) /datum/gear/suit/denim_jacket display_name = "denim jacket" @@ -541,25 +534,20 @@ ..() gear_tweaks += gear_tweak_free_color_choice -/datum/gear/suit/miscellaneous/sec_dep_jacket - display_name = "department jacket, security" +/datum/gear/suit/miscellaneous/dep_jacket + display_name = "department jacket selection" path = /obj/item/clothing/suit/storage/toggle/sec_dep_jacket -/datum/gear/suit/miscellaneous/engi_dep_jacket - display_name = "department jacket, engineering" - path = /obj/item/clothing/suit/storage/toggle/engi_dep_jacket - -/datum/gear/suit/miscellaneous/supply_dep_jacket - display_name = "department jacket, supply" - path = /obj/item/clothing/suit/storage/toggle/supply_dep_jacket - -/datum/gear/suit/miscellaneous/sci_dep_jacket - display_name = "department jacket, science" - path = /obj/item/clothing/suit/storage/toggle/sci_dep_jacket - -/datum/gear/suit/miscellaneous/med_dep_jacket - display_name = "department jacket, medical" - path = /obj/item/clothing/suit/storage/toggle/med_dep_jacket +/datum/gear/suit/miscellaneous/dep_jacket/New() + ..() + var/list/jacket = list( + "Security department jacket" = /obj/item/clothing/suit/storage/toggle/sec_dep_jacket, + "Engineering department jacket" = /obj/item/clothing/suit/storage/toggle/engi_dep_jacket, + "Cargo department jacket" = /obj/item/clothing/suit/storage/toggle/supply_dep_jacket, + "Science department jacket" = /obj/item/clothing/suit/storage/toggle/sci_dep_jacket, + "Medical department jacket" = /obj/item/clothing/suit/storage/toggle/med_dep_jacket + ) + gear_tweaks += new/datum/gear_tweak/path(jacket) /datum/gear/suit/miscellaneous/peacoat display_name = "peacoat" diff --git a/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm b/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm index 881d4dd8b3e..0383f58f0a9 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm @@ -31,16 +31,20 @@ path = /obj/item/clothing/suit/poncho //Detective alternative -/datum/gear/uniform/detective_alt - display_name = "sleek modern coat, detective" +/datum/gear/suit/detective_alt + display_name = "sleek modern coat selection, detective" path = /obj/item/clothing/suit/storage/det_trench/alt allowed_roles = list("Head of Security", "Detective") -//Detective alternative -/datum/gear/uniform/detective_alt2 - display_name = "sleek modern coat (long), detective" - path = /obj/item/clothing/suit/storage/det_trench/alt2 - allowed_roles = list("Head of Security", "Detective") +/datum/gear/suit/detective_alt/New() + ..() + var/list/coats = list( + "Modern coat (tan)" = /obj/item/clothing/suit/storage/det_trench/alt, + "Modern coat (long, tan)" = /obj/item/clothing/suit/storage/det_trench/alt2, + "Modern coat (black)" = /obj/item/clothing/suit/storage/det_trench/alt/black, + "Modern coat (long, black)" = /obj/item/clothing/suit/storage/det_trench/alt2/black + ) + gear_tweaks += new/datum/gear_tweak/path(coats) //Emergency Responder jackets for Parameds & EMTs, but also general Medical Staff /datum/gear/suit/roles/medical/ems_jacket @@ -78,5 +82,5 @@ Talon winter coat */ /datum/gear/suit/wintercoat/talon - display_name = "winter coat, ITV" + display_name = "winter coat, Talon" path = /obj/item/clothing/suit/storage/hooded/wintercoat/talon \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index 4d24c2b1c61..3dcf43895f1 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -16,8 +16,7 @@ /datum/gear/uniform/cheongsam/New() ..() var/list/cheongasms = list() - for(var/cheongasm in typesof(/obj/item/clothing/under/cheongsam)) - var/obj/item/clothing/under/cheongsam/cheongasm_type = cheongasm + for(var/obj/item/clothing/under/cheongsam/cheongasm_type as anything in typesof(/obj/item/clothing/under/cheongsam)) cheongasms[initial(cheongasm_type.name)] = cheongasm_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cheongasms)) @@ -28,8 +27,7 @@ /datum/gear/uniform/croptop/New() ..() var/list/croptops = list() - for(var/croptop in typesof(/obj/item/clothing/under/croptop)) - var/obj/item/clothing/under/croptop/croptop_type = croptop + for(var/obj/item/clothing/under/croptop/croptop_type as anything in typesof(/obj/item/clothing/under/croptop)) croptops[initial(croptop_type.name)] = croptop_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(croptops)) @@ -52,8 +50,7 @@ /datum/gear/uniform/jumpsuit/New() ..() var/list/jumpclothes = list() - for(var/jump in typesof(/obj/item/clothing/under/color)) - var/obj/item/clothing/under/color/jumps = jump + for(var/obj/item/clothing/under/color/jumps as anything in typesof(/obj/item/clothing/under/color)) jumpclothes[initial(jumps.name)] = jumps gear_tweaks += new/datum/gear_tweak/path(sortAssoc(jumpclothes)) @@ -78,8 +75,7 @@ /datum/gear/uniform/pants/New() ..() var/list/pants = list() - for(var/pant in typesof(/obj/item/clothing/under/pants)) - var/obj/item/clothing/under/pants/pant_type = pant + for(var/obj/item/clothing/under/pants/pant_type as anything in typesof(/obj/item/clothing/under/pants)) pants[initial(pant_type.name)] = pant_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(pants)) @@ -90,8 +86,7 @@ /datum/gear/uniform/shorts/New() ..() var/list/shorts = list() - for(var/short in typesof(/obj/item/clothing/under/shorts)) - var/obj/item/clothing/under/pants/short_type = short + for(var/obj/item/clothing/under/pants/short_type as anything in typesof(/obj/item/clothing/under/shorts)) shorts[initial(short_type.name)] = short_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(shorts)) @@ -212,8 +207,7 @@ /datum/gear/uniform/suit/lawyer/New() ..() var/list/lsuits = list() - for(var/lsuit in typesof(/obj/item/clothing/under/lawyer)) - var/obj/item/clothing/suit/lsuit_type = lsuit + for(var/obj/item/clothing/suit/lsuit_type as anything in typesof(/obj/item/clothing/under/lawyer)) lsuits[initial(lsuit_type.name)] = lsuit_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(lsuits)) @@ -273,8 +267,7 @@ /datum/gear/uniform/scrub/New() ..() var/list/scrubs = list() - for(var/scrub in typesof(/obj/item/clothing/under/rank/medical/scrubs)) - var/obj/item/clothing/under/rank/medical/scrubs/scrub_type = scrub + for(var/obj/item/clothing/under/rank/medical/scrubs/scrub_type as anything in typesof(/obj/item/clothing/under/rank/medical/scrubs)) scrubs[initial(scrub_type.name)] = scrub_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(scrubs)) @@ -396,8 +389,7 @@ /datum/gear/uniform/dresses/maid/New() ..() var/list/maids = list() - for(var/maid in typesof(/obj/item/clothing/under/dress/maid)) - var/obj/item/clothing/under/dress/maid/maid_type = maid + for(var/obj/item/clothing/under/dress/maid/maid_type as anything in typesof(/obj/item/clothing/under/dress/maid)) maids[initial(maid_type.name)] = maid_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(maids)) diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm index bbbafe56722..18e9f2b83a9 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm @@ -171,8 +171,7 @@ Swimsuits /datum/gear/uniform/swimsuits/New() ..() var/list/swimsuits = list() - for(var/swimsuit in typesof(/obj/item/weapon/storage/box/fluff/swimsuit)) - var/obj/item/weapon/storage/box/fluff/swimsuit/swimsuit_type = swimsuit + for(var/obj/item/weapon/storage/box/fluff/swimsuit/swimsuit_type as anything in typesof(/obj/item/weapon/storage/box/fluff/swimsuit)) swimsuits[initial(swimsuit_type.name)] = swimsuit_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(swimsuits)) @@ -221,6 +220,20 @@ Bluespace jumpsuit Talon jumpsuit */ /datum/gear/uniform/talonbasic - display_name = "ITV Jumpsuit" - description = "A jumpsuit that is usually issued to ITV contractors, however others can purchase it to show their support towards ITV." - path = /obj/item/clothing/under/rank/talon/basic \ No newline at end of file + display_name = "Talon Jumpsuit" + description = "A jumpsuit that is usually issued to ITV Talon contractors, however others can purchase it to show their support towards the ship." + path = /obj/item/clothing/under/rank/talon/basic + +// Summer dresses +/datum/gear/uniform/summerdress + display_name = "summer dress selection" + path = /obj/item/clothing/under/summerdress + +/datum/gear/uniform/summerdress/New() + ..() + var/list/dresses = list( + "black and white" = /obj/item/clothing/under/summerdress, + "blue and white" = /obj/item/clothing/under/summerdress/blue, + "red and white" = /obj/item/clothing/under/summerdress/red + ) + gear_tweaks += new/datum/gear_tweak/path(dresses) diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index 23855d851ff..fb396762f5e 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -21,8 +21,7 @@ /datum/gear/utility/communicator/New() ..() var/list/communicators = list() - for(var/communicator in typesof(/obj/item/device/communicator) - list(/obj/item/device/communicator/integrated,/obj/item/device/communicator/commlink)) //VOREStation Edit - Remove Commlink - var/obj/item/device/communicator_type = communicator + for(var/obj/item/device/communicator_type as anything in typesof(/obj/item/device/communicator) - list(/obj/item/device/communicator/integrated,/obj/item/device/communicator/commlink)) //VOREStation Edit - Remove Commlink communicators[initial(communicator_type.name)] = communicator_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(communicators)) diff --git a/code/modules/client/preference_setup/loadout/loadout_utility_vr.dm b/code/modules/client/preference_setup/loadout/loadout_utility_vr.dm index 3e76ac89349..909ae31b87a 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility_vr.dm @@ -62,7 +62,7 @@ allowed_roles = list("Pathfinder","Explorer") /datum/gear/utility/dufflebag/talon - display_name = "ITV dufflebag" + display_name = "Talon dufflebag" path = /obj/item/weapon/storage/backpack/dufflebag/explorer /datum/gear/utility/ID diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm index 5027b82afee..d953221b201 100644 --- a/code/modules/client/preference_setup/vore/07_traits.dm +++ b/code/modules/client/preference_setup/vore/07_traits.dm @@ -79,20 +79,33 @@ pref.pos_traits.Cut() pref.neg_traits.Cut() // Clean up positive traits - for(var/path in pref.pos_traits) + for(var/datum/trait/path as anything in pref.pos_traits) if(!(path in positive_traits)) pref.pos_traits -= path + continue + var/take_flags = initial(path.can_take) + if((pref.dirty_synth && !(take_flags & SYNTHETICS)) || (pref.gross_meatbag && !(take_flags & ORGANICS))) + pref.pos_traits -= path //Neutral traits - for(var/path in pref.neu_traits) + for(var/datum/trait/path as anything in pref.neu_traits) if(!(path in neutral_traits)) pref.neu_traits -= path + continue if(!(pref.species == SPECIES_CUSTOM) && !(path in everyone_traits)) pref.neu_traits -= path + continue + var/take_flags = initial(path.can_take) + if((pref.dirty_synth && !(take_flags & SYNTHETICS)) || (pref.gross_meatbag && !(take_flags & ORGANICS))) + pref.neu_traits -= path //Negative traits - for(var/path in pref.neg_traits) + for(var/datum/trait/path as anything in pref.neg_traits) if(!(path in negative_traits)) pref.neg_traits -= path - + continue + var/take_flags = initial(path.can_take) + if((pref.dirty_synth && !(take_flags & SYNTHETICS)) || (pref.gross_meatbag && !(take_flags & ORGANICS))) + pref.neg_traits -= path + var/datum/species/selected_species = GLOB.all_species[pref.species] if(selected_species.selects_bodytype) // Allowed! diff --git a/code/modules/client/preferences_spawnpoints.dm b/code/modules/client/preferences_spawnpoints.dm index 06f7aa5e061..455be8a8b81 100644 --- a/code/modules/client/preferences_spawnpoints.dm +++ b/code/modules/client/preferences_spawnpoints.dm @@ -2,7 +2,7 @@ var/list/spawntypes = list() /proc/populate_spawn_points() spawntypes = list() - for(var/type in typesof(/datum/spawnpoint)-/datum/spawnpoint) + for(var/type in subtypesof(/datum/spawnpoint)) var/datum/spawnpoint/S = new type() spawntypes[S.display_name] = S diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index ccc3e0ac4e8..445acdc1c7c 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -69,7 +69,7 @@ var/temp = "" var/category = R_ADMIN // VOREStation Edit - Apply stealthmin protection to all levels - if(C.holder.fakekey && !check_rights(R_ADMIN|R_MOD, FALSE, src)) // Only admins and mods can see stealthmins + if(C.holder.fakekey && !check_rights_for(src, R_ADMIN|R_MOD)) // Only admins and mods can see stealthmins continue // VOREStation Edit End if(check_rights(R_BAN, FALSE, C)) // admins //VOREStation Edit diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index b9abfabf04e..a69eee2e7f5 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -13,10 +13,9 @@ body_parts_covered = copy.body_parts_covered flags_inv = copy.flags_inv - item_icons = copy.item_icons.Copy() - if(copy.item_state_slots) //Runtime prevention for backpacks - item_state_slots = copy.item_state_slots.Copy() - sprite_sheets = copy.sprite_sheets.Copy() + item_icons = copy.item_icons?.Copy() + item_state_slots = copy.item_state_slots?.Copy() + sprite_sheets = copy.sprite_sheets?.Copy() //copying sprite_sheets_obj should be unnecessary as chameleon items are not refittable. return copy //for inheritance @@ -25,15 +24,14 @@ . = list() var/i = 1 //in case there is a collision with both name AND icon_state - for(var/typepath in typesof(basetype) - blacklist) - var/obj/O = typepath + for(var/obj/O as anything in typesof(basetype) - blacklist) if(initial(O.icon) && initial(O.icon_state)) var/name = initial(O.name) if(name in .) name += " ([initial(O.icon_state)])" if(name in .) name += " \[[i++]\]" - .[name] = typepath + .[name] = O /obj/item/clothing/under/chameleon //starts off as black @@ -54,7 +52,7 @@ name = "psychedelic" desc = "Groovy!" icon_state = "psyche" - item_state_slots[slot_w_uniform_str] = "psyche" + LAZYSET(item_state_slots, slot_w_uniform_str, "psyche") update_icon() update_clothing_icon() @@ -336,7 +334,6 @@ /obj/item/weapon/storage/belt/chameleon name = "belt" desc = "Can hold various things. It also has a small dial inside one of the pouches." - icon = 'icons/obj/clothing/belts.dmi' icon_state = "utilitybelt" origin_tech = list(TECH_ILLEGAL = 3) var/global/list/clothing_choices @@ -376,7 +373,7 @@ /obj/item/clothing/accessory/chameleon name = "black tie" desc = "Looks like a black tie, but his one also has a dial inside." - icon = 'icons/obj/clothing/ties.dmi' + icon = 'icons/inventory/accessory/item.dmi' icon_state = "blacktie" origin_tech = list(TECH_ILLEGAL = 3) var/global/list/clothing_choices diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index e58b71ca725..f9c9e1aebc2 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -16,18 +16,9 @@ var/list/enables_planes //Enables these planes in the wearing mob's plane_holder var/list/plane_slots //But only if it's equipped into this specific slot - /* - Sprites used when the clothing item is refit. This is done by setting icon_override. - For best results, if this is set then sprite_sheets should be null and vice versa, but that is by no means necessary. - Ideally, sprite_sheets_refit should be used for "hard" clothing items that can't change shape very well to fit the wearer (e.g. helmets, hardsuits), - while sprite_sheets should be used for "flexible" clothing items that do not need to be refitted (e.g. aliens wearing jumpsuits). - */ - var/list/sprite_sheets_refit = null var/ear_protection = 0 var/blood_sprite_state - var/index //null by default, if set, will change which dmi it uses - var/update_icon_define = null // Only needed if you've got multiple files for the same type of clothing var/polychromic = FALSE //VOREStation edit @@ -165,9 +156,6 @@ species_restricted = list(target_species) //Set icon - if (sprite_sheets_refit && (target_species in sprite_sheets_refit)) - sprite_sheets[target_species] = sprite_sheets_refit[target_species] - if (sprite_sheets_obj && (target_species in sprite_sheets_obj)) icon = sprite_sheets_obj[target_species] else @@ -213,9 +201,6 @@ species_restricted = list(target_species) //Set icon - if (sprite_sheets_refit && (target_species in sprite_sheets_refit)) - sprite_sheets[target_species] = sprite_sheets_refit[target_species] - if (sprite_sheets_obj && (target_species in sprite_sheets_obj)) icon = sprite_sheets_obj[target_species] else @@ -229,7 +214,7 @@ throwforce = 2 slot_flags = SLOT_EARS sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/ears.dmi') + SPECIES_TESHARI = 'icons/inventory/ears/mob_teshari.dmi') /obj/item/clothing/ears/attack_hand(mob/user as mob) if (!user) return @@ -312,7 +297,7 @@ ) gender = PLURAL //Carn: for grammarically correct text-parsing w_class = ITEMSIZE_SMALL - icon = 'icons/obj/clothing/gloves.dmi' + icon = 'icons/inventory/hands/item.dmi' siemens_coefficient = 0.9 blood_sprite_state = "bloodyhands" var/wired = 0 @@ -328,8 +313,8 @@ slot_flags = SLOT_GLOVES attack_verb = list("challenged") sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/gloves.dmi', - SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi' + SPECIES_TESHARI = 'icons/inventory/hands/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/hands/mob_vox.dmi' ) drop_sound = 'sound/items/drop/gloves.ogg' pickup_sound = 'sound/items/pickup/gloves.ogg' @@ -438,7 +423,7 @@ /obj/item/clothing/gloves/ring name = "ring" w_class = ITEMSIZE_TINY - icon = 'icons/obj/clothing/rings.dmi' + icon = 'icons/inventory/hands/item.dmi' gender = NEUTER species_restricted = list("exclude", SPECIES_DIONA) siemens_coefficient = 1 @@ -453,7 +438,7 @@ //Head /obj/item/clothing/head name = "head" - icon = 'icons/obj/clothing/hats.dmi' + icon = 'icons/inventory/head/item.dmi' item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_hats.dmi', slot_r_hand_str = 'icons/mob/items/righthand_hats.dmi', @@ -470,8 +455,8 @@ var/image/helmet_light sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/head/mob_vox.dmi' ) drop_sound = 'sound/items/drop/hat.ogg' pickup_sound = 'sound/items/pickup/hat.ogg' @@ -544,9 +529,9 @@ // Generate and cache the on-mob icon, which is used in update_inv_head(). var/body_type = (H && H.species.get_bodytype(H)) - var/cache_key = "[light_overlay][body_type && sprite_sheets[body_type] ? "_[body_type]" : ""]" + var/cache_key = "[light_overlay][body_type && LAZYACCESS(sprite_sheets, body_type) ? body_type : ""]" if(!light_overlay_cache[cache_key]) - var/use_icon = LAZYACCESS(sprite_sheets,body_type) || 'icons/mob/light_overlays.dmi' + var/use_icon = LAZYACCESS(sprite_sheets, body_type) || 'icons/mob/light_overlays.dmi' light_overlay_cache[cache_key] = image(icon = use_icon, icon_state = "[light_overlay]") else if(helmet_light) @@ -564,7 +549,7 @@ //Mask /obj/item/clothing/mask name = "mask" - icon = 'icons/obj/clothing/masks.dmi' + icon = 'icons/inventory/face/item.dmi' item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_masks.dmi', slot_r_hand_str = 'icons/mob/items/righthand_masks.dmi', @@ -574,10 +559,10 @@ body_parts_covered = FACE|EYES blood_sprite_state = "maskblood" sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/masks.dmi', - SPECIES_VOX = 'icons/mob/species/vox/masks.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/mask.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/mask.dmi' + SPECIES_TESHARI = 'icons/inventory/face/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/face/mob_vox.dmi', + SPECIES_TAJ = 'icons/inventory/face/mob_tajaran.dmi', + SPECIES_UNATHI = 'icons/inventory/face/mob_unathi.dmi' ) var/voicechange = 0 @@ -599,7 +584,7 @@ //Shoes /obj/item/clothing/shoes name = "shoes" - icon = 'icons/obj/clothing/shoes.dmi' + icon = 'icons/inventory/feet/item.dmi' item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_shoes.dmi', slot_r_hand_str = 'icons/mob/items/righthand_shoes.dmi', @@ -628,8 +613,8 @@ var/overshoes = 0 species_restricted = list("exclude",SPECIES_TESHARI, SPECIES_VOX) sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/shoes.dmi', - SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi' + SPECIES_TESHARI = 'icons/inventory/feet/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/feet/mob_vox.dmi' ) drop_sound = 'sound/items/drop/shoes.ogg' pickup_sound = 'sound/items/pickup/shoes.ogg' @@ -729,7 +714,7 @@ /////////////////////////////////////////////////////////////////////// //Suit /obj/item/clothing/suit - icon = 'icons/obj/clothing/suits.dmi' + icon = 'icons/inventory/suit/item.dmi' item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_suits.dmi', slot_r_hand_str = 'icons/mob/items/righthand_suits.dmi', @@ -738,7 +723,7 @@ var/fire_resist = T0C+100 body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS allowed = list(/obj/item/weapon/tank/emergency/oxygen) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) slot_flags = SLOT_OCLOTHING var/blood_overlay_type = "suit" blood_sprite_state = "suitblood" //Defaults to the suit's blood overlay, so that some blood renders instead of no blood. @@ -751,48 +736,38 @@ sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi', - SPECIES_VOX = 'icons/mob/species/vox/suit.dmi' + SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/suit/mob_vox.dmi' ) valid_accessory_slots = (ACCESSORY_SLOT_OVER | ACCESSORY_SLOT_ARMBAND) restricted_accessory_slots = (ACCESSORY_SLOT_ARMBAND) -/obj/item/clothing/suit/set_clothing_index() - ..() - - if(index && !icon_override) - icon = new /icon("icons/obj/clothing/suits_[index].dmi") - item_icons = list( - slot_l_hand_str = new /icon("icons/mob/items/lefthand_suits_[index].dmi"), - slot_r_hand_str = new /icon("icons/mob/items/righthand_suits_[index].dmi"), - ) - - return 1 - - return 0 - /obj/item/clothing/suit/update_clothing_icon() if (ismob(src.loc)) var/mob/M = src.loc M.update_inv_wear_suit() - set_clothing_index() - /obj/item/clothing/suit/equipped(var/mob/user, var/slot) if(ishuman(user)) var/mob/living/carbon/human/H = user - if((taurized && !istaurtail(H.tail_style)) || (!taurized && istaurtail(H.tail_style))) - taurize(user) + var/taurtail = istaurtail(H.tail_style) + if((taurized && !taurtail) || (!taurized && taurtail)) + taurize(user, taurtail) return ..() -/obj/item/clothing/suit/proc/taurize(var/mob/living/carbon/human/Taur) - if(istaurtail(Taur.tail_style)) +/obj/item/clothing/suit/proc/taurize(var/mob/living/carbon/human/Taur, has_taur_tail = FALSE) + if(has_taur_tail) var/datum/sprite_accessory/tail/taur/taurtail = Taur.tail_style if(taurtail.suit_sprites && (get_worn_icon_state(slot_wear_suit_str) in cached_icon_states(taurtail.suit_sprites))) icon_override = taurtail.suit_sprites taurized = TRUE + // means that if a taur puts on an already taurized suit without a taur sprite + // for their taur type, but the previous taur type had a sprite, it stays + // taurized and they end up with that taur style which is funny + else + taurized = FALSE if(!taurized) icon_override = initial(icon_override) @@ -819,7 +794,7 @@ /////////////////////////////////////////////////////////////////////// //Under clothing /obj/item/clothing/under - icon = 'icons/obj/clothing/uniforms.dmi' + icon = 'icons/inventory/uniform/item.dmi' item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_uniforms.dmi', slot_r_hand_str = 'icons/mob/items/righthand_uniforms.dmi', @@ -845,8 +820,8 @@ var/rolled_down = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled var/rolled_sleeves = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/uniform.dmi', - SPECIES_VOX = 'icons/mob/species/vox/uniform.dmi' + SPECIES_TESHARI = 'icons/inventory/uniform/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/uniform/mob_vox.dmi' ) //convenience var for defining the icon state for the overlay used when the clothing is worn. @@ -872,8 +847,8 @@ |ACCESSORY_SLOT_DEPT\ |ACCESSORY_SLOT_OVER) - var/icon/rolled_down_icon = 'icons/mob/uniform_rolled_down.dmi' - var/icon/rolled_down_sleeves_icon = 'icons/mob/uniform_sleeves_rolled.dmi' + var/icon/rolled_down_icon = 'icons/inventory/uniform/mob_rolled_down.dmi' + var/icon/rolled_down_sleeves_icon = 'icons/inventory/uniform/mob_sleeves_rolled.dmi' /obj/item/clothing/under/attack_hand(var/mob/user) if(LAZYLEN(accessories)) @@ -885,15 +860,13 @@ /obj/item/clothing/under/New() ..() if(worn_state) - if(!item_state_slots) - item_state_slots = list() - item_state_slots[slot_w_uniform_str] = worn_state + LAZYSET(item_state_slots, slot_w_uniform_str, worn_state) else worn_state = icon_state //autodetect rollability if(rolled_down < 0) - if(("[worn_state]_d_s" in cached_icon_states(icon)) || ("[worn_state]_s" in cached_icon_states(rolled_down_icon)) || ("[worn_state]_d_s" in cached_icon_states(icon_override))) + if(("[worn_state]_d" in cached_icon_states(icon)) || (worn_state in cached_icon_states(rolled_down_icon)) || ("[worn_state]_d" in cached_icon_states(icon_override))) rolled_down = 0 if(rolled_down == -1) @@ -901,23 +874,6 @@ if(rolled_sleeves == -1) verbs -= /obj/item/clothing/under/verb/rollsleeves -/obj/item/clothing/under/set_clothing_index() - ..() - - if(index && !icon_override) - icon = new /icon("icons/obj/clothing/uniforms_[index].dmi") - - item_icons = list( - slot_l_hand_str = new /icon("icons/mob/items/lefthand_uniforms_[index].dmi"), - slot_r_hand_str = new /icon("icons/mob/items/righthand_uniforms_[index].dmi"), - ) - - rolled_down_icon = new /icon("icons/mob/uniform_rolled_down_[index].dmi") - rolled_down_sleeves_icon = new /icon("icons/mob/uniform_sleeves_rolled_[index].dmi") - return 1 - - return 0 - /obj/item/clothing/under/proc/update_rolldown_status() var/mob/living/carbon/human/H if(istype(src.loc, /mob/living/carbon/human)) @@ -926,15 +882,15 @@ var/icon/under_icon if(icon_override) under_icon = icon_override - else if(H && sprite_sheets && sprite_sheets[H.species.get_bodytype(H)]) + else if(H && LAZYACCESS(sprite_sheets, H.species.get_bodytype(H))) under_icon = sprite_sheets[H.species.get_bodytype(H)] - else if(item_icons && item_icons[slot_w_uniform_str]) + else if(LAZYACCESS(item_icons, slot_w_uniform_str)) under_icon = item_icons[slot_w_uniform_str] - else if ("[worn_state]_s" in cached_icon_states(rolled_down_icon)) + else if (worn_state in cached_icon_states(rolled_down_icon)) under_icon = rolled_down_icon // The _s is because the icon update procs append it. - if((under_icon == rolled_down_icon && ("[worn_state]_s" in cached_icon_states(under_icon))) || ("[worn_state]_d_s" in cached_icon_states(under_icon))) + if((under_icon == rolled_down_icon && ("[worn_state]" in cached_icon_states(under_icon))) || ("[worn_state]_d" in cached_icon_states(under_icon))) if(rolled_down != 1) rolled_down = 0 else @@ -949,17 +905,17 @@ var/icon/under_icon if(icon_override) under_icon = icon_override - else if(H && sprite_sheets && sprite_sheets[H.species.get_bodytype(H)]) + else if(H && LAZYACCESS(sprite_sheets, H.species.get_bodytype(H))) under_icon = sprite_sheets[H.species.get_bodytype(H)] - else if(item_icons && item_icons[slot_w_uniform_str]) + else if(LAZYACCESS(item_icons, slot_w_uniform_str)) under_icon = item_icons[slot_w_uniform_str] - else if ("[worn_state]_s" in cached_icon_states(rolled_down_sleeves_icon)) + else if (worn_state in cached_icon_states(rolled_down_sleeves_icon)) under_icon = rolled_down_sleeves_icon - else if(index) - under_icon = new /icon("[INV_W_UNIFORM_DEF_ICON]_[index].dmi") + else + under_icon = new /icon(INV_W_UNIFORM_DEF_ICON) // The _s is because the icon update procs append it. - if((under_icon == rolled_down_sleeves_icon && ("[worn_state]_s" in cached_icon_states(under_icon))) || ("[worn_state]_r_s" in cached_icon_states(under_icon))) + if((under_icon == rolled_down_sleeves_icon && ("[worn_state]" in cached_icon_states(under_icon))) || ("[worn_state]_r" in cached_icon_states(under_icon))) if(rolled_sleeves != 1) rolled_sleeves = 0 else @@ -1042,18 +998,18 @@ if(rolled_down) body_parts_covered = initial(body_parts_covered) body_parts_covered &= ~(UPPER_TORSO|ARMS) - if("[worn_state]_s" in cached_icon_states(rolled_down_icon)) + if(worn_state in cached_icon_states(rolled_down_icon)) icon_override = rolled_down_icon - item_state_slots[slot_w_uniform_str] = "[worn_state]" + LAZYSET(item_state_slots, slot_w_uniform_str, worn_state) else - item_state_slots[slot_w_uniform_str] = "[worn_state]_d" + LAZYSET(item_state_slots, slot_w_uniform_str, "[worn_state]_d") to_chat(usr, "You roll down your [src].") else body_parts_covered = initial(body_parts_covered) if(icon_override == rolled_down_icon) icon_override = initial(icon_override) - item_state_slots[slot_w_uniform_str] = "[worn_state]" + LAZYSET(item_state_slots, slot_w_uniform_str, worn_state) to_chat(usr, "You roll up your [src].") update_clothing_icon() @@ -1075,17 +1031,17 @@ rolled_sleeves = !rolled_sleeves if(rolled_sleeves) body_parts_covered &= ~(ARMS) - if("[worn_state]_s" in cached_icon_states(rolled_down_sleeves_icon)) + if(worn_state in cached_icon_states(rolled_down_sleeves_icon)) icon_override = rolled_down_sleeves_icon - item_state_slots[slot_w_uniform_str] = "[worn_state]" + LAZYSET(item_state_slots, slot_w_uniform_str, worn_state) else - item_state_slots[slot_w_uniform_str] = "[worn_state]_r" + LAZYSET(item_state_slots, slot_w_uniform_str, "[worn_state]_r") to_chat(usr, "You roll up your [src]'s sleeves.") else body_parts_covered = initial(body_parts_covered) if(icon_override == rolled_down_sleeves_icon) icon_override = initial(icon_override) - item_state_slots[slot_w_uniform_str] = "[worn_state]" + LAZYSET(item_state_slots, slot_w_uniform_str, worn_state) to_chat(usr, "You roll down your [src]'s sleeves.") update_clothing_icon() diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm index d7415c4a758..c67d63e6a8a 100644 --- a/code/modules/clothing/clothing_accessories.dm +++ b/code/modules/clothing/clothing_accessories.dm @@ -9,8 +9,7 @@ //Find all consumed slots var/consumed_slots = 0 - for(var/thing in accessories) - var/obj/item/clothing/accessory/AC = thing + for(var/obj/item/clothing/accessory/AC as anything in accessories) consumed_slots |= AC.slot //Mask to just consumed restricted diff --git a/code/modules/clothing/clothing_icons.dm b/code/modules/clothing/clothing_icons.dm index 1762d092017..6560045a1fb 100644 --- a/code/modules/clothing/clothing_icons.dm +++ b/code/modules/clothing/clothing_icons.dm @@ -10,17 +10,11 @@ bloodsies.color = blood_color standing.add_overlay(bloodsies) -//UNIFORM: Always appends "_s" to iconstate, stupidly. -/obj/item/clothing/under/get_worn_icon_state(var/slot_name) - var/state2use = ..() - state2use += "_s" - return state2use - //HELMET: May have a lighting overlay /obj/item/clothing/head/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0,var/icon/clip_mask = null) var/image/standing = ..() if(light_on && slot_name == slot_head_str) - var/cache_key = "[light_overlay][LAZYACCESS(sprite_sheets,body_type) ? "_[body_type]" : ""]" + var/cache_key = "[light_overlay][LAZYACCESS(sprite_sheets, body_type) ? "_[body_type]" : ""]" if(standing && light_overlay_cache[cache_key]) standing.add_overlay(light_overlay_cache[cache_key]) return standing diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm index b8610fdfcbb..5f662ca628e 100644 --- a/code/modules/clothing/clothing_vr.dm +++ b/code/modules/clothing/clothing_vr.dm @@ -5,9 +5,9 @@ var/list/inside_emotes = list() var/recent_squish = 0 sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/shoes.dmi', - SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/feet.dmi') + SPECIES_TESHARI = 'icons/inventory/feet/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/feet/mob_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/feet/mob_vr_werebeast.dmi') /obj/item/clothing/shoes/New() inside_emotes = list( @@ -85,14 +85,14 @@ /obj/item/clothing/gloves sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/gloves.dmi', - SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/hands.dmi') + SPECIES_TESHARI = 'icons/inventory/hands/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/hands/mob_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/hands/mob_vr_werebeast.dmi') /obj/item/clothing/ears sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/ears.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/ears.dmi') + SPECIES_TESHARI = 'icons/inventory/ears/mob_teshari.dmi', + SPECIES_WEREBEAST = 'icons/inventory/ears/mob_vr_werebeast.dmi') /obj/item/clothing/relaymove(var/mob/living/user,var/direction) @@ -119,7 +119,7 @@ //Mask /obj/item/clothing/mask name = "mask" - icon = 'icons/obj/clothing/masks_vr.dmi' // This is intentional because of our custom species. + icon = 'icons/inventory/face/item_vr.dmi' // This is intentional because of our custom species. item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_masks.dmi', slot_r_hand_str = 'icons/mob/items/righthand_masks.dmi', @@ -128,38 +128,38 @@ slot_flags = SLOT_MASK body_parts_covered = FACE|EYES item_icons = list( - slot_wear_mask_str = 'icons/mob/mask_vr.dmi' + slot_wear_mask_str = 'icons/inventory/face/mob_vr.dmi' ) sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/masks_vr.dmi', - SPECIES_VOX = 'icons/mob/species/vox/masks.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/mask_vr.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/mask_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/sergal/mask_vr.dmi', - SPECIES_NEVREAN = 'icons/mob/species/nevrean/mask_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/fox/mask_vr.dmi', - SPECIES_ZORREN_FLAT = 'icons/mob/species/fennec/mask_vr.dmi', - SPECIES_AKULA = 'icons/mob/species/akula/mask_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/mask.dmi', - SPECIES_XENOCHIMERA = 'icons/mob/species/tajaran/mask_vr.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/masks.dmi' + SPECIES_TESHARI = 'icons/inventory/face/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/face/mob_vox.dmi', + SPECIES_TAJ = 'icons/inventory/face/mob_tajaran.dmi', + SPECIES_UNATHI = 'icons/inventory/face/mob_unathi.dmi', + SPECIES_SERGAL = 'icons/inventory/face/mob_vr_sergal.dmi', + SPECIES_NEVREAN = 'icons/inventory/face/mob_vr_nevrean.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/face/mob_vr_fox.dmi', + SPECIES_ZORREN_FLAT = 'icons/inventory/face/mob_vr_fennec.dmi', + SPECIES_AKULA = 'icons/inventory/face/mob_vr_akula.dmi', + SPECIES_VULPKANIN = 'icons/inventory/face/mob_vr_vulpkanin.dmi', + SPECIES_XENOCHIMERA = 'icons/inventory/face/mob_vr_tajaran.dmi', + SPECIES_WEREBEAST = 'icons/inventory/face/mob_vr_werebeast.dmi' ) -//"Spider" = 'icons/mob/species/spider/mask_vr.dmi' Add this later when they have custom mask sprites and everything. +//"Spider" = 'icons/inventory/mask/mob_spider.dmi' Add this later when they have custom mask sprites and everything. //Switch to taur sprites if a taur equips /obj/item/clothing/suit sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi', - SPECIES_VOX = 'icons/mob/species/vox/suit.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/suit.dmi') + SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/suit/mob_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/suit/mob_vr_werebeast.dmi') /obj/item/clothing/under sensor_mode = 3 var/sensorpref = 5 sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/uniform.dmi', - SPECIES_VOX = 'icons/mob/species/vox/uniform.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/uniform.dmi') + SPECIES_TESHARI = 'icons/inventory/uniform/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/uniform/mob_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/uniform/mob_vr_werebeast.dmi') /obj/item/clothing/under/New(var/mob/living/carbon/human/H) ..() @@ -176,6 +176,6 @@ /obj/item/clothing/head sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/head.dmi') + SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/head/mob_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/head/mob_vr_werebeast.dmi') diff --git a/code/modules/clothing/ears/earrings.dm b/code/modules/clothing/ears/earrings.dm index 154f69f44a9..82746980bd4 100644 --- a/code/modules/clothing/ears/earrings.dm +++ b/code/modules/clothing/ears/earrings.dm @@ -2,7 +2,7 @@ /obj/item/clothing/ears/earring name = "earring" desc = "An earring of some kind." - icon = 'icons/obj/clothing/ears.dmi' + icon = 'icons/inventory/ears/item.dmi' /obj/item/clothing/ears/earring/stud name = "pearl stud earrings" diff --git a/code/modules/clothing/ears/ears.dm b/code/modules/clothing/ears/ears.dm index 07e74d73210..99f9b009129 100644 --- a/code/modules/clothing/ears/ears.dm +++ b/code/modules/clothing/ears/ears.dm @@ -43,7 +43,7 @@ /obj/item/clothing/ears/skrell name = "skrell tentacle wear" desc = "Some stuff worn by skrell to adorn their head tentacles." - icon = 'icons/obj/clothing/ears.dmi' + icon = 'icons/inventory/ears/item.dmi' w_class = ITEMSIZE_TINY slot_flags = SLOT_EARS species_restricted = list(SPECIES_SKRELL) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 69e56bbbf09..3db7ad58cf4 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -13,7 +13,7 @@ BLIND // can't see anything /obj/item/clothing/glasses name = "glasses" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/inventory/eyes/item.dmi' w_class = ITEMSIZE_SMALL slot_flags = SLOT_EYES plane_slots = list(slot_glasses) @@ -31,8 +31,8 @@ BLIND // can't see anything pickup_sound = 'sound/items/pickup/accessory.ogg' sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/eyes.dmi', - SPECIES_VOX = 'icons/mob/species/vox/eyes.dmi' + SPECIES_TESHARI = 'icons/inventory/eyes/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/eyes/mob_vox.dmi' ) /obj/item/clothing/glasses/update_clothing_icon() diff --git a/code/modules/clothing/glasses/glasses_vr.dm b/code/modules/clothing/glasses/glasses_vr.dm index 4471f3d9c51..63be852414f 100644 --- a/code/modules/clothing/glasses/glasses_vr.dm +++ b/code/modules/clothing/glasses/glasses_vr.dm @@ -64,8 +64,8 @@ /obj/item/clothing/glasses/graviton/medgravpatch name = "medical graviton eyepatch" desc = "A graviton eyepatch with a medical overlay." - icon = 'icons/obj/clothing/glasses_vr.dmi' - icon_override = 'icons/mob/eyes_vr.dmi' + icon = 'icons/inventory/eyes/item_vr.dmi' + icon_override = 'icons/inventory/eyes/mob_vr.dmi' icon_state = "medgravpatch" item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold") action_button_name = "Toggle Eyepatch" @@ -77,8 +77,8 @@ /obj/item/clothing/glasses/tajblind name = "embroidered veil" desc = "An Tajaran made veil that allows the user to see while obscuring their eyes." - icon = 'icons/obj/clothing/glasses_vr.dmi' - icon_override = 'icons/mob/eyes_vr.dmi' + icon = 'icons/inventory/eyes/item_vr.dmi' + icon_override = 'icons/inventory/eyes/mob_vr.dmi' icon_state = "tajblind" item_state = "tajblind" prescription = 1 @@ -87,8 +87,8 @@ /obj/item/clothing/glasses/hud/health/tajblind name = "lightweight veil" desc = "An Tajaran made veil that allows the user to see while obscuring their eyes. This one has an installed medical HUD." - icon = 'icons/obj/clothing/glasses_vr.dmi' - icon_override = 'icons/mob/eyes_vr.dmi' + icon = 'icons/inventory/eyes/item_vr.dmi' + icon_override = 'icons/inventory/eyes/mob_vr.dmi' icon_state = "tajblind_med" item_state = "tajblind_med" body_parts_covered = EYES @@ -96,8 +96,8 @@ /obj/item/clothing/glasses/sunglasses/sechud/tajblind name = "sleek veil" desc = "An Tajaran made veil that allows the user to see while obscuring their eyes. This one has an in-built security HUD." - icon = 'icons/obj/clothing/glasses_vr.dmi' - icon_override = 'icons/mob/eyes_vr.dmi' + icon = 'icons/inventory/eyes/item_vr.dmi' + icon_override = 'icons/inventory/eyes/mob_vr.dmi' icon_state = "tajblind_sec" item_state = "tajblind_sec" prescription = 1 @@ -106,8 +106,8 @@ /obj/item/clothing/glasses/meson/prescription/tajblind name = "industrial veil" desc = "An Tajaran made veil that allows the user to see while obscuring their eyes. This one has installed mesons." - icon = 'icons/obj/clothing/glasses_vr.dmi' - icon_override = 'icons/mob/eyes_vr.dmi' + icon = 'icons/inventory/eyes/item_vr.dmi' + icon_override = 'icons/inventory/eyes/mob_vr.dmi' icon_state = "tajblind_meson" item_state = "tajblind_meson" off_state = "tajblind" @@ -116,8 +116,8 @@ /obj/item/clothing/glasses/material/prescription/tajblind name = "mining veil" desc = "An Tajaran made veil that allows the user to see while obscuring their eyes. This one has an installed material scanner." - icon = 'icons/obj/clothing/glasses_vr.dmi' - icon_override = 'icons/mob/eyes_vr.dmi' + icon = 'icons/inventory/eyes/item_vr.dmi' + icon_override = 'icons/inventory/eyes/mob_vr.dmi' icon_state = "tajblind_meson" item_state = "tajblind_meson" off_state = "tajblind" @@ -125,7 +125,7 @@ /obj/item/clothing/glasses sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/eyes.dmi', - SPECIES_VOX = 'icons/mob/species/vox/eyes.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/eyes.dmi' + SPECIES_TESHARI = 'icons/inventory/eyes/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/eyes/mob_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/eyes/mob_werebeast.dmi' ) diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm index a6cee840b6e..e280f985c6d 100644 --- a/code/modules/clothing/glasses/hud_vr.dm +++ b/code/modules/clothing/glasses/hud_vr.dm @@ -116,8 +116,8 @@ /obj/item/clothing/glasses/omnihud/visor name = "AR visor" desc = "The VZR-AR are a product based upon the classic AR Glasses, just more fashionable." - icon_override = 'icons/mob/eyes_vr.dmi' - icon = 'icons/mob/eyes_vr.dmi' + icon_override = 'icons/inventory/eyes/mob_vr.dmi' + icon = 'icons/inventory/eyes/mob_vr.dmi' icon_state = "visor_CIV" item_state = "visor_CIV" diff --git a/code/modules/clothing/gloves/arm_guards_vr.dm b/code/modules/clothing/gloves/arm_guards_vr.dm index 00f78dcc5db..69b3bee05db 100644 --- a/code/modules/clothing/gloves/arm_guards_vr.dm +++ b/code/modules/clothing/gloves/arm_guards_vr.dm @@ -2,5 +2,5 @@ name = "imperial gauntlets" desc = "Made of some exotic metal, and crafted by space elves. Elves have delicate hands." icon_state = "ge_gloves" - icon = 'icons/obj/clothing/gloves_vr.dmi' - icon_override = 'icons/mob/hands_vr.dmi' \ No newline at end of file + icon = 'icons/inventory/hands/item_vr.dmi' + icon = 'icons/inventory/hands/mob_vr.dmi' \ No newline at end of file diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 4b410163fe2..bb4e035196a 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -10,8 +10,8 @@ desc = "an ultra rare hat. It commands a certain respect." icon_state = "petehat" sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/head/mob_vox.dmi' ) /obj/item/clothing/head/collectable/slime diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index cf0527c6a6c..bbe3f21b44d 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -172,8 +172,8 @@ icon_state = "swathelm" item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") sprite_sheets = list( - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi', + SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi', + SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi', ) armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0) diff --git a/code/modules/clothing/head/helmet_vr.dm b/code/modules/clothing/head/helmet_vr.dm index 6f36aef383e..53e9c581af4 100644 --- a/code/modules/clothing/head/helmet_vr.dm +++ b/code/modules/clothing/head/helmet_vr.dm @@ -11,30 +11,30 @@ desc = "If you wanna to keep your brain inside yo' head, you'd best put this on!" icon_state = "unsc_helm" item_state = "unsc_helm" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' /obj/item/clothing/head/helmet/combat/imperial name = "imperial soldier helmet" desc = "Veni, vidi, vici; I came, I saw, I conquered." icon_state = "ge_helm" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' /obj/item/clothing/head/helmet/combat/imperial/centurion name = "imperial centurion helmet" desc = "Vendi, vidi, visa; I came, I saw, I realised this hat was too expensive." icon_state = "ge_helmcent" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' // Armor Versions Here /obj/item/clothing/head/helmet/combat/crusader name = "crusader helmet" desc = "ye olde armored helmet" icon_state = "crusader" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/obj/clothing/hats_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/item_vr.dmi' armor = list(melee = 80, bullet = 50, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 2 @@ -42,8 +42,8 @@ name = "bedevere's helmet" desc = "ye olde armored helmet" icon_state = "bedevere_helmet" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/obj/clothing/hats_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/item_vr.dmi' armor = list(melee = 80, bullet = 50, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) tint = TINT_HEAVY siemens_coefficient = 2 @@ -90,8 +90,8 @@ name = "crusader costume helmet" desc = "ye olde armored helmet" icon_state = "crusader" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/obj/clothing/hats_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/item_vr.dmi' armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 1 @@ -99,8 +99,8 @@ name = "bedevere's costume helmet" desc = "ye olde armored helmet" icon_state = "bedevere_helmet" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/obj/clothing/hats_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/item_vr.dmi' armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) tint = TINT_HEAVY siemens_coefficient = 1 diff --git a/code/modules/clothing/head/hood_vr.dm b/code/modules/clothing/head/hood_vr.dm index c1de0bafc3b..5483c461afe 100644 --- a/code/modules/clothing/head/hood_vr.dm +++ b/code/modules/clothing/head/hood_vr.dm @@ -30,7 +30,7 @@ // Talon Winter Hood /obj/item/clothing/head/hood/winter/talon - name = "ITV winter hood" + name = "Talon winter hood" desc = "A cozy winter hood attached to a heavy winter jacket." - icon_override = 'icons/mob/head_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' icon_state = "winterhood_talon" \ No newline at end of file diff --git a/code/modules/clothing/head/jobs_vr.dm b/code/modules/clothing/head/jobs_vr.dm index 19a3a8163df..d77ff798ba3 100644 --- a/code/modules/clothing/head/jobs_vr.dm +++ b/code/modules/clothing/head/jobs_vr.dm @@ -2,7 +2,7 @@ name = "Type-34C Semi-Enclosed Headwear" desc = "Civilian model of a popular helmet used by certain law enforcement agencies. It does not have any armor plating, but has a neo-laminated fiber lining." icon_state = "cyberpunkgoggle" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' flags_inv = HIDEEARS|HIDEEYES|BLOCKHAIR \ No newline at end of file diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 780333ae7e1..1d3759fae97 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -182,14 +182,14 @@ icon_state = "kitty" body_parts_covered = 0 siemens_coefficient = 1.5 - item_icons = list() + item_icons = null /obj/item/clothing/head/kitty/update_icon(var/mob/living/carbon/human/user) if(!istype(user)) return - var/icon/ears = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kitty") + var/icon/ears = new/icon("icon" = 'icons/inventory/head/mob.dmi', "icon_state" = "kitty") ears.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD) - var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner") + var/icon/earbit = new/icon("icon" = 'icons/inventory/head/mob.dmi', "icon_state" = "kittyinner") ears.Blend(earbit, ICON_OVERLAY) /obj/item/clothing/head/richard diff --git a/code/modules/clothing/head/misc_vr.dm b/code/modules/clothing/head/misc_vr.dm index be84af47a61..b0b1880e1e1 100644 --- a/code/modules/clothing/head/misc_vr.dm +++ b/code/modules/clothing/head/misc_vr.dm @@ -5,23 +5,23 @@ name = "fish skull" desc = "You... you're not actually going to wear that, right?" icon_state = "fishskull" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' flags_inv = HIDEEARS|BLOCKHAIR /obj/item/clothing/head/crown name = "crown" desc = "How regal!" icon_state = "crown" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' /obj/item/clothing/head/fancy_crown name = "fancy crown" desc = "How extraordinarily regal!" icon_state = "fancycrown" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' /obj/item/clothing/head/shiny_hood icon_override = 'icons/mob/modular_shiny_vr.dmi' @@ -51,8 +51,8 @@ /obj/item/clothing/head/pelt name = "Bear pelt" desc = "A luxurious bear pelt, good to keep warm in winter. Or to sleep through winter." - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' icon_state = "bearpelt_brown" item_state = "bearpelt_brown" @@ -92,40 +92,40 @@ name = "pizza delivery visor" desc = "A fancy visor showing alignment to pizza delivery service. Extremely risky career choice." icon_state = "pizzadelivery" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' //////////TALON HATS////////// /obj/item/clothing/head/soft/talon - name = "ITV baseball cap" - desc = "It's a ballcap bearing the colors of ITV." - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + name = "Talon baseball cap" + desc = "It's a ballcap bearing the colors of ITV Talon." + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' icon_state = "talonsoft" item_state = "talonsoft" item_state_slots = list(slot_r_hand_str = "blacksoft", slot_l_hand_str = "blacksoft") /obj/item/clothing/head/caphat/talon - name = "ITV nautical hat" - desc = "It's a classic nautical hat bearing the colors of ITV. Perfect for commanding the Talon." - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + name = "Talon nautical hat" + desc = "It's a classic nautical hat bearing the colors of ITV Talon. Perfect for commanding the ship." + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' icon_state = "talon_captain_cap" item_state = "taloncaptaincap" /obj/item/clothing/head/beret/talon - name = "ITV beret" - desc = "It's a basic baret colored to match ITV's uniforms." - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + name = "Talon beret" + desc = "It's a basic baret colored to match ITV Talon's uniforms." + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' icon_state = "beret_talon" item_state = "baret_talon" /obj/item/clothing/head/beret/talon/command - name = "ITV officer beret" - desc = "It's a basic baret colored to match ITV's uniforms with a badge pinned on the front. Perfect for commanders." - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + name = "Talon officer beret" + desc = "It's a basic baret colored to match ITV Talon's uniforms with a badge pinned on the front. Perfect for commanders." + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' icon_state = "beret_talon_officer" item_state = "baret_talon_command" \ No newline at end of file diff --git a/code/modules/clothing/head/pilot_helmet.dm b/code/modules/clothing/head/pilot_helmet.dm index 519f7cd1a79..590cba4dd1a 100644 --- a/code/modules/clothing/head/pilot_helmet.dm +++ b/code/modules/clothing/head/pilot_helmet.dm @@ -6,7 +6,7 @@ icon_state = "pilot_helmet1" item_icons = list(slot_head_str = 'icons/mob/pilot_helmet.dmi') sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/pilot_helmet.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi' ) flags = THICKMATERIAL armor = list(melee = 20, bullet = 10, laser = 10, energy = 5, bomb = 10, bio = 0, rad = 0) @@ -166,8 +166,7 @@ I.color = newcolor /obj/item/clothing/head/pilot/Destroy() - for(var/img in raw_images) - var/image/I = img + for(var/image/I as anything in raw_images) I.loc = null shuttle_comp = null qdel(pilot_hud) diff --git a/code/modules/clothing/head/pilot_helmet_vr.dm b/code/modules/clothing/head/pilot_helmet_vr.dm index 55afe6f7138..de4d52b622e 100644 --- a/code/modules/clothing/head/pilot_helmet_vr.dm +++ b/code/modules/clothing/head/pilot_helmet_vr.dm @@ -2,7 +2,7 @@ /obj/item/clothing/head/pilot_vr name = "standard pilot helmet" desc = "Standard pilot gear. Protects the head from impacts. This one has a retractable visor" - icon = 'icons/obj/clothing/helmets_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' icon_state = "pilot1" armor = list(melee = 20, bullet = 10, laser = 10, energy = 5, bomb = 10, bio = 0, rad = 0) flags_inv = HIDEEARS @@ -11,9 +11,9 @@ heat_protection = HEAD max_heat_protection_temperature = HELMET_MAX_HEAT_PROTECTION_TEMPERATURE w_class = ITEMSIZE_NORMAL - item_icons = list(slot_head_str = 'icons/mob/head_vr.dmi') + item_icons = list(slot_head_str = 'icons/inventory/head/mob_vr.dmi') sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/helmet_vr.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_vr_teshari.dmi' ) action_button_name = "Toggle Visor" @@ -30,9 +30,9 @@ name = "colored pilot helmet" desc = "A colored version of the standard pilot helmet. Protects the head from impacts. This one has a retractable visor" icon_state = "pilot2" - item_icons = list(slot_head_str = 'icons/mob/head_vr.dmi') + item_icons = list(slot_head_str = 'icons/inventory/head/mob_vr.dmi') sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/helmet_vr.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_vr_teshari.dmi' ) action_button_name = "Toggle Visor" @@ -48,12 +48,12 @@ //////////Talon Pilot Headgear////////// /obj/item/clothing/head/pilot_vr/talon - name = "ITV pilot helmet" - desc = "An ITV version of the standard pilot helmet. Protects the head from impacts. This one has a retractable visor" + name = "Talon pilot helmet" + desc = "An ITV Talon version of the standard pilot helmet. Protects the head from impacts. This one has a retractable visor" icon_state = "pilot3" - item_icons = list(slot_head_str = 'icons/mob/head_vr.dmi') + item_icons = list(slot_head_str = 'icons/inventory/head/mob_vr.dmi') sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/helmet_vr.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_vr_teshari.dmi' ) action_button_name = "Toggle Visor" diff --git a/code/modules/clothing/masks/breath_vr.dm b/code/modules/clothing/masks/breath_vr.dm index 9f6016d9488..47c5fdb64ba 100644 --- a/code/modules/clothing/masks/breath_vr.dm +++ b/code/modules/clothing/masks/breath_vr.dm @@ -1,4 +1,4 @@ /obj/item/clothing/mask/breath/transparent name = "transparent breath mask" item_state = "golem" //This is dumb and hacky but was here when I got here. - sprite_sheets = list() + sprite_sheets = null diff --git a/code/modules/clothing/masks/gasmask_vr.dm b/code/modules/clothing/masks/gasmask_vr.dm index 81b9f7ced04..cdc7d52e0cb 100644 --- a/code/modules/clothing/masks/gasmask_vr.dm +++ b/code/modules/clothing/masks/gasmask_vr.dm @@ -6,15 +6,15 @@ // Since we changed the gas mask sprite, if we want the old one for some reason use this. /obj/item/clothing/mask/gas/wwii - icon = 'icons/obj/clothing/masks.dmi' - icon_override = 'icons/mob/mask.dmi' + icon = 'icons/inventory/face/item.dmi' + icon_override = 'icons/inventory/face/mob.dmi' flags_inv = HIDEEARS|HIDEEYES|HIDEFACE /obj/item/clothing/mask/gas/imperial name = "imperial soldier facemask" desc = "A close-fitting tactical mask that can be connected to an air supply." icon_state = "ge_visor" - icon = 'icons/obj/clothing/masks_vr.dmi' - icon_override = 'icons/mob/mask_vr.dmi' + icon = 'icons/inventory/face/item_vr.dmi' + icon_override = 'icons/inventory/face/mob_vr.dmi' body_parts_covered = FACE|EYES flags_inv = HIDEEARS|HIDEEYES|HIDEFACE \ No newline at end of file diff --git a/code/modules/clothing/masks/monitor.dm b/code/modules/clothing/masks/monitor.dm index 320ea7a90e8..0d577443bec 100644 --- a/code/modules/clothing/masks/monitor.dm +++ b/code/modules/clothing/masks/monitor.dm @@ -23,14 +23,14 @@ if(istype(H) && H.wear_mask == src) var/obj/item/organ/external/E = H.organs_by_name[BP_HEAD] var/datum/robolimb/robohead = all_robolimbs[E.model] - canremove = 0 + canremove = FALSE if(robohead.monitor_styles) monitor_states = params2list(robohead.monitor_styles) icon_state = monitor_states[monitor_state_index] to_chat(H, "\The [src] connects to your display output.") /obj/item/clothing/mask/monitor/dropped() - canremove = 1 + canremove = TRUE return ..() /obj/item/clothing/mask/monitor/mob_can_equip(var/mob/living/carbon/human/user, var/slot, disable_warning = FALSE) diff --git a/code/modules/clothing/rings/material.dm b/code/modules/clothing/rings/material.dm index 3607b6bc8a7..218065b2533 100644 --- a/code/modules/clothing/rings/material.dm +++ b/code/modules/clothing/rings/material.dm @@ -1,7 +1,7 @@ ///////////////////////////////////////// //Material Rings /obj/item/clothing/gloves/ring/material - icon = 'icons/obj/clothing/rings.dmi' + icon = 'icons/inventory/hands/item.dmi' icon_state = "material" /obj/item/clothing/gloves/ring/material/New(var/newloc, var/new_material) diff --git a/code/modules/clothing/rings/rings_vr.dm b/code/modules/clothing/rings/rings_vr.dm index 56c72cc7c57..45306a7acc1 100644 --- a/code/modules/clothing/rings/rings_vr.dm +++ b/code/modules/clothing/rings/rings_vr.dm @@ -1,7 +1,7 @@ /obj/item/clothing/gloves/ring/wedding name = "golden wedding ring" desc = "For showing your devotion to another person. It has a golden glimmer to it." - icon = 'icons/obj/clothing/gloves_vr.dmi' + icon = 'icons/inventory/hands/item_vr.dmi' icon_state = "wedring_g" item_state = "wedring_g" var/partnername = "" diff --git a/code/modules/clothing/shoes/boots_vr.dm b/code/modules/clothing/shoes/boots_vr.dm index 4c622094994..9f2f044f70f 100644 --- a/code/modules/clothing/shoes/boots_vr.dm +++ b/code/modules/clothing/shoes/boots_vr.dm @@ -2,5 +2,5 @@ name = "hoofboots" desc = "A pair of high-heeled boots with hooves on the front of the soles, for use with a hobby horse or to disguise your footprints." icon_state = "hoofboots" - icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/mob/feet_vr.dmi' \ No newline at end of file + icon = 'icons/inventory/feet/item_vr.dmi' + icon_override = 'icons/inventory/feet/mob_vr.dmi' \ No newline at end of file diff --git a/code/modules/clothing/shoes/leg_guards_vr.dm b/code/modules/clothing/shoes/leg_guards_vr.dm index 52903bafa5f..5000ef6670f 100644 --- a/code/modules/clothing/shoes/leg_guards_vr.dm +++ b/code/modules/clothing/shoes/leg_guards_vr.dm @@ -2,5 +2,5 @@ name = "imperial leg guards" desc = "Good for Roman around." icon_state = "ge_boots" - icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/mob/feet_vr.dmi' \ No newline at end of file + icon = 'icons/inventory/feet/item_vr.dmi' + icon_override = 'icons/inventory/feet/mob_vr.dmi' \ No newline at end of file diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index bdf2be889dc..b775dcf98c9 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -97,7 +97,7 @@ if(src.magpulse) item_flags &= ~NOSLIP magpulse = 0 - canremove = 1 + canremove = TRUE to_chat(user, "You relax your deathgrip on the flooring.") else //make sure these can only be used when equipped. @@ -110,7 +110,7 @@ item_flags |= NOSLIP magpulse = 1 - canremove = 0 //kinda hard to take off magclaws when you are gripping them tightly. + canremove = FALSE //kinda hard to take off magclaws when you are gripping them tightly. to_chat(user, "You dig your claws deeply into the flooring, bracing yourself.") user.update_action_buttons() @@ -121,7 +121,7 @@ user.visible_message("The [src] go limp as they are removed from [usr]'s feet.", "The [src] go limp as they are removed from your feet.") item_flags &= ~NOSLIP magpulse = 0 - canremove = 1 + canremove = TRUE /obj/item/clothing/shoes/magboots/vox/examine(mob/user) . = ..() diff --git a/code/modules/clothing/shoes/miscellaneous_vr.dm b/code/modules/clothing/shoes/miscellaneous_vr.dm index 9e68be33dd9..0e7accaa346 100644 --- a/code/modules/clothing/shoes/miscellaneous_vr.dm +++ b/code/modules/clothing/shoes/miscellaneous_vr.dm @@ -3,16 +3,16 @@ desc = "A pair of costume boots fashioned after bird talons." icon_state = "griffinboots" item_state = "griffinboots" - icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/mob/feet_vr.dmi' + icon = 'icons/inventory/feet/item_vr.dmi' + icon_override = 'icons/inventory/feet/mob_vr.dmi' /obj/item/clothing/shoes/bhop name = "jump boots" desc = "A specialized pair of combat boots with a built-in propulsion system for rapid foward movement." icon_state = "jetboots" item_state = "jetboots" - icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/mob/feet_vr.dmi' + icon = 'icons/inventory/feet/item_vr.dmi' + icon_override = 'icons/inventory/feet/mob_vr.dmi' // resistance_flags = FIRE_PROOF action_button_name = "Activate Jump Boots" permeability_coefficient = 0.05 @@ -44,8 +44,8 @@ /obj/item/clothing/shoes/magboots/adv name = "advanced magboots" desc = "Advanced magnetic boots for a trained user. They have a lower magnetic force, allowing the user to move more quickly." - icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/mob/feet_vr.dmi' + icon = 'icons/inventory/feet/item_vr.dmi' + icon_override = 'icons/inventory/feet/mob_vr.dmi' icon_state = "advmag0" item_flags = PHORONGUARD @@ -66,8 +66,8 @@ desc = "A pair of olde knight boots." icon_state = "knight_boots1" item_state = "knight_boots1" - icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/obj/clothing/shoes_vr.dmi' + icon = 'icons/inventory/feet/item_vr.dmi' + icon_override = 'icons/inventory/feet/item_vr.dmi' armor = list(melee = 80, bullet = 50, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/shoes/knight/black @@ -82,8 +82,8 @@ desc = "A pair of olde knight boots." icon_state = "knight_boots1" item_state = "knight_boots1" - icon = 'icons/obj/clothing/shoes_vr.dmi' - icon_override = 'icons/obj/clothing/shoes_vr.dmi' + icon = 'icons/inventory/feet/item_vr.dmi' + icon_override = 'icons/inventory/feet/item_vr.dmi' /obj/item/clothing/shoes/knight_costume/black name = "knight boots" diff --git a/code/modules/clothing/spacesuits/rig/modules/modules.dm b/code/modules/clothing/spacesuits/rig/modules/modules.dm index fe2176215a5..0762fedeae7 100644 --- a/code/modules/clothing/spacesuits/rig/modules/modules.dm +++ b/code/modules/clothing/spacesuits/rig/modules/modules.dm @@ -41,6 +41,7 @@ // Icons. var/suit_overlay + var/suit_overlay_icon = 'icons/mob/rig_modules.dmi' var/suit_overlay_active // If set, drawn over icon and mob when effect is active. var/suit_overlay_inactive // As above, inactive. var/suit_overlay_used // As above, when engaged. diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index 43bcd583d23..4550eab0882 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -8,7 +8,6 @@ * /obj/item/rig_module/device/arch_drill * /obj/item/rig_module/device/anomaly_scanner * /obj/item/rig_module/maneuvering_jets - * /obj/item/rig_module/foam_sprayer * /obj/item/rig_module/device/broadcaster * /obj/item/rig_module/chem_dispenser * /obj/item/rig_module/chem_dispenser/injector @@ -411,11 +410,7 @@ jets.holder = null jets.ion_trail.set_up(jets) -/obj/item/rig_module/foam_sprayer - - //Deployable Mop - /obj/item/rig_module/mounted/mop name = "mop projector" diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index d518848dc27..a749d6824d8 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -7,7 +7,6 @@ */ /obj/item/weapon/rig - name = "hardsuit control module" icon = 'icons/obj/rig_modules.dmi' desc = "A back-mounted hardsuit deployment and control mechanism." @@ -24,9 +23,11 @@ max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE siemens_coefficient = 0.2 permeability_coefficient = 0.1 - unacidable = 1 + unacidable = TRUE preserve_item = 1 + var/default_mob_icon = 'icons/mob/rig_back.dmi' + var/suit_state //The string used for the suit's icon_state. var/interface_path = "RIGSuit" @@ -96,22 +97,8 @@ var/datum/effect/effect/system/spark_spread/spark_system var/datum/mini_hud/rig/minihud -/obj/item/weapon/rig/examine() - . = ..() - if(wearer) - for(var/obj/item/piece in list(helmet,gloves,chest,boots)) - if(!piece || piece.loc != wearer) - continue - . += "[bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." - - if(src.loc == usr) - . += "The access panel is [locked? "locked" : "unlocked"]." - . += "The maintenance panel is [open ? "open" : "closed"]." - . += "Hardsuit systems are [offline ? "offline" : "online"]." - . += "The cooling stystem is [cooling_on ? "active" : "inactive"]." - - if(open) - . += "It's equipped with [english_list(installed_modules)]." + // Action button + action_button_name = "Hardsuit Interface" /obj/item/weapon/rig/New() ..() @@ -156,7 +143,7 @@ for(var/obj/item/piece in list(gloves,helmet,boots,chest)) if(!istype(piece)) continue - piece.canremove = 0 + piece.canremove = FALSE piece.name = "[suit_type] [initial(piece.name)]" piece.desc = "It seems to be part of a [src.name]." piece.icon_state = "[suit_state]" @@ -184,6 +171,23 @@ spark_system = null return ..() +/obj/item/weapon/rig/examine() + . = ..() + if(wearer) + for(var/obj/item/piece in list(helmet,gloves,chest,boots)) + if(!piece || piece.loc != wearer) + continue + . += "[bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." + + if(src.loc == usr) + . += "The access panel is [locked? "locked" : "unlocked"]." + . += "The maintenance panel is [open ? "open" : "closed"]." + . += "Hardsuit systems are [offline ? "offline" : "online"]." + . += "The cooling stystem is [cooling_on ? "active" : "inactive"]." + + if(open) + . += "It's equipped with [english_list(installed_modules)]." + // We only care about processing when we're on a mob /obj/item/weapon/rig/Moved(old_loc, direction, forced) if(ismob(loc)) @@ -240,7 +244,7 @@ /obj/item/weapon/rig/proc/reset() offline = 2 - canremove = 1 + canremove = TRUE for(var/obj/item/piece in list(helmet,boots,gloves,chest)) if(!piece) continue piece.icon_state = "[suit_state]" @@ -250,7 +254,7 @@ /obj/item/weapon/rig/proc/cut_suit() offline = 2 - canremove = 1 + canremove = TRUE toggle_piece("helmet", loc, ONLY_RETRACT, TRUE) toggle_piece("gauntlets", loc, ONLY_RETRACT, TRUE) toggle_piece("boots", loc, ONLY_RETRACT, TRUE) @@ -277,10 +281,10 @@ booting_R.icon_state = "boot_load" animate(booting_L, alpha=230, time=30, easing=SINE_EASING) animate(booting_R, alpha=200, time=20, easing=SINE_EASING) - M.client.screen += booting_L - M.client.screen += booting_R + M.client?.screen += booting_L + M.client?.screen += booting_R - canremove = 0 // No removing the suit while unsealing. + canremove = FALSE // No removing the suit while unsealing. sealing = 1 if(!seal_target && !suit_is_deployed()) @@ -354,8 +358,8 @@ sealing = null if(failed_to_seal) - M.client.screen -= booting_L - M.client.screen -= booting_R + M.client?.screen -= booting_L + M.client?.screen -= booting_R qdel(booting_L) qdel(booting_R) for(var/obj/item/piece in list(helmet,boots,gloves,chest)) @@ -376,11 +380,11 @@ minihud = new (M.hud_used, src) to_chat(M, "Your entire suit [canremove ? "loosens as the components relax" : "tightens around you as the components lock into place"].") playsound(src, 'sound/machines/rig/rigstarted.ogg', 10, FALSE) - M.client.screen -= booting_L + M.client?.screen -= booting_L qdel(booting_L) booting_R.icon_state = "boot_done" spawn(40) - M.client.screen -= booting_R + M.client?.screen -= booting_R qdel(booting_R) if(canremove) @@ -587,17 +591,17 @@ cut_overlays() if(!mob_icon || update_mob_icon) - var/species_icon = 'icons/mob/rig_back.dmi' + var/species_icon = default_mob_icon // Since setting mob_icon will override the species checks in // update_inv_wear_suit(), handle species checks here. - if(wearer && sprite_sheets && sprite_sheets[wearer.species.get_bodytype(wearer)]) - species_icon = sprite_sheets[wearer.species.get_bodytype(wearer)] + if(wearer && LAZYACCESS(sprite_sheets, wearer.species.get_bodytype(wearer))) + species_icon = sprite_sheets[wearer.species.get_bodytype(wearer)] mob_icon = icon(icon = species_icon, icon_state = "[icon_state]") if(installed_modules.len) for(var/obj/item/rig_module/module in installed_modules) if(module.suit_overlay) - chest.add_overlay(image('icons/mob/rig_modules.dmi', icon_state = "[module.suit_overlay]", dir = SOUTH)) + chest.add_overlay(image(module.suit_overlay_icon, icon_state = "[module.suit_overlay]", dir = SOUTH)) if(wearer) wearer.update_inv_shoes() @@ -607,7 +611,7 @@ wearer.update_inv_back() return -/obj/item/weapon/rig/proc/check_suit_access(var/mob/living/carbon/human/user) +/obj/item/weapon/rig/proc/check_suit_access(var/mob/living/carbon/human/user, var/do_message = TRUE) if(!security_check_enabled) return 1 @@ -620,11 +624,13 @@ if(user.back != src && user.belt != src) return 0 else if(!src.allowed(user)) - to_chat(user, "Unauthorized user. Access denied.") + if(do_message) + to_chat(user, "Unauthorized user. Access denied.") return 0 else if(!ai_override_enabled) - to_chat(user, "Synthetic access disabled. Please consult hardware provider.") + if(do_message) + to_chat(user, "Synthetic access disabled. Please consult hardware provider.") return 0 return 1 @@ -708,11 +714,11 @@ if(use_obj && check_slot == use_obj) to_chat(H, "Your [use_obj.name] [use_obj.gender == PLURAL ? "retract" : "retracts"] swiftly.") playsound(src, 'sound/machines/rig/rigservo.ogg', 10, FALSE) - use_obj.canremove = 1 + use_obj.canremove = TRUE holder.drop_from_inventory(use_obj) use_obj.forceMove(get_turf(src)) use_obj.dropped() - use_obj.canremove = 0 + use_obj.canremove = FALSE use_obj.forceMove(src) else if (deploy_mode != ONLY_RETRACT) diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm index 3c1843698c0..600e89a82c9 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm @@ -11,11 +11,11 @@ cold_protection = HEAD|FACE|EYES light_range = 4 sprite_sheets = list( - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi', - SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi' + SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi', + SPECIES_VOX = 'icons/inventory/head/mob_vox.dmi', + SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi' ) species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them max_pressure_protection = null @@ -54,10 +54,10 @@ resilience = 0.2 can_breach = 1 sprite_sheets = list( - SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi', - SPECIES_VOX = 'icons/mob/species/vox/suit.dmi', - SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi' + SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi', + SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi', + SPECIES_VOX = 'icons/inventory/suit/mob_vox.dmi', + SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi' ) supporting_limbs = list() species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm index 1d211e0bf15..19f30afb706 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm @@ -1,37 +1,35 @@ /obj/item/clothing/head/helmet/space/rig sprite_sheets = list( - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_AKULA = 'icons/mob/species/akula/helmet_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/sergal/helmet_vr.dmi', - SPECIES_NEVREAN = 'icons/mob/species/sergal/helmet_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/helmet.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/helmet.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/helmet.dmi', - SPECIES_PROMETHEAN = 'icons/mob/species/skrell/helmet.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi', - SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi' + SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/head/mob_unathi.dmi', + SPECIES_AKULA = 'icons/inventory/head/mob_vr_akula.dmi', + SPECIES_SERGAL = 'icons/inventory/head/mob_vr_sergal.dmi', + SPECIES_NEVREAN = 'icons/inventory/head/mob_vr_sergal.dmi', + SPECIES_VULPKANIN = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_FENNEC = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_PROMETHEAN = 'icons/inventory/head/mob_skrell.dmi', + SPECIES_VOX = 'icons/inventory/head/mob_vox.dmi', + SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi' ) - - /obj/item/clothing/suit/space/rig sprite_sheets = list( - SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/suit.dmi', - SPECIES_AKULA = 'icons/mob/species/akula/suit_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/sergal/suit_vr.dmi', - SPECIES_NEVREAN = 'icons/mob/species/sergal/suit_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/suit.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/suit.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/suit.dmi', - SPECIES_PROMETHEAN = 'icons/mob/species/skrell/suit.dmi', - SPECIES_VOX = 'icons/mob/species/vox/suit.dmi', - SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi' + SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_unathi.dmi', + SPECIES_AKULA = 'icons/inventory/suit/mob_vr_akula.dmi', + SPECIES_SERGAL = 'icons/inventory/suit/mob_vr_sergal.dmi', + SPECIES_NEVREAN = 'icons/inventory/suit/mob_vr_sergal.dmi', + SPECIES_VULPKANIN = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_FENNEC = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_PROMETHEAN = 'icons/inventory/suit/mob_skrell.dmi', + SPECIES_VOX = 'icons/inventory/suit/mob_vox.dmi', + SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi' ) /obj/item/clothing/head/helmet/space/rig diff --git a/code/modules/clothing/spacesuits/rig/rig_tgui.dm b/code/modules/clothing/spacesuits/rig/rig_tgui.dm index 7f34fe11b84..0a493264e59 100644 --- a/code/modules/clothing/spacesuits/rig/rig_tgui.dm +++ b/code/modules/clothing/spacesuits/rig/rig_tgui.dm @@ -30,7 +30,7 @@ */ /obj/item/weapon/rig/tgui_status(mob/user, datum/tgui_state/state) . = ..() - if(!check_suit_access(user)) + if(!check_suit_access(user, FALSE)) // don't send a message to the user, this is a UI thing // Forces the UI to never go interactive, // but doesn't interfere with state saying to close. . = min(., STATUS_UPDATE) diff --git a/code/modules/clothing/spacesuits/rig/rig_verbs.dm b/code/modules/clothing/spacesuits/rig/rig_verbs.dm index c1d2fe2c5be..b28d93bc554 100644 --- a/code/modules/clothing/spacesuits/rig/rig_verbs.dm +++ b/code/modules/clothing/spacesuits/rig/rig_verbs.dm @@ -9,6 +9,11 @@ if(wearer && (wearer.back == src || wearer.belt == src)) tgui_interact(usr) +// So the UI button clicks come here +/obj/item/weapon/rig/ui_action_click() + if(usr == wearer && (wearer.back == src || wearer.belt == src)) + tgui_interact(usr) + /obj/item/weapon/rig/verb/toggle_vision() set name = "Toggle Visor" diff --git a/code/modules/clothing/spacesuits/rig/suits/alien.dm b/code/modules/clothing/spacesuits/rig/suits/alien.dm index af3349eafc7..89d854b370b 100644 --- a/code/modules/clothing/spacesuits/rig/suits/alien.dm +++ b/code/modules/clothing/spacesuits/rig/suits/alien.dm @@ -74,7 +74,7 @@ name = "talons" species_restricted = list(SPECIES_VOX) sprite_sheets = list( - SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi' + SPECIES_VOX = 'icons/inventory/feet/mob_vox.dmi' ) /obj/item/clothing/suit/space/rig/vox @@ -84,7 +84,7 @@ siemens_coefficient = 0 species_restricted = list(SPECIES_VOX) sprite_sheets = list( - SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi' + SPECIES_VOX = 'icons/inventory/hands/mob_vox.dmi' ) /obj/item/weapon/rig/vox/carapace diff --git a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm index f543b95431b..46c02b9e757 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm @@ -53,3 +53,360 @@ /obj/item/weapon/rig/robotics allowed = list(/obj/item/device/flashlight, /obj/item/weapon/storage/box, /obj/item/weapon/storage/belt, /obj/item/device/defib_kit/compact) + +// 'Technomancer' hardsuit +/obj/item/weapon/rig/focalpoint + name = "\improper F.P.E. hardsuit control module" + desc = "A high-end hardsuit produced by Focal Point Energistics, focused around repair and construction." + + icon = 'icons/obj/rig_modules_vr.dmi' // the item + default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob + icon_state = "techno_rig" + suit_type = "\improper F.P.E. hardsuit" + cell_type = /obj/item/weapon/cell/hyper + + // Copied from CE rig + slowdown = 0 + offline_slowdown = 0 + offline_vision_restriction = 0 + rigsuit_max_pressure = 20 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed + rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed + min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE + max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE // so it's like a rig firesuit + armor = list("melee" = 40, "bullet" = 10, "laser" = 30, "energy" = 55, "bomb" = 70, "bio" = 100, "rad" = 100) + + chest_type = /obj/item/clothing/suit/space/rig/focalpoint + helm_type = /obj/item/clothing/head/helmet/space/rig/focalpoint + boot_type = /obj/item/clothing/shoes/magboots/rig/focalpoint + glove_type = /obj/item/clothing/gloves/gauntlets/rig/focalpoint + +/obj/item/weapon/rig/focalpoint/equipped + initial_modules = list( + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/teleporter, // Try not to set yourself on fire + /obj/item/rig_module/device/rcd, + /obj/item/rig_module/grenade_launcher/metalfoam + ) + +/obj/item/clothing/head/helmet/space/rig/focalpoint + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "techno_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = null + +/obj/item/clothing/suit/space/rig/focalpoint + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "techno_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = null + +/obj/item/clothing/shoes/magboots/rig/focalpoint + icon = 'icons/inventory/feet/item_vr.dmi' + default_worn_icon = 'icons/inventory/feet/mob_vr.dmi' + icon_state = "techno_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = null + +/obj/item/clothing/gloves/gauntlets/rig/focalpoint + icon = 'icons/inventory/hands/item_vr.dmi' + default_worn_icon = 'icons/inventory/hands/mob_vr.dmi' + icon_state = "techno_rig" + siemens_coefficient = 0 + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = null + +// 'Ironhammer' hardsuit +/obj/item/weapon/rig/hephaestus + name = "\improper Hephaestus hardsuit control module" + desc = "A high-end hardsuit produced by Hephaestus Industries, focused on destroying the competition. Literally." + + icon = 'icons/obj/rig_modules_vr.dmi' // the item + default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob + icon_state = "ihs_rig" + suit_type = "\improper Hephaestus hardsuit" + cell_type = /obj/item/weapon/cell/super + + armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 50, "bomb" = 60, "bio" = 100, "rad" = 20) + + chest_type = /obj/item/clothing/suit/space/rig/hephaestus + helm_type = /obj/item/clothing/head/helmet/space/rig/hephaestus + boot_type = /obj/item/clothing/shoes/magboots/rig/hephaestus + glove_type = /obj/item/clothing/gloves/gauntlets/rig/hephaestus + +/obj/item/weapon/rig/hephaestus/equipped + initial_modules = list( + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/grenade_launcher, + /obj/item/rig_module/mounted/egun, + /obj/item/rig_module/mounted/energy_blade + ) + +/obj/item/clothing/head/helmet/space/rig/hephaestus + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "ihs_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = null + +/obj/item/clothing/suit/space/rig/hephaestus + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "ihs_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = null + +/obj/item/clothing/shoes/magboots/rig/hephaestus + icon = 'icons/inventory/feet/item_vr.dmi' + default_worn_icon = 'icons/inventory/feet/mob_vr.dmi' + icon_state = "ihs_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = null + +/obj/item/clothing/gloves/gauntlets/rig/hephaestus + icon = 'icons/inventory/hands/item_vr.dmi' + default_worn_icon = 'icons/inventory/hands/mob_vr.dmi' + icon_state = "ihs_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = null + +// 'Zero' rig +/obj/item/weapon/rig/zero + name = "null hardsuit control module" + desc = "A very lightweight suit designed to allow use inside mechs and starfighters. It feels like you're wearing nothing at all." + + icon = 'icons/obj/rig_modules_vr.dmi' // the item + default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob + icon_state = "null_rig" + suit_type = "null hardsuit" + cell_type = /obj/item/weapon/cell/high + + chest_type = /obj/item/clothing/suit/space/rig/zero + helm_type = /obj/item/clothing/head/helmet/space/rig/zero + boot_type = null + glove_type = null + + slowdown = 0 + offline_slowdown = 1 + offline_vision_restriction = 2 + armor = list("melee" = 20, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 35, "bio" = 100, "rad" = 20) + +/obj/item/weapon/rig/zero/equipped + initial_modules = list( + /obj/item/rig_module/maneuvering_jets + ) + +/obj/item/clothing/head/helmet/space/rig/zero + desc = "A bubble helmet that maximizes the field of view. A state of the art holographic display provides a stream of information." + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "null_rig" + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + slowdown = 0 + +/obj/item/clothing/suit/space/rig/zero + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "null_rig" + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS // like a voidsuit + slowdown = 0 + +// Medical rig from bay +/obj/item/weapon/rig/baymed + name = "\improper Commonwealth medical hardsuit control module" + desc = "A lightweight first responder hardsuit from the Commonwealth. Not suitable for combat use, but advanced myomer fibers can push the user to incredible speeds." + + icon = 'icons/obj/rig_modules_vr.dmi' // the item + default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob + icon_state = "medical_rig_bay" + item_state = null + suit_type = "medical hardsuit" + cell_type = /obj/item/weapon/cell/high + + chest_type = /obj/item/clothing/suit/space/rig/baymed + helm_type = /obj/item/clothing/head/helmet/space/rig/baymed + boot_type = /obj/item/clothing/shoes/magboots/rig/baymed + glove_type = /obj/item/clothing/gloves/gauntlets/rig/baymed + + // speedy paper + slowdown = -0.5 + armor = list("melee" = 10, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 25, "bio" = 100, "rad" = 20) + +/obj/item/weapon/rig/baymed/equipped + req_access = list(access_medical) + + initial_modules = list( + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/sprinter, + /obj/item/rig_module/pat_module, + /obj/item/rig_module/rescue_pharm + ) + +/obj/item/clothing/head/helmet/space/rig/baymed + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "medical_rig_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +/obj/item/clothing/suit/space/rig/baymed + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "medical_rig_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + +/obj/item/clothing/shoes/magboots/rig/baymed + icon = 'icons/inventory/feet/item_vr.dmi' + default_worn_icon = 'icons/inventory/feet/mob_vr.dmi' + icon_state = "medical_rig_bay" + item_state = null + sprite_sheets = null + sprite_sheets_obj = null + +/obj/item/clothing/gloves/gauntlets/rig/baymed + icon = 'icons/inventory/hands/item_vr.dmi' + default_worn_icon = 'icons/inventory/hands/mob_vr.dmi' + icon_state = "medical_rig_bay" + item_state = null + sprite_sheets = null + sprite_sheets_obj = null + +// Engineering/'Industrial' rig from bay +/obj/item/weapon/rig/bayeng + name = "\improper Commonwealth engineering hardsuit control module" + desc = "An advanced construction hardsuit from the Commonwealth. Built like a tank. Don't expect to be taking any tight corners while running." + + icon = 'icons/obj/rig_modules_vr.dmi' // the item + default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob + icon_state = "engineering_rig_bay" + item_state = null + suit_type = "engineering hardsuit" + cell_type = /obj/item/weapon/cell/super + + chest_type = /obj/item/clothing/suit/space/rig/bayeng + helm_type = /obj/item/clothing/head/helmet/space/rig/bayeng + boot_type = /obj/item/clothing/shoes/magboots/rig/bayeng + glove_type = /obj/item/clothing/gloves/gauntlets/rig/bayeng + + slowdown = 1 + offline_slowdown = 5 // very bulky + armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 100, rad = 50) + +/obj/item/weapon/rig/bayeng//equipped + initial_modules = list( + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/device/rcd, + /obj/item/rig_module/grenade_launcher/metalfoam, + /obj/item/rig_module/vision/meson, + /obj/item/rig_module/ai_container + ) + +/obj/item/clothing/head/helmet/space/rig/bayeng + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "engineering_rig_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +/obj/item/clothing/suit/space/rig/bayeng + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "engineering_rig_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + +/obj/item/clothing/shoes/magboots/rig/bayeng + icon = 'icons/inventory/feet/item_vr.dmi' + default_worn_icon = 'icons/inventory/feet/mob_vr.dmi' + icon_state = "engineering_rig_bay" + item_state = null + sprite_sheets = null + sprite_sheets_obj = null + +/obj/item/clothing/gloves/gauntlets/rig/bayeng + icon = 'icons/inventory/hands/item_vr.dmi' + default_worn_icon = 'icons/inventory/hands/mob_vr.dmi' + icon_state = "engineering_rig_bay" + item_state = null + sprite_sheets = null + sprite_sheets_obj = null + siemens_coefficient = 0 // insulated + +// Pathfinder rig from bay - event/reward stuff here +/obj/item/weapon/rig/pathfinder + name = "\improper Commonwealth pathfinder hardsuit control module" + desc = "A Commonwealth pathfinder hardsuit is hard to come by... how'd this end up on the frontier?" + + icon = 'icons/obj/rig_modules_vr.dmi' // the item + default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob + icon_state = "pathfinder_rig_bay" + item_state = null + suit_type = "pathfinder hardsuit" + cell_type = /obj/item/weapon/cell/super + + chest_type = /obj/item/clothing/suit/space/rig/pathfinder + helm_type = /obj/item/clothing/head/helmet/space/rig/pathfinder + boot_type = /obj/item/clothing/shoes/magboots/rig/pathfinder + glove_type = /obj/item/clothing/gloves/gauntlets/rig/pathfinder + + slowdown = 0.5 + offline_slowdown = 4 // bulky + offline_vision_restriction = 2 // doesn't even have a way to see out without power + armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 100, rad = 50) + +/obj/item/weapon/rig/pathfinder//equipped + initial_modules = list( + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/teleporter, + /obj/item/rig_module/stealth_field, + /obj/item/rig_module/mounted/energy_blade + ) + +/obj/item/clothing/head/helmet/space/rig/pathfinder + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "pathfinder_rig_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +/obj/item/clothing/suit/space/rig/pathfinder + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "pathfinder_rig_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + +/obj/item/clothing/shoes/magboots/rig/pathfinder + icon = 'icons/inventory/feet/item_vr.dmi' + default_worn_icon = 'icons/inventory/feet/mob_vr.dmi' + icon_state = "pathfinder_rig_bay" + item_state = null + sprite_sheets = null + sprite_sheets_obj = null + +/obj/item/clothing/gloves/gauntlets/rig/pathfinder + icon = 'icons/inventory/hands/item_vr.dmi' + default_worn_icon = 'icons/inventory/hands/mob_vr.dmi' + icon_state = "pathfinder_rig_bay" + item_state = null + sprite_sheets = null + sprite_sheets_obj = null diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index b67b11fab85..9ee31aeb602 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -37,7 +37,7 @@ verbs |= /obj/item/clothing/head/helmet/space/proc/toggle_camera if(type == /obj/item/clothing/head/helmet/space) //VOREStation edit - use the specially refitted sprites by KBraid. Done this way to avoid breaking subtypes. - sprite_sheets[SPECIES_TESHARI] = 'icons/mob/species/teshari/helmet_vr.dmi' + LAZYSET(sprite_sheets, SPECIES_TESHARI, 'icons/inventory/head/mob_vr_teshari.dmi') /obj/item/clothing/head/helmet/space/proc/toggle_camera() set name = "Toggle Helmet Camera" @@ -68,8 +68,7 @@ /obj/item/clothing/suit/space name = "Space suit" desc = "A suit that protects against low pressure environments." - icon = 'icons/obj/clothing/spacesuits.dmi' - update_icon_define = INV_SPACESUIT_DEF_ICON + icon = 'icons/inventory/suit/item.dmi' icon_state = "space" w_class = ITEMSIZE_HUGE // So you can't fit this in your bag and be prepared at all times. gas_transfer_coefficient = 0.01 @@ -95,7 +94,7 @@ /obj/item/clothing/suit/space/Initialize() . = ..() if(type == /obj/item/clothing/suit/space) - sprite_sheets[SPECIES_TESHARI] = 'icons/mob/species/teshari/suit_vr.dmi' + LAZYSET(sprite_sheets, SPECIES_TESHARI, 'icons/inventory/suit/mob_vr_teshari.dmi') //VOREStation edit end. /obj/item/clothing/suit/space/equipped(mob/M) diff --git a/code/modules/clothing/spacesuits/void/ert_vr.dm b/code/modules/clothing/spacesuits/void/ert_vr.dm index c771132f181..0393b4ecf75 100644 --- a/code/modules/clothing/spacesuits/void/ert_vr.dm +++ b/code/modules/clothing/spacesuits/void/ert_vr.dm @@ -7,7 +7,8 @@ slowdown = 0.5 siemens_coefficient = 0.5 species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX,SPECIES_TESHARI) //this thing can autoadapt - icon = 'icons/obj/clothing/suits_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' w_class = ITEMSIZE_NORMAL //the mark vii packs itself down when not in use, thanks future-materials breach_threshold = 16 //Extra Thicc resilience = 0.05 //Military Armor @@ -109,7 +110,8 @@ species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX,SPECIES_TESHARI) //this thing can autoadapt too armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100) siemens_coefficient = 0.5 - icon = 'icons/obj/clothing/hats_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) var/away_planes = null plane_slots = list(slot_head) @@ -166,75 +168,74 @@ /obj/item/clothing/suit/space/void/responseteam sprite_sheets = list( - SPECIES_HUMAN = 'icons/mob/spacesuit_vr.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/suit_vr.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/suit_vr.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/suit_vr.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/suit_vr.dmi', - SPECIES_AKULA = 'icons/mob/species/akula/suit_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/sergal/suit_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/suit_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/suit_vr.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/suit_vr.dmi', - SPECIES_SHADEKIN_CREW = 'icons/mob/species/vulpkanin/suit_vr.dmi', - SPECIES_VASILISSAN = 'icons/mob/spacesuit_vr.dmi', - SPECIES_NEVREAN = 'icons/mob/spacesuit_vr.dmi', - SPECIES_RAPALA = 'icons/mob/spacesuit_vr.dmi', - SPECIES_ALRAUNE = 'icons/mob/spacesuit_vr.dmi', - SPECIES_ZADDAT = 'icons/mob/spacesuit_vr.dmi' + SPECIES_HUMAN = 'icons/inventory/suit/mob_vr.dmi', + SPECIES_TAJ = 'icons/inventory/suit/mob_vr_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/suit/mob_vr_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/suit/mob_vr_unathi.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_vr_unathi.dmi', + SPECIES_AKULA = 'icons/inventory/suit/mob_vr_akula.dmi', + SPECIES_SERGAL = 'icons/inventory/suit/mob_vr_sergal.dmi', + SPECIES_VULPKANIN = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_FENNEC = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_SHADEKIN_CREW = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_VASILISSAN = 'icons/inventory/suit/mob_vr.dmi', + SPECIES_NEVREAN = 'icons/inventory/suit/mob_vr.dmi', + SPECIES_RAPALA = 'icons/inventory/suit/mob_vr.dmi', + SPECIES_ALRAUNE = 'icons/inventory/suit/mob_vr.dmi', + SPECIES_ZADDAT = 'icons/inventory/suit/mob_vr.dmi' ) sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_AKULA = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_SHADEKIN_CREW = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_VASILISSAN = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_NEVREAN = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_RAPALA = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_ALRAUNE = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_ZADDAT = 'icons/obj/clothing/suits_vr.dmi' + SPECIES_TAJ = 'icons/inventory/suit/item_vr.dmi', + SPECIES_SKRELL = 'icons/inventory/suit/item_vr.dmi', + SPECIES_UNATHI = 'icons/inventory/suit/item_vr.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/suit/item_vr.dmi', + SPECIES_AKULA = 'icons/inventory/suit/item_vr.dmi', + SPECIES_SERGAL = 'icons/inventory/suit/item_vr.dmi', + SPECIES_VULPKANIN = 'icons/inventory/suit/item_vr.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/suit/item_vr.dmi', + SPECIES_FENNEC = 'icons/inventory/suit/item_vr.dmi', + SPECIES_SHADEKIN_CREW = 'icons/inventory/suit/item_vr.dmi', + SPECIES_VASILISSAN = 'icons/inventory/suit/item_vr.dmi', + SPECIES_NEVREAN = 'icons/inventory/suit/item_vr.dmi', + SPECIES_RAPALA = 'icons/inventory/suit/item_vr.dmi', + SPECIES_ALRAUNE = 'icons/inventory/suit/item_vr.dmi', + SPECIES_ZADDAT = 'icons/inventory/suit/item_vr.dmi' ) /obj/item/clothing/head/helmet/space/void/responseteam sprite_sheets = list( - SPECIES_HUMAN = 'icons/mob/head_vr.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet_vr.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/helmet_vr.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet_vr.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet_vr.dmi', - SPECIES_AKULA = 'icons/mob/species/unathi/helmet_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/unathi/helmet_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/helmet_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/helmet_vr.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/helmet_vr.dmi', - SPECIES_SHADEKIN_CREW = 'icons/mob/species/vulpkanin/helmet_vr.dmi', - SPECIES_VASILISSAN = 'icons/mob/head_vr.dmi', - SPECIES_NEVREAN = 'icons/mob/head_vr.dmi', - SPECIES_RAPALA = 'icons/mob/head_vr.dmi', - SPECIES_ALRAUNE = 'icons/mob/head_vr.dmi', - SPECIES_ZADDAT = 'icons/mob/head_vr.dmi' + SPECIES_HUMAN = 'icons/inventory/head/mob_vr.dmi', + SPECIES_TAJ = 'icons/inventory/head/mob_vr_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/head/mob_vr_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/head/mob_vr_unathi.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/head/mob_vr_unathi.dmi', + SPECIES_AKULA = 'icons/inventory/head/mob_vr_unathi.dmi', + SPECIES_SERGAL = 'icons/inventory/head/mob_vr_unathi.dmi', + SPECIES_VULPKANIN = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_FENNEC = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_SHADEKIN_CREW = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_VASILISSAN = 'icons/inventory/head/mob_vr.dmi', + SPECIES_NEVREAN = 'icons/inventory/head/mob_vr.dmi', + SPECIES_RAPALA = 'icons/inventory/head/mob_vr.dmi', + SPECIES_ALRAUNE = 'icons/inventory/head/mob_vr.dmi', + SPECIES_ZADDAT = 'icons/inventory/head/mob_vr.dmi' ) sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_AKULA = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_SHADEKIN_CREW = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_VASILISSAN = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_NEVREAN = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_RAPALA = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_ALRAUNE = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_ZADDAT = 'icons/obj/clothing/hats_vr.dmi' + SPECIES_TAJ = 'icons/inventory/head/item_vr.dmi', + SPECIES_SKRELL = 'icons/inventory/head/item_vr.dmi', + SPECIES_UNATHI = 'icons/inventory/head/item_vr.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/head/item_vr.dmi', + SPECIES_AKULA = 'icons/inventory/head/item_vr.dmi', + SPECIES_SERGAL = 'icons/inventory/head/item_vr.dmi', + SPECIES_VULPKANIN = 'icons/inventory/head/item_vr.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/head/item_vr.dmi', + SPECIES_FENNEC = 'icons/inventory/head/item_vr.dmi', + SPECIES_SHADEKIN_CREW = 'icons/inventory/head/item_vr.dmi', + SPECIES_VASILISSAN = 'icons/inventory/head/item_vr.dmi', + SPECIES_NEVREAN = 'icons/inventory/head/item_vr.dmi', + SPECIES_RAPALA = 'icons/inventory/head/item_vr.dmi', + SPECIES_ALRAUNE = 'icons/inventory/head/item_vr.dmi', + SPECIES_ZADDAT = 'icons/inventory/head/item_vr.dmi' ) - sprite_sheets_refit = list() //have to nullify this as well just to be thorough \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/void/event_vr.dm b/code/modules/clothing/spacesuits/void/event_vr.dm index 357a8ff772c..a786acfd51b 100644 --- a/code/modules/clothing/spacesuits/void/event_vr.dm +++ b/code/modules/clothing/spacesuits/void/event_vr.dm @@ -73,4 +73,151 @@ /obj/item/clothing/suit/space/void/refurb/mercenary/talon name = "talon mercenary's voidsuit" - desc = "A refurbished early contact era voidsuit of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. Many old-timer mercs swear by these old things, even if new powered hardsuits have more features and better armor. The red markings indicate this as the mercenary variant. \"ITV TALON\" has been stamped onto each pauldron and the right side of the breastplate." \ No newline at end of file + desc = "A refurbished early contact era voidsuit of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. Many old-timer mercs swear by these old things, even if new powered hardsuits have more features and better armor. The red markings indicate this as the mercenary variant. \"ITV TALON\" has been stamped onto each pauldron and the right side of the breastplate." + +// HEV Suits +/obj/item/clothing/suit/space/void/hev + name = "hazardous environment suit" + desc = "Has a strange smell to it, but you feel like it might be an old friend." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "hev_orange" + + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + +/obj/item/clothing/suit/space/void/hev/violet + icon_state = "hev_violet" + desc = "Has a strange smell to it, but you feel like it might be an old friend. This one has 'Dr. Coomer' engraved on the collar." + +/obj/item/clothing/head/helmet/space/void/hev + name = "hazardous environment helmet" + desc = "Has a strange smell to it, but you feel like it might be an old friend." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "hev_orange" + + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +/obj/item/clothing/head/helmet/space/void/hev/violet + icon_state = "hev_violet" + desc = "Has a strange smell to it, but you feel like it might be an old friend. This one has 'Dr. Coomer' engraved on the collar." + +// Makeshift void suit +/obj/item/clothing/suit/space/void/makeshift + name = "makeshift voidsuit" + desc = "This is not something you should use if you have other options, but it's better than nothing!" + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "makeshift_void" + + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0) + + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + +/obj/item/clothing/head/helmet/space/void/makeshift + name = "makeshift voidsuit helmet" + desc = "This is not something you should use if you have other options, but it's better than nothing!" + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "makeshift_void" + + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0) + + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// 'Custodian' armor +/obj/item/clothing/suit/space/void/custodian + name = "custodian suit" + desc = "Vacuum-capable armor for a Custodian to do their duty." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "custodian" + + armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 50, "bomb" = 40, "bio" = 0, "rad" = 20) + + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + +/obj/item/clothing/head/helmet/space/void/custodian + name = "custodian helmet" + desc = "Vacuum-capable helmet for a Custodian to do their duty." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "custodian" + + armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 50, "bomb" = 40, "bio" = 0, "rad" = 20) + + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// 'Moebius' armor +/obj/item/clothing/suit/space/void/aether + name = "\improper Aether voidsuit" + desc = "This suit seems rather high-end for a standard voidsuit. The air in it has a hint of 'new car smell', courtesy of Aether Atmospherics." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "moebiussuit" + + armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 20) + + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + +/obj/item/clothing/head/helmet/space/void/aether + name = "\improper Aether voidsuit helmet" + desc = "Aether Atmospherics thought that giving this helmet selectable colored lighting would improve market penetration. Very comfortable, regardless." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "moebiushelm_White" + + armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 20) + + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +/obj/item/clothing/head/helmet/space/void/aether/verb/select_color() + set name = "Helmet Color" + set desc = "Change the color of [src]" + set category = "Object" + + var/choice = tgui_input_list(usr, "Select a new color:", "[src] Color", list("White", "Blue", "Purple", "Yellow", "Red", "Green")) + if(!choice) + return + icon_state = "moebiushelm_[choice]" + update_clothing_icon() + to_chat(usr, "[src] color changed to: [choice]") + +// Excelsior suit +/obj/item/clothing/suit/space/void/excelsior + name = "\improper Excelsior voidsuit" + desc = "A space suit from a particular spaceship: Excelsior." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "excelsior" + + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + +/obj/item/clothing/head/helmet/space/void/excelsior + name = "\improper Excelsior voidsuit helmet" + desc = "A space helmet from a particular spaceship: Excelsior." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "excelsior" + + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM diff --git a/code/modules/clothing/spacesuits/void/military_vr.dm b/code/modules/clothing/spacesuits/void/military_vr.dm index 94355ba9c43..8eb7ff9ebd0 100644 --- a/code/modules/clothing/spacesuits/void/military_vr.dm +++ b/code/modules/clothing/spacesuits/void/military_vr.dm @@ -31,8 +31,8 @@ icon_state = "rig0-odst" item_state = "rig0-odst" item_state_slots = null - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' light_overlay = "helmet_light_dual" species_restricted = null @@ -40,9 +40,9 @@ name = "\improper Ace's ODST Helmet" icon = 'icons/obj/custom_items.dmi' icon_state = "rig0-odst_ace" - desc = "Etched under the inner visor is the phrase \"Don’t let your past define you; let it mold you into the person you want to be.\"" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi'*/ + desc = "Etched under the inner visor is the phrase \"Don�t let your past define you; let it mold you into the person you want to be.\"" + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi'*/ /obj/item/clothing/suit/space/void/merc/odst name = "ODST Armor" @@ -50,8 +50,8 @@ icon_state = "odst" item_state = "odst" item_state_slots = null - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' species_restricted = null breach_threshold = 16 //Extra Thicc resilience = 0.05 //Military Armor diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 1ad116978b6..444f5631279 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -204,16 +204,16 @@ /obj/item/clothing/head/helmet/space/void/medical/alt sprite_sheets = list( - SPECIES_HUMAN = 'icons/mob/head.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi' - ) + SPECIES_HUMAN = 'icons/inventory/head/mob.dmi', + SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi' + ) sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/hats.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/hats.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/hats.dmi' - ) + SPECIES_TAJ = 'icons/inventory/head/item.dmi', + SPECIES_SKRELL = 'icons/inventory/head/item.dmi', + SPECIES_UNATHI = 'icons/inventory/head/item.dmi' + ) /obj/item/clothing/head/helmet/space/void/medical/alt/tesh name = "streamlined teshari medical voidsuit helmet" @@ -223,10 +223,10 @@ /obj/item/clothing/head/helmet/space/void/medical/alt/tesh sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi' ) sprite_sheets_obj = list( - SPECIES_TESHARI = 'icons/obj/clothing/hats.dmi' + SPECIES_TESHARI = 'icons/inventory/head/item.dmi' ) /obj/item/clothing/suit/space/void/medical/alt @@ -240,15 +240,15 @@ /obj/item/clothing/suit/space/void/medical/alt sprite_sheets = list( - SPECIES_HUMAN = 'icons/mob/spacesuit.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi' + SPECIES_HUMAN = 'icons/inventory/suit/mob.dmi', + SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi' ) sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/spacesuits.dmi' + SPECIES_TAJ = 'icons/inventory/suit/item.dmi', + SPECIES_SKRELL = 'icons/inventory/suit/item.dmi', + SPECIES_UNATHI = 'icons/inventory/suit/item.dmi' ) /obj/item/clothing/suit/space/void/medical/alt/tesh @@ -259,10 +259,10 @@ /obj/item/clothing/suit/space/void/medical/alt/tesh sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi' + SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi' ) sprite_sheets_obj = list( - SPECIES_TESHARI = 'icons/obj/clothing/spacesuits.dmi' + SPECIES_TESHARI = 'icons/inventory/suit/item.dmi' ) //Security diff --git a/code/modules/clothing/spacesuits/void/station_vr.dm b/code/modules/clothing/spacesuits/void/station_vr.dm index 0684095afbb..dfd4c2babf1 100644 --- a/code/modules/clothing/spacesuits/void/station_vr.dm +++ b/code/modules/clothing/spacesuits/void/station_vr.dm @@ -1,49 +1,247 @@ /obj/item/clothing/head/helmet/space/void/medical/alt sprite_sheets = list( - SPECIES_HUMAN = 'icons/mob/head.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_AKULA = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_SERGAL = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/helmet.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/helmet.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/helmet.dmi' + SPECIES_HUMAN = 'icons/inventory/head/mob.dmi', + SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/head/mob_unathi.dmi', + SPECIES_AKULA = 'icons/inventory/head/mob_unathi.dmi', + SPECIES_SERGAL = 'icons/inventory/head/mob_unathi.dmi', + SPECIES_VULPKANIN = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob_vr_vulpkanin.dmi', + SPECIES_FENNEC = 'icons/inventory/head/mob_vr_vulpkanin.dmi' ) sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/hats.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/hats.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/hats.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/hats.dmi', - SPECIES_AKULA = 'icons/obj/clothing/hats.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/hats.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/hats.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/hats.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/hats.dmi' + SPECIES_TAJ = 'icons/inventory/head/item.dmi', + SPECIES_SKRELL = 'icons/inventory/head/item.dmi', + SPECIES_UNATHI = 'icons/inventory/head/item.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/head/item.dmi', + SPECIES_AKULA = 'icons/inventory/head/item.dmi', + SPECIES_SERGAL = 'icons/inventory/head/item.dmi', + SPECIES_VULPKANIN = 'icons/inventory/head/item.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/head/item.dmi', + SPECIES_FENNEC = 'icons/inventory/head/item.dmi' ) /obj/item/clothing/suit/space/void/medical/alt sprite_sheets = list( - SPECIES_HUMAN = 'icons/mob/spacesuit.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/suit.dmi', - SPECIES_AKULA = 'icons/mob/species/akula/suit_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/sergal/suit_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/suit.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/suit.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/suit.dmi' + SPECIES_HUMAN = 'icons/inventory/suit/mob.dmi', + SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi', + SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi', + SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_unathi.dmi', + SPECIES_AKULA = 'icons/inventory/suit/mob_vr_akula.dmi', + SPECIES_SERGAL = 'icons/inventory/suit/mob_vr_sergal.dmi', + SPECIES_VULPKANIN = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/suit/mob_vr_vulpkanin.dmi', + SPECIES_FENNEC = 'icons/inventory/suit/mob_vr_vulpkanin.dmi' ) sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_AKULA = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/spacesuits.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/spacesuits.dmi' - ) \ No newline at end of file + SPECIES_TAJ = 'icons/inventory/suit/item.dmi', + SPECIES_SKRELL = 'icons/inventory/suit/item.dmi', + SPECIES_UNATHI = 'icons/inventory/suit/item.dmi', + SPECIES_XENOHYBRID = 'icons/inventory/suit/item.dmi', + SPECIES_AKULA = 'icons/inventory/suit/item.dmi', + SPECIES_SERGAL = 'icons/inventory/suit/item.dmi', + SPECIES_VULPKANIN = 'icons/inventory/suit/item.dmi', + SPECIES_ZORREN_HIGH = 'icons/inventory/suit/item.dmi', + SPECIES_FENNEC = 'icons/inventory/suit/item.dmi' + ) + +// Alt mining voidsuit +/obj/item/clothing/suit/space/void/mining/alt2 + desc = "A surplus Commonwealth mining voidsuit! Slightly more comfortable and easier to move in than your average voidsuit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_mining_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 0 + +/obj/item/clothing/head/helmet/space/void/mining/alt2 + desc = "A surplus Commonwealth voidsuit helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_mining_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// Alt anomaly/excavation suit +/obj/item/clothing/suit/space/anomaly/alt + desc = "A surplus Commonwealth anomaly suit! Slightly more comfortable and easier to move in than your average anomaly suit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_excavation_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 0.5 + +/obj/item/clothing/head/helmet/space/anomaly/alt + desc = "A surplus Commonwealth helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_excavation_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// Alt riot suit +/obj/item/clothing/suit/space/void/security/riot/alt + desc = "A surplus Commonwealth riot control voidsuit! Slightly more comfortable and easier to move in than your average voidsuit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_secalt_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 0.5 + +/obj/item/clothing/head/helmet/space/void/security/riot/alt + desc = "A surplus Commonwealth voidsuit helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_secalt_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// Alt pilot suit +/obj/item/clothing/suit/space/void/pilot/alt2 + desc = "A surplus Commonwealth pilot voidsuit! Slightly more comfortable and easier to move in than your average voidsuit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_pilot_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 0 + +/obj/item/clothing/head/helmet/space/void/pilot/alt2 + desc = "A surplus Commonwealth voidsuit helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_pilot_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// Alt medical/emt suit +/obj/item/clothing/suit/space/void/medical/alt2 + desc = "A surplus Commonwealth medical voidsuit! Slightly more comfortable and easier to move in than your average voidsuit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_medicalalt_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 0 + +/obj/item/clothing/head/helmet/space/void/medical/alt2 + desc = "A surplus Commonwealth voidsuit helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_medicalalt_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// Alt explorer suit +/obj/item/clothing/suit/space/void/exploration/alt2 + desc = "A surplus Commonwealth exploration voidsuit! Slightly more comfortable and easier to move in than your average voidsuit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_explorer_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 0 + +/obj/item/clothing/head/helmet/space/void/exploration/alt2 + desc = "A surplus Commonwealth voidsuit helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_explorer_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// Alt engineering voidsuit +/obj/item/clothing/suit/space/void/engineering/alt2 + desc = "A surplus Commonwealth engineering voidsuit! Slightly more comfortable and easier to move in than your average voidsuit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_engineeringalt_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 0.5 + +/obj/item/clothing/head/helmet/space/void/engineering/alt2 + desc = "A surplus Commonwealth voidsuit helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_engineeringalt_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// Alt atmos voidsuit +/obj/item/clothing/suit/space/void/atmos/alt2 + desc = "A surplus Commonwealth atmospherics voidsuit! Slightly more comfortable and easier to move in than your average voidsuit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_atmosalt_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 0.5 + +/obj/item/clothing/head/helmet/space/void/atmos/alt2 + desc = "A surplus Commonwealth voidsuit helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_atmosalt_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM + +// Alt command voidsuit +/obj/item/clothing/suit/space/void/captain/alt + desc = "A surplus Commonwealth Navy captain voidsuit! Slightly more comfortable and easier to move in than your average voidsuit." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "void_command_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_SUIT_ITEM + slowdown = 1.0 + +/obj/item/clothing/head/helmet/space/void/captain/alt + desc = "A surplus Commonwealth voidsuit helmet. Seems more fancy than what's usually found on the frontier." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "void_command_bay" + item_state = null + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = ALL_VR_SPRITE_SHEETS_HEAD_ITEM diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index 72d500579a2..663fe1b3d86 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -14,18 +14,8 @@ //Species-specific stuff. species_restricted = list("Human", "Promethean") - sprite_sheets_refit = list( - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi' - //Teshari have a general sprite sheet defined in modules/clothing/clothing.dm - ) - sprite_sheets_obj = list( - SPECIES_UNATHI = 'icons/obj/clothing/species/unathi/hats.dmi', - SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/hats.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/hats.dmi', - SPECIES_TESHARI = 'icons/obj/clothing/species/teshari/hats.dmi' - ) + sprite_sheets = VR_SPECIES_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = VR_SPECIES_SPRITE_SHEETS_HEAD_ITEM light_overlay = "helmet_light" var/no_cycle = FALSE //stop this item from being put in a cycler @@ -44,18 +34,8 @@ max_pressure_protection = 10 * ONE_ATMOSPHERE species_restricted = list("Human", SPECIES_SKRELL, "Promethean") - sprite_sheets_refit = list( - SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi' - //Teshari have a general sprite sheet defined in modules/clothing/clothing.dm - ) - sprite_sheets_obj = list( - SPECIES_UNATHI = 'icons/obj/clothing/species/unathi/suits.dmi', - SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/suits.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/suits.dmi', - SPECIES_TESHARI = 'icons/obj/clothing/species/teshari/suits.dmi' - ) + sprite_sheets = VR_SPECIES_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = VR_SPECIES_SPRITE_SHEETS_SUIT_ITEM //Breach thresholds, should ideally be inherited by most (if not all) voidsuits. //With 0.2 resiliance, will reach 10 breach damage after 3 laser carbine blasts or 8 smg hits. @@ -97,28 +77,28 @@ if(boots) if (H.equip_to_slot_if_possible(boots, slot_shoes)) - boots.canremove = 0 + boots.canremove = FALSE if(helmet) if(H.head) to_chat(M, "You are unable to deploy your suit's helmet as \the [H.head] is in the way.") else if (H.equip_to_slot_if_possible(helmet, slot_head)) to_chat(M, "Your suit's helmet deploys with a hiss.") - helmet.canremove = 0 + helmet.canremove = FALSE if(tank) if(H.s_store) //In case someone finds a way. to_chat(M, "Alarmingly, the valve on your suit's installed tank fails to engage.") else if (H.equip_to_slot_if_possible(tank, slot_s_store)) to_chat(M, "The valve on your suit's installed tank safely engages.") - tank.canremove = 0 + tank.canremove = FALSE if(cooler) if(H.s_store) //Ditto to_chat(M, "Alarmingly, the cooling unit installed into your suit fails to deploy.") else if (H.equip_to_slot_if_possible(cooler, slot_s_store)) to_chat(M, "Your suit's cooling unit deploys.") - cooler.canremove = 0 + cooler.canremove = FALSE /obj/item/clothing/suit/space/void/dropped() ..() @@ -126,7 +106,7 @@ var/mob/living/carbon/human/H if(helmet) - helmet.canremove = 1 + helmet.canremove = TRUE H = helmet.loc if(istype(H)) if(helmet && H.head == helmet) @@ -134,7 +114,7 @@ helmet.forceMove(src) if(boots) - boots.canremove = 1 + boots.canremove = TRUE H = boots.loc if(istype(H)) if(boots && H.shoes == boots) @@ -142,11 +122,11 @@ boots.forceMove(src) if(tank) - tank.canremove = 1 + tank.canremove = TRUE tank.forceMove(src) if(cooler) - cooler.canremove = 1 + cooler.canremove = TRUE cooler.forceMove(src) /obj/item/clothing/suit/space/void/proc/attach_helmet(var/obj/item/clothing/head/helmet/space/void/helm) @@ -188,7 +168,7 @@ if(H.head == helmet) to_chat(H, "You retract your suit helmet.") - helmet.canremove = 1 + helmet.canremove = TRUE H.drop_from_inventory(helmet) helmet.forceMove(src) else @@ -197,7 +177,7 @@ return if(H.equip_to_slot_if_possible(helmet, slot_head)) helmet.pickup(H) - helmet.canremove = 0 + helmet.canremove = FALSE to_chat(H, "You deploy your suit helmet, sealing you off from the world.") if(helmet.light_system == STATIC_LIGHT) @@ -229,7 +209,7 @@ removing = cooler cooler = null to_chat(H, "You press the emergency release, ejecting \the [removing] from your suit.") - removing.canremove = 1 + removing.canremove = TRUE H.drop_from_inventory(removing) /obj/item/clothing/suit/space/void/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm index ae10305eb57..2b9fc754a38 100644 --- a/code/modules/clothing/spacesuits/void/void_vr.dm +++ b/code/modules/clothing/spacesuits/void/void_vr.dm @@ -7,75 +7,17 @@ /obj/item/clothing/head/helmet/space/void species_restricted = list(SPECIES_HUMAN, SPECIES_RAPALA, SPECIES_VASILISSAN, SPECIES_ALRAUNE, SPECIES_PROMETHEAN, SPECIES_XENOCHIMERA) - sprite_sheets = list( - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_AKULA = 'icons/mob/species/akula/helmet_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/sergal/helmet_vr.dmi', - SPECIES_NEVREAN = 'icons/mob/species/sergal/helmet_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/helmet.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/helmet.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/helmet.dmi' - ) - sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/hats.dmi', // Copied from void.dm - SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/hats.dmi', // Copied from void.dm - SPECIES_UNATHI = 'icons/obj/clothing/species/unathi/hats.dmi', // Copied from void.dm - SPECIES_TESHARI = 'icons/obj/clothing/species/teshari/hats.dmi', // Copied from void.dm - SPECIES_XENOHYBRID = 'icons/obj/clothing/species/unathi/hats.dmi', - SPECIES_AKULA = 'icons/obj/clothing/species/akula/hats.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/species/sergal/hats.dmi', - SPECIES_NEVREAN = 'icons/obj/clothing/species/sergal/hats.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/species/vulpkanin/hats.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/species/vulpkanin/hats.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/species/vulpkanin/hats.dmi' - ) /obj/item/clothing/suit/space/void species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_RAPALA, SPECIES_VASILISSAN, SPECIES_ALRAUNE, SPECIES_PROMETHEAN, SPECIES_XENOCHIMERA) - sprite_sheets = list( - SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi', - SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/suit.dmi', - SPECIES_AKULA = 'icons/mob/species/akula/suit_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/sergal/suit_vr.dmi', - SPECIES_NEVREAN = 'icons/mob/species/sergal/suit_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/suit.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/suit.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/suit.dmi' - ) - sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/suits.dmi', // Copied from void.dm - SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/suits.dmi', // Copied from void.dm - SPECIES_UNATHI = 'icons/obj/clothing/species/unathi/suits.dmi', // Copied from void.dm - SPECIES_TESHARI = 'icons/obj/clothing/species/teshari/suits.dmi', // Copied from void.dm - SPECIES_XENOHYBRID = 'icons/obj/clothing/species/unathi/suits.dmi', - SPECIES_AKULA = 'icons/obj/clothing/species/akula/suits.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/species/sergal/suits.dmi', - SPECIES_NEVREAN = 'icons/obj/clothing/species/sergal/suits.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/species/vulpkanin/suits.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/species/vulpkanin/suits.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/species/vulpkanin/suits.dmi' - ) - - // This is a hack to prevent the item_state variable on the suits from taking effect - // when the item is equipped in outer clothing slot. - // This variable is normally used to set the icon_override when the suit is refitted, - // however the species spritesheet now means we no longer need that anyway! - sprite_sheets_refit = list() - + /obj/item/clothing/head/helmet/space/void/heck name = "\improper H.E.C.K. helmet" desc = "Hostile Environiment Cross-Kinetic Helmet: A helmet designed to withstand the wide variety of hazards from \[REDACTED\]. It wasn't enough for its last owner." icon_state = "hostile_env" item_state = "hostile_env" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' armor = list(melee = 60, bullet = 35, laser = 35, energy = 15, bomb = 55, bio = 100, rad = 20) /obj/item/clothing/head/helmet/space/void/heck/Initialize() @@ -96,8 +38,8 @@ desc = "Hostile Environment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from \[REDACTED\]. It wasn't enough for its last owner." icon_state = "hostile_env" item_state = "hostile_env" - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' slowdown = 1.5 armor = list(melee = 60, bullet = 35, laser = 35, energy = 15, bomb = 55, bio = 100, rad = 20) @@ -106,8 +48,8 @@ desc = "A free helmet, gifted you by your new not-quite-corporate master!" icon_state = "syndicate-contract" item_state = "syndicate-contract" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.6 camera_networks = list(NETWORK_MERCENARY) @@ -117,8 +59,8 @@ desc = "A free suit, gifted you by your new not-quite-corporate master!" icon_state = "syndicate-contract" item_state = "syndicate-contract" - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.6 @@ -127,21 +69,21 @@ desc = "From out of space and time, this helmet will protect you while you perform your duties." icon_state = "chronohelmet" item_state = "chronohelmet" - icon = 'icons/obj/clothing/hats_vr.dmi' - icon_override = 'icons/mob/head_vr.dmi' + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' /obj/item/clothing/suit/space/void/chrono name = "chrono-suit" desc = "From out of space and time, this helmet will protect you while you perform your duties." icon_state = "chronosuit" item_state = "chronosuit" - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' /obj/item/clothing/suit/space/void/autolok name = "AutoLok pressure suit" desc = "A high-tech snug-fitting pressure suit. Fits any species. It offers very little physical protection, but is equipped with sensors that will automatically deploy the integral helmet to protect the wearer." - icon = 'icons/obj/clothing/suits_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' icon_state = "autoloksuit" item_state = "autoloksuit" item_state_slots = list(slot_r_hand_str = "space_suit_syndicate", slot_l_hand_str = "space_suit_syndicate") @@ -151,33 +93,9 @@ species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX) //this thing can autoadapt breach_threshold = 6 //this thing is basically tissue paper w_class = ITEMSIZE_NORMAL //if it's snug, high-tech, and made of relatively soft materials, it should be much easier to store! - -/obj/item/clothing/suit/space/void/autolok - sprite_sheets = list( - SPECIES_HUMAN = 'icons/mob/spacesuit_vr.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/suit_vr.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/suit_vr.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/suit_vr.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/suit_vr.dmi', - SPECIES_AKULA = 'icons/mob/species/unathi/suit_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/unathi/suit_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/suit_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/suit_vr.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/suit_vr.dmi', - SPECIES_TESHARI = 'icons/mob/species/teshari/suit_vr.dmi' - ) - sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_AKULA = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/suits_vr.dmi', - SPECIES_TESHARI = 'icons/obj/clothing/suits_vr.dmi' - ) + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + sprite_sheets = ALL_VR_SPRITE_SHEETS_SUIT_MOB + sprite_sheets_obj = null /obj/item/clothing/suit/space/void/autolok/Initialize() . = ..() @@ -225,36 +143,12 @@ /obj/item/clothing/head/helmet/space/void/autolok name = "AutoLok pressure helmet" desc = "A rather close-fitting helmet designed to protect the wearer from hazardous conditions. Automatically deploys when the suit's sensors detect an environment that is hazardous to the wearer." + icon = 'icons/inventory/head/item_vr.dmi' icon_state = "autolokhelmet" item_state = "autolokhelmet" species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX) //this thing can autoadapt too - icon = 'icons/obj/clothing/hats_vr.dmi' flags_inv = HIDEEARS|BLOCKHAIR //removed HIDEFACE/MASK/EYES flags so sunglasses or facemasks don't disappear. still gotta have BLOCKHAIR or it'll clip out tho. - -/obj/item/clothing/head/helmet/space/void/autolok - sprite_sheets = list( - SPECIES_HUMAN = 'icons/mob/head_vr.dmi', - SPECIES_TAJ = 'icons/mob/species/tajaran/helmet_vr.dmi', - SPECIES_SKRELL = 'icons/mob/species/skrell/helmet_vr.dmi', - SPECIES_UNATHI = 'icons/mob/species/unathi/helmet_vr.dmi', - SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet_vr.dmi', - SPECIES_AKULA = 'icons/mob/species/unathi/helmet_vr.dmi', - SPECIES_SERGAL = 'icons/mob/species/unathi/helmet_vr.dmi', - SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/helmet_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/mob/species/vulpkanin/helmet_vr.dmi', - SPECIES_FENNEC = 'icons/mob/species/vulpkanin/helmet_vr.dmi', - SPECIES_TESHARI = 'icons/mob/species/teshari/helmet_vr.dmi' - ) - sprite_sheets_obj = list( - SPECIES_TAJ = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_SKRELL = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_UNATHI = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_XENOHYBRID = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_AKULA = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_SERGAL = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_VULPKANIN = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_ZORREN_HIGH = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_FENNEC = 'icons/obj/clothing/hats_vr.dmi', - SPECIES_TESHARI = 'icons/obj/clothing/hats_vr.dmi' - ) - sprite_sheets_refit = list() //have to nullify this as well just to be thorough \ No newline at end of file + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + sprite_sheets = ALL_VR_SPRITE_SHEETS_HEAD_MOB + sprite_sheets_obj = null + \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/void/wizard.dm b/code/modules/clothing/spacesuits/void/wizard.dm index f86ecf8642d..bcef9752ac3 100644 --- a/code/modules/clothing/spacesuits/void/wizard.dm +++ b/code/modules/clothing/spacesuits/void/wizard.dm @@ -4,10 +4,9 @@ desc = "A bizarre gem-encrusted helmet that radiates magical energies." icon_state = "rig0-wiz" item_state_slots = list(slot_r_hand_str = "wiz_helm", slot_l_hand_str = "wiz_helm") - unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles! + unacidable = TRUE //No longer shall our kind be foiled by lone chemists with spray bottles! armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.7 - sprite_sheets_refit = null sprite_sheets_obj = null wizard_garb = 1 @@ -17,9 +16,8 @@ desc = "A bizarre gem-encrusted suit that radiates magical energies." item_state_slots = list(slot_r_hand_str = "wiz_voidsuit", slot_l_hand_str = "wiz_voidsuit") w_class = ITEMSIZE_NORMAL - unacidable = 1 + unacidable = TRUE armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.7 - sprite_sheets_refit = null sprite_sheets_obj = null wizard_garb = 1 diff --git a/code/modules/clothing/suits/aliens/teshari.dm b/code/modules/clothing/suits/aliens/teshari.dm index 65a19bf8c20..a8d8ec7102d 100644 --- a/code/modules/clothing/suits/aliens/teshari.dm +++ b/code/modules/clothing/suits/aliens/teshari.dm @@ -2,144 +2,113 @@ /obj/item/clothing/suit/storage/teshari/cloak name = "black cloak" desc = "It drapes over a Teshari's shoulders and closes at the neck with pockets convienently placed inside." - icon = 'icons/mob/species/teshari/teshari_cloak.dmi' - icon_override = 'icons/mob/species/teshari/teshari_cloak.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' icon_state = "tesh_cloak_bn" - item_state = "tesh_cloak_bn" species_restricted = list(SPECIES_TESHARI) body_parts_covered = UPPER_TORSO|ARMS /obj/item/clothing/suit/storage/teshari/cloak/standard/black_red name = "black and red cloak" icon_state = "tesh_cloak_br" - item_state = "tesh_cloak_br" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_orange name = "black and orange cloak" icon_state = "tesh_cloak_bo" - item_state = "tesh_cloak_bo" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_yellow name = "black and yellow cloak" icon_state = "tesh_cloak_by" - item_state = "tesh_cloak_by" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_green name = "black and green cloak" icon_state = "tesh_cloak_bgr" - item_state = "tesh_cloak_bgr" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_blue name = "black and blue cloak" icon_state = "tesh_cloak_bbl" - item_state = "tesh_cloak_bbl" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_purple name = "black and purple cloak" icon_state = "tesh_cloak_bp" - item_state = "tesh_cloak_bp" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_pink name = "black and pink cloak" icon_state = "tesh_cloak_bpi" - item_state = "tesh_cloak_bpi" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_brown name = "black and brown cloak" icon_state = "tesh_cloak_bbr" - item_state = "tesh_cloak_bbr" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_grey name = "black and grey cloak" icon_state = "tesh_cloak_bg" - item_state = "tesh_cloak_bg" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_white name = "black and white cloak" icon_state = "tesh_cloak_bw" - item_state = "tesh_cloak_bw" /obj/item/clothing/suit/storage/teshari/cloak/standard/white name = "white cloak" icon_state = "tesh_cloak_wn" - item_state = "tesh_cloak_wn" /obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey name = "white and grey cloak" icon_state = "tesh_cloak_wg" - item_state = "tesh_cloak_wg" /obj/item/clothing/suit/storage/teshari/cloak/standard/red_grey name = "red and grey cloak" icon_state = "tesh_cloak_rg" - item_state = "tesh_cloak_rg" /obj/item/clothing/suit/storage/teshari/cloak/standard/orange_grey name = "orange and grey cloak" icon_state = "tesh_cloak_og" - item_state = "tesh_cloak_og" /obj/item/clothing/suit/storage/teshari/cloak/standard/yellow_grey name = "yellow and grey cloak" icon_state = "tesh_cloak_yg" - item_state = "tesh_cloak_yg" /obj/item/clothing/suit/storage/teshari/cloak/standard/green_grey name = "green and grey cloak" icon_state = "tesh_cloak_gg" - item_state = "tesh_cloak_gg" /obj/item/clothing/suit/storage/teshari/cloak/standard/blue_grey name = "blue and grey cloak" icon_state = "tesh_cloak_blug" - item_state = "tesh_cloak_blug" /obj/item/clothing/suit/storage/teshari/cloak/standard/purple_grey name = "purple and grey cloak" icon_state = "tesh_cloak_pg" - item_state = "tesh_cloak_pg" /obj/item/clothing/suit/storage/teshari/cloak/standard/pink_grey name = "pink and grey cloak" icon_state = "tesh_cloak_pig" - item_state = "tesh_cloak_pig" /obj/item/clothing/suit/storage/teshari/cloak/standard/brown_grey name = "brown and grey cloak" icon_state = "tesh_cloak_brg" - item_state = "tesh_cloak_brg" /obj/item/clothing/suit/storage/teshari/cloak/standard/rainbow name = "rainbow cloak" icon_state = "tesh_cloak_rainbow" - item_state = "tesh_cloak_rainbow" /obj/item/clothing/suit/storage/teshari/cloak/standard/orange name = "orange cloak" icon_state = "tesh_cloak_on" - item_state = "tesh_cloak_on" /obj/item/clothing/suit/storage/teshari/cloak/standard/dark_retrowave name = "dark aesthetic cloak" icon_state = "tesh_cloak_dretrowave" - item_state = "tesh_cloak_dretrowave" /obj/item/clothing/suit/storage/teshari/cloak/standard/black_glow name = "black and glowing cloak" icon_state = "tesh_cloak_bglowing" - item_state = "tesh_cloak_bglowing" // Job Cloaks -/obj/item/clothing/suit/storage/teshari/cloak/jobs - icon = 'icons/mob/species/teshari/deptcloak.dmi' - icon_override = 'icons/mob/species/teshari/deptcloak.dmi' - /obj/item/clothing/suit/storage/teshari/cloak/jobs/cap name = "facility director cloak" desc = "A soft Teshari cloak made for the Facility Director" icon_state = "tesh_cloak_cap" - item_state = "tesh_cloak_cap" //Cargo @@ -147,19 +116,16 @@ name = "quartermaster cloak" desc = "A soft Teshari cloak made for the Quartermaster" icon_state = "tesh_cloak_qm" - item_state = "tesh_cloak_qm" /obj/item/clothing/suit/storage/teshari/cloak/jobs/cargo name = "cargo cloak" desc = "A soft Teshari cloak made for the Cargo department" icon_state = "tesh_cloak_car" - item_state = "tesh_cloak_car" /obj/item/clothing/suit/storage/teshari/cloak/jobs/mining name = "mining cloak" desc = "A soft Teshari cloak made for Mining" icon_state = "tesh_cloak_mine" - item_state = "tesh_cloak_mine" //Engineering @@ -167,19 +133,16 @@ name = "cheif engineer cloak" desc = "A soft Teshari cloak made the Chief Engineer" icon_state = "tesh_cloak_ce" - item_state = "tesh_cloak_ce" /obj/item/clothing/suit/storage/teshari/cloak/jobs/engineer name = "engineering cloak" desc = "A soft Teshari cloak made for the Engineering department" icon_state = "tesh_cloak_engie" - item_state = "tesh_cloak_engie" /obj/item/clothing/suit/storage/teshari/cloak/jobs/atmos name = "atmospherics cloak" desc = "A soft Teshari cloak made for the Atmospheric Technician" icon_state = "tesh_cloak_atmos" - item_state = "tesh_cloak_atmos" //Medical @@ -187,37 +150,31 @@ name = "chief medical officer cloak" desc = "A soft Teshari cloak made the Cheif Medical Officer" icon_state = "tesh_cloak_cmo" - item_state = "tesh_cloak_cmo" /obj/item/clothing/suit/storage/teshari/cloak/jobs/medical name = "medical cloak" desc = "A soft Teshari cloak made for the Medical department" icon_state = "tesh_cloak_doc" - item_state = "tesh_cloak_doc" /obj/item/clothing/suit/storage/teshari/cloak/jobs/chemistry name = "chemist cloak" desc = "A soft Teshari cloak made for the Chemist" icon_state = "tesh_cloak_chem" - item_state = "tesh_cloak_chem" /obj/item/clothing/suit/storage/teshari/cloak/jobs/viro name = "virologist cloak" desc = "A soft Teshari cloak made for the Virologist" icon_state = "tesh_cloak_viro" - item_state = "tesh_cloak_viro" /obj/item/clothing/suit/storage/teshari/cloak/jobs/para name = "paramedic cloak" desc = "A soft Teshari cloak made for the Paramedic" icon_state = "tesh_cloak_para" - item_state = "tesh_cloak_para" /obj/item/clothing/suit/storage/teshari/cloak/jobs/psych name = " psychiatrist cloak" desc = "A soft Teshari cloak made for the Psychiatrist" icon_state = "tesh_cloak_psych" - item_state = "tesh_cloak_psych" //Science @@ -225,19 +182,16 @@ name = "research director cloak" desc = "A soft Teshari cloak made for the Research Director" icon_state = "tesh_cloak_rd" - item_state = "tesh_cloak_rd" /obj/item/clothing/suit/storage/teshari/cloak/jobs/sci name = "scientist cloak" desc = "A soft Teshari cloak made for the Science department" icon_state = "tesh_cloak_sci" - item_state = "tesh_cloak_sci" /obj/item/clothing/suit/storage/teshari/cloak/jobs/robo name = "roboticist cloak" desc = "A soft Teshari cloak made for the Roboticist" icon_state = "tesh_cloak_robo" - item_state = "tesh_cloak_robo" //Security @@ -245,19 +199,16 @@ name = "head of security cloak" desc = "A soft Teshari cloak made for the Head of Security" icon_state = "tesh_cloak_hos" - item_state = "tesh_cloak_hos" /obj/item/clothing/suit/storage/teshari/cloak/jobs/sec name = "security cloak" desc = "A soft Teshari cloak made for the Security department" icon_state = "tesh_cloak_sec" - item_state = "tesh_cloak_sec" /obj/item/clothing/suit/storage/teshari/cloak/jobs/iaa name = "internal affairs cloak" desc = "A soft Teshari cloak made for the Internal Affairs Agent" icon_state = "tesh_cloak_iaa" - item_state = "tesh_cloak_iaa" //Service @@ -265,29 +216,25 @@ name = "head of personnel cloak" desc = "A soft Teshari cloak made for the Head of Personnel" icon_state = "tesh_cloak_hop" - item_state = "tesh_cloak_hop" /obj/item/clothing/suit/storage/teshari/cloak/jobs/service name = "service cloak" desc = "A soft Teshari cloak made for the Service department" icon_state = "tesh_cloak_serv" - item_state = "tesh_cloak_serv" //Misc /obj/item/clothing/suit/storage/toggle/labcoat/teshari name = "Teshari labcoat" desc = "A small suit that protects against minor chemical spills. This one is a good fit on Teshari." - icon = 'icons/obj/clothing/species/teshari/suits.dmi' - icon_override = 'icons/mob/species/teshari/suit.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' icon_state = "tesh_labcoat" species_restricted = list(SPECIES_TESHARI) /obj/item/clothing/suit/storage/toggle/tesharicoat name = "small black coat" desc = "A coat that seems too small to fit a human." - icon = 'icons/obj/clothing/species/teshari/suits.dmi' - icon_override = 'icons/mob/species/teshari/suit.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' icon_state = "tesharicoat" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS species_restricted = list(SPECIES_TESHARI) @@ -295,8 +242,7 @@ /obj/item/clothing/suit/storage/toggle/tesharicoatwhite name = "small coat" desc = "A coat that seems too small to fit a human." - icon = 'icons/obj/clothing/species/teshari/suits.dmi' - icon_override = 'icons/mob/species/teshari/suit.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' icon_state = "tesharicoatwhite" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS species_restricted = list(SPECIES_TESHARI) @@ -305,13 +251,11 @@ /obj/item/clothing/suit/storage/hooded/teshari name = "Hooded Teshari Cloak" desc = "A soft teshari cloak with an added hood." - icon_override = 'icons/mob/species/teshari/teshari_hood.dmi' - icon = 'icons/mob/species/teshari/teshari_hood.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' icon_state = "tesh_hcloak_bo" item_state_slots = list(slot_r_hand_str = "tesh_hcloak_bo", slot_l_hand_str = "tesh_hcloak_bo") body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS flags_inv = HIDEHOLSTER|HIDETIE - //hooded = 1 Variable no longer exists, hood is now handled by code/modules/clothing/suit/storage/hooded.dm action_button_name = "Toggle Cloak Hood" hoodtype = /obj/item/clothing/head/tesh_hood allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask) @@ -319,9 +263,10 @@ /obj/item/clothing/head/tesh_hood name = "Cloak Hood" desc = "A hood attached to a teshari cloak." - icon_override = 'icons/mob/species/teshari/teshari_hood.dmi' - icon = 'icons/mob/species/teshari/teshari_hood.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' + default_worn_icon = 'icons/inventory/suit/mob_teshari.dmi' icon_state = "tesh_hood_bo" + sprite_sheets = null item_state_slots = list(slot_r_hand_str = "tesh_hood_bo", slot_l_hand_str = "tesh_hood_bo") flags_inv = BLOCKHAIR body_parts_covered = HEAD @@ -329,537 +274,436 @@ /obj/item/clothing/suit/storage/hooded/teshari/standard/black_orange name = "black and orange hooded cloak" icon_state = "tesh_hcloak_bo" - item_state = "tesh_hcloak_bo" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_orange /obj/item/clothing/suit/storage/hooded/teshari/standard/black_grey name = "black and grey hooded cloak" icon_state = "tesh_hcloak_bg" - item_state = "tesh_hcloak_bg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/black_midgrey name = "black and medium grey hooded cloak" icon_state = "tesh_hcloak_bmg" - item_state = "tesh_hcloak_bmg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_midgrey /obj/item/clothing/suit/storage/hooded/teshari/standard/black_lightgrey name = "black and light grey hooded cloak" icon_state = "tesh_hcloak_blg" - item_state = "tesh_hcloak_blg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_lightgrey /obj/item/clothing/suit/storage/hooded/teshari/standard/black_white name = "black and white hooded cloak" icon_state = "tesh_hcloak_bw" - item_state = "tesh_hcloak_bw" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_white /obj/item/clothing/suit/storage/hooded/teshari/standard/black_red name = "black and red hooded cloak" icon_state = "tesh_hcloak_br" - item_state = "tesh_hcloak_br" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_red /obj/item/clothing/suit/storage/hooded/teshari/standard/black name = "black hooded cloak" icon_state = "tesh_hcloak_bn" - item_state = "tesh_hcloak_bn" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black /obj/item/clothing/suit/storage/hooded/teshari/standard/black_yellow name = "black and yellow hooded cloak" icon_state = "tesh_hcloak_by" - item_state = "tesh_hcloak_by" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_yellow /obj/item/clothing/suit/storage/hooded/teshari/standard/black_green name = "black and green hooded cloak" icon_state = "tesh_hcloak_bgr" - item_state = "tesh_hcloak_bgr" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_green /obj/item/clothing/suit/storage/hooded/teshari/standard/black_blue name = "black and blue hooded cloak" icon_state = "tesh_hcloak_bbl" - item_state = "tesh_hcloak_bbl" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_blue /obj/item/clothing/suit/storage/hooded/teshari/standard/black_purple name = "black and purple hooded cloak" icon_state = "tesh_hcloak_bp" - item_state = "tesh_hcloak_bp" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_purple /obj/item/clothing/suit/storage/hooded/teshari/standard/black_pink name = "black and pink hooded cloak" icon_state = "tesh_hcloak_bpi" - item_state = "tesh_hcloak_bpi" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_pink /obj/item/clothing/suit/storage/hooded/teshari/standard/black_brown name = "black and brown hooded cloak" icon_state = "tesh_hcloak_bbr" - item_state = "tesh_hcloak_bbr" hoodtype = /obj/item/clothing/head/tesh_hood/standard/black_brown /obj/item/clothing/suit/storage/hooded/teshari/standard/orange_grey name = "orange and grey hooded cloak" icon_state = "tesh_hcloak_og" - item_state = "tesh_hcloak_og" hoodtype = /obj/item/clothing/head/tesh_hood/standard/orange_grey ///obj/item/clothing/suit/storage/hooded/teshari/standard/rainbow // name = "rainbow hooded cloak" // icon_state = "tesh_hcloak_rainbow" -// item_state = "tesh_hcloak_rainbow" // hoodtype = /obj/item/clothing/head/tesh_hood/standard/rainbow /obj/item/clothing/suit/storage/hooded/teshari/standard/lightgrey_grey name = "light grey and grey hooded cloak" icon_state = "tesh_hcloak_lgg" - item_state = "tesh_hcloak_lgg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/lightgrey_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/white_grey name = "white and grey hooded cloak" icon_state = "tesh_hcloak_wg" - item_state = "tesh_hcloak_wg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/white_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/red_grey name = "red and grey hooded cloak" icon_state = "tesh_hcloak_rg" - item_state = "tesh_hcloak_rg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/red_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/orange name = "orange hooded cloak" icon_state = "tesh_hcloak_on" - item_state = "tesh_hcloak_on" hoodtype = /obj/item/clothing/head/tesh_hood/standard/orange /obj/item/clothing/suit/storage/hooded/teshari/standard/yellow_grey name = "yellow and grey hooded cloak" icon_state = "tesh_hcloak_yg" - item_state = "tesh_hcloak_yg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/yellow_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/green_grey name = "green and grey hooded cloak" icon_state = "tesh_hcloak_gg" - item_state = "tesh_hcloak_gg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/green_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/blue_grey name = "blue and grey hooded cloak" icon_state = "tesh_hcloak_blug" - item_state = "tesh_hcloak_blug" hoodtype = /obj/item/clothing/head/tesh_hood/standard/blue_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/purple_grey name = "purple and grey hooded cloak" icon_state = "tesh_hcloak_pg" - item_state = "tesh_hcloak_pg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/purple_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/pink_grey name = "pink and grey hooded cloak" icon_state = "tesh_hcloak_pig" - item_state = "tesh_hcloak_pig" hoodtype = /obj/item/clothing/head/tesh_hood/standard/pink_grey /obj/item/clothing/suit/storage/hooded/teshari/standard/brown_grey name = "brown and grey hooded cloak" icon_state = "tesh_hcloak_brg" - item_state = "tesh_hcloak_brg" hoodtype = /obj/item/clothing/head/tesh_hood/standard/brown_grey //The actual hoods /obj/item/clothing/head/tesh_hood/standard/black_orange name = "black and orange cloak hood" icon_state = "tesh_hood_bo" - item_state = "tesh_hood_bo" /obj/item/clothing/head/tesh_hood/standard/black_grey name = "black and grey cloak hood" icon_state = "tesh_hood_bg" - item_state = "tesh_hood_bg" /obj/item/clothing/head/tesh_hood/standard/black_midgrey name = "black and medium grey cloak hood" icon_state = "tesh_hood_bmg" - item_state = "tesh_hood_bmg" /obj/item/clothing/head/tesh_hood/standard/black_lightgrey name = "black and light grey cloak hood" icon_state = "tesh_hood_blg" - item_state = "tesh_hood_blg" /obj/item/clothing/head/tesh_hood/standard/black_white name = "black and white cloak hood" icon_state = "tesh_hood_bw" - item_state = "tesh_hood_bw" /obj/item/clothing/head/tesh_hood/standard/black_red name = "black and red cloak hood" icon_state = "tesh_hood_br" - item_state = "tesh_hood_br" /obj/item/clothing/head/tesh_hood/standard/black name = "black cloak hood" icon_state = "tesh_hood_bn" - item_state = "tesh_hood_bn" /obj/item/clothing/head/tesh_hood/standard/black_yellow name = "black and yellow cloak hood" icon_state = "tesh_hood_by" - item_state = "tesh_hood_by" /obj/item/clothing/head/tesh_hood/standard/black_green name = "black and green cloak hood" icon_state = "tesh_hood_bgr" - item_state = "tesh_hood_bgr" /obj/item/clothing/head/tesh_hood/standard/black_blue name = "black and blue cloak hood" icon_state = "tesh_hood_bbl" - item_state = "tesh_hood_bbl" /obj/item/clothing/head/tesh_hood/standard/black_purple name = "black and purple cloak hood" icon_state = "tesh_hood_bp" - item_state = "tesh_hood_bp" /obj/item/clothing/head/tesh_hood/standard/black_pink name = "black and pink cloak hood" icon_state = "tesh_hood_bpi" - item_state = "tesh_hood_bpi" /obj/item/clothing/head/tesh_hood/standard/black_brown name = "black and brown cloak hood" icon_state = "tesh_hood_bbr" - item_state = "tesh_hood_bbr" /obj/item/clothing/head/tesh_hood/standard/orange_grey name = "orange and grey cloak hood" icon_state = "tesh_hood_og" - item_state = "tesh_hood_og" /obj/item/clothing/head/tesh_hood/standard/rainbow name = "rainbow cloak hood" icon_state = "tesh_hood_rainbow" - item_state = "tesh_hood_rainbow" /obj/item/clothing/head/tesh_hood/standard/lightgrey_grey name = "light grey and grey cloak hood" icon_state = "tesh_hood_lgg" - item_state = "tesh_hood_lgg" /obj/item/clothing/head/tesh_hood/standard/white_grey name = "white and grey cloak hood" icon_state = "tesh_hood_wg" - item_state = "tesh_hood_wg" /obj/item/clothing/head/tesh_hood/standard/red_grey name = "red and grey cloak hood" icon_state = "tesh_hood_rg" - item_state = "tesh_hood_rg" /obj/item/clothing/head/tesh_hood/standard/orange name = "orange cloak hood" icon_state = "tesh_hood_on" - item_state = "tesh_hood_on" /obj/item/clothing/head/tesh_hood/standard/yellow_grey name = "yellow and grey cloak hood" icon_state = "tesh_hood_yg" - item_state = "tesh_hood_yg" /obj/item/clothing/head/tesh_hood/standard/green_grey name = "green and grey cloak hood" icon_state = "tesh_hood_gg" - item_state = "tesh_hood_gg" /obj/item/clothing/head/tesh_hood/standard/blue_grey name = "blue and grey cloak hood" icon_state = "tesh_hood_blug" - item_state = "tesh_hood_blug" /obj/item/clothing/head/tesh_hood/standard/purple_grey name = "purple and grey cloak hood" icon_state = "tesh_hood_pg" - item_state = "tesh_hood_pg" /obj/item/clothing/head/tesh_hood/standard/pink_grey name = "pink and grey cloak hood" icon_state = "tesh_hood_pig" - item_state = "tesh_hood_pig" /obj/item/clothing/head/tesh_hood/standard/brown_grey name = "brown and grey cloak hood" icon_state = "tesh_hood_brg" - item_state = "tesh_hood_brg" //Belted cloaks /obj/item/clothing/suit/storage/teshari/beltcloak name = "belted cloak" desc = "A more ridged and stylized Teshari cloak." - icon = 'icons/mob/species/teshari/teshari_cloak.dmi' - icon_override = 'icons/mob/species/teshari/teshari_cloak.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' icon_state = "tesh_beltcloak_bo" - item_state = "tesh_beltcloak_bo" species_restricted = list(SPECIES_TESHARI) body_parts_covered = UPPER_TORSO|ARMS /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_orange name = "black belted cloak (orange)" icon_state = "tesh_beltcloak_bo" - item_state = "tesh_beltcloak_bo" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_grey name = "black belted cloak" icon_state = "tesh_beltcloak_bg" - item_state = "tesh_beltcloak_bg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_midgrey name = "black belted cloak (medium grey)" icon_state = "tesh_beltcloak_bmg" - item_state = "tesh_beltcloak_bmg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_lightgrey name = "black belted cloak (light grey)" icon_state = "tesh_beltcloak_blg" - item_state = "tesh_beltcloak_blg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_white name = "black belted cloak (white)" icon_state = "tesh_beltcloak_bw" - item_state = "tesh_beltcloak_bw" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_red name = "black belted cloak (red)" icon_state = "tesh_beltcloak_br" - item_state = "tesh_beltcloak_br" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black name = "black simple belted cloak" icon_state = "tesh_beltcloak_bn" - item_state = "tesh_beltcloak_bn" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_yellow name = "black belted cloak (yellow)" icon_state = "tesh_beltcloak_by" - item_state = "tesh_beltcloak_by" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_green name = "black belted cloak (green)" icon_state = "tesh_beltcloak_bgr" - item_state = "tesh_beltcloak_bgr" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_blue name = "black belted cloak (blue)" icon_state = "tesh_beltcloak_bbl" - item_state = "tesh_beltcloak_bbl" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_purple name = "black belted cloak (purple)" icon_state = "tesh_beltcloak_bp" - item_state = "tesh_beltcloak_bp" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_pink name = "black belted cloak (pink)" icon_state = "tesh_beltcloak_bpi" - item_state = "tesh_beltcloak_bpi" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/black_brown name = "black belted cloak (brown)" icon_state = "tesh_beltcloak_bbr" - item_state = "tesh_beltcloak_bbr" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/orange_grey name = "orange belted cloak" icon_state = "tesh_beltcloak_og" - item_state = "tesh_beltcloak_og" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/rainbow name = "rainbow belted cloak" icon_state = "tesh_beltcloak_rainbow" - item_state = "tesh_beltcloak_rainbow" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/lightgrey_grey name = "light grey belted cloak" icon_state = "tesh_beltcloak_lgg" - item_state = "tesh_beltcloak_lgg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/white_grey name = "white belted cloak" icon_state = "tesh_beltcloak_wg" - item_state = "tesh_beltcloak_wg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/red_grey name = "red belted cloak" icon_state = "tesh_beltcloak_rg" - item_state = "tesh_beltcloak_rg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/orange name = "orange simple belted cloak" icon_state = "tesh_beltcloak_on" - item_state = "tesh_beltcloak_on" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/yellow_grey name = "yellow belted cloak" icon_state = "tesh_beltcloak_yg" - item_state = "tesh_beltcloak_yg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/green_grey name = "green belted cloak" icon_state = "tesh_beltcloak_gg" - item_state = "tesh_beltcloak_gg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/blue_grey name = "blue belted cloak" icon_state = "tesh_beltcloak_blug" - item_state = "tesh_beltcloak_blug" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/purple_grey name = "purple belted cloak" icon_state = "tesh_beltcloak_pg" - item_state = "tesh_beltcloak_pg" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/pink_grey name = "pink belted cloak" icon_state = "tesh_beltcloak_pig" - item_state = "tesh_beltcloak_pig" /obj/item/clothing/suit/storage/teshari/beltcloak/standard/brown_grey name = "brown belted cloak" icon_state = "tesh_beltcloak_brg" - item_state = "tesh_beltcloak_brg" //Belted job cloaks -/obj/item/clothing/suit/storage/teshari/beltcloak/jobs - icon = 'icons/mob/species/teshari/deptcloak.dmi' - icon_override = 'icons/mob/species/teshari/deptcloak.dmi' - /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/cargo name = "cargo belted cloak" desc = "A soft Teshari cloak made for the Cargo department" icon_state = "tesh_beltcloak_car" - item_state = "tesh_beltcloak_car" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/mining name = "mining belted cloak" desc = "A soft Teshari cloak made for Mining" icon_state = "tesh_beltcloak_mine" - item_state = "tesh_beltcloak_mine" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/command name = "command belted cloak" desc = "A soft Teshari cloak made for the Command department" icon_state = "tesh_beltcloak_comm" - item_state = "tesh_beltcloak_comm" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/ce name = "chief engineer belted cloak" desc = "A soft Teshari cloak made the Chief Engineer" icon_state = "tesh_beltcloak_ce" - item_state = "tesh_beltcloak_ce" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/engineer name = "engineering belted cloak" desc = "A soft Teshari cloak made for the Engineering department" icon_state = "tesh_beltcloak_engie" - item_state = "tesh_beltcloak_engie" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/atmos name = "atmospherics belted cloak" desc = "A soft Teshari cloak made for the Atmospheric Technician" icon_state = "tesh_beltcloak_atmos" - item_state = "tesh_beltcloak_atmos" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/cmo name = "chief medical officer belted cloak" desc = "A soft Teshari cloak made the Chief Medical Officer" icon_state = "tesh_beltcloak_cmo" - item_state = "tesh_beltcloak_cmo" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/medical name = "medical belted cloak" desc = "A soft Teshari cloak made for the Medical department" icon_state = "tesh_beltcloak_doc" - item_state = "tesh_beltcloak_doc" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/chemistry name = "chemist belted cloak" desc = "A soft Teshari cloak made for the Chemist" - icon_state = "tesh_beltcloak_vrem" - item_state = "tesh_beltcloak_vrem" + icon_state = "tesh_beltcloak_chem" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/viro name = "virologist belted cloak" desc = "A soft Teshari cloak made for the Virologist" icon_state = "tesh_beltcloak_viro" - item_state = "tesh_beltcloak_viro" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/para name = "paramedic belted cloak" desc = "A soft Teshari cloak made for the Paramedic" icon_state = "tesh_beltcloak_para" - item_state = "tesh_beltcloak_para" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/sci name = "scientist belted cloak" desc = "A soft Teshari cloak made for the Science department" icon_state = "tesh_beltcloak_sci" - item_state = "tesh_beltcloak_sci" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/robo name = "roboticist belted cloak" desc = "A soft Teshari cloak made for the Roboticist" icon_state = "tesh_beltcloak_robo" - item_state = "tesh_beltcloak_robo" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/sec name = "security belted cloak" desc = "A soft Teshari cloak made for the Security department" icon_state = "tesh_beltcloak_sec" - item_state = "tesh_beltcloak_sec" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/qm name = "quartermaster belted cloak" desc = "A soft Teshari cloak made for the Quartermaster" icon_state = "tesh_beltcloak_qm" - item_state = "tesh_beltcloak_qm" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/service name = "service belted cloak" desc = "A soft Teshari cloak made for the Service department" icon_state = "tesh_beltcloak_serv" - item_state = "tesh_beltcloak_serv" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/iaa name = "internal affairs belted cloak" desc = "A soft Teshari cloak made for the Internal Affairs Agent" icon_state = "tesh_beltcloak_iaa" - item_state = "tesh_beltcloak_iaa" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/wrdn name = "warden belted cloak" desc = "A soft Teshari cloak made for the Warden" icon_state = "tesh_beltcloak_wrdn" - item_state = "tesh_beltcloak_wrdn" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/hos name = "security chief belted cloak" desc = "A soft Teshari cloak made for the Head of Security" icon_state = "tesh_beltcloak_hos" - item_state = "tesh_beltcloak_hos" /obj/item/clothing/suit/storage/teshari/beltcloak/jobs/jani name = "janitor belted cloak" desc = "A soft Teshari cloak made for the Janitor" icon_state = "tesh_beltcloak_jani" - item_state = "tesh_beltcloak_jani" diff --git a/code/modules/clothing/suits/armor_vr.dm b/code/modules/clothing/suits/armor_vr.dm index ba986f56fcb..c4a515d4f6a 100644 --- a/code/modules/clothing/suits/armor_vr.dm +++ b/code/modules/clothing/suits/armor_vr.dm @@ -34,12 +34,6 @@ /obj/item/clothing/suit/storage/vest/hos armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0) -/obj/item/clothing/suit/storage/vest/hoscoat/jensen - name = "armored trenchcoat" - desc = "A trenchcoat augmented with a special alloy for some protection and style." - icon_state = "hostrench" - flags_inv = HIDEHOLSTER - // Override Polaris's "confederate" naming convention. I hate it. /obj/item/clothing/suit/storage/vest/solgov name = "peacekeeper armored vest" @@ -61,16 +55,16 @@ name = "marine body armor" desc = "When I joined the Corps, we didn't have any fancy-schmanzy armor. We had sticks! Two sticks, and a rock for the whole platoon-and we had to share the rock!" icon_state = "unsc_armor" - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' body_parts_covered = UPPER_TORSO|LOWER_TORSO // ToDo: Break up the armor into smaller bits. /obj/item/clothing/suit/armor/combat/imperial name = "imperial soldier armor" desc = "Made out of an especially light metal, it lets you conquer in style." icon_state = "ge_armor" - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/suit/armor/combat/imperial/centurion @@ -79,12 +73,12 @@ icon_state = "ge_armorcent" /obj/item/clothing/suit/storage/vest/wardencoat/alt2 - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' /obj/item/clothing/suit/storage/vest/hoscoat/jensen/alt - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' // Armor Versions Here /obj/item/clothing/suit/armor/combat/crusader @@ -124,3 +118,24 @@ /obj/item/clothing/suit/armor/pcarrier/explorer/deluxe name = "modular explorer suit" desc = "A modification of the explorer suit with a modular armor system. Requires you to insert armor plates." + +// 'Crusader' armor +/obj/item/clothing/suit/armor/crusader + name = "crusader armor" + desc = "God will protect those who defend his faith." + + armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 25, "bomb" = 30, "bio" = 0, "rad" = 0) + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "crusader_suit" + +/obj/item/clothing/head/helmet/crusader + name = "crusader helmet" + desc = "God will protect those who defend his faith." + + armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 25, "bomb" = 30, "bio" = 0, "rad" = 0) + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "crusader_head" diff --git a/code/modules/clothing/suits/hooded_vr.dm b/code/modules/clothing/suits/hooded_vr.dm index 8d0b6a9c38b..cb279936aa4 100644 --- a/code/modules/clothing/suits/hooded_vr.dm +++ b/code/modules/clothing/suits/hooded_vr.dm @@ -5,8 +5,8 @@ /obj/item/clothing/suit/storage/hooded/techpriest name = "tech priest robe" desc = "Praise be to the Omnissiah." - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' icon_state = "techpriest" hoodtype = /obj/item/clothing/head/hood/techpriest armor = list(melee = 20, bullet = 10, laser = 10, energy = 10, bomb = 25, bio = 50, rad = 25) @@ -71,10 +71,10 @@ // Talon Winter Coat /obj/item/clothing/suit/storage/hooded/wintercoat/talon - name = "ITV winter coat" - desc = "A cozy winter coat, covered in thick fur and baring the colors of ITV." - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + name = "Talon winter coat" + desc = "A cozy winter coat, covered in thick fur and baring the colors of ITV Talon." + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' icon_state = "taloncoat" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) hoodtype = /obj/item/clothing/head/hood/winter/talon diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 5d5f1680963..1119079e2af 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -242,7 +242,7 @@ /obj/item/clothing/suit/suspenders name = "suspenders" desc = "They suspend the illusion of the mime's play." - icon = 'icons/obj/clothing/belts.dmi' + icon = 'icons/inventory/belt/item.dmi' icon_state = "suspenders" blood_overlay_type = "armor" //it's the less thing that I can put here body_parts_covered = 0 diff --git a/code/modules/clothing/suits/jobs_vr.dm b/code/modules/clothing/suits/jobs_vr.dm new file mode 100644 index 00000000000..9b34c186376 --- /dev/null +++ b/code/modules/clothing/suits/jobs_vr.dm @@ -0,0 +1,18 @@ +// Cargotech jacket +/obj/item/clothing/suit/storage/cargo + name = "cargo jacket" + desc = "A jacket typically assigned to cargo technicians when it's chilly in cargonia." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "cargo_jacket" + +// QM Coat +/obj/item/clothing/suit/storage/qm + name = "\improper QM coat" + desc = "A coat typically assigned to quartermasters when it's chilly in cargonia." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "qm_coat" + \ No newline at end of file diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 2560692656a..71cd7e81a67 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -8,7 +8,6 @@ flags_inv = HIDEHOLSTER allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) - index = 1 /obj/item/clothing/suit/storage/toggle/labcoat/red name = "red labcoat" @@ -110,4 +109,3 @@ name = "golden plague doctor suit" desc = "If it worked then, it works now. This classic design comes in gold." icon_state = "plaguedoctor2" - index = 1 diff --git a/code/modules/clothing/suits/labcoat_vr.dm b/code/modules/clothing/suits/labcoat_vr.dm new file mode 100644 index 00000000000..4f82afd2e32 --- /dev/null +++ b/code/modules/clothing/suits/labcoat_vr.dm @@ -0,0 +1,27 @@ +// 'Modern' labcoats +/obj/item/clothing/suit/storage/toggle/labcoat/modern + name = "modern labcoat" + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "labcoat_mod" + +/obj/item/clothing/suit/storage/toggle/labcoat/modern/cmo + name = "modern cmo's labcoat" + desc = "A suit that protects against minor chemical spills. This one has distinct markings on the arms." + icon_state = "labcoat_cmo_mod" + +// 'Modern' biosuits +/obj/item/clothing/suit/bio_suit/modern + name = "modern bio suit" + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "bio_mod" + +/obj/item/clothing/head/bio_hood/modern + name = "modern bio hood" + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "bio_mod" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index eb75c00eef6..4d6fa9e5cf8 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -43,7 +43,7 @@ /obj/item/clothing/suit/poncho name = "poncho" desc = "A simple, comfortable poncho." - icon = 'icons/mob/suit.dmi' + icon = 'icons/inventory/suit/mob.dmi' icon_state = "poncho" item_state = "poncho" item_icons = list( @@ -105,9 +105,7 @@ /obj/item/clothing/suit/syndicatefake name = "red space suit replica" - icon = 'icons/obj/clothing/spacesuits.dmi' icon_state = "syndicate" - default_worn_icon = 'icons/mob/spacesuit.dmi' desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" w_class = ITEMSIZE_NORMAL allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/toy) @@ -430,7 +428,6 @@ icon_state = "militaryjacket_tan" item_state_slots = list(slot_r_hand_str = "suit_orange", slot_l_hand_str = "suit_orange") flags_inv = HIDEHOLSTER - index = 1 /obj/item/clothing/suit/storage/miljacket/grey name = "grey military jacket" @@ -438,7 +435,6 @@ icon_state = "militaryjacket_grey" item_state_slots = list(slot_r_hand_str = "suit_grey", slot_l_hand_str = "suit_grey") flags_inv = HIDEHOLSTER - index = 1 /obj/item/clothing/suit/storage/miljacket/navy name = "navy military jacket" @@ -446,7 +442,6 @@ icon_state = "militaryjacket_navy" item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy") flags_inv = HIDEHOLSTER - index = 1 /obj/item/clothing/suit/storage/miljacket/black name = "black military jacket" @@ -454,7 +449,6 @@ icon_state = "militaryjacket_black" item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") flags_inv = HIDEHOLSTER - index = 1 /obj/item/clothing/suit/storage/miljacket/white name = "white military jacket" @@ -462,7 +456,6 @@ icon_state = "militaryjacket_white" item_state_slots = list(slot_r_hand_str = "med_dep_jacket", slot_l_hand_str = "med_dep_jacket") flags_inv = HIDEHOLSTER - index = 1 /obj/item/clothing/suit/storage/toggle/bomber name = "bomber jacket" diff --git a/code/modules/clothing/suits/miscellaneous_vr.dm b/code/modules/clothing/suits/miscellaneous_vr.dm index 9ff69f6c265..26554967a4d 100644 --- a/code/modules/clothing/suits/miscellaneous_vr.dm +++ b/code/modules/clothing/suits/miscellaneous_vr.dm @@ -4,16 +4,16 @@ /obj/item/clothing/suit/chiton name = "chiton" desc = "A traditional piece of clothing from Greece." - icon = 'icons/obj/clothing/suits_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' icon_state = "chiton" - icon_override = 'icons/mob/suit_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' /obj/item/clothing/suit/oversize name = "oversized t-shirt" desc = "This ain't your daddy's shirt! Well, it might be..." - icon = 'icons/obj/clothing/suits_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' icon_state = "oversize" - icon_override = 'icons/mob/suit_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' //HERE BE TAUR RELATED CLOTHES @@ -88,24 +88,49 @@ /obj/item/clothing/suit/storage/det_trench/alt name = "sleek modern coat" desc = "A sleek overcoat made of neo-laminated fabric. Has a reasonably sized pocket on the inside." - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' icon_state = "cyberpunksleek" - item_state = "cyberpunksleek" /obj/item/clothing/suit/storage/det_trench/alt2 name = "sleek modern coat (long)" desc = "A sleek long overcoat made of neo-laminated fabric. Has a reasonably sized pocket on the inside." - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' icon_state = "cyberpunksleek_long" - item_state = "cyberpunksleek_long" + +/obj/item/clothing/suit/storage/det_trench/alt/black + icon_state = "cyberpunksleek_black" + +/obj/item/clothing/suit/storage/det_trench/alt2/black + icon_state = "cyberpunksleek_long_black" //Talon Hoodie /obj/item/clothing/suit/storage/toggle/hoodie/talon - name = "ITV hoodie" - desc = "A warm, blue sweatshirt bearing ITV markings." - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + name = "Talon hoodie" + desc = "A warm, blue sweatshirt bearing ITV Talon markings." + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' icon_state = "talonhoodie" - item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue") \ No newline at end of file + item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue") + +// Bladerunner coat +/obj/item/clothing/suit/storage/bladerunner + name = "leather coat" + desc = "An old leather coat. Has probably seen things you wouldn't believe." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "bladerunner_coat" + +// Cyberpunk 'orange' vest +/obj/item/clothing/suit/cyberpunk + name = "cyberpunk vest" + desc = "A red vest with golden streaks. It's made out of tough materials, and can protect fairly well against bullets. Wake the fuck up, Samurai." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "cyberpunk" + armor = list("melee" = 10, "bullet" = 20, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) diff --git a/code/modules/clothing/suits/solgov.dm b/code/modules/clothing/suits/solgov.dm index 73463c002cb..a20ce165ee4 100644 --- a/code/modules/clothing/suits/solgov.dm +++ b/code/modules/clothing/suits/solgov.dm @@ -1,8 +1,8 @@ //SolGov Uniform Suits /obj/item/clothing/suit/storage/solgov name = "master solgov jacket" - icon = 'icons/obj/clothing/suits_solgov.dmi' - icon_override = 'icons/mob/suit_solgov.dmi' + icon = 'icons/inventory/suit/item.dmi' + icon_override = 'icons/inventory/suit/mob.dmi' //Service @@ -262,8 +262,8 @@ desc = "A uniform dress jacket, fancy." icon_state = "blackdress" item_state = "blackdress" - icon = 'icons/obj/clothing/suits_solgov.dmi' - icon_override = 'icons/mob/suit_solgov.dmi' + icon = 'icons/inventory/suit/item.dmi' + icon_override = 'icons/inventory/suit/mob.dmi' body_parts_covered = UPPER_TORSO|ARMS armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 @@ -293,8 +293,8 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/solgov name = "\improper SifGuard winter coat" icon_state = "coatec" - icon = 'icons/obj/clothing/suits_solgov.dmi' - icon_override = 'icons/mob/suit_solgov.dmi' + icon = 'icons/inventory/suit/item.dmi' + icon_override = 'icons/inventory/suit/mob.dmi' armor = list(melee = 25, bullet = 10, laser = 5, energy = 10, bomb = 20, bio = 0, rad = 10) valid_accessory_slots = (ACCESSORY_SLOT_INSIGNIA|ACCESSORY_SLOT_RANK) @@ -344,8 +344,8 @@ desc = "An Stealth Assault Enterprises . Black and undecorated." icon_state = "terranservice" item_state = "terranservice" - icon = 'icons/obj/clothing/suits_solgov.dmi' - icon_override = 'icons/mob/suit_solgov.dmi' + icon = 'icons/inventory/suit/item.dmi' + icon_override = 'icons/inventory/suit/mob.dmi' /obj/item/clothing/suit/storage/saare/service/command name = "SAARE command coat" @@ -360,8 +360,8 @@ desc = "A Stealth Assault Enterprises uniform dress jacket, fancy." icon_state = "terrandress" item_state = "terrandress" - icon = 'icons/obj/clothing/suits_solgov.dmi' - icon_override = 'icons/mob/suit_solgov.dmi' + icon = 'icons/inventory/suit/item.dmi' + icon_override = 'icons/inventory/suit/mob.dmi' body_parts_covered = UPPER_TORSO|ARMS armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 0dde614e048..fb1494f4bc2 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -103,15 +103,15 @@ /obj/item/clothing/suit/radiation/teshari name = "Small radiation suit" desc = "A specialist suit that protects against radiation, designed specifically for use by Teshari. Made to order by Aether." - icon = 'icons/obj/clothing/species/teshari/suits.dmi' - icon_override = 'icons/mob/species/teshari/suit.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' + icon_override = 'icons/inventory/suit/mob_teshari.dmi' icon_state = "rad_fitted" species_restricted = list(SPECIES_TESHARI) /obj/item/clothing/head/radiation/teshari name = "Small radiation hood" desc = "A specialist hood with radiation protective properties, designed specifically for use by Teshari. Made to order by Aether." - icon = 'icons/obj/clothing/species/teshari/hats.dmi' - icon_override = 'icons/mob/species/teshari/head.dmi' + icon = 'icons/inventory/suit/item_teshari.dmi' + icon_override = 'icons/inventory/head/mob_teshari.dmi' icon_state = "rad_fitted" species_restricted = list(SPECIES_TESHARI) \ No newline at end of file diff --git a/code/modules/clothing/suits/utility_vr.dm b/code/modules/clothing/suits/utility_vr.dm index 529547469b0..19475fbe8cc 100644 --- a/code/modules/clothing/suits/utility_vr.dm +++ b/code/modules/clothing/suits/utility_vr.dm @@ -5,8 +5,8 @@ /obj/item/clothing/suit/storage/toggle/paramedic name = "paramedic vest" desc = "A vest that protects against minor chemical spills." - icon = 'icons/obj/clothing/suits_vr.dmi' - icon_override = 'icons/mob/suit_vr.dmi' + icon = 'icons/inventory/suit/item_vr.dmi' + icon_override = 'icons/inventory/suit/mob_vr.dmi' icon_state = "paramedic-vest" item_state = "paramedic-vest" item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat") @@ -15,18 +15,17 @@ flags_inv = HIDEHOLSTER allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) - index = 1 /obj/item/clothing/head/radiation sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/helmet_vr.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/head.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_vr_teshari.dmi', + SPECIES_VOX = 'icons/inventory/head/mob_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/head/mob_vr_werebeast.dmi' ) /obj/item/clothing/suit/radiation sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/suit_vr.dmi', - SPECIES_VOX = 'icons/mob/species/vox/suit.dmi', - SPECIES_WEREBEAST = 'icons/mob/species/werebeast/suit.dmi' + SPECIES_TESHARI = 'icons/inventory/suit/mob_vr_teshari.dmi', + SPECIES_VOX = 'icons/inventory/suit/mob_vox.dmi', + SPECIES_WEREBEAST = 'icons/inventory/suit/mob_vr_werebeast.dmi' ) diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index d9468d61184..2157f9ceec9 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -1,7 +1,7 @@ /obj/item/clothing/accessory name = "tie" desc = "A neosilk clip-on tie." - icon = 'icons/obj/clothing/ties.dmi' + icon = 'icons/inventory/accessory/item.dmi' icon_state = "bluetie" item_state_slots = list(slot_r_hand_str = "", slot_l_hand_str = "") appearance_flags = RESET_COLOR // Stops has_suit's color from being multiplied onto the accessory @@ -15,7 +15,7 @@ var/concealed_holster = 0 var/mob/living/carbon/human/wearer = null // To check if the wearer changes, so species spritesheets change properly. var/list/on_rolled = list() // Used when jumpsuit sleevels are rolled ("rolled" entry) or it's rolled down ("down"). Set to "none" to hide in those states. - sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/ties.dmi') //Teshari can into webbing, too! + sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/accessory/mob_teshari.dmi') //Teshari can into webbing, too! drop_sound = 'sound/items/drop/accessory.ogg' pickup_sound = 'sound/items/pickup/accessory.ogg' @@ -57,7 +57,7 @@ if("[tmp_icon_state]_mob" in cached_icon_states(icon_override)) tmp_icon_state = "[tmp_icon_state]_mob" mob_overlay = image("icon" = icon_override, "icon_state" = "[tmp_icon_state]") - else if(wearer && sprite_sheets[wearer.species.get_bodytype(wearer)]) //Teshari can finally into webbing, too! + else if(wearer && LAZYACCESS(sprite_sheets, wearer.species.get_bodytype(wearer))) //Teshari can finally into webbing, too! mob_overlay = image("icon" = sprite_sheets[wearer.species.get_bodytype(wearer)], "icon_state" = "[tmp_icon_state]") else mob_overlay = image("icon" = INV_ACCESSORIES_DEF_ICON, "icon_state" = "[tmp_icon_state]") @@ -345,7 +345,7 @@ /obj/item/clothing/accessory/bracelet name = "bracelet" desc = "A simple silver bracelet with a clasp." - icon = 'icons/obj/clothing/ties.dmi' + icon = 'icons/inventory/accessory/item.dmi' icon_state = "bracelet" w_class = ITEMSIZE_TINY slot_flags = SLOT_TIE diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm index b64ad331fa7..a35580499db 100644 --- a/code/modules/clothing/under/accessories/accessory_vr.dm +++ b/code/modules/clothing/under/accessories/accessory_vr.dm @@ -6,15 +6,15 @@ name = "plain choker" slot_flags = SLOT_TIE | SLOT_OCLOTHING desc = "A simple, plain choker. Or maybe it's a collar? Use in-hand to customize it." - icon = 'icons/obj/clothing/ties_vr.dmi' - icon_override = 'icons/mob/ties_vr.dmi' + icon = 'icons/inventory/accessory/item_vr.dmi' + icon_override = 'icons/inventory/accessory/mob_vr.dmi' icon_state = "choker_cst" item_state = "choker_cst" overlay_state = "choker_cst" var/customized = 0 var/icon_previous_override sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/ties_vr.dmi' + SPECIES_TESHARI = 'icons/inventory/accessory/mob_vr_teshari.dmi' ) //Forces different sprite sheet on equip @@ -58,14 +58,14 @@ /obj/item/clothing/accessory/collar slot_flags = SLOT_TIE | SLOT_OCLOTHING - icon = 'icons/obj/clothing/ties_vr.dmi' - icon_override = 'icons/mob/ties_vr.dmi' + icon = 'icons/inventory/accessory/item_vr.dmi' + icon_override = 'icons/inventory/accessory/mob_vr.dmi' icon_state = "collar_blk" var/writtenon = 0 var/icon_previous_override sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/ties_vr.dmi' - ) + SPECIES_TESHARI = 'icons/inventory/accessory/mob_vr_teshari.dmi' + ) //Forces different sprite sheet on equip /obj/item/clothing/accessory/collar/New() @@ -360,18 +360,18 @@ desc = "A silver medal awarded to a group which has demonstrated exceptional teamwork to achieve a notable feat." /obj/item/clothing/accessory/medal/silver/unity/tabiranth - icon = 'icons/obj/clothing/ties_vr.dmi' - icon_override = 'icons/mob/ties_vr.dmi' + icon = 'icons/inventory/accessory/item_vr.dmi' + icon_override = 'icons/inventory/accessory/mob_vr.dmi' icon_state = "silverthree" item_state = "silverthree" overlay_state = "silverthree" desc = "A silver medal awarded to a group which has demonstrated exceptional teamwork to achieve a notable feat. This one has three bronze service stars, denoting that it has been awarded four times." /obj/item/clothing/accessory/talon - name = "ITV pin" - desc = "A collectable enamel pin that resembles ITV's company logo." - icon = 'icons/obj/clothing/ties_vr.dmi' - icon_override = 'icons/mob/ties_vr.dmi' + name = "Talon pin" + desc = "A collectable enamel pin that resembles ITV Talon's ship logo." + icon = 'icons/inventory/accessory/item_vr.dmi' + icon_override = 'icons/inventory/accessory/mob_vr.dmi' icon_state = "talon_pin" item_state = "talonpin" overlay_state = "talonpin" \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/armor.dm b/code/modules/clothing/under/accessories/armor.dm index 79a603b9aab..b4e748713fd 100644 --- a/code/modules/clothing/under/accessories/armor.dm +++ b/code/modules/clothing/under/accessories/armor.dm @@ -397,7 +397,7 @@ /obj/item/clothing/accessory/armor/helmcover name = "helmet cover" desc = "A fabric cover for armored helmets." - icon_override = 'icons/mob/ties.dmi' + icon_override = 'icons/inventory/accessory/mob.dmi' icon = 'icons/obj/clothing/modular_armor.dmi' icon_state = "helmcover_blue" slot = ACCESSORY_SLOT_HELM_C diff --git a/code/modules/clothing/under/accessories/clothing.dm b/code/modules/clothing/under/accessories/clothing.dm index 04baf0a2695..3582d8a070e 100644 --- a/code/modules/clothing/under/accessories/clothing.dm +++ b/code/modules/clothing/under/accessories/clothing.dm @@ -48,7 +48,7 @@ desc = "A simple, comfortable poncho." icon_state = "classicponcho" item_state = "classicponcho" - icon_override = 'icons/mob/ties.dmi' + icon_override = 'icons/inventory/accessory/mob.dmi' var/fire_resist = T0C+100 allowed = list(/obj/item/weapon/tank/emergency/oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) @@ -58,7 +58,7 @@ w_class = ITEMSIZE_NORMAL slot = ACCESSORY_SLOT_OVER sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/suit.dmi' + SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi' ) /obj/item/clothing/accessory/poncho/equipped() //Solution for race-specific sprites for an accessory which is also a suit. Suit icons break if you don't use icon override which then also overrides race-specific sprites. @@ -66,9 +66,9 @@ var/mob/living/carbon/human/H = loc if(istype(H) && H.wear_suit == src) if(H.species.name == SPECIES_TESHARI) - icon_override = 'icons/mob/species/teshari/suit.dmi' + icon_override = 'icons/inventory/suit/mob_teshari.dmi' else - icon_override = 'icons/mob/ties.dmi' + icon_override = 'icons/inventory/accessory/mob.dmi' update_clothing_icon() /obj/item/clothing/accessory/poncho/dropped() //Resets the override to prevent the wrong .dmi from being used because equipped only triggers when wearing ponchos as suits. @@ -262,7 +262,7 @@ desc = "For some classy, murderous fun." icon_state = "vest" item_state = "vest" - icon_override = 'icons/mob/ties.dmi' + icon_override = 'icons/inventory/accessory/mob.dmi' item_state_slots = list(slot_r_hand_str = "wcoat", slot_l_hand_str = "wcoat") allowed = list(/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) @@ -313,7 +313,7 @@ /obj/item/clothing/accessory/sweater name = "sweater" desc = "A warm knit sweater." - icon_override = 'icons/mob/ties.dmi' + icon_override = 'icons/inventory/accessory/mob.dmi' icon_state = "sweater" slot_flags = SLOT_OCLOTHING | SLOT_TIE body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS diff --git a/code/modules/clothing/under/accessories/holster_vr.dm b/code/modules/clothing/under/accessories/holster_vr.dm index f99e798faa8..8cd7681dd9c 100644 --- a/code/modules/clothing/under/accessories/holster_vr.dm +++ b/code/modules/clothing/under/accessories/holster_vr.dm @@ -6,11 +6,11 @@ /obj/item/clothing/accessory/holster/machete/rapier name = "rapier sheath" desc = "A beautiful red sheath, probably for a beautiful blade." - icon = 'icons/obj/clothing/ties_vr.dmi' + icon = 'icons/inventory/accessory/item_vr.dmi' icon_state = "sheath" slot_flags = SLOT_BELT|ACCESSORY_SLOT_WEAPON var/has_full_icon = 1 - icon_override = 'icons/mob/ties_vr.dmi' + icon_override = 'icons/inventory/accessory/mob_vr.dmi' overlay_state = "sheath" can_hold = list(/obj/item/weapon/melee/rapier) diff --git a/code/modules/clothing/under/imperial_vr.dm b/code/modules/clothing/under/imperial_vr.dm index 9cffdb56fd4..855cd0b50cc 100644 --- a/code/modules/clothing/under/imperial_vr.dm +++ b/code/modules/clothing/under/imperial_vr.dm @@ -1,6 +1,6 @@ /obj/item/clothing/under/imperial desc = "imperial military jumpsuit" - icon = 'icons/obj/clothing/uniforms_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + icon = 'icons/inventory/uniform/item_vr.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "crimson" item_state = "crimson" \ No newline at end of file diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index f77ec96a541..87346c67419 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -122,6 +122,15 @@ rolled_sleeves = -1 /obj/item/clothing/under/rank/medical/paramedic + name = "paramedic uniform" + desc = "It's made of a special fiber that provides minor protection against biohazards. This one is the color scheme that designates a rapid first responder." + icon_state = "paramedic" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS + rolled_down = -1 + rolled_sleeves = -1 + +/obj/item/clothing/under/rank/medical/paramedic_alt name = "short sleeve medical jumpsuit" desc = "It's made of a special fiber that provides minor protection against biohazards. This one has a cross on the chest denoting that the wearer is trained medical personnel." icon_state = "medical_short" @@ -164,7 +173,6 @@ desc = "It's made of a special fiber that provides minor protection against biohazards" icon_state = "scrubs" item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") - index = 1 /obj/item/clothing/under/rank/psych desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 80eba8000d0..0f2b43c3801 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -357,7 +357,6 @@ name = "maid costume" desc = "Maid in China." icon_state = "maid" - index = 1 /obj/item/clothing/under/dress/maid/janitor name = "maid uniform" @@ -539,38 +538,32 @@ name = "revealing dress" desc = "A very revealing black and blue dress. Is this work appropriate?" icon_state = "revealingdress" - index = 1 /obj/item/clothing/under/dress/gothic name = "gothic dress" desc = "A black dress with a sheer mesh over it, tastefully old school goth." icon_state = "gothic" - index = 1 /obj/item/clothing/under/dress/formalred name = "formal red dress" desc = "A very formal red dress, for those fancy galas." icon_state = "formalred" flags_inv = HIDESHOES - index = 1 /obj/item/clothing/under/dress/pentagram name = "pentagram dress" desc = "A black dress with straps over the chest in the shape of a pentagram." icon_state = "pentagram" - index = 1 /obj/item/clothing/under/dress/yellowswoop name = "yellow swooped dress" desc = "A yellow dress that swoops to the side." icon_state = "yellowswoop" - index = 1 /obj/item/clothing/under/dress/countess name = "countess dress" desc = "A red and black dress fit for a countess." icon_state = "countess" - index = 1 /* * wedding stuff @@ -614,13 +607,11 @@ desc = "A lovely floofed out dress for formal occasions. Comes in many colors!" icon_state = "floofdress" flags_inv = HIDESHOES - index = 1 /obj/item/clothing/under/wedding/whitegown name = "white gown" desc = "A elegant white gown with accents of sheer mesh." icon_state = "whitegown" - index = 1 /* Uniforms and such @@ -643,48 +634,41 @@ Uniforms and such desc = "A cute pink sundress." icon_state = "pinksun" body_parts_covered = UPPER_TORSO|LOWER_TORSO - index = 1 /obj/item/clothing/under/dress/sundress_white name = "white sundress" desc = "A white sundress, it's short." icon_state = "whitesun" body_parts_covered = UPPER_TORSO|LOWER_TORSO - index = 1 /obj/item/clothing/under/dress/sundress_pinkbow name = "bowed pink sundress" desc = "A cute pink sundress with a bow." icon_state = "bowsun" body_parts_covered = UPPER_TORSO|LOWER_TORSO - index = 1 /obj/item/clothing/under/dress/sundress_blue name = "long blue sundress" desc = "A long blue sun dress with white frills towards the bottom." icon_state = "bluesun" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS - index = 1 /obj/item/clothing/under/dress/sundress_pinkshort name = "short pink sundress" desc = "A very short pink sundress, it's more like a chemise." icon_state = "shortpink" body_parts_covered = UPPER_TORSO|LOWER_TORSO - index = 1 /obj/item/clothing/under/dress/twopiece name = "two-piece dress" desc = "A fancy two-piece dress, the pieces are sewn together." icon_state = "twopiece" body_parts_covered = UPPER_TORSO|LOWER_TORSO - index = 1 /obj/item/clothing/under/dress/gothic2 name = "lacey gothic dress" desc = "An elegant gothic dress with lace decorations." icon_state = "gothic2" - index = 1 /obj/item/clothing/under/captainformal name = "site manager's formal uniform" @@ -869,43 +853,36 @@ Uniforms and such name = "ripped punk jeans" desc = "Black ripped jeans and a fishnet top. How punk." icon_state = "rippedpunk" - index = 1 /obj/item/clothing/under/greenasym name = "green asymmetrical jumpsuit" desc = "A green futuristic uniform with asymmetrical pants. Trendy!" icon_state = "greenasym" - index = 1 /obj/item/clothing/under/cyberpunkharness name = "cyberpunk strapped harness" desc = "A cyberpunk styled harness and pants. Perfect for your dystopian future." icon_state = "cyberhell" - index = 1 /obj/item/clothing/under/blackngold name = "black and gold gown" desc = "A black and gold gown. You get the impression this is typically worn for religious purposes." icon_state = "blackngold" - index = 1 /obj/item/clothing/under/sheerblue name = "sheer blue dress" desc = "An entirely sheer blue dress. Best worn with something underneath!" icon_state = "sheerblue" - index = 1 /obj/item/clothing/under/disheveled name = "disheveled suit" desc = "What might pass as well maintained formal attire. If you're blind." icon_state = "disheveled" - index = 1 /obj/item/clothing/under/flower_skirt name = "flower skirt" desc = "A flowery skirt that comes in a variety of colors." icon_state = "flowerskirt" - index = 1 /* * swimsuit diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index a8edae23dee..d8d55aed123 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -11,15 +11,15 @@ body_parts_covered = 0 equip_sound = null - sprite_sheets = list() + sprite_sheets = null item_state = "golem" //This is dumb and hacky but was here when I got here. worn_state = "golem" //It's basically just a coincidentally black iconstate in the file. /obj/item/clothing/under/hyperfiber name = "HYPER jumpsuit" - icon = 'icons/obj/clothing/uniforms_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + icon = 'icons/inventory/uniform/item_vr.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "hyper" item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_uniforms.dmi', @@ -122,8 +122,8 @@ /obj/item/clothing/under/dress/qipao name = "qipao" desc = "A type of feminine body-hugging dress with distinctive Chinese features of Manchu origin." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + icon = 'icons/inventory/uniform/item_vr.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "qipao" item_state = "qipao" @@ -140,9 +140,8 @@ /obj/item/clothing/under/pizzaguy name = "pizza delivery uniform" desc = "A dedicated outfit for pizza delivery people, one of most dangerous occupations around these parts. Can be rolled up for extra show of skin." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - index = "vr" - rolled_down_icon = 'icons/mob/uniform_rolled_down_vr.dmi' + icon = 'icons/inventory/uniform/item_vr.dmi' + rolled_down_icon = 'icons/inventory/uniform/mob_vr_rolled_down.dmi' icon_state = "pizzadelivery" item_state = "pizzadelivery" rolled_down = 0 @@ -150,56 +149,79 @@ //////////////////////TALON JUMPSUITS////////////////////// /obj/item/clothing/under/rank/talon/basic - name = "ITV jumpsuit" - desc = "A basic jumpsuit that bares the ITV logo on the breast." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - index = "vr" - rolled_down_icon = 'icons/mob/uniform_rolled_down_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + name = "Talon jumpsuit" + desc = "A basic jumpsuit that bares the ITV Talon logo on the breast." + icon = 'icons/inventory/uniform/item_vr.dmi' + rolled_down_icon = 'icons/inventory/uniform/mob_vr_rolled_down.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "talon_basic" item_state = "talon_basic" rolled_sleeves = 0 /obj/item/clothing/under/rank/talon/proper - name = "ITV proper jumpsuit" - desc = "A neat and proper uniform for a proper company." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - index = "vr" - rolled_down_icon = 'icons/mob/uniform_rolled_down_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + name = "Talon proper jumpsuit" + desc = "A neat and proper uniform for a proper private ship." + icon = 'icons/inventory/uniform/item_vr.dmi' + rolled_down_icon = 'icons/inventory/uniform/mob_vr_rolled_down.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "talon_jumpsuit" item_state = "talon_jumpsuit" rolled_sleeves = 0 /obj/item/clothing/under/rank/talon/security - name = "ITV security jumpsuit" - desc = "A sleek, streamlined version of ITV's standard jumpsuit that bares security markings." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - index = "vr" - rolled_down_icon = 'icons/mob/uniform_rolled_down_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + name = "Talon security jumpsuit" + desc = "A sleek, streamlined version of ITV Talon's standard jumpsuit that bares security markings." + icon = 'icons/inventory/uniform/item_vr.dmi' + rolled_down_icon = 'icons/inventory/uniform/mob_vr_rolled_down.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "talon_security" item_state = "talon_security" rolled_sleeves = 0 /obj/item/clothing/under/rank/talon/pilot - name = "ITV pilot jumpsuit" - desc = "A sleek, streamlined version of ITV's standard jumpsuit. Made from cushioned fabric to handle intense flight." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - index = "vr" - rolled_down_icon = 'icons/mob/uniform_rolled_down_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + name = "Talon pilot jumpsuit" + desc = "A sleek, streamlined version of ITV Talon's standard jumpsuit. Made from cushioned fabric to handle intense flight." + icon = 'icons/inventory/uniform/item_vr.dmi' + rolled_down_icon = 'icons/inventory/uniform/mob_vr_rolled_down.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "talon_pilot" item_state = "talon_pilot" rolled_sleeves = 0 /obj/item/clothing/under/rank/talon/command - name = "ITV command jumpsuit" + name = "Talon command jumpsuit" desc = "A commanding jumpsuit fit for a commanding officer." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - index = "vr" - rolled_down_icon = 'icons/mob/uniform_rolled_down_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + icon = 'icons/inventory/uniform/item_vr.dmi' + rolled_down_icon = 'icons/inventory/uniform/mob_vr_rolled_down.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "talon_captain" item_state = "talon_captain" - rolled_sleeves = 0 \ No newline at end of file + rolled_sleeves = 0 + +// Excelsior uniforms +/obj/item/clothing/under/excelsior + name = "\improper Excelsior uniform" + desc = "A uniform from a particular spaceship: Excelsior." + + icon = 'icons/inventory/uniform/item_vr.dmi' + default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi' + icon_state = "excelsior_white" + +/obj/item/clothing/under/excelsior/mixed + icon_state = "excelsior_mixed" +/obj/item/clothing/under/excelsior/orange + icon_state = "excelsior_orange" + +// Summer dresses +/obj/item/clothing/under/summerdress + name = "summer dress" + desc = "A nice summer dress." + + icon = 'icons/inventory/uniform/item_vr.dmi' + default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi' + icon_state = "summerdress" + +/obj/item/clothing/under/summerdress/red + icon_state = "summerdress3" +/obj/item/clothing/under/summerdress/blue + icon_state = "summerdress2" diff --git a/code/modules/clothing/under/nanotrasen_vr.dm b/code/modules/clothing/under/nanotrasen_vr.dm index 65dee313479..9375efd71e0 100644 --- a/code/modules/clothing/under/nanotrasen_vr.dm +++ b/code/modules/clothing/under/nanotrasen_vr.dm @@ -3,9 +3,9 @@ /obj/item/clothing/under/nanotrasen name = "NanoTrasen uniform" desc = "A comfortable turtleneck and black trousers sporting nanotrasen symbols." - icon = 'icons/obj/clothing/uniforms_solgov.dmi' - icon_override = 'icons/mob/uniform_solgov.dmi' - item_icons = list(slot_w_uniform_str = 'icons/mob/uniform_solgov.dmi', slot_r_hand_str = "black", slot_l_hand_str = "black") + icon = 'icons/inventory/uniform/item.dmi' + icon_override = 'icons/inventory/uniform/mob.dmi' + item_icons = list(slot_w_uniform_str = 'icons/inventory/uniform/mob.dmi', slot_r_hand_str = "black", slot_l_hand_str = "black") icon_state = "blackutility" worn_state = "blackutility" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm index 1af0517ab06..035aac4cf88 100644 --- a/code/modules/clothing/under/pants.dm +++ b/code/modules/clothing/under/pants.dm @@ -5,7 +5,6 @@ icon_state = "jeans" gender = PLURAL body_parts_covered = LOWER_TORSO|LEGS - index = 1 /obj/item/clothing/under/pants/ripped name = "ripped jeans" diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index 0d6516cc8e6..d168ddc1eb9 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -5,7 +5,6 @@ icon_state = "redshorts" // Hackyfix for icon states until someone wants to come do a recolor later. gender = PLURAL body_parts_covered = LOWER_TORSO - index = 1 /obj/item/clothing/under/shorts/red name = "red athletic shorts" @@ -101,7 +100,6 @@ icon_state = "skirt_short_black" body_parts_covered = LOWER_TORSO rolled_sleeves = -1 - index = 1 /obj/item/clothing/under/skirt/khaki name = "khaki skirt" @@ -168,14 +166,12 @@ desc = "It's a jumpskirt worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper." icon_state = "qmf" item_state_slots = list(slot_r_hand_str = "qm", slot_l_hand_str = "qm") - index = 1 /obj/item/clothing/under/rank/cargotech/skirt name = "cargo technician's jumpskirt" desc = "Skirrrrrts! They're comfy and easy to wear!" icon_state = "cargof" item_state_slots = list(slot_r_hand_str = "cargo", slot_l_hand_str = "cargo") - index = 1 /obj/item/clothing/under/rank/engineer/skirt desc = "It's an orange high visibility jumpskirt worn by engineers. It has minor radiation shielding." @@ -183,61 +179,51 @@ icon_state = "enginef" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) item_state_slots = list(slot_r_hand_str = "engine", slot_l_hand_str = "engine") - index = 1 /obj/item/clothing/under/rank/chief_engineer/skirt desc = "It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of \"Chief engineer\". It has minor radiation shielding." name = "chief engineer's jumpskirt" icon_state = "chieff" item_state_slots = list(slot_r_hand_str = "chiefengineer", slot_l_hand_str = "chiefengineer") - index = 1 /obj/item/clothing/under/rank/atmospheric_technician/skirt desc = "It's a jumpskirt worn by atmospheric technicians." name = "atmospheric technician's jumpskirt" icon_state = "atmosf" item_state_slots = list(slot_r_hand_str = "atmos", slot_l_hand_str = "atmos") - index = 1 /obj/item/clothing/under/rank/roboticist/skirt desc = "It's a slimming black jumpskirt with reinforced seams; great for industrial work." name = "roboticist's jumpskirt" icon_state = "roboticsf" item_state_slots = list(slot_r_hand_str = "robotics", slot_l_hand_str = "robotics") - index = 1 /obj/item/clothing/under/rank/scientist/skirt name = "scientist's jumpskirt" icon_state = "sciencef" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) - index = 1 /obj/item/clothing/under/rank/medical/skirt name = "medical doctor's jumpskirt" icon_state = "medicalf" - index = 1 /obj/item/clothing/under/rank/chemist/skirt name = "chemist's jumpskirt" icon_state = "chemistryf" - index = 1 /obj/item/clothing/under/rank/chief_medical_officer/skirt desc = "It's a jumpskirt worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection." name = "chief medical officer's jumpskirt" icon_state = "cmof" - index = 1 /obj/item/clothing/under/rank/geneticist/skirt name = "geneticist's jumpskirt" icon_state = "geneticsf" - index = 1 /obj/item/clothing/under/rank/virologist/skirt name = "virologist's jumpskirt" icon_state = "virologyf" - index = 1 /obj/item/clothing/under/rank/security/skirt name = "security officer's jumpskirt" @@ -245,16 +231,13 @@ icon_state = "securityf" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 - index = 1 /obj/item/clothing/under/rank/warden/skirt desc = "Standard feminine fashion for a Warden. It is made of sturdier material than standard jumpskirts. It has the word \"Warden\" written on the shoulders." name = "warden's jumpskirt" icon_state = "wardenf" - index = 1 /obj/item/clothing/under/rank/head_of_security/skirt desc = "It's a fashionable jumpskirt worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armor to protect the wearer." name = "head of security's jumpskirt" icon_state = "hosf" - index = 1 \ No newline at end of file diff --git a/code/modules/clothing/under/solgov.dm b/code/modules/clothing/under/solgov.dm index cd2c1110983..5854c006e2a 100644 --- a/code/modules/clothing/under/solgov.dm +++ b/code/modules/clothing/under/solgov.dm @@ -4,8 +4,8 @@ /obj/item/clothing/under/solgov name = "master solgov uniform" desc = "You shouldn't be seeing this." - icon = 'icons/obj/clothing/uniforms_solgov.dmi' - item_icons = list(slot_w_uniform_str = 'icons/mob/uniform_solgov.dmi') + icon = 'icons/inventory/uniform/item.dmi' + item_icons = list(slot_w_uniform_str = 'icons/inventory/uniform/mob.dmi') rolled_down = 0 rolled_sleeves = 0 armor = list(melee = 5, bullet = 0, laser = 5, energy = 5, bomb = 0, bio = 5, rad = 5) @@ -474,8 +474,8 @@ /obj/item/clothing/under/saare name = "master SAARE uniform" desc = "You shouldn't be seeing this." - icon = 'icons/obj/clothing/uniforms_solgov.dmi' - item_icons = list(slot_w_uniform_str = 'icons/mob/uniform_solgov.dmi') + icon = 'icons/inventory/uniform/item.dmi' + item_icons = list(slot_w_uniform_str = 'icons/inventory/uniform/mob.dmi') armor = list(melee = 5, bullet = 0, laser = 5, energy = 5, bomb = 0, bio = 5, rad = 5) siemens_coefficient = 0.8 diff --git a/code/modules/clothing/under/solgov_vr.dm b/code/modules/clothing/under/solgov_vr.dm index dd0b351d290..57d88880eb5 100644 --- a/code/modules/clothing/under/solgov_vr.dm +++ b/code/modules/clothing/under/solgov_vr.dm @@ -57,16 +57,16 @@ /obj/item/clothing/under/solgov/utility/army/olive name = "olive fatigues" desc = "An olive version of the TCG marine utility uniform, made from durable material." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + icon = 'icons/inventory/uniform/item_vr.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "bdu_olive" item_state = "bdu_olive" /obj/item/clothing/under/solgov/utility/army/desert name = "desert fatigues" desc = "A desert version of the TCG marine utility uniform, made from durable material." - icon = 'icons/obj/clothing/uniforms_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + icon = 'icons/inventory/uniform/item_vr.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "bdu_olive" item_state = "bdu_olive" desc = "A tan version of the TCG Marines utility uniform, made from durable material." diff --git a/code/modules/clothing/under/xenos/teshari.dm b/code/modules/clothing/under/xenos/teshari.dm index 39c3590bf4e..a0797f8df6d 100644 --- a/code/modules/clothing/under/xenos/teshari.dm +++ b/code/modules/clothing/under/xenos/teshari.dm @@ -1,5 +1,5 @@ /obj/item/clothing/under/teshari - icon = 'icons/obj/clothing/species/teshari/uniform.dmi' + icon = 'icons/inventory/uniform/item_teshari.dmi' icon_state = "seromi_grey" species_restricted = list(SPECIES_TESHARI) @@ -81,308 +81,246 @@ /obj/item/clothing/under/teshari/undercoat/standard/worksuit name = "small black and red worksuit" icon_state = "teshari_black_red_worksuit" - item_state = "teshari_black_red_worksuit" desc = "A small worksuit designed for a Teshari" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/blackpurple name = "small black and purple worksuit" icon_state = "teshari_black_purple_worksuit" - item_state = "teshari_black_purple_worksuit" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/blackorange name = "small black and orange worksuit" icon_state = "teshari_black_orange_worksuit" - item_state = "teshari_black_orange_worksuit" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/blackblue name = "small black and blue worksuit" icon_state = "teshari_black_blue_worksuit" - item_state = "teshari_black_blue_worksuit" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/blackgreen name = "small black and greeen worksuit" icon_state = "teshari_black_green_worksuit" - item_state = "teshari_black_green_worksuit" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/whitered name = "small white and red worksuit" icon_state = "teshari_white_red_worksuit" - item_state = "teshari_white_red_worksuit" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/whitepurple name = "small white and purple worksuit" icon_state = "teshari_white_purple_worksuit" - item_state = "teshari_white_purple_worksuit" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/whiteorange name = "small white and orange worksuit" icon_state = "teshari_white_orange_worksuit" - item_state = "teshari_white_orange_worksuit" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/whiteblue name = "small white and blue worksuit" icon_state = "teshari_white_blue_worksuit" - item_state = "teshari_white_blue_worksuit" /obj/item/clothing/under/teshari/undercoat/standard/worksuit/whitegreen name = "small white and green worksuit" icon_state = "teshari_white_green_worksuit" - item_state = "teshari_white_green_worksuit" //Standard Undercoats /obj/item/clothing/under/teshari/undercoat name = "Undercoat" desc = "A Teshari traditional garb, with a modern twist! Made of micro and nanofibres to make it light and billowy, perfect for going fast and stylishly!" - icon = 'icons/mob/species/teshari/teshari_uniform.dmi' - icon_override = 'icons/mob/species/teshari/teshari_uniform.dmi' icon_state = "tesh_uniform_bo" - item_state = "tesh_uniform_bo" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/teshari/undercoat/standard/black_orange name = "black and orange undercoat" icon_state = "tesh_uniform_bo" - item_state = "tesh_uniform_bo" /obj/item/clothing/under/teshari/undercoat/standard/black_grey name = "black and grey undercoat" icon_state = "tesh_uniform_bg" - item_state = "tesh_uniform_bg" /obj/item/clothing/under/teshari/undercoat/standard/black_white name = "black and white undercoat" icon_state = "tesh_uniform_bw" - item_state = "tesh_uniform_bw" /obj/item/clothing/under/teshari/undercoat/standard/black_red name = "black and red undercoat" icon_state = "tesh_uniform_br" - item_state = "tesh_uniform_br" /obj/item/clothing/under/teshari/undercoat/standard/black name = "black undercoat" icon_state = "tesh_uniform_bn" - item_state = "tesh_uniform_bn" /obj/item/clothing/under/teshari/undercoat/standard/black_yellow name = "black and yellow undercoat" icon_state = "tesh_uniform_by" - item_state = "tesh_uniform_by" /obj/item/clothing/under/teshari/undercoat/standard/black_green name = "black and green undercoat" icon_state = "tesh_uniform_bgr" - item_state = "tesh_uniform_bgr" /obj/item/clothing/under/teshari/undercoat/standard/black_blue name = "black and blue undercoat" icon_state = "tesh_uniform_bbl" - item_state = "tesh_uniform_bbl" /obj/item/clothing/under/teshari/undercoat/standard/black_purple name = "black and purple undercoat" icon_state = "tesh_uniform_bp" - item_state = "tesh_uniform_bp" /obj/item/clothing/under/teshari/undercoat/standard/black_pink name = "black and pink undercoat" icon_state = "tesh_uniform_bpi" - item_state = "tesh_uniform_bpi" /obj/item/clothing/under/teshari/undercoat/standard/black_brown name = "black and brown undercoat" icon_state = "tesh_uniform_bbr" - item_state = "tesh_uniform_bbr" /obj/item/clothing/under/teshari/undercoat/standard/orange_grey name = "orange and grey undercoat" icon_state = "tesh_uniform_og" - item_state = "tesh_uniform_og" /obj/item/clothing/under/teshari/undercoat/standard/rainbow name = "rainbow undercoat" icon_state = "tesh_uniform_rainbow" - item_state = "tesh_uniform_rainbow" /obj/item/clothing/under/teshari/undercoat/standard/lightgrey_grey name = "light grey and grey undercoat" icon_state = "tesh_uniform_lgg" - item_state = "tesh_uniform_lgg" /obj/item/clothing/under/teshari/undercoat/standard/white_grey name = "white and grey undercoat" icon_state = "tesh_uniform_wg" - item_state = "tesh_uniform_wg" /obj/item/clothing/under/teshari/undercoat/standard/red_grey name = "red and grey undercoat" icon_state = "tesh_uniform_rg" - item_state = "tesh_uniform_rg" /obj/item/clothing/under/teshari/undercoat/standard/orange name = "orange undercoat" icon_state = "tesh_uniform_on" - item_state = "tesh_uniform_on" /obj/item/clothing/under/teshari/undercoat/standard/yellow_grey name = "yellow and grey undercoat" icon_state = "tesh_uniform_yg" - item_state = "tesh_uniform_yg" /obj/item/clothing/under/teshari/undercoat/standard/green_grey name = "green and grey undercoat" icon_state = "tesh_uniform_gg" - item_state = "tesh_uniform_gg" /obj/item/clothing/under/teshari/undercoat/standard/blue_grey name = "blue and grey undercoat" icon_state = "tesh_uniform_blug" - item_state = "tesh_uniform_blug" /obj/item/clothing/under/teshari/undercoat/standard/purple_grey name = "purple and grey undercoat" icon_state = "tesh_uniform_pg" - item_state = "tesh_uniform_pg" /obj/item/clothing/under/teshari/undercoat/standard/pink_grey name = "pink and grey undercoat" icon_state = "tesh_uniform_pig" - item_state = "tesh_uniform_pig" /obj/item/clothing/under/teshari/undercoat/standard/brown_grey name = "brown and grey undercoat" icon_state = "tesh_uniform_brg" - item_state = "tesh_uniform_brg" //Job Undercoats - -/obj/item/clothing/under/teshari/undercoat/jobs - icon = 'icons/mob/species/teshari/deptjacket.dmi' - icon_override = 'icons/mob/species/teshari/deptjacket.dmi' - /obj/item/clothing/under/teshari/undercoat/jobs/cap name = "facility director undercoat" desc = "A traditional Teshari garb made for the Facility Director" icon_state = "tesh_uniform_cap" - item_state = "tesh_uniform_cap" /obj/item/clothing/under/teshari/undercoat/jobs/hop name = "head of personnel undercoat" desc = "A traditional Teshari garb made for the Head of Personnel" icon_state = "tesh_uniform_hop" - item_state = "tesh_uniform_hop" /obj/item/clothing/under/teshari/undercoat/jobs/ce name = "cheif engineer undercoat" desc = "A traditional Teshari garb made for the Chief Engineer" icon_state = "tesh_uniform_ce" - item_state = "tesh_uniform_ce" /obj/item/clothing/under/teshari/undercoat/jobs/hos name = "head of security undercoat" desc = "A traditional Teshari garb made for the Head of Security" icon_state = "tesh_uniform_hos" - item_state = "tesh_uniform_hos" /obj/item/clothing/under/teshari/undercoat/jobs/rd name = "research director undercoat" desc = "A traditional Teshari garb made for the Research Director" icon_state = "tesh_uniform_rd" - item_state = "tesh_uniform_rd" /obj/item/clothing/under/teshari/undercoat/jobs/engineer name = "engineering undercoat" desc = "A traditional Teshari garb made for the Engineering department" icon_state = "tesh_uniform_engie" - item_state = "tesh_uniform_engie" /obj/item/clothing/under/teshari/undercoat/jobs/atmos name = "atmospherics undercoat" desc = "A traditional Teshari garb made for the Atmospheric Technician" icon_state = "tesh_uniform_atmos" - item_state = "tesh_uniform_atmos" /obj/item/clothing/under/teshari/undercoat/jobs/cmo name = "chief medical officer undercoat" desc = "A traditional Teshari garb made for the Cheif Medical Officer" icon_state = "tesh_uniform_cmo" - item_state = "tesh_uniform_cmo" /obj/item/clothing/under/teshari/undercoat/jobs/qm name = "quartermaster undercoat" desc = "A traditional Teshari garb made for the Quartermaster" icon_state = "tesh_uniform_qm" - item_state = "tesh_uniform_qm" /obj/item/clothing/under/teshari/undercoat/jobs/cargo name = "cargo undercoat" desc = "A traditional Teshari garb made for the Cargo department" icon_state = "tesh_uniform_car" - item_state = "tesh_uniform_car" /obj/item/clothing/under/teshari/undercoat/jobs/mining name = "mining undercoat" desc = "A traditional Teshari garb made for Mining" icon_state = "tesh_uniform_mine" - item_state = "tesh_uniform_mine" /obj/item/clothing/under/teshari/undercoat/jobs/medical name = "medical undercoat" desc = "A traditional Teshari garb made for the Medical department" icon_state = "tesh_uniform_doc" - item_state = "tesh_uniform_doc" /obj/item/clothing/under/teshari/undercoat/jobs/chemistry name = "chemist undercoat" desc = "A traditional Teshari garb made for the Chemist" icon_state = "tesh_uniform_chem" - item_state = "tesh_uniform_chem" /obj/item/clothing/under/teshari/undercoat/jobs/viro name = "virologist undercoat" desc = "A traditional Teshari garb made for the Virologist" icon_state = "tesh_uniform_viro" - item_state = "tesh_uniform_viro" /obj/item/clothing/under/teshari/undercoat/jobs/psych name = "psychiatrist undercoat" desc = "A traditional Teshari garb made for the Psychiatrist" icon_state = "tesh_uniform_psych" - item_state = "tesh_uniform_psych" /obj/item/clothing/under/teshari/undercoat/jobs/para name = "paramedic undercoat" desc = "A traditional Teshari garb made for the Paramedic" icon_state = "tesh_uniform_para" - item_state = "tesh_uniform_para" /obj/item/clothing/under/teshari/undercoat/jobs/sci name = "scientist undercoat" desc = "A traditional Teshari garb made for the Science department" icon_state = "tesh_uniform_sci" - item_state = "tesh_uniform_sci" /obj/item/clothing/under/teshari/undercoat/jobs/robo name = "roboticist undercoat" desc = "A traditional Teshari garb made for the Roboticist" icon_state = "tesh_uniform_robo" - item_state = "tesh_uniform_robo" /obj/item/clothing/under/teshari/undercoat/jobs/sec name = "security undercoat" desc = "A traditional Teshari garb made for the Security department" icon_state = "tesh_uniform_sec" - item_state = "tesh_uniform_sec" /obj/item/clothing/under/teshari/undercoat/jobs/service name = "service undercoat" desc = "A traditional Teshari garb made for the Service department" icon_state = "tesh_uniform_serv" - item_state = "tesh_uniform_serv" /obj/item/clothing/under/teshari/undercoat/jobs/iaa name = "internal affairs undercoat" desc = "A traditional Teshari garb made for the Internal Affairs Agent" icon_state = "tesh_uniform_iaa" - item_state = "tesh_uniform_iaa" diff --git a/code/modules/customitems/item_spawning.dm b/code/modules/customitems/item_spawning.dm index aadafb9b66c..c1ddca45227 100644 --- a/code/modules/customitems/item_spawning.dm +++ b/code/modules/customitems/item_spawning.dm @@ -96,7 +96,7 @@ //this has to mirror the way update_inv_*_hand() selects the state /datum/custom_item/proc/get_state(var/obj/item/item, var/slot_str, var/hand_str) var/t_state - if(item.item_state_slots && item.item_state_slots[slot_str]) + if(LAZYACCESS(item.item_state_slots, slot_str)) t_state = item.item_state_slots[slot_str] else if(item.item_state) t_state = item.item_state @@ -111,7 +111,7 @@ var/icon/t_icon if(item.icon_override) t_icon = item.icon_override - else if(item.item_icons && (slot_str in item.item_icons)) + else if(LAZYACCESS(item.item_icons, slot_str)) t_icon = item.item_icons[slot_str] else t_icon = hand_icon diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm index 9af65789fee..1017e74df80 100644 --- a/code/modules/detectivework/microscope/dnascanner.dm +++ b/code/modules/detectivework/microscope/dnascanner.dm @@ -4,8 +4,8 @@ desc = "A high tech machine that is designed to read DNA samples properly." icon = 'icons/obj/forensics.dmi' icon_state = "dnaopen" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE circuit = /obj/item/weapon/circuitboard/dna_analyzer var/obj/item/weapon/forensics/swab/bloodsamp = null diff --git a/code/modules/detectivework/microscope/microscope.dm b/code/modules/detectivework/microscope/microscope.dm index 5b556f4c002..575465d0e00 100644 --- a/code/modules/detectivework/microscope/microscope.dm +++ b/code/modules/detectivework/microscope/microscope.dm @@ -4,8 +4,8 @@ desc = "A highly advanced microscope capable of zooming up to 3000x." icon = 'icons/obj/forensics.dmi' icon_state = "microscope" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/obj/item/weapon/sample = null var/report_num = 0 diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm index 4ec669a5655..301c99b7041 100644 --- a/code/modules/detectivework/tools/rag.dm +++ b/code/modules/detectivework/tools/rag.dm @@ -24,7 +24,7 @@ volume = 10 can_be_placed_into = null flags = OPENCONTAINER | NOBLUDGEON - unacidable = 0 + unacidable = FALSE drop_sound = 'sound/items/drop/cloth.ogg' pickup_sound = 'sound/items/pickup/cloth.ogg' diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index f09c6ab7bcc..8abd3583c05 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -19,7 +19,7 @@ log transactions desc = "For all your monetary needs!" icon = 'icons/obj/terminals_vr.dmi' //VOREStation Edit icon_state = "atm" - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 circuit = /obj/item/weapon/circuitboard/atm diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index f220f29e142..237f1206cb7 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -4,9 +4,9 @@ desc = "Access transaction logs, account data and all kinds of other financial records." icon = 'icons/obj/computer.dmi' icon_state = "account_computer" - density = 1 + density = TRUE req_one_access = list(access_hop, access_captain, access_cent_captain) - anchored = 1 + anchored = TRUE var/receipt_num var/machine_id = "" var/obj/item/weapon/card/id/held_card diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm index c67ddac088a..ec2ad51dcab 100644 --- a/code/modules/economy/cash.dm +++ b/code/modules/economy/cash.dm @@ -6,8 +6,8 @@ icon = 'icons/obj/items.dmi' icon_state = "spacecash1" opacity = 0 - density = 0 - anchored = 0.0 + density = FALSE + anchored = FALSE force = 1.0 throwforce = 1.0 throw_speed = 1 diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index ddf19d895c5..9286401aaeb 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -5,7 +5,7 @@ icon_state = "register_idle" flags = NOBLUDGEON req_access = list(access_heads) - anchored = 1 + anchored = TRUE var/locked = 1 var/cash_locked = 1 diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm index a44c7c03fd2..1b029ac74a6 100644 --- a/code/modules/economy/economy_misc.dm +++ b/code/modules/economy/economy_misc.dm @@ -60,7 +60,7 @@ var/global/economy_init = 0 news_network.CreateFeedChannel("The Gibson Gazette", "Editor Mike Hammers", 1, 1) news_network.CreateFeedChannel("Oculum Content Aggregator", "Oculus v6rev7", 1, 1) - for(var/loc_type in typesof(/datum/trade_destination) - /datum/trade_destination) + for(var/loc_type in subtypesof(/datum/trade_destination)) var/datum/trade_destination/D = new loc_type weighted_randomevent_locations[D] = D.viable_random_events.len weighted_mundaneevent_locations[D] = D.mundane_probability diff --git a/code/modules/economy/mint.dm b/code/modules/economy/mint.dm index 84176631506..db50578fe7c 100644 --- a/code/modules/economy/mint.dm +++ b/code/modules/economy/mint.dm @@ -3,8 +3,8 @@ name = "Coin press" icon = 'icons/obj/stationobjs.dmi' icon_state = "coinpress0" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null var/amt_silver = 0 //amount of silver diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm index 4086dcd9211..bc8130d0e04 100644 --- a/code/modules/economy/vending.dm +++ b/code/modules/economy/vending.dm @@ -11,8 +11,8 @@ desc = "A generic vending machine." icon = 'icons/obj/vending.dmi' icon_state = "generic" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE clicksound = "button" // Power diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index 461e5d607f1..0de1e5716fe 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -406,7 +406,7 @@ product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?" icon_state = "wallmed" layer = ABOVE_WINDOW_LAYER - density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude + density = FALSE //It is wall-mounted, and thus, not dense. --Superxpdude products = list(/obj/item/stack/medical/bruise_pack = 2, /obj/item/stack/medical/ointment = 2, /obj/item/weapon/reagent_containers/hypospray/autoinjector = 4, @@ -424,7 +424,7 @@ description_fluff = "NanoMed is NanoTrasen's medical science division, and provides almost all of the modern medbay essentials in-house at no extra charge. By using this vending machine, employees accept liability for products that may or may not be temporarily replaced by placebos or experimental treatments." icon_state = "wallmed" layer = ABOVE_WINDOW_LAYER - density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude + density = FALSE //It is wall-mounted, and thus, not dense. --Superxpdude products = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector = 5, /obj/item/weapon/reagent_containers/syringe/antitoxin = 3, /obj/item/stack/medical/bruise_pack = 3, @@ -1144,6 +1144,7 @@ /obj/item/clothing/head/surgery/black = 5, /obj/item/clothing/shoes/white = 5, /obj/item/clothing/suit/storage/toggle/labcoat = 5, + /obj/item/clothing/suit/storage/toggle/labcoat/modern = 5, /obj/item/clothing/mask/surgical = 5, /obj/item/clothing/suit/storage/hooded/wintercoat/medical = 5, /obj/item/clothing/shoes/boots/winter/medical = 5 @@ -1215,6 +1216,7 @@ /obj/item/clothing/under/rank/scientist/skirt = 5, /obj/item/clothing/under/rank/scientist/turtleneck = 5, /obj/item/clothing/suit/storage/toggle/labcoat = 5, + /obj/item/clothing/suit/storage/toggle/labcoat/modern = 5, /obj/item/clothing/shoes/white = 5, /obj/item/clothing/shoes/slippers = 5, /obj/item/clothing/suit/storage/hooded/wintercoat/science = 5, @@ -1336,6 +1338,7 @@ /obj/item/clothing/under/rank/cargotech/jeans = 5, /obj/item/clothing/under/rank/cargotech/jeans/female = 5, /obj/item/clothing/suit/storage/hooded/wintercoat/cargo = 5, + /obj/item/clothing/suit/storage/cargo = 5, /obj/item/clothing/shoes/boots/winter/supply = 5, /obj/item/clothing/shoes/black = 5, /obj/item/clothing/gloves/black = 5, diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index 2003fac6d63..7516be2efff 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -194,8 +194,7 @@ var/list/m_viewers = in_range["mobs"] var/list/o_viewers = in_range["objs"] - for(var/mob in m_viewers) - var/mob/M = mob + for(var/mob/M as anything in m_viewers) spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes. if(M) if(isobserver(M)) @@ -203,8 +202,7 @@ M.show_message(message, m_type) M.create_chat_message(src, "[runemessage]", FALSE, list("emote"), (m_type == AUDIBLE_MESSAGE)) - for(var/obj in o_viewers) - var/obj/O = obj + for(var/obj/O as anything in o_viewers) spawn(0) if(O) O.see_emote(src, message, m_type) diff --git a/code/modules/entopics_vr/alternate_appearance.dm b/code/modules/entopics_vr/alternate_appearance.dm index 4fd7d31ed0c..42b6d697f97 100644 --- a/code/modules/entopics_vr/alternate_appearance.dm +++ b/code/modules/entopics_vr/alternate_appearance.dm @@ -24,8 +24,7 @@ /datum/alternate_appearance/proc/display_to(list/displayTo) if(!displayTo || !displayTo.len) return - for(var/m in displayTo) - var/mob/M = m + for(var/mob/M as anything in displayTo) if(!M.viewing_alternate_appearances) M.viewing_alternate_appearances = list() viewers |= M @@ -42,8 +41,7 @@ if(hideFrom) hiding = hideFrom - for(var/m in hiding) - var/mob/M = m + for(var/mob/M as anything in hiding) if(M.client) M.client.images -= img if(M.viewing_alternate_appearances && M.viewing_alternate_appearances.len) diff --git a/code/modules/entopics_vr/entopics.dm b/code/modules/entopics_vr/entopics.dm index 1e146e0c05f..a3ea9e35aba 100644 --- a/code/modules/entopics_vr/entopics.dm +++ b/code/modules/entopics_vr/entopics.dm @@ -77,8 +77,7 @@ var/global/list/alt_farmanimals = list() registered = TRUE entopic_images += my_image - for(var/m in entopic_users) - var/mob/M = m + for(var/mob/M as anything in entopic_users) if(M.client) M.client.images += my_image @@ -88,8 +87,7 @@ var/global/list/alt_farmanimals = list() registered = FALSE entopic_images -= my_image - for(var/m in entopic_users) - var/mob/M = m + for(var/mob/M as anything in entopic_users) if(M.client) M.client.images -= my_image diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index f5736146669..d4fb6faa973 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -76,8 +76,7 @@ // Counts living carp spawned by this event. /datum/event/carp_migration/proc/count_spawned_carps() . = 0 - for(var/I in spawned_carp) - var/mob/living/simple_mob/animal/M = I + for(var/mob/living/simple_mob/animal/M as anything in spawned_carp) if(!QDELETED(M) && M.stat != DEAD) . += 1 diff --git a/code/modules/events/grubinfestation_vr.dm b/code/modules/events/grubinfestation_vr.dm index 45ca8bd6a75..fa87a1c58df 100644 --- a/code/modules/events/grubinfestation_vr.dm +++ b/code/modules/events/grubinfestation_vr.dm @@ -30,8 +30,7 @@ /datum/event/grub_infestation/end() var/list/area_names = list() - for(var/grub in existing_solargrubs) - var/mob/living/G = grub + for(var/mob/living/G as anything in existing_solargrubs) if(!G || G.stat == DEAD) continue var/area/grub_area = get_area(G) diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index 8db25be17b3..d04a5c52952 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -3,10 +3,11 @@ #define LOC_CHAPEL 2 #define LOC_LIBRARY 3 #define LOC_HYDRO 4 -#define LOC_VAULT 5 -#define LOC_CONSTR 6 -#define LOC_TECH 7 -#define LOC_GARDEN 8 +#define LOC_CONSTR 5 +#define LOC_TECH 6 +#define LOC_GARDEN 7 +#define LOC_STEMNGR 8 +#define LOC_RESEARCH 9 #define VERM_MICE 0 #define VERM_LIZARDS 1 @@ -22,7 +23,7 @@ /datum/event/infestation/start() - location = rand(0,8) + location = rand(0,10) var/list/turf/simulated/floor/turfs = list() var/spawn_area_type switch(location) @@ -41,9 +42,6 @@ if(LOC_HYDRO) spawn_area_type = /area/hydroponics locstring = "hydroponics" - if(LOC_VAULT) - spawn_area_type = /area/security/nuke_storage - locstring = "the vault" if(LOC_CONSTR) spawn_area_type = /area/construction locstring = "the construction area" @@ -53,6 +51,12 @@ if(LOC_GARDEN) spawn_area_type = /area/hydroponics/garden locstring = "the public garden" + if(LOC_STEMNGR) + spawn_area_type = /area/crew_quarters/captain + locstring = "the site manager's office" + if(LOC_RESEARCH) + spawn_area_type = /area/rnd/research + locstring = "the research division" for(var/areapath in typesof(spawn_area_type)) var/area/A = locate(areapath) @@ -106,9 +110,10 @@ #undef LOC_CHAPEL #undef LOC_LIBRARY #undef LOC_HYDRO -#undef LOC_VAULT #undef LOC_TECH #undef LOC_GARDEN +#undef LOC_STEMNGR +#undef LOC_RESEARCH #undef VERM_MICE #undef VERM_LIZARDS diff --git a/code/modules/events/meteor_strike_vr.dm b/code/modules/events/meteor_strike_vr.dm index 83b1f8ac2d9..3ed40c50f38 100644 --- a/code/modules/events/meteor_strike_vr.dm +++ b/code/modules/events/meteor_strike_vr.dm @@ -21,7 +21,7 @@ desc = "The sky is falling!" icon = 'icons/obj/meteor.dmi' icon_state = "large" - anchored = 1 + anchored = TRUE /obj/effect/meteor_falling/New() ..() @@ -73,8 +73,8 @@ desc = "A big hunk of star-stuff." icon = 'icons/obj/meteor.dmi' icon_state = "large" - density = 1 - climbable = 1 + density = TRUE + climbable = TRUE /obj/structure/meteorite/New() ..() diff --git a/code/modules/events/supply_demand_vr.dm b/code/modules/events/supply_demand_vr.dm index 64d402c443e..6e229e1b483 100644 --- a/code/modules/events/supply_demand_vr.dm +++ b/code/modules/events/supply_demand_vr.dm @@ -252,7 +252,7 @@ // /datum/event/supply_demand/proc/choose_food_items(var/differentTypes) - var/list/types = typesof(/datum/recipe) - /datum/recipe + var/list/types = subtypesof(/datum/recipe) for(var/i in 1 to differentTypes) var/datum/recipe/R = pick(types) types -= R // Don't pick the same thing twice @@ -262,7 +262,7 @@ return /datum/event/supply_demand/proc/choose_research_items(var/differentTypes) - var/list/types = typesof(/datum/design) - /datum/design + var/list/types = subtypesof(/datum/design) for(var/i in 1 to differentTypes) var/datum/design/D = pick(types) types -= D // Don't pick the same thing twice @@ -327,7 +327,7 @@ return /datum/event/supply_demand/proc/choose_alloy_items(var/differentTypes) - var/list/types = typesof(/datum/alloy) - /datum/alloy + var/list/types = subtypesof(/datum/alloy) for(var/i in 1 to differentTypes) var/datum/alloy/A = pick(types) types -= A // Don't pick the same thing twice diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 5fac3debd77..963b869439e 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -222,8 +222,8 @@ Gunshots/explosions/opening doors/less rare audio (done) icon_state = null name = "" desc = "" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE opacity = 0 var/mob/living/carbon/human/my_target = null var/weapon_name = null diff --git a/code/modules/food/drinkingglass/metaglass.dm b/code/modules/food/drinkingglass/metaglass.dm index 9a763e10e74..bca61427f55 100644 --- a/code/modules/food/drinkingglass/metaglass.dm +++ b/code/modules/food/drinkingglass/metaglass.dm @@ -4,7 +4,7 @@ icon_state = "glass_empty" amount_per_transfer_from_this = 5 volume = 30 - unacidable = 1 //glass + unacidable = TRUE //glass center_of_mass = list("x"=16, "y"=10) matter = list(MAT_GLASS = 500) icon = 'icons/obj/drinks.dmi' diff --git a/code/modules/food/food/drinks.dm b/code/modules/food/food/drinks.dm index 1f7bbc23d1d..db8a9216058 100644 --- a/code/modules/food/food/drinks.dm +++ b/code/modules/food/food/drinks.dm @@ -409,6 +409,3 @@ volume = 30 center_of_mass = list("x"=15, "y"=13) -/obj/item/weapon/reagent_containers/food/drinks/britcup/on_reagent_change() - ..() - diff --git a/code/modules/food/food/drinks/bottle.dm b/code/modules/food/food/drinks/bottle.dm index 90979df1e65..831bca128e6 100644 --- a/code/modules/food/food/drinks/bottle.dm +++ b/code/modules/food/food/drinks/bottle.dm @@ -18,7 +18,7 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/Initialize() . = ..() if(isGlass) - unacidable = 1 + unacidable = TRUE drop_sound = 'sound/items/drop/bottle.ogg' pickup_sound = 'sound/items/pickup/bottle.ogg' @@ -184,8 +184,8 @@ item_state = "beer" flags = NOCONDUCT attack_verb = list("stabbed", "slashed", "attacked") - sharp = 1 - edge = 0 + sharp = TRUE + edge = FALSE var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken") /obj/item/weapon/broken_bottle/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) diff --git a/code/modules/food/food/drinks/drinkingglass.dm b/code/modules/food/food/drinks/drinkingglass.dm index 92609ebbd44..da640b272aa 100644 --- a/code/modules/food/food/drinks/drinkingglass.dm +++ b/code/modules/food/food/drinks/drinkingglass.dm @@ -6,7 +6,7 @@ icon_state = "glass_empty" amount_per_transfer_from_this = 5 volume = 30 - unacidable = 1 //glass + unacidable = TRUE //glass center_of_mass = list("x"=16, "y"=10) matter = list(MAT_GLASS = 500) diff --git a/code/modules/food/food/drinks/jar.dm b/code/modules/food/food/drinks/jar.dm index 2167eb48a45..515a5bfba87 100644 --- a/code/modules/food/food/drinks/jar.dm +++ b/code/modules/food/food/drinks/jar.dm @@ -5,7 +5,7 @@ icon_state = "jar" item_state = "beaker" center_of_mass = list("x"=15, "y"=8) - unacidable = 1 + unacidable = TRUE /obj/item/weapon/reagent_containers/food/drinks/jar/on_reagent_change() if (reagents.reagent_list.len > 0) diff --git a/code/modules/food/food/drinks_vr.dm b/code/modules/food/food/drinks_vr.dm index 9f088c4434c..37dcb58c5f6 100644 --- a/code/modules/food/food/drinks_vr.dm +++ b/code/modules/food/food/drinks_vr.dm @@ -4,7 +4,4 @@ icon = 'icons/obj/drinks_vr.dmi' icon_state = "textmug" volume = 30 - center_of_mass = list("x"=15, "y"=13) - -/obj/item/weapon/reagent_containers/food/drinks/britcup/on_reagent_change() - ..() \ No newline at end of file + center_of_mass = list("x"=15, "y"=13) \ No newline at end of file diff --git a/code/modules/food/food/lunch.dm b/code/modules/food/food/lunch.dm index 6bbd434e435..81e75fa254e 100644 --- a/code/modules/food/food/lunch.dm +++ b/code/modules/food/food/lunch.dm @@ -106,9 +106,8 @@ var/list/lunchables_ethanol_reagents_ = list(/datum/reagent/ethanol/acid_spit, /proc/init_lunchable_list(var/list/lunches) . = list() - for(var/lunch in lunches) - var/obj/O = lunch - .[initial(O.name)] = lunch + for(var/obj/O as anything in lunches) + .[initial(O.name)] = O return sortAssoc(.) /proc/init_lunchable_reagent_list(var/list/banned_reagents, var/reagent_types) diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 5d2c6f3ca92..2e2ae2912f6 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -193,24 +193,7 @@ // Eating with forks if(istype(W,/obj/item/weapon/material/kitchen/utensil)) var/obj/item/weapon/material/kitchen/utensil/U = W - if(!U.reagents) - U.create_reagents(5) - - if (U.reagents.total_volume > 0) - to_chat(user, "You already have something on your [U].") - return - - user.visible_message( \ - "[user] scoops up some [src] with \the [U]!", \ - "You scoop up some [src] with \the [U]!" \ - ) - - bitecount++ - - reagents.trans_to_obj(U, min(reagents.total_volume,5)) - - if (reagents.total_volume <= 0) - qdel(src) + U.load_food(user, src) return if (is_sliceable()) @@ -4166,8 +4149,7 @@ //Calculate the reagents of the coating needed var/req = 0 - for (var/r in reagents.reagent_list) - var/datum/reagent/R = r + for(var/datum/reagent/R as anything in reagents.reagent_list) if (istype(R, /datum/reagent/nutriment)) req += R.volume * 0.2 else @@ -4249,8 +4231,7 @@ if (do_coating_prefix == 1) name = "[coating.coated_adj] [name]" - for (var/r in reagents.reagent_list) - var/datum/reagent/R = r + for(var/datum/reagent/R as anything in reagents.reagent_list) if (istype(R, /datum/reagent/nutriment/coating)) var/datum/reagent/nutriment/coating/C = R C.data["cooked"] = 1 diff --git a/code/modules/food/glass/bottle.dm b/code/modules/food/glass/bottle.dm index f76dac86bf5..28eec3c219f 100644 --- a/code/modules/food/glass/bottle.dm +++ b/code/modules/food/glass/bottle.dm @@ -53,10 +53,10 @@ add_overlay(filling) if (!is_open_container()) - add_overlay("lid_[initial(icon_state)]") + add_overlay("lid_[icon_state]") if (label_text) - add_overlay("label_[initial(icon_state)]") + add_overlay("label_[icon_state]") /obj/item/weapon/reagent_containers/glass/bottle/inaprovaline name = "inaprovaline bottle" diff --git a/code/modules/food/kitchen/cooking_machines/_appliance.dm b/code/modules/food/kitchen/cooking_machines/_appliance.dm index 1b090068f6b..8847e99580f 100644 --- a/code/modules/food/kitchen/cooking_machines/_appliance.dm +++ b/code/modules/food/kitchen/cooking_machines/_appliance.dm @@ -10,8 +10,8 @@ desc = "You shouldn't be seeing this!" icon = 'icons/obj/cooking_machines.dmi' var/appliancetype = 0 - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 5 // Power used when turned on, but not processing anything @@ -53,14 +53,12 @@ if (!available_recipes) available_recipes = new - for(var/type in subtypesof(/datum/recipe)) - var/datum/recipe/test = type + for(var/datum/recipe/test as anything in subtypesof(/datum/recipe)) if((appliancetype & initial(test.appliance))) available_recipes += new test /obj/machinery/appliance/Destroy() - for (var/a in cooking_objs) - var/datum/cooking_item/CI = a + for(var/datum/cooking_item/CI as anything in cooking_objs) qdel(CI.container)//Food is fragile, it probably doesnt survive the destruction of the machine cooking_objs -= CI qdel(CI) @@ -74,8 +72,7 @@ /obj/machinery/appliance/proc/list_contents(var/mob/user) if (cooking_objs.len) var/string = "Contains..." - for (var/a in cooking_objs) - var/datum/cooking_item/CI = a + for(var/datum/cooking_item/CI as anything in cooking_objs) string += "-\a [CI.container.label(null, CI.combine_target)], [report_progress(CI)]
" return string else @@ -343,8 +340,7 @@ for (var/obj/item/J in CI.container) cookwork_by_item(J, CI) - for (var/r in CI.container.reagents.reagent_list) - var/datum/reagent/R = r + for(var/datum/reagent/R as anything in CI.container.reagents.reagent_list) if (istype(R, /datum/reagent/nutriment)) CI.max_cookwork += R.volume *2//Added reagents contribute less than those in food items due to granular form @@ -373,8 +369,7 @@ var/work = 0 if (istype(S)) if (S.reagents) - for (var/r in S.reagents.reagent_list) - var/datum/reagent/R = r + for(var/datum/reagent/R as anything in S.reagents.reagent_list) if (istype(R, /datum/reagent/nutriment)) work += R.volume *3//Core nutrients contribute much more than peripheral chemicals @@ -463,8 +458,7 @@ results += TR - for (var/r in results) - var/obj/item/weapon/reagent_containers/food/snacks/R = r + for(var/obj/item/weapon/reagent_containers/food/snacks/R as anything in results) R.forceMove(C) //Move everything from the buffer back to the container R.cooked |= cook_type @@ -506,7 +500,7 @@ if (!S) continue - words |= text2list(S.name," ") + words |= splittext(S.name," ") cooktypes |= S.cooked if (S.reagents && S.reagents.total_volume > 0) @@ -608,8 +602,7 @@ /obj/machinery/appliance/proc/removal_menu(var/mob/user) if (can_remove_items(user)) var/list/menuoptions = list() - for (var/a in cooking_objs) - var/datum/cooking_item/CI = a + for(var/datum/cooking_item/CI as anything in cooking_objs) if (CI.container) menuoptions[CI.container.label(menuoptions.len)] = CI diff --git a/code/modules/food/kitchen/cooking_machines/_mixer.dm b/code/modules/food/kitchen/cooking_machines/_mixer.dm index 24b0371cfd5..7d18865167c 100644 --- a/code/modules/food/kitchen/cooking_machines/_mixer.dm +++ b/code/modules/food/kitchen/cooking_machines/_mixer.dm @@ -80,8 +80,7 @@ fundamental differences /obj/machinery/appliance/mixer/removal_menu(var/mob/user) if (can_remove_items(user)) var/list/menuoptions = list() - for (var/a in cooking_objs) - var/datum/cooking_item/CI = a + for(var/datum/cooking_item/CI as anything in cooking_objs) if (CI.container) if (!CI.container.check_contents()) to_chat(user, "There's nothing in [src] you can remove!") diff --git a/code/modules/food/kitchen/gibber.dm b/code/modules/food/kitchen/gibber.dm index cb52a0ca7b6..737072ba551 100644 --- a/code/modules/food/kitchen/gibber.dm +++ b/code/modules/food/kitchen/gibber.dm @@ -4,8 +4,8 @@ desc = "The name isn't descriptive enough?" icon = 'icons/obj/kitchen.dmi' icon_state = "grinder" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE req_access = list(access_kitchen,access_morgue) var/operating = 0 //Is it on? diff --git a/code/modules/food/kitchen/icecream.dm b/code/modules/food/kitchen/icecream.dm index 9887bc7bd73..7dd64d3574c 100644 --- a/code/modules/food/kitchen/icecream.dm +++ b/code/modules/food/kitchen/icecream.dm @@ -12,8 +12,8 @@ desc = "Ding-aling ding dong. Get your NanoTrasen-approved ice cream!" icon = 'icons/obj/kitchen.dmi' icon_state = "icecream_vat" - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE use_power = USE_POWER_OFF flags = OPENCONTAINER | NOREACT diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 91622868587..aa04d7499e1 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "mw" layer = 2.9 - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 5 active_power_usage = 2000 @@ -43,10 +43,9 @@ if(!available_recipes) available_recipes = new - for(var/T in (typesof(/datum/recipe)-/datum/recipe)) - var/datum/recipe/type = T - if((initial(type.appliance) & appliancetype)) - available_recipes += new type + for(var/datum/recipe/typepath as anything in subtypesof(/datum/recipe)) + if((initial(typepath.appliance) & appliancetype)) + available_recipes += new typepath acceptable_items = new acceptable_reagents = new @@ -423,8 +422,7 @@ valid = 1 sleep(2) - for(var/r in cooked_items) - var/atom/movable/R = r + for(var/atom/movable/R as anything in cooked_items) R.forceMove(src) //Move everything from the buffer back to the container QDEL_NULL(temp)//Delete buffer object diff --git a/code/modules/food/kitchen/smartfridge/smartfridge.dm b/code/modules/food/kitchen/smartfridge/smartfridge.dm index 6e9e47e411f..5e0f2e42847 100644 --- a/code/modules/food/kitchen/smartfridge/smartfridge.dm +++ b/code/modules/food/kitchen/smartfridge/smartfridge.dm @@ -7,8 +7,8 @@ icon_state = "smartfridge" var/icon_base = "smartfridge" //Iconstate to base all the broken/deny/etc on var/icon_contents = "misc" //Overlay to put on glass to show contents - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 5 active_power_usage = 100 diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm index 63dc510eb94..dffce315e46 100644 --- a/code/modules/food/recipe_dump.dm +++ b/code/modules/food/recipe_dump.dm @@ -15,7 +15,7 @@ "Catalysts" = CR.catalysts) //////////////////////// FOOD - var/list/food_recipes = typesof(/datum/recipe) - /datum/recipe + var/list/food_recipes = subtypesof(/datum/recipe) //Build a useful list for(var/Rp in food_recipes) //Lists don't work with datum-stealing no-instance initial() so we have to. diff --git a/code/modules/gamemaster/event2/event.dm b/code/modules/gamemaster/event2/event.dm index 4432be40ab9..b9f1d92648d 100644 --- a/code/modules/gamemaster/event2/event.dm +++ b/code/modules/gamemaster/event2/event.dm @@ -88,8 +88,7 @@ This allows for events that have their announcement happen after the end itself. if(!LAZYLEN(grand_list_of_areas)) return list() - for(var/thing in grand_list_of_areas) - var/list/A = thing + for(var/list/A as anything in grand_list_of_areas) var/list/turfs = list() for(var/turf/T in A) if(!T.check_density()) @@ -107,8 +106,7 @@ This allows for events that have their announcement happen after the end itself. var/list/area/grand_list_of_areas = get_all_existing_areas_of_types(specific_areas) . = list() - for(var/thing in shuffle(grand_list_of_areas)) - var/area/A = thing + for(var/area/A as anything in shuffle(grand_list_of_areas)) if(A.forbid_events) continue if(!(A.z in get_location_z_levels())) diff --git a/code/modules/gamemaster/event2/events/engineering/blob.dm b/code/modules/gamemaster/event2/events/engineering/blob.dm index 3ace8f0894e..f3b8a16f8d0 100644 --- a/code/modules/gamemaster/event2/events/engineering/blob.dm +++ b/code/modules/gamemaster/event2/events/engineering/blob.dm @@ -111,16 +111,14 @@ log_debug("Spawned [new_blob.overmind.blob_type.name] blob at [get_area(new_blob)].") /datum/event2/event/blob/should_end() - for(var/WR in blobs) - var/weakref/weakref = WR + for(var/weakref/weakref as anything in blobs) if(weakref.resolve()) // If the weakref is resolvable, that means the blob hasn't been deleted yet. return FALSE return TRUE // Only end if all blobs die. // Normally this does nothing, but is useful if aborted by an admin. /datum/event2/event/blob/end() - for(var/WR in blobs) - var/weakref/weakref = WR + for(var/weakref/weakref as anything in blobs) var/obj/structure/blob/core/B = weakref.resolve() if(istype(B)) qdel(B) @@ -130,8 +128,7 @@ var/danger_level = 0 var/list/blob_type_names = list() var/multiblob = FALSE - for(var/WR in blobs) - var/weakref/weakref = WR + for(var/weakref/weakref as anything in blobs) var/obj/structure/blob/core/B = weakref.resolve() if(!istype(B)) continue diff --git a/code/modules/gamemaster/event2/events/engineering/grid_check.dm b/code/modules/gamemaster/event2/events/engineering/grid_check.dm index 8b081f29e2a..b4ae7976b6e 100644 --- a/code/modules/gamemaster/event2/events/engineering/grid_check.dm +++ b/code/modules/gamemaster/event2/events/engineering/grid_check.dm @@ -15,8 +15,7 @@ // Having the turbines be way over their rated limit makes grid checks more likely. /datum/event2/meta/grid_check/proc/get_overpower() var/highest_overpower = 0 - for(var/T in GLOB.all_turbines) - var/obj/machinery/power/generator/turbine = T + for(var/obj/machinery/power/generator/turbine as anything in GLOB.all_turbines) var/overpower = max((turbine.effective_gen / turbine.max_power) - 1, 0) if(overpower > highest_overpower) highest_overpower = overpower @@ -35,8 +34,7 @@ /datum/event2/event/grid_check/set_up() // Find the turbine being pushed the most. var/obj/machinery/power/generator/most_stressed_turbine = null - for(var/T in GLOB.all_turbines) - var/obj/machinery/power/generator/turbine = T + for(var/obj/machinery/power/generator/turbine as anything in GLOB.all_turbines) if(!most_stressed_turbine) most_stressed_turbine = turbine else if(turbine.effective_gen > most_stressed_turbine.effective_gen) diff --git a/code/modules/gamemaster/event2/events/mob_spawning.dm b/code/modules/gamemaster/event2/events/mob_spawning.dm index 78b1eac69c4..4f3bcffa027 100644 --- a/code/modules/gamemaster/event2/events/mob_spawning.dm +++ b/code/modules/gamemaster/event2/events/mob_spawning.dm @@ -66,10 +66,9 @@ // In the future, a new AI stance that handles long distance travel using getline() could work. var/max_distance = 8 var/turf/spawn_turf = null - for(var/P in space_line) - var/turf/point = P + for(var/turf/point as anything in space_line) if(get_dist(point, edge_of_station) <= max_distance) - spawn_turf = P + spawn_turf = point break if(spawn_turf) @@ -88,8 +87,7 @@ // Counts living simple_mobs spawned by this event. /datum/event2/event/mob_spawning/proc/count_spawned_mobs() . = 0 - for(var/I in spawned_mobs) - var/mob/living/simple_mob/M = I + for(var/mob/living/simple_mob/M as anything in spawned_mobs) if(!QDELETED(M) && M.stat != DEAD) . += 1 diff --git a/code/modules/genetics/side_effects.dm b/code/modules/genetics/side_effects.dm index 498aff20d0b..958f05d5ac2 100644 --- a/code/modules/genetics/side_effects.dm +++ b/code/modules/genetics/side_effects.dm @@ -67,7 +67,7 @@ /proc/trigger_side_effect(mob/living/carbon/human/H) spawn if(!istype(H)) return - var/tp = pick(typesof(/datum/genetics/side_effect) - /datum/genetics/side_effect) + var/tp = pick(subtypesof(/datum/genetics/side_effect)) var/datum/genetics/side_effect/S = new tp S.start(H) diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm index 70fa60be353..96d3bbcabcf 100644 --- a/code/modules/holodeck/HolodeckObjects.dm +++ b/code/modules/holodeck/HolodeckObjects.dm @@ -128,7 +128,7 @@ desc = "Apply butt." icon = 'icons/obj/furniture.dmi' icon_state = "stool_padded_preview" - anchored = 1.0 + anchored = TRUE pressure_resistance = 15 /obj/item/clothing/gloves/boxing/hologlove @@ -212,7 +212,7 @@ if(W.damtype == BRUTE || W.damtype == BURN) hit(W.force) if(health <= 7) - anchored = 0 + anchored = FALSE update_nearby_icons() step(src, get_dir(user, src)) else @@ -256,7 +256,7 @@ return /obj/machinery/door/window/holowindoor/shatter(var/display_message = 1) - src.density = 0 + src.density = FALSE playsound(src, "shatter", 70, 1) if(display_message) visible_message("[src] fades away as it shatters!") @@ -367,8 +367,8 @@ desc = "Boom, Shakalaka!" icon = 'icons/obj/basketball.dmi' icon_state = "hoop" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE throwpass = 1 /obj/structure/holohoop/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -411,7 +411,7 @@ var/area/currentarea = null var/eventstarted = 0 - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 6 diff --git a/code/modules/holomap/generate_holomap.dm b/code/modules/holomap/generate_holomap.dm index d24f1f47f3a..99396bd542e 100644 --- a/code/modules/holomap/generate_holomap.dm +++ b/code/modules/holomap/generate_holomap.dm @@ -56,9 +56,9 @@ // Sanity checks - Better to generate a helpful error message now than have DrawBox() runtime var/icon/canvas = icon(HOLOMAP_ICON, "blank") if(world.maxx > canvas.Width()) - crash_with("Minimap for z=[zLevel] : world.maxx ([world.maxx]) must be <= [canvas.Width()]") + stack_trace("Minimap for z=[zLevel] : world.maxx ([world.maxx]) must be <= [canvas.Width()]") if(world.maxy > canvas.Height()) - crash_with("Minimap for z=[zLevel] : world.maxy ([world.maxy]) must be <= [canvas.Height()]") + stack_trace("Minimap for z=[zLevel] : world.maxy ([world.maxy]) must be <= [canvas.Height()]") for(var/x = 1 to world.maxx) for(var/y = 1 to world.maxy) @@ -82,9 +82,9 @@ // Sanity checks - Better to generate a helpful error message now than have DrawBox() runtime var/icon/canvas = icon(HOLOMAP_ICON, "blank") if(world.maxx > canvas.Width()) - crash_with("Minimap for z=[zLevel] : world.maxx ([world.maxx]) must be <= [canvas.Width()]") + stack_trace("Minimap for z=[zLevel] : world.maxx ([world.maxx]) must be <= [canvas.Width()]") if(world.maxy > canvas.Height()) - crash_with("Minimap for z=[zLevel] : world.maxy ([world.maxy]) must be <= [canvas.Height()]") + stack_trace("Minimap for z=[zLevel] : world.maxy ([world.maxy]) must be <= [canvas.Height()]") for(var/x = 1 to world.maxx) for(var/y = 1 to world.maxy) diff --git a/code/modules/holomap/mapper.dm b/code/modules/holomap/mapper.dm index b99d2928c19..40a8f433bb0 100644 --- a/code/modules/holomap/mapper.dm +++ b/code/modules/holomap/mapper.dm @@ -280,8 +280,7 @@ extras_holder.pixel_y = bgmap.pixel_y = -1*T_y + offset_y // Populate other mapper icons - for(var/hc in mapping_units) - var/obj/item/device/mapping_unit/HC = hc + for(var/obj/item/device/mapping_unit/HC as anything in mapping_units) if(HC.mapper_filter != mapper_filter) continue var/mob_indicator = HOLOMAP_ERROR @@ -340,8 +339,7 @@ extras += mark // Marker beacon items - for(var/hb in mapping_beacons) - var/obj/item/device/holomap_beacon/HB = hb + for(var/obj/item/device/holomap_beacon/HB as anything in mapping_beacons) if(HB.mapper_filter != mapper_filter) continue diff --git a/code/modules/holomap/station_holomap.dm b/code/modules/holomap/station_holomap.dm index 24302679812..8c88102f06f 100644 --- a/code/modules/holomap/station_holomap.dm +++ b/code/modules/holomap/station_holomap.dm @@ -7,8 +7,8 @@ icon = 'icons/obj/machines/stationmap.dmi' icon_state = "station_map" layer = ABOVE_WINDOW_LAYER - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE use_power = USE_POWER_IDLE idle_power_usage = 10 active_power_usage = 500 diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm index f514ff8b6a8..37f7c5cc79a 100644 --- a/code/modules/hydroponics/beekeeping/beehive.dm +++ b/code/modules/hydroponics/beekeeping/beehive.dm @@ -2,8 +2,8 @@ name = "beehive" icon = 'icons/obj/beekeeping.dmi' icon_state = "beehive" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/closed = 0 var/bee_count = 0 // Percent diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 8e262bb69f9..bf83e28bf79 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -138,7 +138,7 @@ if("[seed.get_trait(TRAIT_PRODUCT_ICON)]-leaf" in cached_icon_states('icons/obj/hydroponics_products.dmi')) var/image/fruit_leaves = image('icons/obj/hydroponics_products.dmi',"[seed.get_trait(TRAIT_PRODUCT_ICON)]-leaf") fruit_leaves.color = "[seed.get_trait(TRAIT_PLANT_COLOUR)]" - add_overlay(fruit_leaves) + plant_icon.add_overlay(fruit_leaves) SSplants.plant_icon_cache[icon_key] = plant_icon add_overlay(plant_icon) diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index dfa95aed2d7..0446895fc4a 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -140,7 +140,7 @@ if(affecting) to_chat(target, "\The [fruit]'s thorns pierce your [affecting.name] greedily!") - target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, "Thorns", sharp=1, edge=has_edge) + target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, "Thorns", sharp = TRUE, edge=has_edge) else to_chat(target, "\The [fruit]'s thorns pierce your flesh greedily!") target.adjustBruteLoss(damage) @@ -149,7 +149,7 @@ has_edge = prob(get_trait(TRAIT_POTENCY)/5) if(affecting) to_chat(target, "\The [fruit]'s thorns dig deeply into your [affecting.name]!") - target.apply_damage(damage, BRUTE, target_limb, blocked, "Thorns", sharp=1, edge=has_edge) + target.apply_damage(damage, BRUTE, target_limb, blocked, "Thorns", sharp = TRUE, edge=has_edge) else to_chat(target, "\The [fruit]'s thorns dig deeply into your flesh!") target.adjustBruteLoss(damage) diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm index 690d970522f..32013d9734e 100644 --- a/code/modules/hydroponics/seed_machines.dm +++ b/code/modules/hydroponics/seed_machines.dm @@ -35,8 +35,8 @@ /obj/machinery/botany icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit icon_state = "hydrotray3" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE var/obj/item/seeds/seed // Currently loaded seed packet. diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index 8034e3d9ff1..3ff2e48174a 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -22,8 +22,8 @@ desc = "It stores, sorts, and dispenses seeds." icon = 'icons/obj/vending.dmi' icon_state = "seeds" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 100 diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm index 73d93abe558..e55bb448bd3 100644 --- a/code/modules/hydroponics/spreading/spreading.dm +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -29,9 +29,9 @@ message_admins("Event: Spacevines failed to find a viable turf.") /obj/effect/dead_plant - anchored = 1 + anchored = TRUE opacity = 0 - density = 0 + density = FALSE color = DEAD_PLANT_COLOUR /obj/effect/dead_plant/attack_hand() @@ -45,10 +45,10 @@ /obj/effect/plant name = "plant" - anchored = 1 - can_buckle = 1 + anchored = TRUE + can_buckle = TRUE opacity = 0 - density = 0 + density = FALSE icon = 'icons/obj/hydroponics_growing.dmi' icon_state = "bush4-1" pass_flags = PASSTABLE @@ -197,10 +197,10 @@ plane = ABOVE_PLANE set_opacity(1) if(!isnull(seed.chems["woodpulp"])) - density = 1 + density = TRUE else reset_plane_and_layer() - density = 0 + density = FALSE /obj/effect/plant/proc/calc_dir() set background = 1 diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm index db94bebd0d9..eebcbc93892 100644 --- a/code/modules/hydroponics/spreading/spreading_growth.dm +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -74,8 +74,7 @@ plant.layer = layer + 0.1 if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) seed.do_sting(L,src) if(seed.get_trait(TRAIT_CARNIVOROUS)) seed.do_thorns(L,src) @@ -122,9 +121,9 @@ return //move out to the destination - child.anchored = 0 + child.anchored = FALSE step_to(child, target_turf) - child.anchored = 1 + child.anchored = TRUE child.update_icon() //see if anything is there diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm index ab22ae15df3..b9e64b8d32f 100644 --- a/code/modules/hydroponics/spreading/spreading_response.dm +++ b/code/modules/hydroponics/spreading/spreading_response.dm @@ -49,8 +49,7 @@ /obj/effect/plant/proc/unbuckle() if(has_buckled_mobs()) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) if(L.buckled == src) L.buckled = null L.anchored = initial(L.anchored) @@ -64,8 +63,7 @@ if(seed) chance = round(100/(20*seed.get_trait(TRAIT_POTENCY)/100)) if(prob(chance)) - for(var/A in buckled_mobs) - var/mob/living/L = A + for(var/mob/living/L as anything in buckled_mobs) if(!(user in buckled_mobs)) L.visible_message(\ "\The [user] frees \the [L] from \the [src].",\ diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 527580784f4..e8d6ed41138 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -3,8 +3,8 @@ desc = "A tray usually full of fluid for growing plants." icon = 'icons/obj/hydroponics_machines_vr.dmi' //VOREStation Edit icon_state = "hydrotray3" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE flags = OPENCONTAINER volume = 100 diff --git a/code/modules/hydroponics/trays/tray_soil.dm b/code/modules/hydroponics/trays/tray_soil.dm index 76a34176450..ff32f9712b6 100644 --- a/code/modules/hydroponics/trays/tray_soil.dm +++ b/code/modules/hydroponics/trays/tray_soil.dm @@ -1,7 +1,7 @@ /obj/machinery/portable_atmospherics/hydroponics/soil name = "soil" icon_state = "soil" - density = 0 + density = FALSE use_power = USE_POWER_OFF mechanical = 0 tray_light = 0 diff --git a/code/modules/identification/identification.dm b/code/modules/identification/identification.dm index 6ddcdbb075d..99ed8bc6339 100644 --- a/code/modules/identification/identification.dm +++ b/code/modules/identification/identification.dm @@ -97,8 +97,7 @@ return "unidentified object" var/list/new_name = list() - for(var/i in naming_lists) - var/list/current_list = i + for(var/list/current_list as anything in naming_lists) new_name += pick(current_list) return new_name.Join(" ") diff --git a/code/modules/instruments/instrument_data/_instrument_data.dm b/code/modules/instruments/instrument_data/_instrument_data.dm index 39d16e499f2..7cede360a20 100644 --- a/code/modules/instruments/instrument_data/_instrument_data.dm +++ b/code/modules/instruments/instrument_data/_instrument_data.dm @@ -70,8 +70,7 @@ /datum/instrument/Destroy() SSinstruments.instrument_data -= id - for(var/i in songs_using) - var/datum/song/S = i + for(var/datum/song/S as anything in songs_using) S.set_instrument(null) real_samples = null samples = null diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm index 455c10e5cb8..31d4c396cca 100644 --- a/code/modules/instruments/items.dm +++ b/code/modules/instruments/items.dm @@ -296,8 +296,7 @@ /obj/item/instrument/harmonica, /obj/item/instrument/piano_synth/headphones ) - for(var/V in templist) - var/atom/A = V + for(var/atom/A as anything in templist) instruments[initial(A.name)] = A return instruments */ diff --git a/code/modules/instruments/songs/play_legacy.dm b/code/modules/instruments/songs/play_legacy.dm index e8666f78674..9d7ba493d4a 100644 --- a/code/modules/instruments/songs/play_legacy.dm +++ b/code/modules/instruments/songs/play_legacy.dm @@ -80,8 +80,7 @@ if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck) do_hearcheck() var/sound/music_played = sound(soundfile) - for(var/i in hearing_mobs) - var/mob/M = i + for(var/mob/M as anything in hearing_mobs) /* Would be nice if(user && HAS_TRAIT(user, TRAIT_MUSICIAN) && isliving(M)) var/mob/living/L = M diff --git a/code/modules/instruments/songs/play_synthesized.dm b/code/modules/instruments/songs/play_synthesized.dm index d8b10654d5d..63369228aa2 100644 --- a/code/modules/instruments/songs/play_synthesized.dm +++ b/code/modules/instruments/songs/play_synthesized.dm @@ -61,8 +61,7 @@ channels_playing[channel_text] = 100 last_channel_played = channel_text var/turf/source = get_turf(parent) - for(var/i in hearing_mobs) - var/mob/M = i + for(var/mob/M as anything in hearing_mobs) /* Maybe someday if(user && HAS_TRAIT(user, TRAIT_MUSICIAN) && isliving(M)) var/mob/living/L = M @@ -142,10 +141,8 @@ if(dead) channels_playing -= channel channels_idle += channel - for(var/i in hearing_mobs) - var/mob/M = i + for(var/mob/M as anything in hearing_mobs) M.stop_sound_channel(channelnumber) else - for(var/i in hearing_mobs) - var/mob/M = i + for(var/mob/M as anything in hearing_mobs) M.set_sound_channel_volume(channelnumber, (current_volume * 0.01) * volume * using_instrument.volume_multiplier) diff --git a/code/modules/integrated_electronics/core/assemblies/clothing.dm b/code/modules/integrated_electronics/core/assemblies/clothing.dm index 98af46f71d7..d881d7bd4a4 100644 --- a/code/modules/integrated_electronics/core/assemblies/clothing.dm +++ b/code/modules/integrated_electronics/core/assemblies/clothing.dm @@ -156,7 +156,7 @@ name = "electronic earwear" desc = "It's a wearable case for electronics. This one appears to be a technical-looking headset." description_info = "Control-shift-click on this with an item in hand to use it on the integrated circuit." - icon = 'icons/obj/clothing/ears.dmi' + icon = 'icons/inventory/ears/item.dmi' icon_state = "circuitry" item_state = "circuitry" diff --git a/code/modules/integrated_electronics/subtypes/converters.dm b/code/modules/integrated_electronics/subtypes/converters.dm index 316742e488a..ada8eadbc6b 100644 --- a/code/modules/integrated_electronics/subtypes/converters.dm +++ b/code/modules/integrated_electronics/subtypes/converters.dm @@ -361,7 +361,7 @@ var/saturation = get_pin_data(IC_INPUT, 2) var/value = get_pin_data(IC_INPUT, 3) if(isnum(hue) && isnum(saturation) && isnum(value)) - result = HSVtoRGB(hsv(AngleToHue(hue),saturation,value)) + result = rgb(h = hue, s = saturation, v = value, space = COLORSPACE_HSV) set_pin_data(IC_OUTPUT, 1, result) push_data() diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index ff8bb0f16b6..b7fc6ae0b65 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -1,7 +1,7 @@ /obj/item/integrated_circuit/reagent category_text = "Reagent" var/volume = 0 - unacidable = 1 + unacidable = TRUE origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2) /obj/item/integrated_circuit/reagent/New() diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index af20cc0959c..85a06cd5714 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -16,8 +16,8 @@ desc = "A set of wooden shelves, perfect for placing books on." icon = 'icons/obj/library.dmi' icon_state = "book-0" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE opacity = 1 /obj/structure/bookcase/Initialize() @@ -104,7 +104,7 @@ Book Cart name = "book cart" icon = 'icons/obj/library.dmi' icon_state = "bookcart-0" - anchored = 0 + anchored = FALSE opacity = 0 /obj/structure/bookcase/bookcart/attackby(obj/item/O as obj, mob/user as mob) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index db8905be0d7..9f5a2d511b5 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -24,8 +24,8 @@ name = "visitor computer" icon = 'icons/obj/library.dmi' icon_state = "computer" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/screenstate = 0 var/title var/category = "Any" @@ -80,7 +80,7 @@ title = null title = sanitizeSQL(title) if(href_list["setcategory"]) - var/newcategory = tgui_input_list(usr, "Choose a category to search for:", list("Any", "Fiction", "Non-Fiction", "Adult", "Reference", "Religion")) + var/newcategory = tgui_input_list(usr, "Choose a category to search for:", "Category", list("Any", "Fiction", "Non-Fiction", "Adult", "Reference", "Religion")) if(newcategory) category = sanitize(newcategory) else @@ -119,8 +119,8 @@ desc = "Print books from the archives! (You aren't quite sure how they're printed by it, though.)" icon = 'icons/obj/library.dmi' icon_state = "computer" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/arcanecheckout = 0 var/screenstate = 0 // 0 - Main Menu, 1 - Inventory, 2 - Checked Out, 3 - Check Out a Book var/sortby = "author" @@ -393,7 +393,7 @@ if(newauthor) scanner.cache.author = newauthor if(href_list["setcategory"]) - var/newcategory = tgui_input_list(usr, "Choose a category: ", list("Fiction", "Non-Fiction", "Adult", "Reference", "Religion")) + var/newcategory = tgui_input_list(usr, "Choose a category: ", "Category", list("Fiction", "Non-Fiction", "Adult", "Reference", "Religion")) if(newcategory) upload_category = newcategory @@ -492,8 +492,8 @@ desc = "A scanner for scanning in books and papers." icon = 'icons/obj/library.dmi' icon_state = "bigscanner" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/obj/item/weapon/book/cache // Last scanned book /obj/machinery/libraryscanner/attackby(var/obj/O as obj, var/mob/user as mob) @@ -544,8 +544,8 @@ desc = "Bundles up a stack of inserted paper into a convenient book format." icon = 'icons/obj/library.dmi' icon_state = "binder" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE /obj/machinery/bookbinder/attackby(var/obj/O as obj, var/mob/user as mob) if(istype(O, /obj/item/weapon/paper) || istype(O, /obj/item/weapon/paper_bundle)) diff --git a/code/modules/looking_glass/lg_area.dm b/code/modules/looking_glass/lg_area.dm index b17c67449f5..25d3bd7a3d4 100644 --- a/code/modules/looking_glass/lg_area.dm +++ b/code/modules/looking_glass/lg_area.dm @@ -38,8 +38,7 @@ /area/looking_glass/proc/begin_program(var/image/newimage) if(!active) - for(var/trf in our_turfs) - var/turf/simulated/floor/looking_glass/lgt = trf + for(var/turf/simulated/floor/looking_glass/lgt as anything in our_turfs) lgt.activate() our_landmark.take_image(newimage) @@ -47,8 +46,7 @@ /area/looking_glass/proc/end_program() if(active) - for(var/trf in our_turfs) - var/turf/simulated/floor/looking_glass/lgt = trf + for(var/turf/simulated/floor/looking_glass/lgt as anything in our_turfs) lgt.deactivate() active = FALSE @@ -57,8 +55,7 @@ our_landmark.drop_image() /area/looking_glass/proc/toggle_optional(var/transparent) - for(var/trf in our_optional_turfs) - var/turf/simulated/floor/looking_glass/lgt = trf + for(var/turf/simulated/floor/looking_glass/lgt as anything in our_optional_turfs) lgt.center = !transparent if(active) lgt.deactivate() diff --git a/code/modules/looking_glass/lg_turfs.dm b/code/modules/looking_glass/lg_turfs.dm index 189790335d8..ad38f640c0b 100644 --- a/code/modules/looking_glass/lg_turfs.dm +++ b/code/modules/looking_glass/lg_turfs.dm @@ -59,7 +59,7 @@ M.Translate(new_x, new_y) MA.opacity = 1 if(!optional) - MA.density = 1 + MA.density = TRUE MA.icon_state = "origin_active" MA.plane = PLANE_LOOKINGGLASS @@ -76,7 +76,7 @@ sleep(3 SECONDS) var/mutable_appearance/MA = new (src) MA.opacity = 0 - MA.density = 0 + MA.density = FALSE MA.icon_state = "origin_switching" MA.plane = initial(plane) MA.layer = initial(layer) diff --git a/code/modules/maps/reader.dm b/code/modules/maps/reader.dm index daf34508f5b..def68bbbcb9 100644 --- a/code/modules/maps/reader.dm +++ b/code/modules/maps/reader.dm @@ -297,7 +297,7 @@ var/global/dmm_suite/preloader/_preloader = null //simulates the DM multiple turfs on one tile underlaying /dmm_suite/proc/add_underlying_turf(var/turf/placed,var/turf/underturf, var/list/turfs_underlays) if(underturf.density) - placed.density = 1 + placed.density = TRUE if(underturf.opacity) placed.opacity = 1 placed.underlays += turfs_underlays diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 8cc742c5080..3e530206a4c 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -49,8 +49,7 @@ var/list/obj/machinery/atmospherics/atmos_machines = list() var/list/turf/turfs = block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]), locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ])) - for(var/L in turfs) - var/turf/B = L + for(var/turf/B as anything in turfs) atoms += B areas |= B.loc for(var/A in B) @@ -71,8 +70,7 @@ SSmachines.setup_powernets_for_cables(cables) // Ensure all machines in loaded areas get notified of power status - for(var/I in areas) - var/area/A = I + for(var/area/A as anything in areas) A.power_change() if(machinery_was_awake) diff --git a/code/modules/materials/fifty_spawner_mats.dm b/code/modules/materials/fifty_spawner_mats.dm index af2e3703e8f..24f3985c4a7 100644 --- a/code/modules/materials/fifty_spawner_mats.dm +++ b/code/modules/materials/fifty_spawner_mats.dm @@ -104,6 +104,10 @@ name = "stack of cloth" type_to_spawn = /obj/item/stack/material/cloth +/obj/fiftyspawner/fiber + name = "stack of plant fibers" + type_to_spawn = /obj/item/stack/material/fiber + /obj/fiftyspawner/cardboard name = "stack of cardboard" type_to_spawn = /obj/item/stack/material/cardboard diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm index 890eab5722e..83cf22271df 100644 --- a/code/modules/materials/materials/_materials.dm +++ b/code/modules/materials/materials/_materials.dm @@ -165,6 +165,7 @@ var/list/name_to_material var/flags = 0 // Various status modifiers. var/sheet_singular_name = "sheet" var/sheet_plural_name = "sheets" + var/sheet_collective_name = "stack" var/is_fusion_fuel // Shards/tables/structures diff --git a/code/modules/materials/materials/organic/cloth.dm b/code/modules/materials/materials/organic/cloth.dm index 260c47f5b0c..1908597d32d 100644 --- a/code/modules/materials/materials/organic/cloth.dm +++ b/code/modules/materials/materials/organic/cloth.dm @@ -123,4 +123,17 @@ ignition_point = T0C+232 melting_point = T0C+300 protectiveness = 1 // 4% - conductive = 0 \ No newline at end of file + conductive = 0 + +/datum/material/fibers + name = MAT_FIBERS + display_name = "plant" + sheet_singular_name = "fiber" + sheet_singular_name = "fibers" + icon_colour = "#006b0e" + flags = MATERIAL_PADDING + ignition_point = T0C+232 + melting_point = T0C+300 + protectiveness = 1 // 4% + conductive = 0 + pass_stack_colors = TRUE diff --git a/code/modules/materials/materials/organic/wood.dm b/code/modules/materials/materials/organic/wood.dm index 5d82ec48758..4293979c3b3 100644 --- a/code/modules/materials/materials/organic/wood.dm +++ b/code/modules/materials/materials/organic/wood.dm @@ -67,10 +67,12 @@ /datum/material/wood/log name = MAT_LOG + display_name = "wood" // will lead to "wood log" icon_base = "log" stack_type = /obj/item/stack/material/log - sheet_singular_name = null - sheet_plural_name = "pile" + sheet_singular_name = "log" + sheet_plural_name = "logs" + sheet_collective_name = "pile" pass_stack_colors = TRUE supply_conversion_value = 1 @@ -81,6 +83,7 @@ /datum/material/wood/log/sif name = MAT_SIFLOG + display_name = "alien wood" icon_colour = "#0099cc" // Cyan-ish stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) stack_type = /obj/item/stack/material/log/sif \ No newline at end of file diff --git a/code/modules/materials/sheets/_sheets.dm b/code/modules/materials/sheets/_sheets.dm index ddc815bbae7..ee359c863bc 100644 --- a/code/modules/materials/sheets/_sheets.dm +++ b/code/modules/materials/sheets/_sheets.dm @@ -54,13 +54,18 @@ if(amount>1) name = "[material.use_name] [material.sheet_plural_name]" - desc = "A stack of [material.use_name] [material.sheet_plural_name]." + desc = "A [material.sheet_collective_name] of [material.use_name] [material.sheet_plural_name]." gender = PLURAL else name = "[material.use_name] [material.sheet_singular_name]" desc = "A [material.sheet_singular_name] of [material.use_name]." gender = NEUTER +/obj/item/stack/material/get_examine_string() + if(!uses_charge) + return "There [amount == 1 ? "is" : "are"] [amount] [material.sheet_singular_name]\s in the [material.sheet_collective_name]." + return ..() + /obj/item/stack/material/use(var/used) . = ..() update_strings() diff --git a/code/modules/materials/sheets/metals/rods.dm b/code/modules/materials/sheets/metals/rods.dm index 318ec68626e..9ebd0fd92f1 100644 --- a/code/modules/materials/sheets/metals/rods.dm +++ b/code/modules/materials/sheets/metals/rods.dm @@ -84,7 +84,7 @@ var/global/list/datum/stack_recipe/rods_recipes = list( \ for(var/obj/structure/grille/G in usr.loc) if (G.destroyed) G.health = 10 - G.density = 1 + G.density = TRUE G.destroyed = 0 G.icon_state = "grille" use(1) diff --git a/code/modules/materials/sheets/organic/textiles.dm b/code/modules/materials/sheets/organic/textiles.dm index a534ee19b1c..8e5594eaa04 100644 --- a/code/modules/materials/sheets/organic/textiles.dm +++ b/code/modules/materials/sheets/organic/textiles.dm @@ -11,6 +11,7 @@ /obj/item/stack/material/cloth name = "cloth" + desc = "Individual fibers woven into a cloth." icon_state = "sheet-cloth" default_type = "cloth" no_variants = FALSE @@ -21,3 +22,13 @@ /obj/item/stack/material/cloth/diyaab color = "#c6ccf0" + +/obj/item/stack/material/fiber + name = "plant fiber" + desc = "Some all-natural plant fibers." + icon_state = "sheet-fiber" + default_type = MAT_FIBERS + pass_color = TRUE + apply_colour = TRUE + drop_sound = 'sound/items/drop/clothing.ogg' + pickup_sound = 'sound/items/pickup/clothing.ogg' diff --git a/code/modules/media/media_machinery.dm b/code/modules/media/media_machinery.dm index 3957ff90059..bbde62a3473 100644 --- a/code/modules/media/media_machinery.dm +++ b/code/modules/media/media_machinery.dm @@ -48,8 +48,7 @@ // Update Media Source. A.media_source = null // Clients - for(var/m in mobs_in_area(A)) - var/mob/M = m + for(var/mob/M as anything in mobs_in_area(A)) M.update_music() master_area = null diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index 199b1ed0d0a..2896f7feead 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -58,7 +58,7 @@ if(53 to 54) new/obj/item/latexballon(src) if(55 to 56) - var/newitem = pick(typesof(/obj/item/toy/mecha) - /obj/item/toy/mecha) + var/newitem = pick(subtypesof(/obj/item/toy/mecha)) new newitem(src) if(57 to 58) new/obj/item/toy/syndicateballoon(src) @@ -77,7 +77,7 @@ if(67 to 68) var/t = rand(4,7) for(var/i = 0, i < t, ++i) - var/newitem = pick(typesof(/obj/item/weapon/stock_parts) - /obj/item/weapon/stock_parts - /obj/item/weapon/stock_parts/subspace) + var/newitem = pick(subtypesof(/obj/item/weapon/stock_parts) - /obj/item/weapon/stock_parts/subspace) new newitem(src) if(69 to 70) new/obj/item/weapon/pickaxe/silver(src) diff --git a/code/modules/mining/alloys.dm b/code/modules/mining/alloys.dm index 219a2becdbb..4ca7e64571c 100644 --- a/code/modules/mining/alloys.dm +++ b/code/modules/mining/alloys.dm @@ -44,7 +44,7 @@ "sand" = 2 ) product = /obj/item/stack/material/glass/phoronglass - +/* /datum/alloy/bronze metaltag = "bronze" requires = list( @@ -52,3 +52,4 @@ "tin" = 1 ) product = /obj/item/stack/material/bronze +*/ \ No newline at end of file diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index e21275504c1..b8618ccf867 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -1,8 +1,8 @@ /obj/machinery/mining icon = 'icons/obj/mining_drill.dmi' - anchored = 0 + anchored = FALSE use_power = USE_POWER_OFF //The drill takes power directly from a cell. - density = 1 + density = TRUE layer = MOB_LAYER+0.1 //So it draws over mobs in the tile north of it. /obj/machinery/mining/drill @@ -28,9 +28,9 @@ "hydrogen" = /obj/item/weapon/ore/hydrogen, "silicates" = /obj/item/weapon/ore/glass, "carbon" = /obj/item/weapon/ore/coal, - "copper" = /obj/item/weapon/ore/copper, + // "copper" = /obj/item/weapon/ore/copper, // "tin" = /obj/item/weapon/ore/tin, - "bauxite" = /obj/item/weapon/ore/bauxite, + // "bauxite" = /obj/item/weapon/ore/bauxite, "rutile" = /obj/item/weapon/ore/rutile ) @@ -44,14 +44,14 @@ // Found with an advanced laser. exotic_drilling >= 1 var/list/ore_types_uncommon = list( MAT_MARBLE = /obj/item/weapon/ore/marble, - "painite" = /obj/item/weapon/ore/painite, - "quartz" = /obj/item/weapon/ore/quartz, + //"painite" = /obj/item/weapon/ore/painite, + //"quartz" = /obj/item/weapon/ore/quartz, MAT_LEAD = /obj/item/weapon/ore/lead ) // Found with an ultra laser. exotic_drilling >= 2 var/list/ore_types_rare = list( - "void opal" = /obj/item/weapon/ore/void_opal, + //"void opal" = /obj/item/weapon/ore/void_opal, MAT_VERDANTIUM = /obj/item/weapon/ore/verdantium ) @@ -266,10 +266,10 @@ if((!supports || !supports.len) && initial(anchored) == 0) icon_state = "mining_drill" - anchored = 0 + anchored = FALSE active = 0 else - anchored = 1 + anchored = TRUE if(supports && supports.len >= braces_needed) supported = 1 diff --git a/code/modules/mining/drilling/scanner.dm b/code/modules/mining/drilling/scanner.dm index 302216b8d4b..9d6eea46079 100644 --- a/code/modules/mining/drilling/scanner.dm +++ b/code/modules/mining/drilling/scanner.dm @@ -41,13 +41,13 @@ var/ore_type switch(metal) - if("silicates", "carbon", "marble", "quartz") ore_type = "surface minerals" - if("hematite", "tin", "copper", "bauxite", "lead") ore_type = "industrial metals" + if("silicates", "carbon", "marble", /*"quartz"*/) ore_type = "surface minerals" + if("hematite", /*"tin", "copper", "bauxite",*/ "lead") ore_type = "industrial metals" if("gold", "silver", "rutile") ore_type = "precious metals" - if("diamond", "painite") ore_type = "precious gems" + if("diamond", /*"painite"*/) ore_type = "precious gems" if("uranium") ore_type = "nuclear fuel" if("phoron", "osmium", "hydrogen") ore_type = "exotic matter" - if("verdantium", "void opal") ore_type = "anomalous matter" + if("verdantium", /*"void opal"*/) ore_type = "anomalous matter" if(ore_type) metals[ore_type] += T.resources[metal] diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index f5c74a2f8b9..c5c939b2f1a 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -18,8 +18,7 @@ var/global/list/total_extraction_beacons = list() /obj/item/extraction_pack/attack_self(mob/user) var/list/possible_beacons = list() - for(var/B in global.total_extraction_beacons) - var/obj/structure/extraction_point/EP = B + for(var/obj/structure/extraction_point/EP as anything in global.total_extraction_beacons) if(EP.beacon_network in beacon_networks) possible_beacons += EP diff --git a/code/modules/mining/machinery/machine_input_output_plates.dm b/code/modules/mining/machinery/machine_input_output_plates.dm index 35149a49b31..179a8f112bc 100644 --- a/code/modules/mining/machinery/machine_input_output_plates.dm +++ b/code/modules/mining/machinery/machine_input_output_plates.dm @@ -4,8 +4,8 @@ icon = 'icons/mob/screen1.dmi' icon_state = "x2" name = "Input area" - density = 0 - anchored = 1.0 + density = FALSE + anchored = TRUE /obj/machinery/mineral/input/New() icon_state = "blank" @@ -14,8 +14,8 @@ icon = 'icons/mob/screen1.dmi' icon_state = "x" name = "Output area" - density = 0 - anchored = 1.0 + density = FALSE + anchored = TRUE /obj/machinery/mineral/output/New() icon_state = "blank" \ No newline at end of file diff --git a/code/modules/mining/machinery/machine_stacking.dm b/code/modules/mining/machinery/machine_stacking.dm index 9469b2d64d8..b0b2a7890e8 100644 --- a/code/modules/mining/machinery/machine_stacking.dm +++ b/code/modules/mining/machinery/machine_stacking.dm @@ -5,8 +5,8 @@ icon = 'icons/obj/machines/mining_machines_vr.dmi' // VOREStation Edit icon_state = "console" layer = ABOVE_WINDOW_LAYER - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/obj/machinery/mineral/stacking_machine/machine = null //var/machinedir = SOUTHEAST //This is really dumb, so lets burn it with fire. @@ -77,8 +77,8 @@ name = "stacking machine" icon = 'icons/obj/machines/mining_machines_vr.dmi' // VOREStation Edit icon_state = "stacker" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE var/obj/machinery/mineral/stacking_unit_console/console var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null @@ -89,11 +89,10 @@ /obj/machinery/mineral/stacking_machine/New() ..() - for(var/stacktype in (subtypesof(/obj/item/stack/material) - typesof(/obj/item/stack/material/cyborg))) - var/obj/item/stack/material/S = stacktype + for(var/obj/item/stack/material/S as anything in (subtypesof(/obj/item/stack/material) - typesof(/obj/item/stack/material/cyborg))) var/s_matname = initial(S.default_type) stack_storage[s_matname] = 0 - stack_paths[s_matname] = stacktype + stack_paths[s_matname] = S spawn( 5 ) for (var/dir in cardinal) diff --git a/code/modules/mining/machinery/machine_unloading.dm b/code/modules/mining/machinery/machine_unloading.dm index 73caa57bc17..ed609e4dfaf 100644 --- a/code/modules/mining/machinery/machine_unloading.dm +++ b/code/modules/mining/machinery/machine_unloading.dm @@ -5,8 +5,8 @@ name = "unloading machine" icon = 'icons/obj/machines/mining_machines_vr.dmi' // VOREStation Edit icon_state = "unloader" - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 0177e714bd7..2500c0dd687 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -26,7 +26,7 @@ attack_verb = list("hit", "pierced", "sliced", "attacked") var/drill_sound = "pickaxe" var/drill_verb = "drilling" - sharp = 1 + sharp = TRUE var/excavation_amount = 200 var/destroy_artefacts = FALSE // some mining tools will destroy artefacts completely while avoiding side-effects. @@ -78,8 +78,8 @@ desc = "A rock cutter that uses bursts of hot plasma. You could use it to cut limbs off of xenos! Or, you know, mine stuff." drill_verb = "cutting" drill_sound = 'sound/items/Welder.ogg' - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE /obj/item/weapon/pickaxe/diamond name = "diamond pickaxe" @@ -124,8 +124,8 @@ origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1) matter = list(MAT_STEEL = 50) attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked") - sharp = 0 - edge = 1 + sharp = FALSE + edge = TRUE var/digspeed = 40 /obj/item/weapon/shovel/spade @@ -144,7 +144,7 @@ desc = "A mining car. This one doesn't work on rails, but has to be dragged." name = "Mining car (not for rails)" icon = 'icons/obj/closets/miningcar.dmi' - density = 1 + density = TRUE // Flags. @@ -193,7 +193,7 @@ if(upright) upright = 0 icon_state = base_state - anchored = 0 + anchored = FALSE src.visible_message("[user] knocks down [src].") else ..() @@ -214,7 +214,7 @@ var/obj/item/stack/flag/newflag = new src.type(T) newflag.amount = 1 newflag.upright = 1 - newflag.anchored = 1 + newflag.anchored = TRUE newflag.name = newflag.singular_name newflag.icon_state = "[newflag.base_state]_open" newflag.visible_message("[user] plants [newflag] firmly in the ground.") diff --git a/code/modules/mining/mine_outcrops.dm b/code/modules/mining/mine_outcrops.dm index 989b172e1e0..ae70e710e38 100644 --- a/code/modules/mining/mine_outcrops.dm +++ b/code/modules/mining/mine_outcrops.dm @@ -2,10 +2,10 @@ name = "outcrop" desc = "A boring rocky outcrop." icon = 'icons/obj/outcrop.dmi' - density = 1 + density = TRUE throwpass = 1 - climbable = 1 - anchored = 1 + climbable = TRUE + anchored = TRUE icon_state = "outcrop" var/mindrop = 5 var/upperdrop = 10 diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 78e33a2d522..aea40de0359 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -5,7 +5,7 @@ var/list/mining_overlay_cache = list() name = "impassable rock" icon = 'icons/turf/walls.dmi' icon_state = "rock-dark" - density = 1 + density = TRUE /turf/simulated/mineral //wall piece name = "rock" @@ -18,7 +18,7 @@ var/list/mining_overlay_cache = list() oxygen = 0 nitrogen = 0 opacity = 1 - density = 1 + density = TRUE blocks_air = 1 temperature = T0C @@ -54,9 +54,9 @@ var/list/mining_overlay_cache = list() "verdantium" = /obj/item/weapon/ore/verdantium, "marble" = /obj/item/weapon/ore/marble, "lead" = /obj/item/weapon/ore/lead, - "copper" = /obj/item/weapon/ore/copper, +// "copper" = /obj/item/weapon/ore/copper, // "tin" = /obj/item/weapon/ore/tin, - "bauxite" = /obj/item/weapon/ore/bauxite, +// "bauxite" = /obj/item/weapon/ore/bauxite, // "void opal" = /obj/item/weapon/ore/void_opal, // "painite" = /obj/item/weapon/ore/painite, // "quartz" = /obj/item/weapon/ore/quartz, @@ -73,6 +73,30 @@ var/list/mining_overlay_cache = list() rock_icon_state = "rock-light" random_icon = 1 +/turf/simulated/mineral/alt + icon_state = "rock-alt" + rock_side_icon_state = "rock_side-alt" + sand_icon_state = "asteroid" + rock_icon_state = "rock-alt" + +/turf/simulated/mineral/icey + icon_state = "rock-icey" + rock_side_icon_state = "rock_side-icey" + sand_icon_state = "sand-icey" // to be replaced + rock_icon_state = "rock-icey" + +/turf/simulated/mineral/crystal + icon_state = "rock-crystal" + rock_side_icon_state = "rock_side-crystal" + sand_icon_state = "sand-icey" // to be replaced + rock_icon_state = "rock-crystal" + +/turf/simulated/mineral/crystal_shiny + icon_state = "rock-crystal-shiny" + rock_side_icon_state = "rock_side-crystal" + sand_icon_state = "sand-icey" // to be replaced + rock_icon_state = "rock-crystal-shiny" + /turf/simulated/mineral/ignore_mapgen ignore_mapgen = 1 @@ -80,7 +104,7 @@ var/list/mining_overlay_cache = list() name = "sand" icon = 'icons/turf/flooring/asteroid.dmi' icon_state = "asteroid" - density = 0 + density = FALSE opacity = 0 blocks_air = 0 can_build_into_floor = TRUE @@ -90,6 +114,10 @@ var/list/mining_overlay_cache = list() icon_state = "sand-light" sand_icon_state = "sand-light" +/turf/simulated/mineral/floor/icey + icon_state = "sand-icey" + sand_icon_state = "sand-icey" // to be replaced + /turf/simulated/mineral/floor/light_border icon_state = "sand-light-border" sand_icon_state = "sand-light-border" @@ -108,7 +136,7 @@ var/list/mining_overlay_cache = list() /turf/simulated/mineral/proc/make_floor() if(!density && !opacity) return - density = 0 + density = FALSE opacity = 0 blocks_air = 0 can_build_into_floor = TRUE @@ -117,7 +145,7 @@ var/list/mining_overlay_cache = list() /turf/simulated/mineral/proc/make_wall() if(density && opacity) return - density = 1 + density = TRUE opacity = 1 blocks_air = 1 can_build_into_floor = FALSE @@ -652,10 +680,10 @@ var/list/mining_overlay_cache = list() var/mineral_name if(rare_ore) - mineral_name = pickweight(list("marble" = 5,/* "quartz" = 15,*/ "copper" = 10, /*"tin" = 5,*/ "bauxite" = 5, "uranium" = 15, "platinum" = 20, "hematite" = 15, "rutile" = 20, "carbon" = 15, "diamond" = 3, "gold" = 15, "silver" = 15, "phoron" = 25, "lead" = 5,/* "void opal" = 1,*/ "verdantium" = 2/*, "painite" = 1*/)) + mineral_name = pickweight(list("marble" = 5,/* "quartz" = 15, "copper" = 10, "tin" = 5, "bauxite" = 5*/, "uranium" = 15, "platinum" = 20, "hematite" = 15, "rutile" = 20, "carbon" = 15, "diamond" = 3, "gold" = 15, "silver" = 15, "phoron" = 25, "lead" = 5,/* "void opal" = 1,*/ "verdantium" = 2/*, "painite" = 1*/)) else - mineral_name = pickweight(list("marble" = 3,/* "quartz" = 10,*/ "copper" = 20, /*"tin" = 15,*/ "bauxite" = 15, "uranium" = 10, "platinum" = 10, "hematite" = 70, "rutile" = 15, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 3,/* "void opal" = 1,*/ "verdantium" = 1/*, "painite" = 1*/)) + mineral_name = pickweight(list("marble" = 3,/* "quartz" = 10, "copper" = 20, "tin" = 15, "bauxite" = 15*/, "uranium" = 10, "platinum" = 10, "hematite" = 70, "rutile" = 15, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 3,/* "void opal" = 1,*/ "verdantium" = 1/*, "painite" = 1*/)) if(mineral_name && (mineral_name in GLOB.ore_data)) mineral = GLOB.ore_data[mineral_name] diff --git a/code/modules/mining/mineral_effect.dm b/code/modules/mining/mineral_effect.dm index f8bc4a03d61..43bd5c85880 100644 --- a/code/modules/mining/mineral_effect.dm +++ b/code/modules/mining/mineral_effect.dm @@ -3,8 +3,8 @@ icon = 'icons/obj/mining.dmi' desc = "Shiny." mouse_opacity = 0 - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/ore_key var/image/scanner_image var/ore_reagent // Reagent from pumping water near this ore. diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index dc95d0e082e..4fc2091b03a 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -106,7 +106,7 @@ icon_state = "ore_lead" material = MAT_LEAD origin_tech = list(TECH_MATERIAL = 3) - +/* /obj/item/weapon/ore/copper name = "raw copper" icon_state = "ore_copper" @@ -121,12 +121,12 @@ name = "raw bauxite" icon_state = "ore_bauxite" material = "bauxite" - +*/ /obj/item/weapon/ore/rutile name = "raw rutile" icon_state = "ore_rutile" material = "rutile" - +/* /obj/item/weapon/ore/void_opal name = "raw void opal" icon_state = "ore_void_opal" @@ -141,7 +141,7 @@ name = "raw quartz" icon_state = "ore_quartz" material = "quartz" - +*/ /obj/item/weapon/ore/slag name = "Slag" desc = "Someone screwed up..." diff --git a/code/modules/mining/ore_box.dm b/code/modules/mining/ore_box.dm index a5dd64386a2..bda08a903de 100644 --- a/code/modules/mining/ore_box.dm +++ b/code/modules/mining/ore_box.dm @@ -5,7 +5,7 @@ icon_state = "orebox0" name = "ore box" desc = "A heavy box used for storing ore." - density = 1 + density = TRUE var/last_update = 0 var/list/stored_ore = list() diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index 5a26dcf0fd5..382e31b8bdf 100644 --- a/code/modules/mining/ore_datum.dm +++ b/code/modules/mining/ore_datum.dm @@ -175,7 +175,7 @@ ore = /obj/item/weapon/ore/lead scan_icon = "mineral_rare" reagent = "lead" - +/* /ore/copper name = "copper" display_name = "copper" @@ -215,7 +215,7 @@ ore = /obj/item/weapon/ore/bauxite scan_icon = "mineral_common" reagent = "aluminum" - +*/ /ore/rutile name = "rutile" display_name = "rutile" @@ -225,7 +225,7 @@ alloy = 1 ore = /obj/item/weapon/ore/rutile scan_icon = "mineral_uncommon" - +/* /ore/painite name = "painite" display_name = "rough painite" @@ -243,3 +243,4 @@ spread_chance = 1 ore = /obj/item/weapon/ore/void_opal scan_icon = "mineral_rare" +*/ \ No newline at end of file diff --git a/code/modules/mob/animations.dm b/code/modules/mob/animations.dm index 9b9ce3957f2..fe642427956 100644 --- a/code/modules/mob/animations.dm +++ b/code/modules/mob/animations.dm @@ -237,8 +237,7 @@ note dizziness decrements automatically in the mob's Life() proc. //Check for clients with pref enabled var/list/viewing = list() - for(var/m in viewers(A)) - var/mob/M = m + for(var/mob/M as anything in viewers(A)) var/client/C = M.client if(C && C.is_preference_enabled(/datum/client_preference/attack_icons)) viewing += M.client diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index f6550249f1b..25620281fc4 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1,7 +1,7 @@ /mob/observer name = "observer" desc = "This shouldn't appear" - density = 0 + density = FALSE vis_flags = NONE /mob/observer/dead @@ -12,7 +12,7 @@ stat = DEAD canmove = 0 blinded = 0 - anchored = 1 // don't get pushed around + anchored = TRUE // don't get pushed around var/can_reenter_corpse var/datum/hud/living/carbon/hud = null // hud @@ -341,6 +341,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/area/A = areas[key] if(A.z in using_map?.secret_levels) areas -= key + if(A.z in using_map?.hidden_levels) + areas -= key return areas @@ -353,10 +355,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/mobz = get_z(mobs[key]) if(mobz in using_map?.secret_levels) mobs -= key - + if(mobz in using_map?.hidden_levels) + mobs -= key + return mobs -/mob/observer/dead/verb/dead_tele(areaname as null|anything in jumpable_areas()) +/mob/observer/dead/verb/dead_tele(areaname as anything in jumpable_areas()) set name = "Teleport" set category = "Ghost" set desc = "Teleport to a location." @@ -383,7 +387,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp usr.forceMove(pick(get_area_turfs(A || jumpable_areas()[areaname]))) usr.on_mob_jump() -/mob/observer/dead/verb/follow(mobname as null|anything in jumpable_mobs()) +/mob/observer/dead/verb/follow(mobname as anything in jumpable_mobs()) set name = "Follow" set category = "Ghost" set desc = "Follow and haunt a mob." diff --git a/code/modules/mob/dead/observer/observer_vr.dm b/code/modules/mob/dead/observer/observer_vr.dm index df68f41851c..1fb9d913c94 100644 --- a/code/modules/mob/dead/observer/observer_vr.dm +++ b/code/modules/mob/dead/observer/observer_vr.dm @@ -73,7 +73,7 @@ else if((world.time - record.last_notification) < 5 MINUTES) to_chat(src, "Too little time has passed since your last notification.") else - db.notify(record.mindname) + db.notify(record) record.last_notification = world.time to_chat(src, "New notification has been sent.") else diff --git a/code/modules/mob/freelook/ai/chunk.dm b/code/modules/mob/freelook/ai/chunk.dm index 2a689c1473b..ebd68a62069 100644 --- a/code/modules/mob/freelook/ai/chunk.dm +++ b/code/modules/mob/freelook/ai/chunk.dm @@ -7,8 +7,7 @@ var/list/cameras = list() /datum/chunk/camera/acquireVisibleTurfs(var/list/visible) - for(var/camera in cameras) - var/obj/machinery/camera/c = camera + for(var/obj/machinery/camera/c as anything in cameras) if(!istype(c)) cameras -= c diff --git a/code/modules/mob/freelook/chunk.dm b/code/modules/mob/freelook/chunk.dm index da2d84701ca..4ae5d3a590a 100644 --- a/code/modules/mob/freelook/chunk.dm +++ b/code/modules/mob/freelook/chunk.dm @@ -86,20 +86,17 @@ visibleTurfs = newVisibleTurfs obscuredTurfs = turfs - newVisibleTurfs - for(var/turf in visAdded) - var/turf/t = turf + for(var/turf/t as anything in visAdded) if(LAZYLEN(t.obfuscations) && t.obfuscations[obfuscation.type]) obscured -= t.obfuscations[obfuscation.type] - for(var/eye in seenby) - var/mob/observer/eye/m = eye + for(var/mob/observer/eye/m as anything in seenby) if(!m) continue var/client/client = m.GetViewerClient() if(client) client.images -= t.obfuscations[obfuscation.type] - for(var/turf in visRemoved) - var/turf/t = turf + for(var/turf/t as anything in visRemoved) if(obscuredTurfs[t]) LAZYINITLIST(t.obfuscations) if(!t.obfuscations[obfuscation.type]) @@ -108,8 +105,7 @@ t.obfuscations[obfuscation.type] = ob_image obscured += t.obfuscations[obfuscation.type] - for(var/eye in seenby) - var/mob/observer/eye/m = eye + for(var/mob/observer/eye/m as anything in seenby) if(!m) seenby -= m continue @@ -142,8 +138,7 @@ obscuredTurfs = turfs - visibleTurfs - for(var/turf in obscuredTurfs) - var/turf/t = turf + for(var/turf/t as anything in obscuredTurfs) LAZYINITLIST(t.obfuscations) if(!t.obfuscations[obfuscation.type]) var/image/ob_image = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER) diff --git a/code/modules/mob/freelook/visualnet.dm b/code/modules/mob/freelook/visualnet.dm index 44cd9278ccd..1508a301333 100644 --- a/code/modules/mob/freelook/visualnet.dm +++ b/code/modules/mob/freelook/visualnet.dm @@ -49,8 +49,7 @@ var/list/chunks_pre_seen = list() var/list/chunks_post_seen = list() - for(var/V in moved_eyes) - var/mob/observer/eye/eye = V + for(var/mob/observer/eye/eye as anything in moved_eyes) if(C) chunks_pre_seen |= eye.visibleChunks // 0xf = 15 @@ -69,31 +68,26 @@ var/list/remove = eye.visibleChunks - visibleChunks var/list/add = visibleChunks - eye.visibleChunks - for(var/chunk in remove) - var/datum/chunk/c = chunk + for(var/datum/chunk/c as anything in remove) c.remove(eye, FALSE) - for(var/chunk in add) - var/datum/chunk/c = chunk + for(var/datum/chunk/c as anything in add) c.add(eye, FALSE) if(C) chunks_post_seen |= eye.visibleChunks if(C) - for(var/V in other_eyes) - var/mob/observer/eye/eye = V + for(var/mob/observer/eye/eye as anything in other_eyes) chunks_post_seen |= eye.visibleChunks var/list/remove = chunks_pre_seen - chunks_post_seen var/list/add = chunks_post_seen - chunks_pre_seen - for(var/chunk in remove) - var/datum/chunk/c = chunk + for(var/datum/chunk/c as anything in remove) C.images -= c.obscured - for(var/chunk in add) - var/datum/chunk/c = chunk + for(var/datum/chunk/c as anything in add) C.images += c.obscured // Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index f0a9eecb5bc..e4f5eb1d085 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -11,8 +11,8 @@ var/list/holder_mob_icon_cache = list() show_messages = 1 sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/head.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi' + SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/head/mob_vox.dmi' ) origin_tech = null @@ -102,38 +102,137 @@ var/list/holder_mob_icon_cache = list() /obj/item/weapon/holder/diona origin_tech = list(TECH_MAGNET = 3, TECH_BIO = 5) slot_flags = SLOT_HEAD | SLOT_OCLOTHING | SLOT_HOLSTER + item_state = "diona" /obj/item/weapon/holder/drone origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 5) + item_state = "repairbot" /obj/item/weapon/holder/drone/swarm origin_tech = list(TECH_MAGNET = 6, TECH_ENGINEERING = 7, TECH_PRECURSOR = 2, TECH_ARCANE = 1) + item_state = "constructiondrone" /obj/item/weapon/holder/pai origin_tech = list(TECH_DATA = 2) +/obj/item/weapon/holder/pai/Initialize(mapload, mob/held) + . = ..() + item_state = held.icon_state + /obj/item/weapon/holder/mouse w_class = ITEMSIZE_TINY +/obj/item/weapon/holder/pai/Initialize(mapload, mob/held) + . = ..() + item_state = held.icon_state + /obj/item/weapon/holder/possum origin_tech = list(TECH_BIO = 2) + item_state = "possum" /obj/item/weapon/holder/possum/poppy origin_tech = list(TECH_BIO = 2, TECH_ENGINEERING = 4) + item_state = "poppy" /obj/item/weapon/holder/cat origin_tech = list(TECH_BIO = 2) + item_state = "cat" /obj/item/weapon/holder/cat/runtime origin_tech = list(TECH_BIO = 2, TECH_DATA = 4) +/obj/item/weapon/holder/cat/cak + origin_tech = list(TECH_BIO = 2) + item_state = "cak" + +/obj/item/weapon/holder/cat/bluespace + origin_tech = list(TECH_BIO = 2, TECH_BLUESPACE = 6) + item_state = "bscat" + +/obj/item/weapon/holder/cat/spacecat + origin_tech = list(TECH_BIO = 2, TECH_MATERIAL = 4) + item_state = "spacecat" + +/obj/item/weapon/holder/cat/original + origin_tech = list(TECH_BIO = 2, TECH_BLUESPACE = 4) + item_state = "original" + +/obj/item/weapon/holder/cat/breadcat + origin_tech = list(TECH_BIO = 2) + item_state = "breadcat" + +/obj/item/weapon/holder/corgi + origin_tech = list(TECH_BIO = 2) + item_state = "corgi" + +/obj/item/weapon/holder/lisa + origin_tech = list(TECH_BIO = 2) + item_state = "lisa" + +/obj/item/weapon/holder/old_corgi + origin_tech = list(TECH_BIO = 2) + item_state = "old_corgi" + +/obj/item/weapon/holder/void_puppy + origin_tech = list(TECH_BIO = 2, TECH_BLUESPACE = 3) + item_state = "void_puppy" + +/obj/item/weapon/holder/narsian + origin_tech = list(TECH_BIO = 2, TECH_ILLEGAL = 3) + item_state = "narsian" + +/obj/item/weapon/holder/bullterrier + origin_tech = list(TECH_BIO = 2) + item_state = "bullterrier" + +/obj/item/weapon/holder/fox + origin_tech = list(TECH_BIO = 2) + item_state = "fox" + +/obj/item/weapon/holder/pug + origin_tech = list(TECH_BIO = 2) + item_state = "pug" + +/obj/item/weapon/holder/sloth + origin_tech = list(TECH_BIO = 2) + item_state = "sloth" + /obj/item/weapon/holder/borer origin_tech = list(TECH_BIO = 6) + item_state = "brainslug" /obj/item/weapon/holder/leech color = "#003366" origin_tech = list(TECH_BIO = 5, TECH_PHORON = 2) +/obj/item/weapon/holder/cat/fluff/tabiranth + name = "Spirit" + desc = "A small, inquisitive feline, who constantly seems to investigate his surroundings." + gender = MALE + icon_state = "kitten" + w_class = ITEMSIZE_SMALL + +/obj/item/weapon/holder/cat/kitten + icon_state = "kitten" + w_class = ITEMSIZE_SMALL + +/obj/item/weapon/holder/cat/fluff/bones + name = "Bones" + desc = "It's Bones! Meow." + gender = MALE + icon_state = "cat3" + +/obj/item/weapon/holder/bird + name = "bird" + desc = "It's a bird!" + icon_state = null + item_icons = null + w_class = ITEMSIZE_SMALL + +/obj/item/weapon/holder/bird/Initialize() + . = ..() + held_mob?.lay_down() + /obj/item/weapon/holder/fish attack_verb = list("fished", "disrespected", "smacked", "smackereled") hitsound = 'sound/effects/slime_squish.ogg' diff --git a/code/modules/mob/living/bot/SLed209bot.dm b/code/modules/mob/living/bot/SLed209bot.dm index c4fd4b27671..82f3c43cc2c 100644 --- a/code/modules/mob/living/bot/SLed209bot.dm +++ b/code/modules/mob/living/bot/SLed209bot.dm @@ -3,7 +3,7 @@ desc = "A security robot. He looks less than thrilled." icon = 'icons/obj/aibots.dmi' icon_state = "sled2090" - density = 1 + density = TRUE health = 200 maxHealth = 200 diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 30ff2c1d2c4..2bc63f1bfea 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/aibots.dmi' layer = MOB_LAYER universal_speak = 1 - density = 0 + density = FALSE makes_dirt = FALSE // No more dirt from Beepsky diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index f0e58c455f2..17d2da7878e 100644 --- a/code/modules/mob/living/bot/ed209bot.dm +++ b/code/modules/mob/living/bot/ed209bot.dm @@ -3,7 +3,7 @@ desc = "A security robot. He looks less than thrilled." icon = 'icons/obj/aibots.dmi' icon_state = "ed2090" - density = 1 + density = TRUE health = 200 maxHealth = 200 diff --git a/code/modules/mob/living/bot/mulebot.dm b/code/modules/mob/living/bot/mulebot.dm index 66d5a595cf4..0f851d6dd58 100644 --- a/code/modules/mob/living/bot/mulebot.dm +++ b/code/modules/mob/living/bot/mulebot.dm @@ -11,8 +11,8 @@ name = "Mulebot" desc = "A Multiple Utility Load Effector bot." icon_state = "mulebot0" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE health = 150 maxHealth = 150 mob_bump_flag = HEAVY diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index 9855d0efd4c..66134335725 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -13,7 +13,7 @@ patrol_speed = 2 target_speed = 3 - density = 1 + density = TRUE var/default_icon_state = "secbot" var/idcheck = FALSE // If true, arrests for having weapons without authorization. diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 132be558597..128fbf36907 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -43,10 +43,6 @@ /mob/living/carbon/alien/u_equip(obj/item/W as obj) return -/mob/living/carbon/alien/Stat() - ..() - stat(null, "Progress: [amount_grown]/[max_grown]") - /mob/living/carbon/alien/restrained() return 0 diff --git a/code/modules/mob/living/carbon/alien/diona/progression.dm b/code/modules/mob/living/carbon/alien/diona/progression.dm index 1fd40b43112..6a8d0864f41 100644 --- a/code/modules/mob/living/carbon/alien/diona/progression.dm +++ b/code/modules/mob/living/carbon/alien/diona/progression.dm @@ -1,3 +1,8 @@ +/mob/living/carbon/alien/diona/Stat() //Specified where progression is at, doesn't work right for some things in carbon/alien + . = ..() + if(. && statpanel("Status")) + stat("Growth", "[round(amount_grown)]/[max_grown]") + /mob/living/carbon/alien/diona/confirm_evolution() if(!is_alien_whitelisted(src, GLOB.all_species[SPECIES_DIONA])) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index e39f66c479f..06bbc810056 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -5,9 +5,10 @@ speak_emote = list("hisses") icon_state = "larva" language = "Hivemind" - maxHealth = 25 - health = 25 + maxHealth = 50 + health = 50 faction = "xeno" + max_grown = 325 //Increase larva growth time due to not needing hosts. /mob/living/carbon/alien/larva/Initialize() . = ..() diff --git a/code/modules/mob/living/carbon/alien/larva/progression.dm b/code/modules/mob/living/carbon/alien/larva/progression.dm index 159daae1efc..6bff3e8a84b 100644 --- a/code/modules/mob/living/carbon/alien/larva/progression.dm +++ b/code/modules/mob/living/carbon/alien/larva/progression.dm @@ -1,3 +1,8 @@ +/mob/living/carbon/alien/larva/Stat() //Specified where progression stats come from, because for some reason it doesn't work right in carbon/alien + . = ..() + if(. && statpanel("Status")) + stat("Growth", "[round(amount_grown)]/[max_grown]") + /mob/living/carbon/alien/larva/confirm_evolution() to_chat(src, "You are growing into a beautiful alien! It is time to choose a caste.") diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 43bcdde4996..64e5145b97f 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -28,7 +28,7 @@ var/rads = radiation/25 radiation -= rads - adjust_nutrition(rads) + //adjust_nutrition(rads) //Commented out to prevent alien obesity. heal_overall_damage(rads,rads) adjustOxyLoss(-(rads)) adjustToxLoss(-(rads)) diff --git a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm index 9af29570741..6946f26a800 100644 --- a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm +++ b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm @@ -56,7 +56,7 @@ if(life_tick % 15 != 0) return 0 - var/list/L = typesof(/datum/medical_effect)-/datum/medical_effect + var/list/L = subtypesof(/datum/medical_effect) for(var/T in L) var/datum/medical_effect/M = new T if (M.manifest(src)) diff --git a/code/modules/mob/living/carbon/human/chem_side_effects.dm b/code/modules/mob/living/carbon/human/chem_side_effects.dm index 9af29570741..6946f26a800 100644 --- a/code/modules/mob/living/carbon/human/chem_side_effects.dm +++ b/code/modules/mob/living/carbon/human/chem_side_effects.dm @@ -56,7 +56,7 @@ if(life_tick % 15 != 0) return 0 - var/list/L = typesof(/datum/medical_effect)-/datum/medical_effect + var/list/L = subtypesof(/datum/medical_effect) for(var/T in L) var/datum/medical_effect/M = new T if (M.manifest(src)) diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index e48246f4317..82e43fa68e6 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -36,7 +36,7 @@ set name = "Set Gender Identity" set desc = "Sets the pronouns when examined and performing an emote." set category = "IC" - var/new_gender_identity = tgui_input_list(usr, "Please select a gender Identity.", list(FEMALE, MALE, NEUTER, PLURAL, HERM)) + var/new_gender_identity = tgui_input_list(usr, "Please select a gender Identity:", "Set Gender Identity", list(FEMALE, MALE, NEUTER, PLURAL, HERM)) if(!new_gender_identity) return 0 change_gender_identity(new_gender_identity) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index bc914b52043..5c3cfef731f 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -60,6 +60,7 @@ for(var/organ in organs) qdel(organ) QDEL_NULL(nif) //VOREStation Add + worn_clothing.Cut() return ..() /mob/living/carbon/human/Stat() @@ -750,7 +751,7 @@ update_eyes() // hair - var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair + var/list/all_hairs = subtypesof(/datum/sprite_accessory/hair) var/list/hairs = list() // loop through potential hairs @@ -766,7 +767,7 @@ h_style = new_style // facial hair - var/list/all_fhairs = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair + var/list/all_fhairs = subtypesof(/datum/sprite_accessory/facial_hair) var/list/fhairs = list() for(var/x in all_fhairs) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index e024b5bd7ee..a3554a262f7 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -358,7 +358,7 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t //Damages ONE external organ, organ gets randomly selected from damagable ones. //It automatically updates damage overlays if necesary //It automatically updates health status -/mob/living/carbon/human/take_organ_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0) +/mob/living/carbon/human/take_organ_damage(var/brute, var/burn, var/sharp = FALSE, var/edge = FALSE) var/list/obj/item/organ/external/parts = get_damageable_organs() if(!parts.len) return var/obj/item/organ/external/picked = pick(parts) @@ -391,7 +391,7 @@ In most cases it makes more sense to use apply_damage() instead! And make sure t if(update) UpdateDamageIcon() // damage MANY external organs, in random order -/mob/living/carbon/human/take_overall_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0, var/used_weapon = null) +/mob/living/carbon/human/take_overall_damage(var/brute, var/burn, var/sharp = FALSE, var/edge = FALSE, var/used_weapon = null) if(status_flags & GODMODE) return //godmode var/list/obj/item/organ/external/parts = get_damageable_organs() var/update = 0 @@ -448,7 +448,7 @@ This function restores all organs. return organs_by_name[zone] */ -/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/sharp = 0, var/edge = 0, var/obj/used_weapon = null) +/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/sharp = FALSE, var/edge = FALSE, var/obj/used_weapon = null) if(Debug2) to_world_log("## DEBUG: human/apply_damage() was called on [src], with [damage] damage, an armor value of [blocked], and a soak value of [soaked].") diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index feab80627a7..e43a1de6b6f 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -135,8 +135,7 @@ emp_act siemens_coefficient *= C.siemens_coefficient // Modifiers. - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) if(!isnull(M.siemens_coefficient)) siemens_coefficient *= M.siemens_coefficient @@ -181,8 +180,7 @@ emp_act for(var/obj/item/clothing/gear in protective_gear) protection += gear.armor[type] - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) var/modifier_armor = LAZYACCESS(M.armor_percent, type) if(modifier_armor) protection += modifier_armor @@ -197,8 +195,7 @@ emp_act for(var/obj/item/clothing/gear in protective_gear) soaked += gear.armorsoak[type] - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) var/modifier_armor = LAZYACCESS(M.armor_flat, type) if(modifier_armor) soaked += modifier_armor @@ -267,7 +264,7 @@ emp_act if(!affecting) return //should be prevented by attacked_with_item() but for sanity. - visible_message("[src] has been [I.attack_verb.len? pick(I.attack_verb) : "attacked"] in the [affecting.name] with [I.name] by [user]!") + visible_message("[src] has been [LAZYLEN(I.attack_verb) ? pick(I.attack_verb) : "attacked"] in the [affecting.name] with [I.name] by [user]!") var/soaked = get_armor_soak(hit_zone, "melee", I.armor_penetration) @@ -472,7 +469,7 @@ emp_act mass = I.w_class/THROWNOBJ_KNOCKBACK_DIVISOR var/momentum = speed*mass - if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED) + if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED && !buckled) var/dir = get_dir(O.throw_source, src) visible_message("[src] staggers under the impact!","You stagger under the impact!") @@ -486,7 +483,7 @@ emp_act if(T) src.loc = T visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!") - src.anchored = 1 + src.anchored = TRUE src.pinned += O // This does a prob check to catch the thing flying at you, with a minimum of 1% diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 81c6605e4ad..3e5dce26580 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -8,7 +8,7 @@ return 1 if(feedback) if(status[1] == HUMAN_EATING_NO_MOUTH) - to_chat(src, "Where do you intend to put \the [food]? You don't have a mouth!") + to_chat(src, "Where do you intend to put [food]? You don't have a mouth!") else if(status[1] == HUMAN_EATING_BLOCKED_MOUTH) to_chat(src, "\The [status[2]] is in the way!") return 0 @@ -19,7 +19,7 @@ return 1 if(feedback) if(status[1] == HUMAN_EATING_NO_MOUTH) - to_chat(feeder, "Where do you intend to put \the [food]? \The [src] doesn't have a mouth!") + to_chat(feeder, "Where do you intend to put [food]? \The [src] doesn't have a mouth!") else if(status[1] == HUMAN_EATING_BLOCKED_MOUTH) to_chat(feeder, "\The [status[2]] is in the way!") return 0 diff --git a/code/modules/mob/living/carbon/human/human_modular_limbs.dm b/code/modules/mob/living/carbon/human/human_modular_limbs.dm index 14bc1a20242..c38bf4ebd63 100644 --- a/code/modules/mob/living/carbon/human/human_modular_limbs.dm +++ b/code/modules/mob/living/carbon/human/human_modular_limbs.dm @@ -58,8 +58,7 @@ // Checks the organ list for limbs meeting a predicate. Way overengineered for such a limited use // case but I can see it being expanded in the future if meat limbs or doona limbs use it. /mob/living/carbon/human/proc/get_modular_limbs(var/return_first_found = FALSE, var/validate_proc) - for(var/bp in organs) - var/obj/item/organ/external/E = bp + for(var/obj/item/organ/external/E as anything in organs) if(!validate_proc || call(E, validate_proc)(src) > MODULAR_BODYPART_INVALID) LAZYADD(., E) if(return_first_found) @@ -67,8 +66,7 @@ // Prune children so we can't remove every individual component of an entire prosthetic arm // piece by piece. Technically a circular dependency here would remove the limb entirely but // if there's a parent whose child is also its parent, there's something wrong regardless. - for(var/bp in .) - var/obj/item/organ/external/E = bp + for(var/obj/item/organ/external/E as anything in .) if(length(E.children)) . -= E.children diff --git a/code/modules/mob/living/carbon/human/human_species.dm b/code/modules/mob/living/carbon/human/human_species.dm index 3c6451fc99a..43225a6d34a 100644 --- a/code/modules/mob/living/carbon/human/human_species.dm +++ b/code/modules/mob/living/carbon/human/human_species.dm @@ -22,6 +22,74 @@ . = ..() delete_inventory() +/mob/living/carbon/human/dummy/mannequin/autoequip + icon = 'icons/mob/human_races/r_human.dmi' + icon_state = "preview" + +/mob/living/carbon/human/dummy/mannequin/autoequip/Initialize() + icon = null + icon_state = "" + . = ..() + + dress_up() + turntable() + +/mob/living/carbon/human/dummy/mannequin/autoequip/proc/dress_up() + set waitfor = FALSE + + for(var/obj/item/I in loc) + if(istype(I, /obj/item/clothing)) + var/obj/item/clothing/C = I + C.species_restricted = null + equip_to_appropriate_slot(I) + + if(istype(back, /obj/item/weapon/rig)) + var/obj/item/weapon/rig/rig = back + rig.toggle_seals(src) + +/mob/living/carbon/human/dummy/mannequin/autoequip/proc/turntable() + set waitfor = FALSE + + while(TRUE) + set_dir(SOUTH) + sleep(2 SECONDS) + set_dir(EAST) + sleep(2 SECONDS) + set_dir(NORTH) + sleep(2 SECONDS) + set_dir(WEST) + sleep(2 SECONDS) + +/mob/living/carbon/human/dummy/mannequin/autoequip/tajaran + icon = 'icons/mob/human_races/r_tajaran.dmi' +/mob/living/carbon/human/dummy/mannequin/autoequip/tajaran/Initialize(var/new_loc) + h_style = "Tajaran Ears" + return ..(new_loc, SPECIES_TAJ) + +/mob/living/carbon/human/dummy/mannequin/autoequip/unathi + icon = 'icons/mob/human_races/r_lizard.dmi' +/mob/living/carbon/human/dummy/mannequin/autoequip/unathi/Initialize(var/new_loc) + h_style = "Unathi Horns" + return ..(new_loc, SPECIES_UNATHI) + +/mob/living/carbon/human/dummy/mannequin/autoequip/sergal + icon = 'icons/mob/human_races/r_sergal.dmi' +/mob/living/carbon/human/dummy/mannequin/autoequip/sergal/Initialize(var/new_loc) + h_style = "Sergal Ears" + return ..(new_loc, SPECIES_SERGAL) + +/mob/living/carbon/human/dummy/mannequin/autoequip/vulpkanin + icon = 'icons/mob/human_races/r_vulpkanin.dmi' +/mob/living/carbon/human/dummy/mannequin/autoequip/vulpkanin/Initialize(var/new_loc) + h_style = "vulpkanin, dual-color" + return ..(new_loc, SPECIES_VULPKANIN) + +/mob/living/carbon/human/dummy/mannequin/autoequip/teshari + icon = 'icons/mob/human_races/r_teshari.dmi' +/mob/living/carbon/human/dummy/mannequin/autoequip/teshari/Initialize(var/new_loc) + //h_style = "teshari, dual-color" + return ..(new_loc, SPECIES_TESHARI) + /mob/living/carbon/human/skrell/Initialize(var/new_loc) h_style = "Skrell Short Tentacles" return ..(new_loc, SPECIES_SKRELL) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 7aa1dee24f9..119d349105f 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -193,6 +193,7 @@ This saves us from having to call add_fingerprint() any time something is put in s_store = null update_inv_s_store() else if (W == back) + worn_clothing -= back back = null update_inv_back() else if (W == handcuffed) @@ -304,6 +305,7 @@ This saves us from having to call add_fingerprint() any time something is put in if(slot_gloves) src.gloves = W W.equipped(src, slot) + worn_clothing += gloves update_inv_gloves() if(slot_head) src.head = W diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 8041937f268..91a30f0b420 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -846,8 +846,7 @@ . = 1 - . // Invert from 1 = immunity to 0 = immunity. // Doing it this way makes multiplicative stacking not get out of hand, so two modifiers that give 0.5 protection will be combined to 0.75 in the end. - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) if(!isnull(M.heat_protection)) . *= 1 - M.heat_protection @@ -866,8 +865,7 @@ . = 1 - . // Invert from 1 = immunity to 0 = immunity. // Doing it this way makes multiplicative stacking not get out of hand, so two modifiers that give 0.5 protection will be combined to 0.75 in the end. - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) if(!isnull(M.cold_protection)) // Invert the modifier values so they align with the current working value. . *= 1 - M.cold_protection diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 5dea2482c63..b2232f84343 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -129,6 +129,14 @@ message_data[2] = pick(M.say_verbs) . = 1 + if(CE_SPEEDBOOST in chem_effects || is_jittery) // motor mouth + // Despite trying to url/html decode these, byond is just being bad and I dunno. + var/static/regex/speedboost_initial = new (@"&[a-z]{2,5};|&#\d{2};","g") + // Not herestring because bad vs code syntax highlight panics at apostrophe + var/static/regex/speedboost_main = new ("\[ ',!?.;\]","g") + for(var/datum/multilingual_say_piece/S in message_data[1]) + S.message = speedboost_initial.Replace(S.message, "") + S.message = speedboost_main.Replace(S.message, "") else . = ..(message_data) diff --git a/code/modules/mob/living/carbon/human/species/outsider/event.dm b/code/modules/mob/living/carbon/human/species/outsider/event.dm index f88768aa74d..32c3314b0b6 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/event.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/event.dm @@ -112,7 +112,6 @@ Variables you may want to make use of are: ) var/use_bodyshape = SPECIES_HUMAN - var/waterbreathing = 0 var/overcome_gravity = 0 var/hover = 0 @@ -199,7 +198,7 @@ Variables you may want to make use of are: /datum/species/event1/proc/toggle_cloning() flags ^= NO_SCAN - + /datum/species/event1/proc/toggle_defibbing() flags ^= NO_DEFIB @@ -215,9 +214,6 @@ Variables you may want to make use of are: /datum/species/event1/get_bodytype(var/mob/living/carbon/human/H) //Default to human sprites, if they're based on another species, var edit use_bodyshape to the correct thing in _defines/mobs.dm of the species you want to use. return use_bodyshape -/datum/species/event1/can_breathe_water() - return waterbreathing - /datum/species/event1/can_overcome_gravity(var/mob/living/carbon/human/H) return overcome_gravity diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm index 6af26d350e0..37872564c3c 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -70,6 +70,7 @@ breath_type = null poison_type = null + water_breather = TRUE //They don't quite breathe vision_flags = SEE_SELF|SEE_MOBS appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_UNDERWEAR @@ -131,9 +132,6 @@ /datum/species/shadekin/handle_environment_special(var/mob/living/carbon/human/H) handle_shade(H) -/datum/species/shadekin/can_breathe_water() - return TRUE //they dont quite breathe - /datum/species/shadekin/add_inherent_verbs(var/mob/living/carbon/human/H) ..() add_shadekin_abilities(H) diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm index 1aa8454b701..8f22ca4907b 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm @@ -89,8 +89,7 @@ ability_flags &= ~AB_PHASE_SHIFTED mouse_opacity = 1 name = real_name - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.escapable = initial(B.escapable) //cut_overlays() @@ -138,8 +137,7 @@ custom_emote(1,"phases out!") name = "Something" - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.escapable = FALSE var/obj/effect/temp_visual/shadekin/phase_out/phaseanim = new /obj/effect/temp_visual/shadekin/phase_out(src.loc) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index e3ca9150f19..459f90c5a5a 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -16,7 +16,7 @@ var/speech_bubble_appearance = "normal" // Part of icon_state to use for speech bubbles when talking. See talk.dmi for available icons. var/fire_icon_state = "humanoid" // The icon_state used inside OnFire.dmi for when on fire. - var/suit_storage_icon = 'icons/mob/belt_mirror.dmi' // Icons used for worn items in suit storage slot. + var/suit_storage_icon = 'icons/inventory/suit_store/mob.dmi' // Icons used for worn items in suit storage slot. // Damage overlay and masks. var/damage_overlays = 'icons/mob/human_races/masks/dam_human.dmi' @@ -107,7 +107,7 @@ var/alcohol_mod = 1 // Multiplier to alcohol strength; 0.5 = half, 0 = no effect at all, 2 = double, etc. var/pain_mod = 1 // Multiplier to pain effects; 0.5 = half, 0 = no effect (equal to NO_PAIN, really), 2 = double, etc. var/spice_mod = 1 // Multiplier to spice/capsaicin/frostoil effects; 0.5 = half, 0 = no effect (immunity), 2 = double, etc. - var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overriden by "can_feel_pain" var + var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overriden by "can_feel_pain" var // set below is EMP interactivity for nonsynth carbons var/emp_sensitivity = 0 // bitflag. valid flags are: EMP_PAIN, EMP_BLIND, EMP_DEAFEN, EMP_CONFUSE, EMP_STUN, and EMP_(BRUTE/BURN/TOX/OXY)_DMG var/emp_dmg_mod = 1 // Multiplier to all EMP damage sustained by the mob, if it's EMP-sensitive @@ -129,6 +129,7 @@ var/breath_type = "oxygen" // Non-oxygen gas breathed, if any. var/poison_type = "phoron" // Poisonous air. var/exhale_type = "carbon_dioxide" // Exhaled gas type. + var/water_breather = FALSE var/body_temperature = 310.15 // Species will try to stabilize at this temperature. (also affects temperature processing) @@ -499,7 +500,7 @@ // Called when lying down on a water tile. /datum/species/proc/can_breathe_water() - return FALSE + return water_breather // Impliments different trails for species depending on if they're wearing shoes. /datum/species/proc/get_move_trail(var/mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index 27552552522..5e2aaafb8e5 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -3,8 +3,8 @@ attack_verb = list("bit", "chomped on") attack_sound = 'sound/weapons/bite.ogg' shredding = 0 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE /datum/unarmed_attack/diona attack_name = "tendrils" @@ -21,8 +21,8 @@ eye_attack_text_victim = "sharp claws" attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE /datum/unarmed_attack/claws/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/skill = user.skills["combat"] @@ -64,11 +64,11 @@ /datum/unarmed_attack/claws/strong/xeno attack_verb = list("slashed", "gouged", "stabbed") - damage = 10 + damage = 15 /datum/unarmed_attack/claws/strong/xeno/queen attack_verb = list("slashed", "gouged", "stabbed", "gored") - damage = 15 + damage = 20 /datum/unarmed_attack/bite/strong attack_name = "strong bite" @@ -77,7 +77,7 @@ shredding = 1 /datum/unarmed_attack/bite/strong/xeno - damage = 10 + damage = 15 /datum/unarmed_attack/slime_glomp attack_name = "glomp" diff --git a/code/modules/mob/living/carbon/human/species/species_attack_vr.dm b/code/modules/mob/living/carbon/human/species/species_attack_vr.dm index 58257ae3242..73bee4fa09d 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack_vr.dm @@ -3,8 +3,8 @@ attack_noun = list("fangs") attack_sound = 'sound/weapons/bite.ogg' shredding = 0 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE /datum/unarmed_attack/bite/sharp/numbing/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/obj/item/organ/external/affecting = target.get_organ(zone) diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm index 9f3a928b9ba..503fb45d8ce 100644 --- a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm +++ b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm @@ -177,8 +177,7 @@ var/list/wrapped_species_by_ref = list() last_special = world.time + 50 - var/current = RGBdec2hex(list(r_skin, g_skin, b_skin)) - var/new_skin = input(usr, "Please select a new body color.", "Shapeshifter Colour", current) as null|color + var/new_skin = input(usr, "Please select a new body color.", "Shapeshifter Colour", rgb(r_skin, g_skin, b_skin)) as null|color if(!new_skin) return shapeshifter_set_colour(new_skin) diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm index aab6fdd40b0..fbd1921c551 100644 --- a/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm @@ -171,8 +171,7 @@ last_special = world.time + 50 - for(var/limb in src.organs) - var/obj/item/organ/external/L = limb + for(var/obj/item/organ/external/L as anything in src.organs) L.transparent = !L.transparent visible_message("\The [src]'s interal composition seems to change.") update_icons_body() diff --git a/code/modules/mob/living/carbon/human/species/station/alraune.dm b/code/modules/mob/living/carbon/human/species/station/alraune.dm index 2cb0b357fb1..12424f993c3 100644 --- a/code/modules/mob/living/carbon/human/species/station/alraune.dm +++ b/code/modules/mob/living/carbon/human/species/station/alraune.dm @@ -20,6 +20,7 @@ breath_type = "oxygen" poison_type = "phoron" exhale_type = "oxygen" + water_breather = TRUE //eh, why not? Aquatic plants are a thing. // Heat and cold resistances are 20 degrees broader on the level 1 range, level 2 is default, level 3 is much weaker, halfway between L2 and normal L3. // Essentially, they can tolerate a broader range of comfortable temperatures, but suffer more at extremes. @@ -45,8 +46,8 @@ flags = NO_SCAN | IS_PLANT | NO_MINOR_CUT appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR - inherent_verbs = list( - /mob/living/carbon/human/proc/alraune_fruit_select) //Give them the voremodes related to wrapping people in vines and sapping their fluids + inherent_verbs = list(/mob/living/carbon/human/proc/alraune_fruit_select, //Give them the voremodes related to wrapping people in vines and sapping their fluids + /mob/living/carbon/human/proc/tie_hair) color_mult = 1 icobase = 'icons/mob/human_races/r_human_vr.dmi' @@ -90,9 +91,6 @@ A_FRUIT = /obj/item/organ/internal/fruitgland, ) -/datum/species/alraune/can_breathe_water() - return TRUE //eh, why not? Aquatic plants are a thing. - /datum/species/alraune/handle_environment_special(var/mob/living/carbon/human/H) if(H.inStasisNow()) // if they're in stasis, they won't need this stuff. diff --git a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm index fe8d8ecb687..bba44edf36f 100644 --- a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm @@ -22,6 +22,7 @@ health_hud_intensity = 2 num_alternate_languages = 3 assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) + inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) genders = list(MALE, FEMALE, PLURAL, NEUTER) @@ -56,12 +57,6 @@ // Stub species overrides for shoving trait abilities into -//Called when face-down in the water or otherwise over their head. -// Return: TRUE for able to breathe fine in water. -/datum/species/custom/can_breathe_water() - return /datum/trait/positive/water_breather in traits - - //Called during handle_environment in Life() ticks. // Return: Not used. /datum/species/custom/handle_environment_special(var/mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm index 29c91da8bf8..38968712010 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm @@ -82,12 +82,24 @@ healing.expire() return ..() +/mob/living/simple_mob/protean_blob/say_understands(var/mob/other, var/datum/language/speaking = null) + // The parent of this proc and its parent are SHAMS and should be rewritten, but I'm not up to it right now. + if(!speaking) + return TRUE // can understand common, they're like, a normal person thing + return ..() + /mob/living/simple_mob/protean_blob/speech_bubble_appearance() return "synthetic" +/mob/living/simple_mob/protean_blob/get_available_emotes() + return global._robot_default_emotes + /mob/living/simple_mob/protean_blob/init_vore() return //Don't make a random belly, don't waste your time +/mob/living/simple_mob/protean_blob/isSynthetic() + return TRUE // yup + /mob/living/simple_mob/protean_blob/Stat() ..() if(humanform) @@ -382,8 +394,7 @@ var/global/list/disallowed_protean_accessories = list( //Transfer vore organs blob.vore_organs = vore_organs blob.vore_selected = vore_selected - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.forceMove(blob) B.owner = blob @@ -453,8 +464,7 @@ var/global/list/disallowed_protean_accessories = list( //Transfer vore organs vore_selected = blob.vore_selected - for(var/belly in blob.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in blob.vore_organs) B.forceMove(src) B.owner = src diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm index 8241e376dbb..71d48f0fc8c 100755 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm @@ -223,8 +223,7 @@ stat(null, "- -- --- REFACTORY ERROR! --- -- -") stat(null, "- -- --- Abilities (Shift+LMB Examines) --- -- -") - for(var/ability in abilities) - var/obj/effect/protean_ability/A = ability + for(var/obj/effect/protean_ability/A as anything in abilities) stat("[A.ability_name]",A.atom_button_text()) // Various modifiers @@ -315,8 +314,7 @@ holder.adjustBruteLoss(-1,include_robo = TRUE) //Modified by species resistances holder.adjustFireLoss(-0.5,include_robo = TRUE) //Modified by species resistances var/mob/living/carbon/human/H = holder - for(var/organ in H.internal_organs) - var/obj/item/organ/O = organ + for(var/obj/item/organ/O as anything in H.internal_organs) // Fix internal damage if(O.damage > 0) O.damage = max(0,O.damage-0.1) diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index b0dea18d58e..5bb036f5bd9 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -340,6 +340,8 @@ reagent_tag = IS_SKRELL allergens = ALLERGEN_MEAT|ALLERGEN_FISH|ALLERGEN_DAIRY|ALLERGEN_EGGS + water_breather = TRUE + has_limbs = list( BP_TORSO = list("path" = /obj/item/organ/external/chest), BP_GROIN = list("path" = /obj/item/organ/external/groin), @@ -354,9 +356,6 @@ BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right) ) -/datum/species/skrell/can_breathe_water() - return TRUE - /datum/species/zaddat name = SPECIES_ZADDAT name_plural = "Zaddat" @@ -618,7 +617,9 @@ if(isturf(H.loc)) //else, there's considered to be no light var/turf/T = H.loc light_amount = T.get_lumcount() * 10 - H.adjust_nutrition(light_amount) + // Don't overfeed, just make them full without going over. + if((H.nutrition + light_amount) < initial(H.nutrition)) + H.adjust_nutrition(light_amount) H.shock_stage -= light_amount if(light_amount >= 3) //if there's enough light, heal diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index f34a18af3e8..ec058ac0d30 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -835,12 +835,12 @@ return if(!C.anchored && !C.pulledby) //Not currently anchored, and not pulled by anyone. - C.anchored = 1 //This is the only way to stop the inertial_drift. + C.anchored = TRUE //This is the only way to stop the inertial_drift. C.adjust_nutrition(-25) update_floating() to_chat(C, "You hover in place.") spawn(6) //.6 seconds. - C.anchored = 0 + C.anchored = FALSE else return @@ -910,7 +910,7 @@ to_chat(src, "You can't weave here!") return - if(do_after(src, desired_result.time, exclusive = TRUE)) + if(do_after(src, desired_result.time, exclusive = TASK_USER_EXCLUSIVE)) if(desired_result.cost > species.silk_reserve) to_chat(src, "You don't have enough silk to weave that!") return @@ -969,7 +969,7 @@ to_chat(src, "You can't weave here!") return - if(do_after(src, desired_result.time, exclusive = TRUE)) + if(do_after(src, desired_result.time, exclusive = TASK_USER_EXCLUSIVE)) if(desired_result.cost > species.silk_reserve) to_chat(src, "You don't have enough silk to weave that!") return diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index a549049e2ad..4d766fb837a 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -27,7 +27,8 @@ /mob/living/carbon/human/proc/sonar_ping, /mob/living/carbon/human/proc/tie_hair, /mob/living/proc/flying_toggle, - /mob/living/proc/start_wings_hovering) //Xenochimera get all the special verbs since they can't select traits. + /mob/living/proc/start_wings_hovering, + /mob/living/carbon/human/proc/tie_hair) //Xenochimera get all the special verbs since they can't select traits. virus_immune = 1 // They practically ARE one. min_age = 18 @@ -334,7 +335,8 @@ /mob/living/carbon/human/proc/toggle_silk_production, /mob/living/carbon/human/proc/weave_structure, /mob/living/carbon/human/proc/weave_item, - /mob/living/carbon/human/proc/set_silk_color) + /mob/living/carbon/human/proc/set_silk_color, + /mob/living/carbon/human/proc/tie_hair) min_age = 18 max_age = 80 diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm index a7f55d937a6..96453b5e7b9 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm @@ -15,6 +15,7 @@ secondary_langs = list(LANGUAGE_SAGARU) name_language = LANGUAGE_SAGARU color_mult = 1 + inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) min_age = 18 max_age = 80 @@ -80,7 +81,7 @@ name_language = LANGUAGE_SKRELLIAN color_mult = 1 assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) - + inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) min_age = 18 max_age = 80 @@ -103,13 +104,12 @@ spawn_flags = SPECIES_CAN_JOIN appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR + water_breather = TRUE + flesh_color = "#AFA59E" base_color = "#777777" blood_color = "#1D2CBF" -/datum/species/akula/can_breathe_water() - return TRUE // Surprise, SHERKS. - /datum/species/nevrean name = SPECIES_NEVREAN name_plural = "Nevreans" @@ -127,8 +127,9 @@ secondary_langs = list(LANGUAGE_BIRDSONG) name_language = LANGUAGE_BIRDSONG color_mult = 1 - inherent_verbs = list(/mob/living/proc/flying_toggle,/mob/living/proc/start_wings_hovering) - + inherent_verbs = list(/mob/living/proc/flying_toggle, + /mob/living/proc/start_wings_hovering, + /mob/living/carbon/human/proc/tie_hair) min_age = 18 max_age = 80 @@ -169,7 +170,9 @@ num_alternate_languages = 3 secondary_langs = list(LANGUAGE_TERMINUS) name_language = LANGUAGE_TERMINUS - inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds) + inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds, + /mob/living/proc/shred_limb, + /mob/living/carbon/human/proc/tie_hair) min_age = 18 max_age = 80 @@ -201,7 +204,6 @@ "You feel uncomfortably warm.", "Your overheated skin itches." ) - inherent_verbs = list(/mob/living/proc/shred_limb) /datum/species/vulpkanin name = SPECIES_VULPKANIN @@ -220,7 +222,8 @@ // gluttonous = 1 num_alternate_languages = 3 color_mult = 1 - inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds) + inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds, + /mob/living/carbon/human/proc/tie_hair) blurb = "Vulpkanin are a species of sharp-witted canine-pideds residing on the planet Altam just barely within the \ dual-star Vazzend system. Their politically de-centralized society and independent natures have led them to become a species and \ @@ -253,6 +256,7 @@ tail_animation = 'icons/mob/species/unathi/tail_vr.dmi' color_mult = 1 min_age = 18 + inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) gluttonous = 0 genders = list(MALE, FEMALE, PLURAL, NEUTER) descriptors = list() @@ -265,6 +269,7 @@ tail_animation = 'icons/mob/species/tajaran/tail_vr.dmi' color_mult = 1 min_age = 18 + inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) allergens = null gluttonous = 0 //Moving this here so I don't have to fix this conflict every time polaris glances at station.dm inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds) @@ -279,6 +284,7 @@ deform = 'icons/mob/human_races/r_def_skrell_vr.dmi' color_mult = 1 min_age = 18 + inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) reagent_tag = null allergens = null assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) @@ -288,6 +294,7 @@ /datum/species/zaddat spawn_flags = SPECIES_CAN_JOIN min_age = 18 + inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) //I don't even know if Zaddat can HAVE hair, but here we are, I suppose gluttonous = 0 genders = list(MALE, FEMALE, PLURAL, NEUTER) descriptors = list() @@ -329,6 +336,7 @@ gluttonous = 0 spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE min_age = 18 + inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair) //Get ya quills done did icobase = 'icons/mob/human_races/r_vox_old.dmi' deform = 'icons/mob/human_races/r_def_vox_old.dmi' descriptors = list( @@ -349,7 +357,7 @@ name_language = null color_mult = 1 genders = list(MALE, FEMALE, PLURAL, NEUTER) - inherent_verbs = list(/mob/living/proc/flying_toggle,/mob/living/proc/start_wings_hovering) + inherent_verbs = list(/mob/living/proc/flying_toggle,/mob/living/proc/start_wings_hovering,/mob/living/carbon/human/proc/tie_hair) min_age = 18 max_age = 80 @@ -447,6 +455,7 @@ breath_type = null poison_type = null + water_breather = TRUE //They do not quite breathe... appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_SKIN_COLOR | HAS_UNDERWEAR @@ -477,12 +486,9 @@ BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right/crewkin) ) -/datum/species/shadekin/get_bodytype() +/datum/species/crew_shadekin/get_bodytype() return SPECIES_SHADEKIN -/datum/species/shadekin/can_breathe_water() - return TRUE //they dont quite breathe - //These species are not really species but are just there for custom species selection /datum/species/fl_zorren @@ -496,7 +502,7 @@ num_alternate_languages = 3 secondary_langs = list(LANGUAGE_TERMINUS) name_language = LANGUAGE_TERMINUS - inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds) + inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds,/mob/living/proc/shred_limb,/mob/living/carbon/human/proc/tie_hair) min_age = 18 max_age = 80 @@ -510,7 +516,6 @@ base_color = "#333333" blood_color = "#240bc4" color_mult = 1 - inherent_verbs = list(/mob/living/proc/shred_limb) heat_discomfort_strings = list( "Your fur prickles in the heat.", diff --git a/code/modules/mob/living/carbon/human/species/station/teshari.dm b/code/modules/mob/living/carbon/human/species/station/teshari.dm index c2864e9f7cc..18a30a018cd 100644 --- a/code/modules/mob/living/carbon/human/species/station/teshari.dm +++ b/code/modules/mob/living/carbon/human/species/station/teshari.dm @@ -38,7 +38,7 @@ damage_overlays = 'icons/mob/human_races/masks/dam_teshari.dmi' damage_mask = 'icons/mob/human_races/masks/dam_mask_teshari.dmi' blood_mask = 'icons/mob/human_races/masks/blood_teshari.dmi' - suit_storage_icon = 'icons/mob/species/teshari/belt_mirror.dmi' + suit_storage_icon = 'icons/inventory/suit_store/mob_teshari.dmi' fire_icon_state = "generic" // Humanoid is too big for them and spriting a new one is really annoying. diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index 3c298700801..8cac58d59fa 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -26,6 +26,7 @@ desc = "You are able to withstand much colder temperatures than other species, and can even be comfortable in extremely cold environments. You are also more vulnerable to hot environments, and have a lower body temperature as a consequence of these adaptations." cost = 0 var_changes = list("cold_level_1" = 200, "cold_level_2" = 150, "cold_level_3" = 90, "breath_cold_level_1" = 180, "breath_cold_level_2" = 100, "breath_cold_level_3" = 60, "cold_discomfort_level" = 210, "heat_level_1" = 330, "heat_level_2" = 380, "heat_level_3" = 700, "breath_heat_level_1" = 360, "breath_heat_level_2" = 400, "breath_heat_level_3" = 850, "heat_discomfort_level" = 295, "body_temperature" = 290) + can_take = ORGANICS excludes = list(/datum/trait/neutral/hotadapt) /datum/trait/neutral/hotadapt @@ -33,6 +34,7 @@ desc = "You are able to withstand much hotter temperatures than other species, and can even be comfortable in extremely hot environments. You are also more vulnerable to cold environments, and have a higher body temperature as a consequence of these adaptations." cost = 0 var_changes = list("heat_level_1" = 420, "heat_level_2" = 460, "heat_level_3" = 1100, "breath_heat_level_1" = 440, "breath_heat_level_2" = 510, "breath_heat_level_3" = 1500, "heat_discomfort_level" = 390, "cold_level_1" = 280, "cold_level_2" = 220, "cold_level_3" = 140, "breath_cold_level_1" = 260, "breath_cold_level_2" = 240, "breath_cold_level_3" = 120, "cold_discomfort_level" = 280, "body_temperature" = 330) + can_take = ORGANICS // negates the need for suit coolers entirely for synths, so no excludes = list(/datum/trait/neutral/coldadapt) /datum/trait/neutral/autohiss_unathi diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 0298f370df2..ca67f1bb055 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -158,3 +158,4 @@ name = "Water Breather" desc = "You can breathe under water." cost = 1 + var_changes = list("water_breather" = 1) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/weaver_objs.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/weaver_objs.dm index b3ddc26ed3d..45aeefc2b56 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/weaver_objs.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/weaver_objs.dm @@ -4,8 +4,8 @@ name = "weaversilk web" desc = "A thin layer of fiberous webs. It looks like it can be torn down with one strong hit." icon = 'icons/vore/weaver_icons_vr.dmi' - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE /obj/effect/weaversilk/ex_act(severity) qdel(src) @@ -15,7 +15,7 @@ user.setClickCooldown(user.get_attack_speed(W)) if(W.force) - visible_message("\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]") + visible_message("\The [src] has been [LAZYLEN(W.attack_verb) ? pick(W.attack_verb) : "attacked"] with \the [W][(user ? " by [user]." : ".")]") qdel(src) /obj/effect/weaversilk/bullet_act(var/obj/item/projectile/Proj) @@ -50,7 +50,7 @@ desc = "A thin layer of fiberous webs, but just thick enough to block your way. It looks like it can be torn down with one strong hit." icon_state = "wallweb1" var/possible_icon_states = list("wallweb1", "wallweb2", "wallweb3") - density = 1 + density = TRUE /obj/effect/weaversilk/wall/Initialize() ..() diff --git a/code/modules/mob/living/carbon/human/species/station/xenochimera_trait_vr.dm b/code/modules/mob/living/carbon/human/species/station/xenochimera_trait_vr.dm index 2065d91cc45..bd1eb55172e 100644 --- a/code/modules/mob/living/carbon/human/species/station/xenochimera_trait_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/xenochimera_trait_vr.dm @@ -1,4 +1,4 @@ -/* +/* ** For now, these are just neutral traits for Xenochimera only to take. ** These are only traits that they should reasonably be able to evolve to acquire themselves. ** I won't add the resistances though because those are kinda lame for a 'chimera to take! @@ -49,3 +49,12 @@ cost = 0 category = 0 custom_only = FALSE + +/datum/trait/positive/water_breather/xenochimera + sort = TRAIT_SORT_SPECIES + allowed_species = list(SPECIES_XENOCHIMERA) + name = "Xenochimera: Water Breather" + desc = "You can breathe under water." + cost = 0 + category = 0 + custom_only = FALSE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm deleted file mode 100644 index 88efb6d3551..00000000000 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm +++ /dev/null @@ -1,161 +0,0 @@ -// This is to replace the previous datum/disease/alien_embryo for slightly improved handling and maintainability -// It functions almost identically (see code/datums/diseases/alien_embryo.dm) - -/* -/obj/item/alien_embryo //Commented out as reference for future reproduction methods, or addition later. - name = "alien embryo" - desc = "All slimy and yuck." - icon = 'icons/mob/alien.dmi' - icon_state = "larva0_dead" - var/mob/living/affected_mob - var/stage = 0 - -/obj/item/alien_embryo/New() - if(istype(loc, /mob/living)) - affected_mob = loc - START_PROCESSING(SSobj, src) - spawn(0) - AddInfectionImages(affected_mob) - else - qdel(src) - -/obj/item/alien_embryo/Destroy() - if(affected_mob) - affected_mob.status_flags &= ~(XENO_HOST) - spawn(0) - RemoveInfectionImages(affected_mob) - ..() - -/obj/item/alien_embryo/process() - if(!affected_mob) return - if(loc != affected_mob) - affected_mob.status_flags &= ~(XENO_HOST) - STOP_PROCESSING(SSobj, src) - spawn(0) - RemoveInfectionImages(affected_mob) - affected_mob = null - return - - if(stage < 5 && prob(3)) - stage++ - spawn(0) - RefreshInfectionImage(affected_mob) - - switch(stage) - if(2, 3) - if(prob(1)) - affected_mob.emote("sneeze") - if(prob(1)) - affected_mob.emote("cough") - if(prob(1)) - to_chat(affected_mob, "Your throat feels sore.") - if(prob(1)) - to_chat(affected_mob, "Mucous runs down the back of your throat.") - if(4) - if(prob(1)) - affected_mob.emote("sneeze") - if(prob(1)) - affected_mob.emote("cough") - if(prob(2)) - to_chat(affected_mob, " Your muscles ache.") - if(prob(20)) - affected_mob.take_organ_damage(1) - if(prob(2)) - to_chat(affected_mob, "Your stomach hurts.") - if(prob(20)) - affected_mob.adjustToxLoss(1) - affected_mob.updatehealth() - if(5) - to_chat(affected_mob, "You feel something tearing its way out of your stomach...") - affected_mob.adjustToxLoss(10) - affected_mob.updatehealth() - if(prob(50)) - AttemptGrow() - -/obj/item/alien_embryo/proc/AttemptGrow(var/gib_on_success = 1) - var/list/candidates = get_alien_candidates() - var/picked = null - - // To stop clientless larva, we will check that our host has a client - // if we find no ghosts to become the alien. If the host has a client - // he will become the alien but if he doesn't then we will set the stage - // to 2, so we don't do a process heavy check everytime. - - if(candidates.len) - picked = pick(candidates) - else if(affected_mob.client) - picked = affected_mob.key - else - stage = 4 // Let's try again later. - return - - if(affected_mob.lying) - affected_mob.add_overlay("burst_lie") - else - affected_mob.add_overlay("burst_stand") - spawn(6) - var/mob/living/carbon/alien/larva/new_xeno = new(affected_mob.loc) - new_xeno.key = picked - new_xeno << sound('sound/voice/hiss5.ogg',0,0,0,100) //To get the player's attention - if(gib_on_success) - affected_mob.gib() - qdel(src) - -/*---------------------------------------- -Proc: RefreshInfectionImage() -Des: Removes all infection images from aliens and places an infection image on all infected mobs for aliens. -----------------------------------------*/ -/obj/item/alien_embryo/proc/RefreshInfectionImage() - - for(var/mob/living/carbon/alien in player_list) - - if(!locate(/obj/item/organ/internal/xenos/hivenode) in alien.internal_organs) - continue - - if(alien.client) - for(var/image/I in alien.client.images) - if(dd_hasprefix_case(I.icon_state, "infected")) - qdel(I) - for(var/mob/living/L in mob_list) - if(iscorgi(L) || iscarbon(L)) - if(L.status_flags & XENO_HOST) - var/I = image('icons/mob/alien.dmi', loc = L, icon_state = "infected[stage]") - alien.client.images += I - -/*---------------------------------------- -Proc: AddInfectionImages(C) -Des: Checks if the passed mob (C) is infected with the alien egg, then gives each alien client an infected image at C. -----------------------------------------*/ -/obj/item/alien_embryo/proc/AddInfectionImages(var/mob/living/C) - if(C) - - for(var/mob/living/carbon/alien in player_list) - - if(!locate(/obj/item/organ/internal/xenos/hivenode) in alien.internal_organs) - continue - - if(alien.client) - if(C.status_flags & XENO_HOST) - var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[stage]") - alien.client.images += I - -/*---------------------------------------- -Proc: RemoveInfectionImage(C) -Des: Removes the alien infection image from all aliens in the world located in passed mob (C). -----------------------------------------*/ - -/obj/item/alien_embryo/proc/RemoveInfectionImages(var/mob/living/C) - - if(C) - - for(var/mob/living/carbon/alien in player_list) - - if(!locate(/obj/item/organ/internal/xenos/hivenode) in alien.internal_organs) - continue - - if(alien.client) - for(var/image/I in alien.client.images) - if(I.loc == C) - if(dd_hasprefix_case(I.icon_state, "infected")) - qdel(I) -*/ diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm deleted file mode 100644 index 4bfffdfa474..00000000000 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm +++ /dev/null @@ -1,221 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - -//TODO: Make these simple_mobs -/* //Commented out as reference for future reproduction methods, or addition later if needed. - Mech -var/const/MIN_IMPREGNATION_TIME = 100 //time it takes to impregnate someone -var/const/MAX_IMPREGNATION_TIME = 150 - -var/const/MIN_ACTIVE_TIME = 200 //time between being dropped and going idle -var/const/MAX_ACTIVE_TIME = 400 - -/obj/item/clothing/mask/facehugger - name = "alien" - desc = "It has some sort of a tube at the end of its tail." - icon = 'icons/mob/alien.dmi' - icon_state = "facehugger" - item_state = "facehugger" - w_class = 3 //note: can be picked up by aliens unlike most other items of w_class below 4 - body_parts_covered = FACE|EYES - throw_range = 5 - - var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case - var/sterile = 0 - var/strength = 5 - var/attached = 0 - -/obj/item/clothing/mask/facehugger/attack_hand(user as mob) - - if((stat == CONSCIOUS && !sterile)) - if(Attach(user)) - return - - ..() - -/obj/item/clothing/mask/facehugger/attack(mob/living/M as mob, mob/user as mob) - ..() - user.drop_from_inventory(src) - Attach(M) - -/obj/item/clothing/mask/facehugger/New() - if(config.aliens_allowed) - ..() - else - qdel(src) - -/obj/item/clothing/mask/facehugger/examine(mob/user) - ..(user) - switch(stat) - if(DEAD,UNCONSCIOUS) - to_chat(user, "[src] is not moving.") - if(CONSCIOUS) - to_chat(user, "[src] seems to be active.") - if (sterile) - to_chat(user, "It looks like the proboscis has been removed.") - return - -/obj/item/clothing/mask/facehugger/attackby(obj/item/I, mob/user) - if(I.force) - user.do_attack_animation(src) - Die() - return - -/obj/item/clothing/mask/facehugger/bullet_act() - Die() - return - -/obj/item/clothing/mask/facehugger/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > T0C+80) - Die() - return - -/obj/item/clothing/mask/facehugger/equipped(mob/M) - ..() - Attach(M) - -/obj/item/clothing/mask/facehugger/Crossed(atom/target) - HasProximity(target) - return - -/obj/item/clothing/mask/facehugger/on_found(mob/finder as mob) - if(stat == CONSCIOUS) - HasProximity(finder) - return 1 - return - -/obj/item/clothing/mask/facehugger/HasProximity(atom/movable/AM as mob|obj) - if(CanHug(AM)) - Attach(AM) - -/obj/item/clothing/mask/facehugger/throw_at(atom/target, range, speed) - ..() - if(stat == CONSCIOUS) - icon_state = "[initial(icon_state)]_thrown" - spawn(15) - if(icon_state == "[initial(icon_state)]_thrown") - icon_state = "[initial(icon_state)]" - -/obj/item/clothing/mask/facehugger/throw_impact(atom/hit_atom) - ..() - if(stat == CONSCIOUS) - icon_state = "[initial(icon_state)]" - throwing = 0 - GoIdle(30,100) //stunned for a few seconds - allows throwing them to be useful for positioning but not as an offensive action (unless you're setting up a trap) - -/obj/item/clothing/mask/facehugger/proc/Attach(M as mob) - - if((!iscorgi(M) && !iscarbon(M))) - return - - if(attached) - return - - var/mob/living/carbon/C = M - if(istype(C) && locate(/obj/item/organ/internal/xenos/hivenode) in C.internal_organs) - return - - - attached++ - spawn(MAX_IMPREGNATION_TIME) - attached = 0 - - var/mob/living/L = M //just so I don't need to use : - - if(loc == L) return - if(stat != CONSCIOUS) return - if(!sterile) L.take_organ_damage(strength,0) //done here so that even borgs and humans in helmets take damage - - L.visible_message(" [src] leaps at [L]'s face!") - - if(iscarbon(M)) - var/mob/living/carbon/target = L - - if(target.wear_mask) - if(prob(20)) return - var/obj/item/clothing/W = target.wear_mask - if(!W.canremove) return - target.drop_from_inventory(W) - - target.visible_message(" [src] tears [W] off of [target]'s face!") - - target.equip_to_slot(src, slot_wear_mask) - target.contents += src // Monkey sanity check - Snapshot - - if(!sterile) L.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings - - GoIdle() //so it doesn't jump the people that tear it off - - spawn(rand(MIN_IMPREGNATION_TIME,MAX_IMPREGNATION_TIME)) - Impregnate(L) - - return - -/obj/item/clothing/mask/facehugger/proc/Impregnate(mob/living/target as mob) - if(!target || target.wear_mask != src || target.stat == DEAD) //was taken off or something - return - - if(!sterile) - new /obj/item/alien_embryo(target) - target.status_flags |= XENO_HOST - - target.visible_message(" [src] falls limp after violating [target]'s face!") - - Die() - icon_state = "[initial(icon_state)]_impregnated" - - else - target.visible_message(" [src] violates [target]'s face!") - return - -/obj/item/clothing/mask/facehugger/proc/GoActive() - if(stat == DEAD || stat == CONSCIOUS) - return - - stat = CONSCIOUS - icon_state = "[initial(icon_state)]" - - return - -/obj/item/clothing/mask/facehugger/proc/GoIdle(var/min_time=MIN_ACTIVE_TIME, var/max_time=MAX_ACTIVE_TIME) - if(stat == DEAD || stat == UNCONSCIOUS) - return - -/* RemoveActiveIndicators() */ - - stat = UNCONSCIOUS - icon_state = "[initial(icon_state)]_inactive" - - spawn(rand(min_time,max_time)) - GoActive() - return - -/obj/item/clothing/mask/facehugger/proc/Die() - if(stat == DEAD) - return - -/* RemoveActiveIndicators() */ - - icon_state = "[initial(icon_state)]_dead" - stat = DEAD - - src.visible_message("[src] curls up into a ball!") - - return - -/proc/CanHug(var/mob/M) - - if(iscorgi(M)) - return 1 - - if(!iscarbon(M)) - return 0 - - var/mob/living/carbon/C = M - if(istype(C) && locate(/obj/item/organ/internal/xenos/hivenode) in C.internal_organs) - return 0 - - if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(H.head && (H.head.body_parts_covered & FACE) && !(H.head.item_flags & FLEXIBLEMATERIAL)) - return 0 - return 1 -*/ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm index 8e8d70b4ee6..27e1df5b5a0 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm @@ -79,7 +79,7 @@ // Queen verbs. /mob/living/carbon/human/proc/lay_egg() - set name = "Lay Egg (75)" + set name = "Lay Egg (200)" set desc = "Lay an egg to produce huggers to impregnate prey with." set category = "Abilities" @@ -88,13 +88,13 @@ verbs -= /mob/living/carbon/human/proc/lay_egg return - if(locate(/obj/effect/alien/egg) in get_turf(src)) + if(locate(/obj/structure/alien/egg) in get_turf(src)) to_chat(src, "There's already an egg here.") return - if(check_alien_ability(75,1,O_EGG)) + if(check_alien_ability(200,1,O_EGG)) visible_message("[src] has laid an egg!") - new /obj/effect/alien/egg(loc) + new /obj/structure/alien/egg(loc) return @@ -144,7 +144,7 @@ P.firer = src P.old_style_target(A) P.fire() - playsound(src, 'sound/weapons/pierce.ogg', 25, 0) + playsound(src, 'sound/weapons/alien_spitacid.ogg', 25, 0) /mob/living/carbon/human/proc/corrosive_acid(O as obj|turf in oview(1)) //If they right click to corrode, an error will flash if its an invalid target./N set name = "Corrosive Acid (200)" @@ -329,7 +329,7 @@ /mob/living/carbon/human/proc/gut() set category = "Abilities" - set name = "Gut" + set name = "Slaughter" set desc = "While grabbing someone aggressively, rip their guts out or tear them apart." if(last_special > world.time) @@ -345,7 +345,7 @@ return if(G.state < GRAB_AGGRESSIVE) - to_chat(src, "You must have an aggressive grab to gut your prey!") + to_chat(src, "You must have an aggressive grab to slaughter your prey!") return last_special = world.time + 50 diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm index 425a72185ca..ac85b0314a6 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm @@ -14,8 +14,8 @@ siemens_coefficient = 0 gluttonous = 2 - brute_mod = 0.5 // Hardened carapace. - burn_mod = 2 // Weak to fire. + brute_mod = 0.6 // Hardened carapace. + burn_mod = 1.75 // Weak to fire. warning_low_pressure = 50 hazard_low_pressure = -1 @@ -33,18 +33,19 @@ flesh_color = "#282846" gibbed_anim = "gibbed-a" dusted_anim = "dust-a" - death_message = "lets out a waning guttural screech, green blood bubbling from its maw." + death_message = "lets out a guttural screech, green blood bubbling from its maw." death_sound = 'sound/voice/hiss6.ogg' speech_sounds = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') - speech_chance = 100 + speech_chance = 75 virus_immune = 1 breath_type = null poison_type = null - vision_flags = SEE_SELF|SEE_MOBS + vision_flags = SEE_SELF|SEE_MOBS|SEE_TURFS + darksight = 10 has_organ = list( O_HEART = /obj/item/organ/internal/heart, @@ -83,7 +84,7 @@ return SPECIES_XENO /datum/species/xenos/get_random_name() - return "alien [caste_name] ([alien_number])" + return "xenomorph [caste_name] ([alien_number])" /datum/species/xenos/can_understand(var/mob/other) if(istype(other, /mob/living/carbon/alien/larva)) @@ -101,7 +102,7 @@ H.mind.special_role = "Alien" alien_number++ //Keep track of how many aliens we've had so far. - H.real_name = "alien [caste_name] ([alien_number])" + H.real_name = "xenomorph [caste_name] ([alien_number])" H.name = H.real_name ..() @@ -154,15 +155,6 @@ return 1 return 0 -/* -/datum/species/xenos/handle_login_special(var/mob/living/carbon/human/H) - H.AddInfectionImages() - ..() - -/datum/species/xenos/handle_logout_special(var/mob/living/carbon/human/H) - H.RemoveInfectionImages() - ..() -*/ /datum/species/xenos/drone name = SPECIES_XENO_DRONE @@ -208,7 +200,7 @@ name = SPECIES_XENO_HUNTER weeds_plasma_rate = 5 caste_name = "hunter" - slowdown = -2 + slowdown = -1 total_health = 150 tail = "xenos_hunter_tail" @@ -269,11 +261,11 @@ /datum/species/xenos/queen name = SPECIES_XENO_QUEEN - total_health = 250 + total_health = 300 weeds_heal_rate = 5 weeds_plasma_rate = 20 caste_name = "queen" - slowdown = 4 + slowdown = 3 tail = "xenos_queen_tail" rarity_value = 10 @@ -312,10 +304,10 @@ ..() // Make sure only one official queen exists at any point. if(!alien_queen_exists(1,H)) - H.real_name = "alien queen ([alien_number])" + H.real_name = "xenomorph queen ([alien_number])" H.name = H.real_name else - H.real_name = "alien princess ([alien_number])" + H.real_name = "xenomorph princess ([alien_number])" H.name = H.real_name /datum/hud_data/alien @@ -334,8 +326,6 @@ has_internals = 0 gear = list( - "o_clothing" = list("loc" = ui_belt, "name" = "Suit", "slot" = slot_wear_suit, "state" = "equip", "dir" = SOUTH), - "head" = list("loc" = ui_id, "name" = "Hat", "slot" = slot_head, "state" = "hair"), "storage1" = list("loc" = ui_storage1, "name" = "Left Pocket", "slot" = slot_l_store, "state" = "pocket"), "storage2" = list("loc" = ui_storage2, "name" = "Right Pocket", "slot" = slot_r_store, "state" = "pocket"), - ) + ) //Removed hat and outer slots, it caused too many problems that required admin intervention. diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/xenomorphs.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/xenomorphs.dm index eae90e04766..6c73c18430a 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/xenomorphs.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/xenomorphs.dm @@ -27,30 +27,4 @@ faction = "xeno" ..(new_loc, SPECIES_XENO_QUEEN) -// I feel like we should generalize/condense down all the various icon-rendering antag procs. -/*---------------------------------------- -Proc: AddInfectionImages() -Des: Gives the client of the alien an image on each infected mob. -----------------------------------------*/ -/* -/mob/living/carbon/human/proc/AddInfectionImages() - if (client) - for (var/mob/living/C in mob_list) - if(C.status_flags & XENO_HOST) - var/obj/item/alien_embryo/A = locate() in C - var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[A.stage]") - client.images += I - return -*/ -/*---------------------------------------- -Proc: RemoveInfectionImages() -Des: Removes all infected images from the alien. -----------------------------------------*/ -/* -/mob/living/carbon/human/proc/RemoveInfectionImages() - if (client) - for(var/image/I in client.images) - if(dd_hasprefix_case(I.icon_state, "infected")) - qdel(I) - return -*/ +//Removed AddInfectionImages, no longer required. diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 4e3facb09c7..cffc73cb2f4 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -9,8 +9,8 @@ var/global/list/sparring_attack_cache = list() var/attack_sound = "punch" var/miss_sound = 'sound/weapons/punchmiss.ogg' var/shredding = 0 // Calls the old attack_alien() behavior on objects/mobs when on harm intent. - var/sharp = 0 - var/edge = 0 + var/sharp = FALSE + var/edge = FALSE var/damage_type = BRUTE var/sparring_variant_type = /datum/unarmed_attack/light_strike @@ -115,8 +115,8 @@ var/global/list/sparring_attack_cache = list() attack_sound = 'sound/weapons/bite.ogg' shredding = 0 damage = 0 - sharp = 0 - edge = 0 + sharp = FALSE + edge = FALSE /datum/unarmed_attack/bite/event1 @@ -281,5 +281,5 @@ var/global/list/sparring_attack_cache = list() damage_type = AGONY shredding = 0 damage = 0 - sharp = 0 - edge = 0 \ No newline at end of file + sharp = FALSE + edge = FALSE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 0b77148d307..0406a77307e 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -107,7 +107,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(QDESTROYING(src)) return - crash_with("CANARY: Old human update_icons was called.") + stack_trace("CANARY: Old human update_icons was called.") update_hud() //TODO: remove the need for this @@ -348,7 +348,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(husk) base_icon.ColorTone(husk_color_mod) else if(hulk) - var/list/tone = ReadRGB(hulk_color_mod) + var/list/tone = rgb2num(hulk_color_mod) base_icon.MapColors(rgb(tone[1],0,0),rgb(0,tone[2],0),rgb(0,0,tone[3])) //Handle husk overlay. @@ -641,11 +641,10 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/obj/item/clothing/under/under = w_uniform var/uniform_sprite - - if(under.index) - uniform_sprite = "[INV_W_UNIFORM_DEF_ICON]_[under.index].dmi" + if(istype(under) && !isnull(under.update_icon_define)) + uniform_sprite = under.update_icon_define else - uniform_sprite = "[INV_W_UNIFORM_DEF_ICON].dmi" + uniform_sprite = INV_W_UNIFORM_DEF_ICON //Build a uniform sprite var/icon/c_mask = tail_style?.clip_mask @@ -824,12 +823,10 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/obj/item/clothing/suit/suit = wear_suit var/suit_sprite - if(istype(suit) && suit.index) - suit_sprite = "[INV_SUIT_DEF_ICON]_[suit.index].dmi" - else if(istype(suit, /obj/item/clothing) && !isnull(suit.update_icon_define)) + if(istype(suit) && !isnull(suit.update_icon_define)) suit_sprite = suit.update_icon_define else - suit_sprite = "[INV_SUIT_DEF_ICON].dmi" + suit_sprite = INV_SUIT_DEF_ICON var/icon/c_mask = null var/tail_is_rendered = (overlays_standing[TAIL_LAYER] || overlays_standing[TAIL_LAYER_ALT]) @@ -842,7 +839,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() apply_layer(SUIT_LAYER) /mob/living/carbon/human/update_inv_pockets() - crash_with("Someone called update_inv_pockets even though it's dumb") + stack_trace("Someone called update_inv_pockets even though it's dumb") /mob/living/carbon/human/update_inv_wear_mask() if(QDESTROYING(src)) diff --git a/code/modules/mob/living/carbon/metroid/items.dm b/code/modules/mob/living/carbon/metroid/items.dm index 45c30cb3e33..cc04791e048 100644 --- a/code/modules/mob/living/carbon/metroid/items.dm +++ b/code/modules/mob/living/carbon/metroid/items.dm @@ -256,12 +256,12 @@ qdel(src)*/ */ /obj/effect/golemrune - anchored = 1 + anchored = TRUE desc = "a strange rune used to create golems. It glows when spirits are nearby." name = "rune" icon = 'icons/obj/rune.dmi' icon_state = "golem" - unacidable = 1 + unacidable = TRUE layer = TURF_LAYER New() diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 2b55a95afc4..8da3a5debd0 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -32,7 +32,7 @@ Victim = M loc = M.loc canmove = 0 - anchored = 1 + anchored = TRUE regenerate_icons() @@ -81,7 +81,7 @@ break canmove = 1 - anchored = 0 + anchored = FALSE if(M && invalidFeedTarget(M)) // This means that the slime drained the victim if(!client) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 03fd22609bb..4eaab779266 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -8,7 +8,7 @@ Returns standard 0 if fail */ -/mob/living/proc/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/used_weapon = null, var/sharp = 0, var/edge = 0, var/obj/used_weapon = null) +/mob/living/proc/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/used_weapon = null, var/sharp = FALSE, var/edge = FALSE, var/obj/used_weapon = null) if(Debug2) to_world_log("## DEBUG: apply_damage() was called on [src], with [damage] damage, and an armor value of [blocked].") if(!damage || (blocked >= 100)) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index b33a5d39457..94776d570e9 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -17,11 +17,9 @@ //VOREStation Edit End nest = null - for(var/s in owned_soul_links) - var/datum/soul_link/S = s + for(var/datum/soul_link/S as anything in owned_soul_links) S.owner_died(gibbed) - for(var/s in shared_soul_links) - var/datum/soul_link/S = s + for(var/datum/soul_link/S as anything in shared_soul_links) S.sharer_died(gibbed) . = ..() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d5de7e47e93..4cfed34ba81 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -833,21 +833,21 @@ if(!V.riding_datum) // If it has a riding datum, the datum handles moving the pixel_ vars. pixel_y = V.mob_offset_y else if(buckled) - anchored = 1 + anchored = TRUE canmove = 1 //The line above already makes the chair not swooce away if the sitter presses a button. No need to incapacitate them as a criminally large amount of mechanics read this var as a type of stun. if(istype(buckled)) if(buckled.buckle_lying != -1) lying = buckled.buckle_lying canmove = buckled.buckle_movable if(buckled.buckle_movable) - anchored = 0 + anchored = FALSE canmove = 1 else lying = incapacitated(INCAPACITATION_KNOCKDOWN) canmove = !incapacitated(INCAPACITATION_DISABLED) if(lying) - density = 0 + density = FALSE if(l_hand) unEquip(l_hand) if(r_hand) @@ -868,9 +868,8 @@ update_transform() //VOREStation Add if(lying && LAZYLEN(buckled_mobs)) - for(var/rider in buckled_mobs) - var/mob/living/L = rider - if(buckled_mobs[rider] != "riding") + for(var/mob/living/L as anything in buckled_mobs) + if(buckled_mobs[L] != "riding") continue // Only boot off riders if(riding_datum) riding_datum.force_dismount(L) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 589d9ac6a31..09b8c151e65 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -225,7 +225,7 @@ //Called when the mob is hit with an item in combat. Returns the blocked result /mob/living/proc/hit_with_weapon(obj/item/I, mob/living/user, var/effective_force, var/hit_zone) - visible_message("[src] has been [I.attack_verb.len? pick(I.attack_verb) : "attacked"] with [I.name] by [user]!") + visible_message("[src] has been [LAZYLEN(I.attack_verb) ? pick(I.attack_verb) : "attacked"] with [I.name] by [user]!") if(ai_holder) ai_holder.react_to_attack(user) @@ -321,7 +321,7 @@ if(T) src.loc = T visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!") - src.anchored = 1 + src.anchored = TRUE src.pinned += O /mob/living/proc/embed(var/obj/O, var/def_zone=null) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 139397aa29c..21f0e7df2ca 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -382,11 +382,9 @@ var/list/channel_to_radio_key = new //Remove all those images. At least it's just ONE spawn this time. spawn(30) - for(var/img in images_to_clients) - var/image/I = img + for(var/image/I as anything in images_to_clients) var/list/clients_from_image = images_to_clients[I] - for(var/client in clients_from_image) - var/client/C = client + for(var/client/C as anything in clients_from_image) if(C) //Could have disconnected after message sent, before removing bubble. C.images -= I qdel(I) @@ -411,12 +409,10 @@ var/list/channel_to_radio_key = new else var/list/potentials = get_mobs_and_objs_in_view_fast(T, world.view) var/list/mobs = potentials["mobs"] - for(var/hearer in mobs) - var/mob/M = hearer + for(var/mob/M as anything in mobs) M.hear_signlang(message, verb, language, src) var/list/objs = potentials["objs"] - for(var/hearer in objs) - var/obj/O = hearer + for(var/obj/O as anything in objs) O.hear_signlang(message, verb, language, src) return 1 diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index e19fa16745c..38f59adbc5a 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -32,8 +32,7 @@ var/list/ai_verbs_default = list( /proc/AutoUpdateAI(obj/subject) var/is_in_use = 0 if (subject!=null) - for(var/A in ai_list) - var/mob/living/silicon/ai/M = A + for(var/mob/living/silicon/ai/M as anything in ai_list) if ((M.client && M.machine == subject)) is_in_use = 1 subject.attack_ai(M) @@ -44,8 +43,8 @@ var/list/ai_verbs_default = list( name = "AI" icon = 'icons/mob/AI.dmi'// icon_state = "ai" - anchored = 1 // -- TLE - density = 1 + anchored = TRUE // -- TLE + density = TRUE status_flags = CANSTUN|CANPARALYSE|CANPUSH shouldnt_see = list(/mob/observer/eye, /obj/effect/rune) var/list/network = list(NETWORK_DEFAULT) @@ -124,9 +123,9 @@ var/list/ai_verbs_default = list( if(!is_dummy) aiPDA = new/obj/item/device/pda/ai(src) SetName(pickedName) - anchored = 1 + anchored = TRUE canmove = 0 - density = 1 + density = TRUE loc = loc if(!is_dummy) @@ -761,7 +760,7 @@ var/list/ai_verbs_default = list( user.visible_message("\The [user] decides not to unbolt \the [src].") return user.visible_message("\The [user] finishes unfastening \the [src]!") - anchored = 0 + anchored = FALSE return else playsound(src, W.usesound, 50, 1) @@ -770,7 +769,7 @@ var/list/ai_verbs_default = list( user.visible_message("\The [user] decides not to bolt \the [src].") return user.visible_message("\The [user] finishes fastening down \the [src]!") - anchored = 1 + anchored = TRUE return else return ..() diff --git a/code/modules/mob/living/silicon/ai/ai_remote_control.dm b/code/modules/mob/living/silicon/ai/ai_remote_control.dm index 768aba02f5e..ac092ed693e 100644 --- a/code/modules/mob/living/silicon/ai/ai_remote_control.dm +++ b/code/modules/mob/living/silicon/ai/ai_remote_control.dm @@ -25,8 +25,7 @@ var/list/possible = list() - for(var/borgie in GLOB.available_ai_shells) - var/mob/living/silicon/robot/R = borgie + for(var/mob/living/silicon/robot/R as anything in GLOB.available_ai_shells) if(R.shell && !R.deployed && (R.stat != DEAD) && (!R.connected_ai || (R.connected_ai == src) ) && !(using_map.ai_shell_restricted && !(R.z in using_map.ai_shell_allowed_levels)) ) //VOREStation Edit: shell restrictions possible += R diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index d6d5baf1d90..9c26f64c43f 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -20,4 +20,4 @@ card.update_icon() . = ..(gibbed,"gives one shrill beep before falling lifeless.") - density = 1 + density = TRUE diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm index 7f84eebf6e7..1a69c5f5f39 100644 --- a/code/modules/mob/living/silicon/ai/multicam.dm +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -202,10 +202,8 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) var/list/obj/machinery/camera/add = list() var/list/obj/machinery/camera/remove = list() var/list/obj/machinery/camera/visible = list() - for(var/VV in visibleChunks) - var/datum/chunk/camera/CC = VV - for(var/V in CC.cameras) - var/obj/machinery/camera/C = V + for(var/datum/chunk/camera/CC as anything in visibleChunks) + for(var/obj/machinery/camera/C as anything in CC.cameras) if (!C.can_use() || (get_dist(C, src) > telegraph_range)) continue visible |= C @@ -213,15 +211,13 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) add = visible - cameras_telegraphed remove = cameras_telegraphed - visible - for(var/V in remove) - var/obj/machinery/camera/C = V + for(var/obj/machinery/camera/C as anything in remove) if(QDELETED(C)) continue cameras_telegraphed -= C C.in_use_lights-- C.update_icon() - for(var/V in add) - var/obj/machinery/camera/C = V + for(var/obj/machinery/camera/C as anything in add) if(QDELETED(C)) continue cameras_telegraphed |= C @@ -230,8 +226,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) /mob/observer/eye/aiEye/pic_in_pic/proc/disable_camera_telegraphing() telegraph_cameras = FALSE - for(var/V in cameras_telegraphed) - var/obj/machinery/camera/C = V + for(var/obj/machinery/camera/C as anything in cameras_telegraphed) if(QDELETED(C)) continue C.in_use_lights-- @@ -291,8 +286,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) /mob/living/silicon/ai/proc/refresh_multicam() reset_view(GLOB.ai_camera_room_landmark) if(client) - for(var/V in multicam_screens) - var/obj/screen/movable/pic_in_pic/P = V + for(var/obj/screen/movable/pic_in_pic/P as anything in multicam_screens) P.show_to(client) /mob/living/silicon/ai/proc/end_multicam() @@ -301,8 +295,7 @@ GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) multicam_on = FALSE select_main_multicam_window(null) if(client) - for(var/V in multicam_screens) - var/obj/screen/movable/pic_in_pic/P = V + for(var/obj/screen/movable/pic_in_pic/P as anything in multicam_screens) P.unshow_to(client) reset_view() to_chat(src, "Multiple-camera viewing mode deactivated.") diff --git a/code/modules/mob/living/silicon/decoy/decoy.dm b/code/modules/mob/living/silicon/decoy/decoy.dm index bbbfe19dadb..6abdaadde8c 100644 --- a/code/modules/mob/living/silicon/decoy/decoy.dm +++ b/code/modules/mob/living/silicon/decoy/decoy.dm @@ -2,11 +2,11 @@ name = "AI" icon = 'icons/mob/AI.dmi'// icon_state = "ai" - anchored = 1 // -- TLE + anchored = TRUE // -- TLE canmove = 0 /mob/living/silicon/decoy/New() src.icon = 'icons/mob/AI.dmi' src.icon_state = "ai" - src.anchored = 1 + src.anchored = TRUE src.canmove = 0 \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/pai_vr.dm b/code/modules/mob/living/silicon/pai/pai_vr.dm index 59a0fad74dd..c8ab1d7e076 100644 --- a/code/modules/mob/living/silicon/pai/pai_vr.dm +++ b/code/modules/mob/living/silicon/pai/pai_vr.dm @@ -17,8 +17,7 @@ /mob/living/silicon/pai/proc/update_fullness_pai() //Determines if they have something in their stomach. Copied and slightly modified. var/new_people_eaten = 0 - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) for(var/mob/living/M in B) new_people_eaten += M.size_multiplier people_eaten = min(1, new_people_eaten) diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index cad5229097e..3a98a5bea3d 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -21,7 +21,7 @@ var/global/list/pai_software_by_key = list() var/global/list/default_pai_software = list() /hook/startup/proc/populate_pai_software_list() var/r = 1 // I would use ., but it'd sacrifice runtime detection - for(var/type in typesof(/datum/pai_software) - /datum/pai_software) + for(var/type in subtypesof(/datum/pai_software)) var/datum/pai_software/P = new type() if(pai_software_by_key[P.id]) var/datum/pai_software/O = pai_software_by_key[P.id] diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm index 7a8c3becc6c..8dfcd91cf86 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm @@ -327,8 +327,8 @@ icon_state = "swordtail" desc = "A glowing pink dagger normally attached to the end of a cyborg's tail. It appears to be extremely sharp." force = 20 //Takes 5 hits to 100-0 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE throwforce = 0 //This shouldn't be thrown in the first place. hitsound = 'sound/weapons/blade1.ogg' attack_verb = list("slashed", "stabbed", "jabbed", "mauled", "sliced") diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index be6421600ad..129f832dba8 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -228,21 +228,21 @@ if(!delivery && compactor && length(contents))//garbage counter for trashpup dat += "Current load: [length(contents)] / [max_item_count] objects.
" - dat += "([list2text(contents,", ")])

" + dat += "([contents.Join(", ")])

" if(delivery && length(contents)) dat += "Current load: [length(contents)] / [max_item_count] objects.
" dat += "Cargo compartment slot: Cargo 1.
" if(length(deliveryslot_1)) - dat += "([list2text(deliveryslot_1,", ")])
" + dat += "([deliveryslot_1.Join(", ")])
" dat += "Cargo compartment slot: Cargo 2.
" if(length(deliveryslot_2)) - dat += "([list2text(deliveryslot_2,", ")])
" + dat += "([deliveryslot_2.Join(", ")])
" dat += "Cargo compartment slot: Cargo 3.
" if(length(deliveryslot_3)) - dat += "([list2text(deliveryslot_3,", ")])
" + dat += "([deliveryslot_3.Join(", ")])
" dat += "Cargo compartment slot: Fuel.
" - dat += "([list2text(contents - (deliveryslot_1 + deliveryslot_2 + deliveryslot_3),", ")])

" + dat += "([jointext(contents - (deliveryslot_1 + deliveryslot_2 + deliveryslot_3),", ")])

" if(analyzer && !synced) dat += "Sync Files
" @@ -567,8 +567,7 @@ 'sound/vore/death10.ogg') playsound(src, deathsound, vol = 100, vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises) if(is_vore_predator(T)) - for(var/belly in T.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in T.vore_organs) for(var/atom/movable/thing in B) thing.forceMove(src) if(ismob(thing)) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 32cc4f32d41..aca27b37919 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -1,7 +1,7 @@ var/list/mob_hat_cache = list() /proc/get_hat_icon(var/obj/item/hat, var/offset_x = 0, var/offset_y = 0) var/t_state = hat.icon_state - if(hat.item_state_slots && hat.item_state_slots[slot_head_str]) + if(LAZYACCESS(hat.item_state_slots, slot_head_str)) t_state = hat.item_state_slots[slot_head_str] else if(hat.item_state) t_state = hat.item_state @@ -10,7 +10,7 @@ var/list/mob_hat_cache = list() var/t_icon = INV_HEAD_DEF_ICON // are unique across multiple dmis, but whatever. if(hat.icon_override) t_icon = hat.icon_override - else if(hat.item_icons && (slot_head_str in hat.item_icons)) + else if(LAZYACCESS(hat.item_icons, slot_head_str)) t_icon = hat.item_icons[slot_head_str] var/image/I = image(icon = t_icon, icon_state = t_state) I.pixel_x = offset_x @@ -32,7 +32,7 @@ var/list/mob_hat_cache = list() pass_flags = PASSTABLE braintype = "Drone" lawupdate = 0 - density = 1 + density = TRUE req_access = list(access_engine, access_robotics) integrated_light_power = 3 local_transmit = 1 diff --git a/code/modules/mob/living/silicon/robot/drone/drone_damage.dm b/code/modules/mob/living/silicon/robot/drone/drone_damage.dm index 37731dd3452..240cfb10e93 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_damage.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_damage.dm @@ -1,5 +1,5 @@ //Redefining some robot procs, since drones can't be repaired and really shouldn't take component damage. -/mob/living/silicon/robot/drone/take_overall_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/used_weapon = null) +/mob/living/silicon/robot/drone/take_overall_damage(var/brute = 0, var/burn = 0, var/sharp = FALSE, var/used_weapon = null) bruteloss += brute fireloss += burn @@ -11,7 +11,7 @@ if(bruteloss<0) bruteloss = 0 if(fireloss<0) fireloss = 0 -/mob/living/silicon/robot/drone/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/emp = 0) +/mob/living/silicon/robot/drone/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = FALSE, var/emp = 0) take_overall_damage(brute,burn) /mob/living/silicon/robot/drone/heal_organ_damage(var/brute, var/burn) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index a3e8d71f480..22851e56326 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -9,8 +9,8 @@ desc = "A large automated factory for producing maintenance drones." appearance_flags = 0 - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 20 active_power_usage = 5000 diff --git a/code/modules/mob/living/silicon/robot/drone/swarm.dm b/code/modules/mob/living/silicon/robot/drone/swarm.dm index 3db976437b6..153594801c0 100644 --- a/code/modules/mob/living/silicon/robot/drone/swarm.dm +++ b/code/modules/mob/living/silicon/robot/drone/swarm.dm @@ -14,7 +14,7 @@ pass_flags = PASSTABLE braintype = "Drone" lawupdate = 0 - density = 1 + density = TRUE idcard_type = /obj/item/weapon/card/id/syndicate req_access = list(999) integrated_light_power = 3 diff --git a/code/modules/mob/living/silicon/robot/examine_vr.dm b/code/modules/mob/living/silicon/robot/examine_vr.dm index 2bebab2665b..84b960050d3 100644 --- a/code/modules/mob/living/silicon/robot/examine_vr.dm +++ b/code/modules/mob/living/silicon/robot/examine_vr.dm @@ -1,8 +1,7 @@ /mob/living/silicon/robot/proc/examine_bellies_borg() var/list/message_list = list() - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) var/bellymessage = B.get_examine_msg() if(bellymessage) message_list += bellymessage bellymessage = B.get_examine_msg_absorbed() diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 3c7999be3c0..0bad703cfaa 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -62,7 +62,7 @@ var/datum/robot_component/picked = pick(parts) picked.heal_damage(brute,burn) -/mob/living/silicon/robot/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/edge = 0, var/emp = 0) +/mob/living/silicon/robot/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = FALSE, var/edge = FALSE, var/emp = 0) var/list/components = get_damageable_components() if(!components.len) return @@ -110,7 +110,7 @@ parts -= picked -/mob/living/silicon/robot/take_overall_damage(var/brute = 0, var/burn = 0, var/sharp = 0, var/used_weapon = null) +/mob/living/silicon/robot/take_overall_damage(var/brute = 0, var/burn = 0, var/sharp = FALSE, var/used_weapon = null) if(status_flags & GODMODE) return //godmode var/list/datum/robot_component/parts = get_damageable_components() diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index d8212d2904b..9636f2da518 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -282,7 +282,7 @@ switch(choice) if("Colour") - var/newcolour = tgui_input_list(usr, "Which colour would you like to use?", list("black","blue","red","green","yellow")) + var/newcolour = tgui_input_list(usr, "Which colour would you like to use?", "Color Choice", list("black","blue","red","green","yellow")) if(newcolour) colour = newcolour if("Mode") @@ -401,7 +401,7 @@ set category = "Object" set src in range(0) - var/N = tgui_input_list(usr, "How much damage should the shield absorb?", list("5","10","25","50","75","100")) + var/N = tgui_input_list(usr, "How much damage should the shield absorb?", "Shield Level", list("5","10","25","50","75","100")) if (N) shield_level = text2num(N)/100 diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 5628c850a1d..3f2ae1368c3 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -61,7 +61,7 @@ var/global/list/robot_modules = list( R.choose_icon(R.module_sprites.len + 1, R.module_sprites) for(var/obj/item/I in modules) - I.canremove = 0 + I.canremove = FALSE /obj/item/weapon/robot_module/proc/Reset(var/mob/living/silicon/robot/R) remove_camera_networks(R) diff --git a/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_interactions.dm b/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_interactions.dm index 0c981cb4b2d..852c09ff617 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_interactions.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_interactions.dm @@ -32,7 +32,7 @@ . = ..() -/mob/living/silicon/robot/platform/attack_ghost(mob/observer/ghost/user) +/mob/living/silicon/robot/platform/attack_ghost(mob/observer/dead/user) if(client || key || stat == DEAD || !ticker || !ticker.mode) return ..() diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm index b0d622cb20b..67954d4d9a1 100644 --- a/code/modules/mob/living/simple_mob/defense.dm +++ b/code/modules/mob/living/simple_mob/defense.dm @@ -144,8 +144,7 @@ . = 1 - . // Invert from 1 = immunity to 0 = immunity. // Doing it this way makes multiplicative stacking not get out of hand, so two modifiers that give 0.5 protection will be combined to 0.75 in the end. - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) if(!isnull(M.cold_protection)) . *= 1 - M.cold_protection @@ -169,8 +168,7 @@ . = 1 - . // Invert from 1 = immunity to 0 = immunity. // Doing it this way makes multiplicative stacking not get out of hand, so two modifiers that give 0.5 protection will be combined to 0.75 in the end. - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) if(!isnull(M.heat_protection)) . *= 1 - M.heat_protection @@ -196,8 +194,7 @@ . = 1 - . // Invert from 1 = immunity to 0 = immunity. // Doing it this way makes multiplicative stacking not get out of hand, so two modifiers that give 0.5 protection will be combined to 0.75 in the end. - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) if(!isnull(M.siemens_coefficient)) . *= M.siemens_coefficient @@ -254,8 +251,7 @@ if(isnull(armorval)) armorval = 0 - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) var/modifier_armor = LAZYACCESS(M.armor_percent, attack_flag) if(modifier_armor) armorval += modifier_armor @@ -267,8 +263,7 @@ if(isnull(armorval)) armorval = 0 - for(var/thing in modifiers) - var/datum/modifier/M = thing + for(var/datum/modifier/M as anything in modifiers) var/modifier_armor = LAZYACCESS(M.armor_flat, attack_flag) if(modifier_armor) armorval += modifier_armor diff --git a/code/modules/mob/living/simple_mob/hands.dm b/code/modules/mob/living/simple_mob/hands.dm index 8ec2158d656..9d869df6317 100644 --- a/code/modules/mob/living/simple_mob/hands.dm +++ b/code/modules/mob/living/simple_mob/hands.dm @@ -52,7 +52,7 @@ //determine icon state to use var/t_state - if(r_hand.item_state_slots && r_hand.item_state_slots[slot_r_hand_str]) + if(LAZYACCESS(r_hand.item_state_slots, slot_r_hand_str)) t_state = r_hand.item_state_slots[slot_r_hand_str] else if(r_hand.item_state) t_state = r_hand.item_state @@ -61,7 +61,7 @@ //determine icon to use var/icon/t_icon - if(r_hand.item_icons && (slot_r_hand_str in r_hand.item_icons)) + if(LAZYACCESS(r_hand.item_icons, slot_r_hand_str)) t_icon = r_hand.item_icons[slot_r_hand_str] else if(r_hand.icon_override) t_state += "_r" @@ -89,7 +89,7 @@ //determine icon state to use var/t_state - if(l_hand.item_state_slots && l_hand.item_state_slots[slot_l_hand_str]) + if(LAZYACCESS(l_hand.item_state_slots, slot_l_hand_str)) t_state = l_hand.item_state_slots[slot_l_hand_str] else if(l_hand.item_state) t_state = l_hand.item_state @@ -98,7 +98,7 @@ //determine icon to use var/icon/t_icon - if(l_hand.item_icons && (slot_l_hand_str in l_hand.item_icons)) + if(LAZYACCESS(l_hand.item_icons, slot_l_hand_str)) t_icon = l_hand.item_icons[slot_l_hand_str] else if(l_hand.icon_override) t_state += "_l" diff --git a/code/modules/mob/living/simple_mob/life.dm b/code/modules/mob/living/simple_mob/life.dm index 493a68e43b9..05d7d8a4a32 100644 --- a/code/modules/mob/living/simple_mob/life.dm +++ b/code/modules/mob/living/simple_mob/life.dm @@ -151,7 +151,7 @@ purge -= 1 /mob/living/simple_mob/death(gibbed, deathmessage = "dies!") - density = 0 //We don't block even if we did before + density = FALSE //We don't block even if we did before if(has_eye_glow) remove_eyes() diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index 749def3e84e..fdbe5b6b684 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -65,8 +65,7 @@ // Update fullness based on size & quantity of belly contents /mob/living/simple_mob/proc/update_fullness() var/new_fullness = 0 - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) for(var/mob/living/M in B) new_fullness += M.size_multiplier new_fullness = new_fullness / size_multiplier //Divided by pred's size so a macro mob won't get macro belly from a regular prey. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm index 77ecf14da60..22be133be6b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm @@ -85,7 +85,7 @@ melee_damage_lower = 18 melee_damage_upper = 30 - attack_sharp = 1 + attack_sharp = TRUE attack_edge = 1 attack_sound = 'sound/weapons/bite.ogg' diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm index 78b8c66ea34..0c8514f4b61 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm @@ -242,8 +242,7 @@ var/static/alternative_targets = typecacheof(list(/obj/item, /obj/structure)) - for(var/AT in typecache_filter_list(range(vision_range, holder), alternative_targets)) - var/obj/O = AT + for(var/obj/O as anything in typecache_filter_list(range(vision_range, holder), alternative_targets)) if(can_see(holder, O, vision_range) && !O.anchored) . += O diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm index 292a4eeacd6..57556f41110 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm @@ -21,7 +21,7 @@ // can_pull_size = ITEMSIZE_TINY // can_pull_mobs = MOB_PULL_NONE layer = MOB_LAYER - density = 0 + density = FALSE response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm index 71e8c3331a0..329655a8084 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm @@ -111,6 +111,7 @@ real_name = "opossum" tt_desc = "Didelphis astrum" desc = "It's an opossum, a small scavenging marsupial." + icon = 'icons/mob/pets.dmi' icon_state = "possum" item_state = "possum" icon_living = "possum" @@ -125,7 +126,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "stamps on" - density = 0 + density = FALSE minbodytemp = 223 maxbodytemp = 323 universal_speak = FALSE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm index d5ecc67d9f8..5741727f695 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm @@ -38,17 +38,6 @@ emote_hear = list("chirps","caws") emote_see = list("shakes their head", "ruffles their feathers") -/obj/item/weapon/holder/bird - name = "bird" - desc = "It's a bird!" - icon_state = null - item_icons = null - w_class = ITEMSIZE_SMALL - -/obj/item/weapon/holder/bird/Initialize() - . = ..() - held_mob?.lay_down() - // Subtypes for birbs. /mob/living/simple_mob/animal/passive/bird/black_bird name = "common blackbird" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm index 3c8cd73f09a..2c203844e38 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm @@ -31,6 +31,7 @@ var/list/_cat_default_emotes = list( name = "cat" desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers." tt_desc = "E Felis silvestris catus" + icon = 'icons/mob/pets.dmi' icon_state = "cat2" item_state = "cat2" @@ -151,15 +152,8 @@ var/list/_cat_default_emotes = list( return ..() /mob/living/simple_mob/animal/passive/cat/black - icon_state = "cat" - item_state = "cat" - -// Leaving this here for now. -/obj/item/weapon/holder/cat/fluff/bones - name = "Bones" - desc = "It's Bones! Meow." - gender = MALE icon_state = "cat3" + item_state = "cat3" /mob/living/simple_mob/animal/passive/cat/bones name = "Bones" @@ -170,10 +164,85 @@ var/list/_cat_default_emotes = list( named = TRUE holder_type = /obj/item/weapon/holder/cat/fluff/bones -// VOREStation Edit - Adds generic tactical kittens -/obj/item/weapon/holder/cat/kitten - icon_state = "kitten" - w_class = ITEMSIZE_SMALL +// SPARKLY +/mob/living/simple_mob/animal/passive/cat/bluespace + name = "bluespace cat" + desc = "Shiny cat, shiny cat, it's not your fault." + tt_desc = "E Felis silvestris argentum" + icon_state = "bscat" + icon_living = "bscat" + icon_rest = null + icon_dead = null + makes_dirt = 0 + holder_type = /obj/item/weapon/holder/cat/bluespace + +/mob/living/simple_mob/animal/passive/cat/bluespace/death() + animate(src, alpha = 0, color = "#0000FF", time = 0.5 SECOND) + spawn(0.5 SECOND) + qdel(src) + +/mob/living/simple_mob/animal/passive/cat/bread + name = "bread cat" + desc = "Brought lunch to work." + tt_desc = "E Felis silvestris breadinum" + icon_state = "breadcat" + icon_living = "breadcat" + icon_rest = "breadcat_rest" + icon_dead = "breadcat_dead" + //icon_sit = "breadcat_sit" + makes_dirt = 0 + holder_type = /obj/item/weapon/holder/cat/breadcat + +/mob/living/simple_mob/animal/passive/cat/original + name = "original cat" + desc = "Donut steal." + tt_desc = "E Felis silvestris originalis" + icon_state = "original" + icon_living = "original" + icon_rest = "original_rest" + icon_dead = "original_dead" + //icon_sit = "original_sit" + makes_dirt = 0 + holder_type = /obj/item/weapon/holder/cat/original + +/mob/living/simple_mob/animal/passive/cat/cak + name = "cak" + desc = "Optimal combination of things?" + tt_desc = "E Felis silvestris dessertus" + icon_state = "cak" + icon_living = "cak" + icon_rest = "cak_rest" + icon_dead = "cak_dead" + //icon_sit = "cak_sit" + makes_dirt = 0 + holder_type = /obj/item/weapon/holder/cat/cak + +/mob/living/simple_mob/animal/passive/cat/space + name = "space cat" + desc = "Did someone write a song about this cat?" + tt_desc = "E Felis silvestris stellaris" + icon_state = "spacecat" + icon_living = "spacecat" + icon_rest = "spacecat_rest" + icon_dead = "spacecat_dead" + //icon_sit = "spacecat_sit" + holder_type = /obj/item/weapon/holder/cat/spacecat + makes_dirt = 0 + + minbodytemp = 0 // Minimum "okay" temperature in kelvin + maxbodytemp = 900 // Maximum of above + heat_damage_per_tick = 3 // Amount of damage applied if animal's body temperature is higher than maxbodytemp + cold_damage_per_tick = 2 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp + + min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum' + max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum' + min_tox = 0 // Phoron min + max_tox = 0 // Phoron max + min_co2 = 0 // CO2 min + max_co2 = 0 // CO2 max + min_n2 = 0 // N2 min + max_n2 = 0 // N2 max + unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements above /datum/say_list/cat speak = list("Meow!","Esp!","Purr!","HSSSSS") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm index cac9780d9be..42f30cc3d81 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm @@ -31,13 +31,6 @@ "Your form begins to slowly soften and break apart, rounding out Runtime's swollen belly. The carnivorous cat rumbles and purrs happily at the feeling of such a filling meal.") // Ascian's Tactical Kitten -/obj/item/weapon/holder/cat/fluff/tabiranth - name = "Spirit" - desc = "A small, inquisitive feline, who constantly seems to investigate his surroundings." - gender = MALE - icon_state = "kitten" - w_class = ITEMSIZE_SMALL - /mob/living/simple_mob/animal/passive/cat/tabiranth name = "Spirit" desc = "A small, inquisitive feline, who constantly seems to investigate his surroundings." diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm index 63c66aad70d..e0473b5b6d8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm @@ -3,6 +3,7 @@ real_name = "dog" desc = "It's a dog." tt_desc = "E Canis lupus familiaris" + icon = 'icons/mob/pets.dmi' icon_state = "corgi" icon_living = "corgi" icon_dead = "corgi_dead" @@ -87,6 +88,7 @@ icon_state = "corgi" icon_living = "corgi" icon_dead = "corgi_dead" + holder_type = /obj/item/weapon/holder/corgi /mob/living/simple_mob/animal/passive/dog/corgi/puppy name = "corgi puppy" @@ -95,6 +97,7 @@ icon_state = "puppy" icon_living = "puppy" icon_dead = "puppy_dead" + holder_type = /obj/item/weapon/holder/corgi //pupplies cannot wear anything. /mob/living/simple_mob/animal/passive/dog/corgi/puppy/Topic(href, href_list) @@ -116,6 +119,7 @@ var/turns_since_scan = 0 var/obj/movement_target makes_dirt = FALSE //VOREStation edit: no more dirt + holder_type = /obj/item/weapon/holder/corgi /mob/living/simple_mob/animal/passive/dog/corgi/Ian/Life() ..() @@ -180,6 +184,7 @@ response_harm = "kicks" var/turns_since_scan = 0 var/puppies = 0 + holder_type = /obj/item/weapon/holder/lisa //Lisa already has a cute bow! /mob/living/simple_mob/animal/passive/dog/corgi/Lisa/Topic(href, href_list) @@ -219,6 +224,35 @@ set_dir(i) sleep(1) +//NARSIAN HAS COME +/mob/living/simple_mob/animal/passive/dog/corgi/narsian + name = "Nars-Ian" + desc = "It's a corgi???" + icon_state = "narsian" + icon_living = "narsian" + icon_rest = "narsian_rest" + icon_dead = "narsian_dead" + + makes_dirt = FALSE + holder_type = /obj/item/weapon/holder/narsian + +/mob/living/simple_mob/animal/passive/dog/void_puppy + name = "void puppy" + desc = "My stars!" + icon_state = "void_puppy" + icon_living = "void_puppy" + icon_dead = "void_puppy_dead" + holder_type = /obj/item/weapon/holder/void_puppy + +/mob/living/simple_mob/animal/passive/dog/bullterrier + name = "bull terrier" + desc = "It's a bull terrier." + icon_state = "bullterrier" + icon_living = "bullterrier" + icon_dead = "bullterrier_dead" + icon_rest = null + holder_type = /obj/item/weapon/holder/bullterrier + // Tamaskans /mob/living/simple_mob/animal/passive/dog/tamaskan name = "tamaskan" @@ -235,7 +269,6 @@ desc = "It's a tamaskan, the name Spice can be found on its collar." // Brittany Spaniel - /mob/living/simple_mob/animal/passive/dog/brittany name = "brittany" real_name = "brittany" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm index 63e7f3fbab5..f7524b7be41 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm @@ -7,7 +7,7 @@ icon_living = "fox2" icon_dead = "fox2_dead" icon_rest = "fox2_rest" - icon = 'icons/mob/fox_vr.dmi' + icon = 'icons/mob/pets.dmi' movement_cooldown = 0.5 see_in_dark = 6 @@ -28,6 +28,7 @@ say_list_type = /datum/say_list/fox ai_holder_type = /datum/ai_holder/simple_mob/fox + holder_type = /obj/item/weapon/holder/fox var/turns_since_scan = 0 var/mob/flee_target @@ -224,7 +225,7 @@ name = "syndi-fox" desc = "It's a DASTARDLY fox! The horror! Call the shuttle!" tt_desc = "Vulpes malus" - icon = 'icons/mob/fox_vr.dmi' + icon = 'icons/mob/pets.dmi' icon_state = "syndifox" icon_living = "syndifox" icon_dead = "syndifox_dead" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm index f934ab1ec86..5b6312a92f3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm @@ -34,7 +34,7 @@ melee_damage_lower = 2 melee_damage_upper = 6 base_attack_cooldown = 1 SECOND - attack_sharp = 1 //Bleeds, but it shouldn't rip off a limb? + attack_sharp = TRUE //Bleeds, but it shouldn't rip off a limb? attacktext = list("gouged") say_list_type = /datum/say_list/diyaab diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/hare.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/hare.dm index e796cd488bb..5b67a8604ca 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/hare.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/hare.dm @@ -52,7 +52,7 @@ mob_size = MOB_SMALL pass_flags = PASSTABLE layer = MOB_LAYER - density = 0 + density = FALSE response_help = "pets" response_disarm = "nudges" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm index 3c012149185..dd88d811ee6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm @@ -144,7 +144,7 @@ ..() if(hat) var/hat_state = hat.item_state ? hat.item_state : hat.icon_state - var/image/I = image('icons/mob/head.dmi', src, hat_state) + var/image/I = image('icons/inventory/head/mob.dmi', src, hat_state) I.pixel_y = -15 // Sakimm are tiny! I.appearance_flags = RESET_COLOR add_overlay(I) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/siffet.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/siffet.dm index 40ae65d3bcd..f649e5a68f9 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/siffet.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/siffet.dm @@ -35,7 +35,7 @@ melee_damage_lower = 10 melee_damage_upper = 15 base_attack_cooldown = 1 SECOND - attack_sharp = 1 + attack_sharp = TRUE attacktext = list("sliced", "snapped", "gnawed") say_list_type = /datum/say_list/siffet diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm b/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm index b76cc5cddd4..430cb4e865d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm +++ b/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm @@ -10,7 +10,7 @@ icon = 'icons/mob/horror_show/master.dmi' vis_height = 64 icon_gib = "generic_gib" - anchored = 1 + anchored = TRUE attack_sound = 'sound/h_sounds/shitty_tim.ogg' diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm index 60532385ad6..4c5f1816d50 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm @@ -25,7 +25,7 @@ melee_damage_lower = 15 //Tac Knife damage melee_damage_upper = 15 attack_armor_pen = 20 - attack_sharp = 1 + attack_sharp = TRUE attack_edge = 1 attacktext = list("slashed", "stabbed") armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 100) // Same armor values as the vest they drop, plus simple mob immunities @@ -112,7 +112,7 @@ melee_damage_lower = 30 melee_damage_upper = 30 attack_armor_pen = 50 - attack_sharp = 1 + attack_sharp = TRUE attack_edge = 1 attacktext = list("slashed") diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm index 3927b1dcf1e..253bfb73b8d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm @@ -16,7 +16,7 @@ melee_damage_lower = 30 melee_damage_upper = 30 attack_armor_pen = 30 - attack_sharp = 1 + attack_sharp = TRUE attack_edge = 1 attacktext = list("slashed") diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/corrupt_maint_drone_vr.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/corrupt_maint_drone_vr.dm index f71242a6373..a75c0c2f2f8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/corrupt_maint_drone_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/corrupt_maint_drone_vr.dm @@ -39,7 +39,7 @@ melee_damage_lower = 6 // Approx 12 DPS. melee_damage_upper = 6 base_attack_cooldown = 2.5 // Four attacks per second. - attack_sharp = 1 + attack_sharp = TRUE attack_edge = 1 attack_sound = 'sound/weapons/bladeslice.ogg' attacktext = list("cut", "sliced") diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm index 4545057bc66..87e8b4223e9 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm @@ -40,7 +40,7 @@ melee_damage_lower = 4 // Approx 8 DPS. melee_damage_upper = 4 base_attack_cooldown = 5 // Two attacks a second or so. - attack_sharp = 1 + attack_sharp = TRUE attack_edge = 1 attack_sound = 'sound/weapons/bladeslice.ogg' attacktext = list("cut", "sliced") diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm index 9328d9cffdc..a161548d993 100644 --- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm @@ -14,7 +14,7 @@ health = 150 melee_damage_lower = 20 melee_damage_upper = 25 - attack_sharp = 1 + attack_sharp = TRUE attacktext = list("violently stabbed") friendly = list("caresses") movement_cooldown = 0 diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm index 13580bc845d..0b8f69c7a9c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm @@ -15,7 +15,7 @@ melee_damage_lower = 25 melee_damage_upper = 30 attack_armor_pen = 15 - attack_sharp = 1 + attack_sharp = TRUE attack_edge = 1 attacktext = list("slashed") friendly = list("pinches") diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm b/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm index 3cc9df4fa39..fe385ee60b7 100644 --- a/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm +++ b/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm @@ -18,7 +18,7 @@ melee_damage_lower = 8 melee_damage_upper = 15 attack_armor_pen = 5 //It's a horror from beyond, I ain't gotta explain 5 AP - attack_sharp = 1 + attack_sharp = TRUE attack_edge = 1 attacktext = list("chomped") diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm index ade53adebc6..f210835b183 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm @@ -136,7 +136,7 @@ var/list/_slime_default_emotes = list( // Hat simulator. if(hat) var/hat_state = hat.item_state ? hat.item_state : hat.icon_state - var/image/I = image('icons/mob/head.dmi', src, hat_state) + var/image/I = image('icons/inventory/head/mob.dmi', src, hat_state) I.pixel_y = -7 // Slimes are small. I.appearance_flags = RESET_COLOR add_overlay(I) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities.dm index 56214bf58cd..e6c84387c80 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_abilities.dm @@ -32,8 +32,7 @@ if(shifted_out) shifted_out = FALSE name = real_name - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.escapable = initial(B.escapable) cut_overlays() @@ -89,8 +88,7 @@ name = "Something" health = maxHealth //Fullheal - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.escapable = FALSE cut_overlays() @@ -145,8 +143,7 @@ real_name = name name = "Something" - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.escapable = FALSE cut_overlays() @@ -166,8 +163,7 @@ spawn(300) shifted_out = FALSE name = real_name - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.escapable = initial(B.escapable) cut_overlays() diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm b/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm index c2e984864c1..fbd0f938af3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm @@ -54,8 +54,7 @@ /mob/living/simple_mob/vore/lamia/update_fullness() var/new_fullness = 0 // We only want to count our upper_stomach towards capacity - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) if(B.name == "upper stomach") for(var/mob/living/M in B) new_fullness += M.size_multiplier @@ -76,8 +75,7 @@ var/upper_shows = FALSE var/tail_shows = FALSE - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) if(!(B.name in list("upper stomach", "tail stomach"))) continue var/belly_fullness = 0 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm index 208030125d4..ec1161630a6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm @@ -21,8 +21,7 @@ ability_flags &= ~AB_PHASE_SHIFTED mouse_opacity = 1 name = real_name - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.escapable = initial(B.escapable) cut_overlays() @@ -76,8 +75,7 @@ real_name = name name = "Something" - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.escapable = FALSE cut_overlays() diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm index 2f275db0f1e..371fc8d2418 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm @@ -215,8 +215,7 @@ abilities_stat() /mob/living/simple_mob/shadekin/proc/abilities_stat() - for(var/A in shadekin_abilities) - var/obj/effect/shadekin_ability/ability = A + for(var/obj/effect/shadekin_ability/ability as anything in shadekin_abilities) stat("[ability.ability_name]",ability.atom_button_text()) //They phase back to the dark when killed diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm index 61147bf9b40..2d06fc187a9 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm @@ -252,7 +252,7 @@ return ..() if(M.a_intent == I_HELP) M.visible_message("[M] pets [src].", runemessage = "pets [src]") - if(do_after(M, 30 SECONDS, exclusive = 1, target = src)) + if(do_after(M, 30 SECONDS, exclusive = TASK_USER_EXCLUSIVE, target = src)) faction = M.faction revive() sight = initial(sight) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm index d0a06f570a8..a4bdd6c9787 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm @@ -74,7 +74,7 @@ List of things solar grubs should be able to do: var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() sparks.set_up(5, 0, get_turf(src)) sparks.start() - anchored = 1 + anchored = TRUE PN = attached.powernet PN.draw_power(100000) // previous value 150000 var/apc_drain_rate = 750 //Going to see if grubs are better as a minimal bother. previous value : 4000 @@ -86,7 +86,7 @@ List of things solar grubs should be able to do: var/drain_val = min(apc_drain_rate, cur_charge) A.cell.use(drain_val * CELLRATE) else if(!attached && anchored) - anchored = 0 + anchored = FALSE PN = null /mob/living/simple_mob/vore/solargrub //active noms @@ -123,7 +123,7 @@ List of things solar grubs should be able to do: L.reagents.add_reagent(poison_type, poison_per_bite) /mob/living/simple_mob/vore/solargrub/death() - src.anchored = 0 + src.anchored = FALSE set_light(0) ..() @@ -160,6 +160,6 @@ List of things solar grubs should be able to do: "The deceptively severe heat trapped within the solargrub works in tandem with its inner muscles and your tingling, prickling stomach juice bath to weaken you!") /datum/ai_holder/simple_mob/retaliate/solargrub/react_to_attack(atom/movable/attacker) - holder.anchored = 0 + holder.anchored = FALSE holder.set_AI_busy(FALSE) ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm index 156ad340bcd..f3c200410bf 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm @@ -30,7 +30,7 @@ var/global/list/grub_machine_overlays = list() pass_flags = PASSTABLE can_pull_size = ITEMSIZE_TINY can_pull_mobs = MOB_PULL_NONE - density = 0 + density = FALSE //stop_when_pulled = 0 @@ -205,8 +205,7 @@ var/global/list/grub_machine_overlays = list() var/static/potential_targets = typecacheof(list(/obj/machinery)) var/list/actual_targets = list() - for(var/AT in typecache_filter_list(range(vision_range, holder), potential_targets)) - var/obj/machinery/M = AT + for(var/obj/machinery/M as anything in typecache_filter_list(range(vision_range, holder), potential_targets)) if(istype(M, /obj/machinery/atmospherics/unary/vent_pump)) var/obj/machinery/atmospherics/unary/vent_pump/V = M if(!V.welded && prob(50)) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm index a7ef2c1c8f4..178dee3cee2 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -1,6 +1,35 @@ /mob/living/simple_mob/vore mob_class = MOB_CLASS_ANIMAL mob_bump_flag = 0 + var/nameset + +/mob/living/simple_mob/vore/Login() + . = ..() + verbs |= /mob/living/simple_mob/vore/proc/set_name + verbs |= /mob/living/simple_mob/vore/proc/set_desc + +/mob/living/simple_mob/vore/proc/set_name() + set name = "Set Name" + set desc = "Sets your mobs name. You only get to do this once." + set category = "Abilities" + if(nameset) + to_chat(src, "You've already set your name. Ask an admin to toggle \"nameset\" to 0 if you really must.") + return + var/newname + newname = sanitizeSafe(input(src,"Set your name. You only get to do this once. Max 52 chars.", "Name set","") as text, MAX_NAME_LEN) + if (newname) + name = newname + voice_name = newname + nameset = 1 + +/mob/living/simple_mob/vore/proc/set_desc() + set name = "Set Description" + set desc = "Set your description." + set category = "Abilities" + var/newdesc + newdesc = sanitizeSafe(input(src,"Set your description. Max 4096 chars.", "Description set","") as text, MAX_MESSAGE_LEN) + if(newdesc) + desc = newdesc /mob/living/simple_mob/vore/aggressive mob_bump_flag = HEAVY \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/weretiger.dm b/code/modules/mob/living/simple_mob/subtypes/vore/weretiger.dm index 0df61d72775..61c3d57faab 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/weretiger.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/weretiger.dm @@ -12,6 +12,7 @@ faction = "panther" maxHealth = 150 health = 150 + movement_cooldown = 2 response_help = "pats" response_disarm = "gently pushes aside" @@ -25,6 +26,11 @@ say_list_type = /datum/say_list/weretiger ai_holder_type = /datum/ai_holder/simple_mob/retaliate + pixel_x = -16 + default_pixel_x = -16 + + has_hands = 1 + // Nomnomn /mob/living/simple_mob/vore/weretiger vore_active = 1 @@ -37,4 +43,4 @@ /datum/say_list/weretiger speak = list("Gruff.","ROAR!","Growl.") emote_hear = list("growls!","grunts.") - emote_see = list("pads around noisily.","scratches the floor thoroughly.") \ No newline at end of file + emote_see = list("pads around noisily.","scratches the floor thoroughly.") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm b/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm index 5d6c88cc920..6ff23f2e94f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm @@ -269,14 +269,12 @@ /mob/living/simple_mob/animal/space/carp/holographic/init_vore() . = ..() var/safe = (faction == "neutral") - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.digest_mode = safe ? DM_HOLD : vore_default_mode /mob/living/simple_mob/animal/space/carp/holographic/set_safety(var/safe) . = ..() - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.digest_mode = safe ? DM_HOLD : vore_default_mode /mob/living/simple_mob/animal/passive/mouse diff --git a/code/modules/mob/living/status_indicators.dm b/code/modules/mob/living/status_indicators.dm index a3f386b9e6d..4f61b7ad34f 100644 --- a/code/modules/mob/living/status_indicators.dm +++ b/code/modules/mob/living/status_indicators.dm @@ -67,8 +67,7 @@ current_x_position -= (icon_expected_width / 2) * (get_icon_scale_y() - 1) // Now the indicator row can actually be built. - for(var/thing in status_indicators) - var/image/I = thing + for(var/image/I as anything in status_indicators) // This is a semi-HUD element, in a similar manner as medHUDs, in that they're 'above' everything else in the world, // but don't pierce obfuscation layers such as blindness or darkness, unlike actual HUD elements like inventory slots. diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 2b4e068fd1c..1d37a22e13e 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -114,16 +114,13 @@ runemessage = -1 // Symmetry with mob/audible_message, despite the fact this one doesn't call parent. Maybe it should! if(radio_message) - for(var/obj in hearing_objs) - var/obj/O = obj + for(var/obj/O as anything in hearing_objs) O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null) else - for(var/obj in hearing_objs) - var/obj/O = obj + for(var/obj/O as anything in hearing_objs) O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) - for(var/mob in hearing_mobs) - var/mob/M = mob + for(var/mob/M as anything in hearing_mobs) var/msg = message if(self_message && M==src) msg = self_message @@ -652,8 +649,7 @@ if(length(GLOB.sdql2_queries)) if(statpanel("SDQL2")) stat("Access Global SDQL2 List", GLOB.sdql2_vv_statobj) - for(var/i in GLOB.sdql2_queries) - var/datum/SDQL2_query/Q = i + for(var/datum/SDQL2_query/Q as anything in GLOB.sdql2_queries) Q.generate_stat() if(listed_turf && client) @@ -945,7 +941,7 @@ if(O == selection) pinned -= O if(!pinned.len) - anchored = 0 + anchored = FALSE return 1 //Check for brain worms in head. diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 4cdaa0dc952..dc1f1fc2196 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -1,5 +1,5 @@ /mob - density = 1 + density = TRUE layer = MOB_LAYER plane = MOB_PLANE animate_movement = 2 @@ -90,7 +90,7 @@ var/canmove = 1 //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. var/incorporeal_move = 0 //0 is off, 1 is normal, 2 is for ninjas. - var/unacidable = 0 + var/unacidable = FALSE var/list/pinned = list() // List of things pinning this creature to walls (see living_defense.dm) var/list/embedded = list() // Embedded items, since simple mobs don't have organs. var/list/languages = list() // For speaking/listening. diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 5392d53b62e..c2f1d635afe 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -169,6 +169,7 @@ // If dead and we try to move in our mob, it leaves our body if(my_mob.stat == DEAD && isliving(my_mob) && !my_mob.forbid_seeing_deadchat) + my_mob.setMoveCooldown(my_mob.movement_delay(n, direct)) my_mob.ghostize() return diff --git a/code/modules/mob/mob_planes.dm b/code/modules/mob/mob_planes.dm index 7b1fbd6f7ec..4235d7470a3 100644 --- a/code/modules/mob/mob_planes.dm +++ b/code/modules/mob/mob_planes.dm @@ -63,7 +63,7 @@ ASSERT(which) var/obj/screen/plane_master/PM = plane_masters[which] if(!PM) - crash_with("Tried to alter [which] in plane_holder on [my_mob]!") + stack_trace("Tried to alter [which] in plane_holder on [my_mob]!") if(my_mob.alpha <= EFFECTIVE_INVIS) state = FALSE @@ -83,7 +83,7 @@ ASSERT(which) var/obj/screen/plane_master/PM = plane_masters[which] if(!PM) - crash_with("Tried to alter [which] in plane_holder on [my_mob]!") + stack_trace("Tried to alter [which] in plane_holder on [my_mob]!") PM.set_desired_alpha(new_alpha) if(PM.sub_planes) var/list/subplanes = PM.sub_planes @@ -94,7 +94,7 @@ ASSERT(which) var/obj/screen/plane_master/PM = plane_masters[which] if(!PM) - crash_with("Tried to set_ao [which] in plane_holder on [my_mob]!") + stack_trace("Tried to set_ao [which] in plane_holder on [my_mob]!") PM.set_ambient_occlusion(enabled) if(PM.sub_planes) var/list/subplanes = PM.sub_planes @@ -105,7 +105,7 @@ ASSERT(which) var/obj/screen/plane_master/PM = plane_masters[which] if(!PM) - crash_with("Tried to alter [which] in plane_holder on [my_mob]!") + stack_trace("Tried to alter [which] in plane_holder on [my_mob]!") PM.alter_plane_values(arglist(values)) if(PM.sub_planes) var/list/subplanes = PM.sub_planes @@ -215,6 +215,7 @@ render_target = O_LIGHTING_VISUAL_RENDER_TARGET blend_mode = BLEND_MULTIPLY alpha = 255 + appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR // NO_CLIENT_COLOR because it has some naughty interactions with colorblindness that I can't figure out. Byond bug? /obj/screen/plane_master/emissive plane = PLANE_EMISSIVE diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 1af7d10fb12..43f2cef8cee 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -11,11 +11,11 @@ invisibility = 101 - density = 0 + density = FALSE stat = 2 canmove = 0 - anchored = 1 // don't get pushed around + anchored = TRUE // don't get pushed around var/created_for diff --git a/code/modules/mob/new_player/new_player_vr.dm b/code/modules/mob/new_player/new_player_vr.dm index ca96cf24077..71abc1ddf15 100644 --- a/code/modules/mob/new_player/new_player_vr.dm +++ b/code/modules/mob/new_player/new_player_vr.dm @@ -43,7 +43,9 @@ var/list/megalist = client.prefs.pos_traits + client.prefs.neu_traits + client.prefs.neg_traits var/points_left = client.prefs.starting_trait_points var/traits_left = client.prefs.max_traits - for(var/T in megalist) + var/pref_synth = client.prefs.dirty_synth + var/pref_meat = client.prefs.gross_meatbag + for(var/datum/trait/T as anything in megalist) var/cost = traits_costs[T] if(cost) @@ -57,6 +59,11 @@ else points_left -= traits_costs[T] + var/take_flags = initial(T.can_take) + if((pref_synth && !(take_flags & SYNTHETICS)) || (pref_meat && !(take_flags & ORGANICS))) + pass = FALSE + to_chat(src, "Some of your traits are not usable by your character type (synthetic traits on organic, or vice versa).") + //Went into negatives if(points_left < 0 || traits_left < 0) pass = FALSE diff --git a/code/modules/mob/new_player/skill.dm b/code/modules/mob/new_player/skill.dm index a24da0e4baa..e1a0b50b7fc 100644 --- a/code/modules/mob/new_player/skill.dm +++ b/code/modules/mob/new_player/skill.dm @@ -159,7 +159,7 @@ var/global/list/SKILL_PRE = list("Engineer" = SKILL_ENGINEER, "Roboticist" = SKI /proc/setup_skills() if(SKILLS == null) SKILLS = list() - for(var/T in (typesof(/datum/skill)-/datum/skill)) + for(var/T in subtypesof(/datum/skill)) var/datum/skill/S = new T if(S.ID != "none") if(!SKILLS.Find(S.field)) diff --git a/code/modules/mob/new_player/sprite_accessories_extra.dm b/code/modules/mob/new_player/sprite_accessories_extra.dm index a124eff96b0..c2360373889 100644 --- a/code/modules/mob/new_player/sprite_accessories_extra.dm +++ b/code/modules/mob/new_player/sprite_accessories_extra.dm @@ -498,7 +498,7 @@ /* werewolf_nose name = "Werewolf nose" - icon = 'icons/mob/species/werebeast/werebeast_markings.dmi' + icon = 'icons/inventory/werebeast_markings/mob_werebeast.dmi' icon_state = "werewolf_nose" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) @@ -506,7 +506,7 @@ werewolf_nose werewolf_face name = "Werewolf face" - icon = 'icons/mob/species/werebeast/werebeast_markings.dmi' + icon = 'icons/inventory/werebeast_markings/mob_werebeast.dmi' icon_state = "werewolf" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) @@ -514,7 +514,7 @@ werewolf_face werewolf_belly name = "Werewolf belly" - icon = 'icons/mob/species/werebeast/werebeast_markings.dmi' + icon = 'icons/inventory/werebeast_markings/mob_werebeast.dmi' icon_state = "werewolf" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_GROIN,BP_TORSO) @@ -522,7 +522,7 @@ werewolf_belly werewolf_socks name = "Werewolf socks" - icon = 'icons/mob/species/werebeast/werebeast_markings.dmi' + icon = 'icons/inventory/werebeast_markings/mob_werebeast.dmi' icon_state = "werewolf" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND) diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm index 8c90b4100bb..a850e79d12c 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm @@ -1124,7 +1124,7 @@ /datum/sprite_accessory/tail/peacocktail_red //this is ckey locked for now, but prettiebyrd wants these tails to be unlocked at a later date name = "Peacock tail (vwag)" desc = "" - icon = "icons/mob/vore/tails_vr.dmi" + icon = 'icons/mob/vore/tails_vr.dmi' icon_state = "peacocktail_red" ani_state = "peacocktail_red_w" ckeys_allowed = list("prettiebyrd") @@ -1132,7 +1132,7 @@ /datum/sprite_accessory/tail/peacocktail //ditto name = "Peacock tail, colorable (vwag)" desc = "" - icon = "icons/mob/vore/tails_vr.dmi" + icon = 'icons/mob/vore/tails_vr.dmi' icon_state = "peacocktail" ani_state = "peacocktail_w" do_colouration = 1 @@ -1142,7 +1142,7 @@ /datum/sprite_accessory/tail/tentacle name = "Tentacle, colorable (vwag)" desc = "" - icon = "icons/mob/vore/tails_vr.dmi" + icon = 'icons/mob/vore/tails_vr.dmi' icon_state = "tentacle" ani_state = "tentacle_w" do_colouration = 1 diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 64f65adfbb7..8b06163590c 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -49,8 +49,7 @@ var/list/vis_mobs = vis["mobs"] var/list/vis_objs = vis["objs"] - for(var/vismob in vis_mobs) - var/mob/M = vismob + for(var/mob/M as anything in vis_mobs) if(isobserver(M) && !is_preference_enabled(/datum/client_preference/whisubtle_vis) && !M.client?.holder) spawn(0) M.show_message(undisplayed_message, 2) @@ -58,8 +57,7 @@ spawn(0) M.show_message(message, 2) - for(var/visobj in vis_objs) - var/obj/O = visobj + for(var/obj/O as anything in vis_objs) spawn(0) O.see_emote(src, message, 2) diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm index 9e39fe8e2e9..8da5a9972f5 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -6,8 +6,8 @@ active_power_usage = 20000 //20kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational. idle_power_usage = 100 icon_state = "ntnet" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE circuit = /obj/item/weapon/circuitboard/ntnet_relay var/datum/ntnet/NTNet = null // This is mostly for backwards reference and to allow varedit modifications from ingame. var/enabled = 1 // Set to 0 if the relay was turned off diff --git a/code/modules/modular_computers/computers/modular_computer/interaction.dm b/code/modules/modular_computers/computers/modular_computer/interaction.dm index d7e8573010e..4cc9c8ba89e 100644 --- a/code/modules/modular_computers/computers/modular_computer/interaction.dm +++ b/code/modules/modular_computers/computers/modular_computer/interaction.dm @@ -97,7 +97,7 @@ uninstall_component(user, portable_drive) update_uis() -/obj/item/modular_computer/attack_ghost(var/mob/observer/ghost/user) +/obj/item/modular_computer/attack_ghost(var/mob/observer/dead/user) if(enabled) tgui_interact(user) else if(check_rights(R_ADMIN|R_EVENT, 0, user)) diff --git a/code/modules/modular_computers/computers/subtypes/dev_console.dm b/code/modules/modular_computers/computers/subtypes/dev_console.dm index d7dbeed75d3..a259651da68 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_console.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_console.dm @@ -8,7 +8,7 @@ icon_state_menu = "menu" hardware_flag = PROGRAM_CONSOLE anchored = TRUE - density = 1 + density = TRUE layer = 2.9 base_idle_power_usage = 100 base_active_power_usage = 500 diff --git a/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm b/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm index 33aaa2120cd..f1ae59c80cb 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm @@ -9,7 +9,7 @@ icon_state_screensaver = "standby" hardware_flag = PROGRAM_TELESCREEN anchored = TRUE - density = 0 + density = FALSE base_idle_power_usage = 75 base_active_power_usage = 300 max_hardware_size = 2 @@ -53,7 +53,7 @@ valid = TRUE if(valid) - anchored = 1 + anchored = TRUE screen_on = TRUE to_chat(user, "You secure \the [src].") return diff --git a/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm index f2466213f35..a9a1e3456d4 100644 --- a/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm @@ -83,8 +83,7 @@ return TRUE var/mob/living/user = usr if(can_run(user, TRUE, access_network)) - for(var/C in ntnet_global.chat_channels) - var/datum/ntnet_conversation/chan = C + for(var/datum/ntnet_conversation/chan as anything in ntnet_global.chat_channels) chan.remove_client(src) netadmin_mode = TRUE return TRUE @@ -92,8 +91,7 @@ var/newname = sanitize(params["new_name"]) if(!newname) return - for(var/C in ntnet_global.chat_channels) - var/datum/ntnet_conversation/chan = C + for(var/datum/ntnet_conversation/chan as anything in ntnet_global.chat_channels) if(src in chan.clients) chan.add_status_message("[username] is now known as [newname].") username = newname @@ -163,8 +161,7 @@ ui_header = "ntnrc_idle.gif" /datum/computer_file/program/chatclient/kill_program(forced = FALSE) - for(var/C in ntnet_global.chat_channels) - var/datum/ntnet_conversation/channel = C + for(var/datum/ntnet_conversation/channel as anything in ntnet_global.chat_channels) channel.remove_client(src) ..() @@ -180,8 +177,7 @@ var/list/data = get_header_data() var/list/all_channels = list() - for(var/C in ntnet_global.chat_channels) - var/datum/ntnet_conversation/conv = C + for(var/datum/ntnet_conversation/conv as anything in ntnet_global.chat_channels) if(conv && conv.title) all_channels.Add(list(list( "chan" = conv.title, diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm index 86af5d9ba0b..7a3a4da6323 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -106,8 +106,7 @@ var/global/ntnet_card_uid = 1 var/list/zlevels_in_range = using_map.get_map_levels(holderz, FALSE) var/list/zlevels_in_long_range = using_map.get_map_levels(holderz, TRUE, om_range = DEFAULT_OVERMAP_RANGE) - zlevels_in_range var/best = 0 - for(var/relay in ntnet_global.relays) - var/obj/machinery/ntnet_relay/R = relay + for(var/obj/machinery/ntnet_relay/R as anything in ntnet_global.relays) //Relay is down if(!R.operable()) continue diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index 19f3d344179..f673e060ef6 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -257,7 +257,7 @@ fabricated_laptop.battery_module.charge_to_full() fabricated_laptop.forceMove(src.loc) fabricated_laptop.screen_on = 0 - fabricated_laptop.anchored = 0 + fabricated_laptop.anchored = FALSE fabricated_laptop.update_icon() fabricated_laptop.update_verbs() fabricated_laptop = null diff --git a/code/modules/multiz/hoist.dm b/code/modules/multiz/hoist.dm index 4a3f14836cc..d8c064f56e3 100644 --- a/code/modules/multiz/hoist.dm +++ b/code/modules/multiz/hoist.dm @@ -21,8 +21,8 @@ icon = 'icons/obj/hoists.dmi' icon_state = "hoist_hook" var/obj/structure/hoist/source_hoist - can_buckle = 1 - anchored = 1 + can_buckle = TRUE + anchored = TRUE description_info = "Click and drag someone (or any object) to this to attach them to the clamp. If you are within reach, when you click and drag this to a turf adjacent to you, it will move the attached object there and release it." /obj/effect/hoist_hook/attack_hand(mob/living/user) @@ -47,7 +47,7 @@ hoistee = AM if(ismob(AM)) source_hook.buckle_mob(AM) - AM.anchored = 1 // why isn't this being set by buckle_mob for silicons? + AM.anchored = TRUE // why isn't this being set by buckle_mob for silicons? source_hook.layer = AM.layer + 0.1 /obj/effect/hoist_hook/MouseDrop(atom/dest) @@ -91,8 +91,8 @@ icon = 'icons/obj/hoists.dmi' icon_state = "hoist_base" var/broken = 0 - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE name = "hoist" desc = "A manual hoist, uses a clamp and pulley to hoist things." var/atom/movable/hoistee @@ -128,7 +128,7 @@ if(ismob(hoistee)) source_hook.unbuckle_mob(hoistee) else - hoistee.anchored = 0 + hoistee.anchored = FALSE hoistee = null layer = NORMAL_LAYER diff --git a/code/modules/multiz/ladder_assembly_vr.dm b/code/modules/multiz/ladder_assembly_vr.dm index 4decbdd47da..49f765225ac 100644 --- a/code/modules/multiz/ladder_assembly_vr.dm +++ b/code/modules/multiz/ladder_assembly_vr.dm @@ -6,9 +6,9 @@ name = "ladder assembly" icon = 'icons/obj/structures.dmi' icon_state = "ladder00" - density = 0 + density = FALSE opacity = 0 - anchored = 0 + anchored = FALSE w_class = ITEMSIZE_HUGE var/state = 0 @@ -29,14 +29,14 @@ user.visible_message("\The [user] secures \the [src]'s reinforcing bolts.", \ "You secure the reinforcing bolts.", \ "You hear a ratchet") - src.anchored = 1 + src.anchored = TRUE if(CONSTRUCTION_WRENCHED) state = CONSTRUCTION_UNANCHORED playsound(src, 'sound/items/Ratchet.ogg', 75, 1) user.visible_message("\The [user] unsecures \the [src]'s reinforcing bolts.", \ "You undo the reinforcing bolts.", \ "You hear a ratchet") - src.anchored = 0 + src.anchored = FALSE if(CONSTRUCTION_WELDED) to_chat(user, "\The [src] needs to be unwelded.") return diff --git a/code/modules/multiz/ladders.dm b/code/modules/multiz/ladders.dm index 6b03f8f610b..b4626022bb7 100644 --- a/code/modules/multiz/ladders.dm +++ b/code/modules/multiz/ladders.dm @@ -3,9 +3,9 @@ desc = "A ladder. You can climb it up and down." icon_state = "ladder01" icon = 'icons/obj/structures/multiz.dmi' - density = 0 + density = FALSE opacity = 0 - anchored = 1 + anchored = TRUE var/allowed_directions = DOWN var/obj/structure/ladder/target_up @@ -89,7 +89,7 @@ return FALSE return TRUE -/mob/observer/ghost/may_climb_ladders(var/ladder) +/mob/observer/dead/may_climb_ladders(var/ladder) return TRUE /obj/structure/ladder/proc/climbLadder(var/mob/M, var/obj/target_ladder) diff --git a/code/modules/multiz/ladders_vr.dm b/code/modules/multiz/ladders_vr.dm index 8f96800a7ea..6892e2ef123 100644 --- a/code/modules/multiz/ladders_vr.dm +++ b/code/modules/multiz/ladders_vr.dm @@ -3,10 +3,10 @@ desc = "Looks unstable. Best to test it with the clown." icon = 'icons/obj/stationobjs.dmi' icon_state = "portal" - density = 1 - unacidable = 1//Can't destroy energy portals. + density = TRUE + unacidable = TRUE//Can't destroy energy portals. var/failchance = 0 - anchored = 1 + anchored = TRUE var/obj/structure/portal_subtle/target /obj/structure/portal_subtle/Destroy() @@ -64,9 +64,9 @@ desc = "Looks unstable. Best to test it with the clown." icon = 'icons/obj/stationobjs_vr.dmi' icon_state = "portalgateway" - density = 1 - unacidable = 1//Can't destroy energy portals. - anchored = 1 + density = TRUE + unacidable = TRUE//Can't destroy energy portals. + anchored = TRUE /obj/structure/portal_gateway/Bumped(mob/M as mob|obj) if(istype(M,/mob) && !(istype(M,/mob/living))) diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 4b6d666709c..5095405e88a 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -265,7 +265,7 @@ return //VOREStation Edit End - if(can_fall()) + if(can_fall() && can_fall_to(below)) // We spawn here to let the current move operation complete before we start falling. fall() is normally called from // Entered() which is part of Move(), by spawn()ing we let that complete. But we want to preserve if we were in client movement // or normal movement so other move behavior can continue. @@ -318,6 +318,18 @@ if(..()) return species.can_fall(src) +// Another check that we probably can just merge into can_fall exept for messing up overrides +/atom/movable/proc/can_fall_to(turf/landing) + // Check if there is anything in our turf we are standing on to prevent falling. + for(var/obj/O in loc) + if(!O.CanFallThru(src, landing)) + return FALSE + // See if something in turf below prevents us from falling into it. + for(var/atom/A in landing) + if(!A.CanPass(src, src.loc, 1, 0)) + return FALSE + return TRUE + // Check if this atom prevents things standing on it from falling. Return TRUE to allow the fall. /obj/proc/CanFallThru(atom/movable/mover as mob|obj, turf/target as turf) if(!isturf(mover.loc)) // VORESTATION EDIT. We clearly didn't have enough backup checks. @@ -327,7 +339,7 @@ // Things that prevent objects standing on them from falling into turf below /obj/structure/catwalk/CanFallThru(atom/movable/mover as mob|obj, turf/target as turf) if((target.z < z) && !hatch_open) - return FALSE // TODO - Technically should be density = 1 and flags |= ON_BORDER + return FALSE // TODO - Technically should be density = TRUE and flags |= ON_BORDER if(!isturf(mover.loc)) return FALSE // Only let loose floor items fall. No more snatching things off people's hands. else @@ -345,7 +357,7 @@ if(!isturf(mover.loc)) return FALSE // Only let loose floor items fall. No more snatching things off people's hands. else - return FALSE // TODO - Technically should be density = 1 and flags |= ON_BORDER + return FALSE // TODO - Technically should be density = TRUE and flags |= ON_BORDER // So you'll slam when falling onto a grille /obj/structure/lattice/CheckFall(var/atom/movable/falling_atom) @@ -357,15 +369,6 @@ /atom/movable/proc/handle_fall(var/turf/landing) var/turf/oldloc = loc - // Check if there is anything in our turf we are standing on to prevent falling. - for(var/obj/O in loc) - if(!O.CanFallThru(src, landing)) - return FALSE - // See if something in turf below prevents us from falling into it. - for(var/atom/A in landing) - if(!A.CanPass(src, src.loc, 1, 0)) - return FALSE - // Now lets move there! if(!Move(landing)) return 1 diff --git a/code/modules/multiz/stairs.dm b/code/modules/multiz/stairs.dm index d2956ae1947..ef92ffa18df 100644 --- a/code/modules/multiz/stairs.dm +++ b/code/modules/multiz/stairs.dm @@ -6,8 +6,8 @@ icon = 'icons/obj/structures/multiz.dmi' icon_state = "stair" opacity = 0 - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE layer = STAIRS_LAYER /obj/structure/stairs/Initialize() diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index ab2bcf6e3d6..b3bbddfd4b4 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -48,7 +48,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr icon = 'icons/turf/floors.dmi' icon_state = "invisible" desc = "Watch your step!" - density = 0 + density = FALSE plane = OPENSPACE_PLANE pathweight = 100000 //Seriously, don't try and path over this one numbnuts dynamic_lighting = 0 // Someday lets do proper lighting z-transfer. Until then we are leaving this off so it looks nicer. diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index aa2d1a99f59..117267d2b44 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -339,8 +339,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable //nif_hud.process_hud(human,1) //TODO VIS //Process all the ones that want that - for(var/S in nifsofts_life) - var/datum/nifsoft/nifsoft = S + for(var/datum/nifsoft/nifsoft as anything in nifsofts_life) nifsoft.life(human) if(NIF_POWFAIL) diff --git a/code/modules/nifsoft/nif_softshop.dm b/code/modules/nifsoft/nif_softshop.dm index 836ab612337..3fb2f436846 100644 --- a/code/modules/nifsoft/nif_softshop.dm +++ b/code/modules/nifsoft/nif_softshop.dm @@ -13,7 +13,7 @@ var/global/list/starting_legal_nifsoft var/global/list/starting_illegal_nifsoft - density = 0 + density = FALSE opacity = 0 var/datum/entopic/entopic @@ -60,8 +60,7 @@ if(!starting_legal_nifsoft) starting_legal_nifsoft = list() starting_illegal_nifsoft = list() - for(var/P in (subtypesof(/datum/nifsoft) - typesof(/datum/nifsoft/package))) - var/datum/nifsoft/NS = P + for(var/datum/nifsoft/NS as anything in (subtypesof(/datum/nifsoft) - typesof(/datum/nifsoft/package))) if(initial(NS.vended)) switch(initial(NS.illegal)) if(TRUE) @@ -80,8 +79,7 @@ for(var/current_list in all_products) var/category = current_list[CAT_HIDDEN] - for(var/entry in current_list[CAT_NORMAL]) - var/datum/nifsoft/NS = entry + for(var/datum/nifsoft/NS as anything in current_list[CAT_NORMAL]) var/applies_to = initial(NS.applies_to) var/context = "" if(!(applies_to & NIF_SYNTHETIC)) @@ -89,7 +87,7 @@ else if(!(applies_to & NIF_ORGANIC)) context = " (Syn Only)" var/name = "[initial(NS.name)][context]" - var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry, name) + var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, NS, name) product.price = initial(NS.cost) product.amount = 10 diff --git a/code/modules/nifsoft/nif_tgui.dm b/code/modules/nifsoft/nif_tgui.dm index b5978242c4e..7be13ceff68 100644 --- a/code/modules/nifsoft/nif_tgui.dm +++ b/code/modules/nifsoft/nif_tgui.dm @@ -55,12 +55,12 @@ screen_icon = new() RegisterSignal(screen_icon, COMSIG_CLICK, .proc/nif_menu_click) screen_icon.icon = HUD.ui_style - HUD.other += screen_icon + LAZYADD(HUD.other_important, screen_icon) user.client?.screen += screen_icon user.verbs |= /mob/living/carbon/human/proc/nif_menu -/datum/component/nif_menu/proc/nif_menu_click(obj/screen/nif/image, location, control, params, user) +/datum/component/nif_menu/proc/nif_menu_click(source, location, control, params, user) var/mob/living/carbon/human/H = user if(istype(H) && H.nif) INVOKE_ASYNC(H.nif, .proc/tgui_interact, user) diff --git a/code/modules/nifsoft/software/05_health.dm b/code/modules/nifsoft/software/05_health.dm index f19a6527481..1e0c12c32ca 100644 --- a/code/modules/nifsoft/software/05_health.dm +++ b/code/modules/nifsoft/software/05_health.dm @@ -107,10 +107,8 @@ nif.notify("User Status: DAMAGED. Medichines performing minor repairs.",TRUE) activate() - for(var/eo in nif.human.bad_external_organs) - var/obj/item/organ/external/EO = eo - for(var/w in EO.wounds) - var/datum/wound/W = w + for(var/obj/item/organ/external/EO as anything in nif.human.bad_external_organs) + for(var/datum/wound/W as anything in EO.wounds) if(W.damage <= 5) W.heal_damage(0.1) EO.update_damages() diff --git a/code/modules/nifsoft/software/10_combat.dm b/code/modules/nifsoft/software/10_combat.dm index d44b4bc3b2c..ef70cf18548 100644 --- a/code/modules/nifsoft/software/10_combat.dm +++ b/code/modules/nifsoft/software/10_combat.dm @@ -56,8 +56,8 @@ var/global/datum/unarmed_attack/hardclaws/unarmed_hardclaws = new() damage = 15 attack_sound = "punch" miss_sound = 'sound/weapons/punchmiss.ogg' - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE sparring_variant_type = /datum/unarmed_attack/hardclaws /datum/nifsoft/hidelaser diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm index 6bb95364263..750f1b7df25 100644 --- a/code/modules/nifsoft/software/13_soulcatcher.dm +++ b/code/modules/nifsoft/software/13_soulcatcher.dm @@ -75,10 +75,9 @@ to_chat(nif.human,"\[[bicon(nif.big_icon)]NIF\]Soulcatcher displays, \"[message]\"") nif.human << sound - for(var/brainmob in brainmobs) - var/mob/living/carbon/brain/caught_soul/CS = brainmob + for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) to_chat(CS,"\[[bicon(nif.big_icon)]NIF\]Soulcatcher displays, \"[message]\"") - brainmob << sound + CS << sound /datum/nifsoft/soulcatcher/proc/say_into(var/message, var/mob/living/sender, var/mob/eyeobj) var/sender_name = eyeobj ? eyeobj.name : sender.name @@ -90,8 +89,7 @@ //Not AR Projecting else to_chat(nif.human,"\[[bicon(nif.big_icon)]NIF\] [sender_name] speaks, \"[message]\"") - for(var/brainmob in brainmobs) - var/mob/living/carbon/brain/caught_soul/CS = brainmob + for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) to_chat(CS,"\[[bicon(nif.big_icon)]NIF\] [sender_name] speaks, \"[message]\"") log_nsay(message,nif.human.real_name,sender) @@ -106,8 +104,7 @@ //Not AR Projecting else to_chat(nif.human,"\[[bicon(nif.big_icon)]NIF\] [sender_name] [message]") - for(var/brainmob in brainmobs) - var/mob/living/carbon/brain/caught_soul/CS = brainmob + for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) to_chat(CS,"\[[bicon(nif.big_icon)]NIF\] [sender_name] [message]") log_nme(message,nif.human.real_name,sender) @@ -135,8 +132,7 @@ new_flavor = sanitize(new_flavor, MAX_MESSAGE_LEN*2) inside_flavor = new_flavor nif.notify("Updating VR environment...") - for(var/brain in brainmobs) - var/mob/living/carbon/brain/caught_soul/CS = brain + for(var/mob/living/carbon/brain/caught_soul/CS as anything in brainmobs) to_chat(CS,"Your surroundings change to...\n[inside_flavor]") save_settings() return TRUE @@ -179,24 +175,20 @@ nif.clear_flag(NIF_O_SCOTHERS,NIF_FLAGS_OTHER) if(NIF_SC_ALLOW_EARS) if(setting_flags & NIF_SC_ALLOW_EARS) - for(var/brain in brainmobs) - var/mob/living/carbon/brain/caught_soul/brainmob = brain + for(var/mob/living/carbon/brain/caught_soul/brainmob as anything in brainmobs) brainmob.ext_deaf = FALSE notify_message = "External audio input enabled." else - for(var/brain in brainmobs) - var/mob/living/carbon/brain/caught_soul/brainmob = brain + for(var/mob/living/carbon/brain/caught_soul/brainmob as anything in brainmobs) brainmob.ext_deaf = TRUE notify_message = "External audio input disabled." if(NIF_SC_ALLOW_EYES) if(setting_flags & NIF_SC_ALLOW_EYES) - for(var/brain in brainmobs) - var/mob/living/carbon/brain/caught_soul/brainmob = brain + for(var/mob/living/carbon/brain/caught_soul/brainmob as anything in brainmobs) brainmob.ext_blind = FALSE notify_message = "External video input enabled." else - for(var/brain in brainmobs) - var/mob/living/carbon/brain/caught_soul/brainmob = brain + for(var/mob/living/carbon/brain/caught_soul/brainmob as anything in brainmobs) brainmob.ext_blind = TRUE notify_message = "External video input disabled." diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index e5df765bdc2..646787d088a 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -177,7 +177,7 @@ var/list/organ_cache = list() if(!owner && reagents) var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list - if(B && prob(40)) + if(B && prob(40) && !isbelly(loc)) //VOREStation Edit reagents.remove_reagent("blood",0.1) blood_splatter(src,B,1) if(config.organs_decay && decays) damage += rand(1,3) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index f82d65275f3..363353c2ec0 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -105,8 +105,7 @@ while(null in owner.organs) owner.organs -= null - for(var/imp in implants) - var/obj/item/weapon/implant/I = imp + for(var/obj/item/weapon/implant/I as anything in implants) if(!istype(I)) continue I.imp_in = I.part = null diff --git a/code/modules/organs/robolimbs_custom.dm b/code/modules/organs/robolimbs_custom.dm index ba9704ffae5..2cd26b7f4b2 100644 --- a/code/modules/organs/robolimbs_custom.dm +++ b/code/modules/organs/robolimbs_custom.dm @@ -1,6 +1,7 @@ /datum/robolimb var/includes_tail //Cyberlimbs dmi includes a tail sprite to wear. var/includes_wing //Cyberlimbs dmi includes a wing sprite to wear. + var/includes_ears //Cyberlimbs dmi includes ear sprites to wear. var/list/whitelisted_to //List of ckeys that are allowed to pick this in charsetup. //////////////// For-specific-character fluff ones ///////////////// May be viable to place these into a custom_item subfolder, in order to allow CI Repo integration. diff --git a/code/modules/organs/robolimbs_vr.dm b/code/modules/organs/robolimbs_vr.dm index c1983502c30..b392506f0e8 100644 --- a/code/modules/organs/robolimbs_vr.dm +++ b/code/modules/organs/robolimbs_vr.dm @@ -33,9 +33,10 @@ var/const/cyberbeast_monitor_styles = "blank=cyber_blank;\ icon = 'icons/mob/human_races/cyberlimbs/_fluff_vr/aronai.dmi' blood_color = "#5dd4fc" includes_tail = 1 + includes_ears = 1 lifelike = 1 unavailable_to_build = 1 - suggested_species = "Tajara" + suggested_species = SPECIES_VULPKANIN whitelisted_to = list("arokha") /obj/item/weapon/disk/limb/kitsuhana diff --git a/code/modules/overmap/events/event_handler.dm b/code/modules/overmap/events/event_handler.dm index 67785e95ac1..2d9c2baddac 100644 --- a/code/modules/overmap/events/event_handler.dm +++ b/code/modules/overmap/events/event_handler.dm @@ -14,8 +14,7 @@ GLOBAL_DATUM_INIT(overmap_event_handler, /decl/overmap_event_handler, new) // Acquire the list of not-yet utilized overmap turfs on this Z-level var/list/overmap_turfs = block(locate(OVERMAP_EDGE, OVERMAP_EDGE, z_level), locate(overmap_size - OVERMAP_EDGE, overmap_size - OVERMAP_EDGE, z_level)) var/list/candidate_turfs = list() - for(var/Trf in overmap_turfs) - var/turf/T = Trf + for(var/turf/T as anything in overmap_turfs) if(!(locate(/obj/effect/overmap/visitable) in T)) candidate_turfs += T diff --git a/code/modules/overmap/overmap_object.dm b/code/modules/overmap/overmap_object.dm index f79741bd3ad..ad5bf60dd2e 100644 --- a/code/modules/overmap/overmap_object.dm +++ b/code/modules/overmap/overmap_object.dm @@ -37,12 +37,12 @@ return ..() //Overlay of how this object should look on other skyboxes -/obj/effect/overmap/proc/get_skybox_representation() +/obj/effect/overmap/proc/get_skybox_representation(zlevel) if(!cached_skybox_image) - build_skybox_representation() + build_skybox_representation(zlevel) return cached_skybox_image -/obj/effect/overmap/proc/build_skybox_representation() +/obj/effect/overmap/proc/build_skybox_representation(zlevel) if(!skybox_icon) return var/image/I = image(icon = skybox_icon, icon_state = skybox_icon_state) diff --git a/code/modules/overmap/overmap_shuttle.dm b/code/modules/overmap/overmap_shuttle.dm index 4a571c1a063..d1bc6793bb0 100644 --- a/code/modules/overmap/overmap_shuttle.dm +++ b/code/modules/overmap/overmap_shuttle.dm @@ -126,8 +126,8 @@ desc = "The fuel input port of the shuttle. Holds one fuel tank. Use a crowbar to open and close it." icon = 'icons/turf/shuttle_parts.dmi' icon_state = "fuel_port" - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/icon_closed = "fuel_port" var/icon_empty = "fuel_port_empty" var/icon_full = "fuel_port_full" diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm index cce1f94cce0..1e4cc236342 100644 --- a/code/modules/overmap/sectors.dm +++ b/code/modules/overmap/sectors.dm @@ -165,7 +165,7 @@ for(var/thing in restricted_waypoints[shuttle_name]) .[thing] = name -/obj/effect/overmap/visitable/proc/generate_skybox() +/obj/effect/overmap/visitable/proc/generate_skybox(zlevel) return /obj/effect/overmap/visitable/proc/cleanup() @@ -190,7 +190,7 @@ name = "generic sector" desc = "Sector with some stuff in it." icon_state = "sector" - anchored = 1 + anchored = TRUE // Because of the way these are spawned, they will potentially have their invisibility adjusted by the turfs they are mapped on // prior to being moved to the overmap. This blocks that. Use set_invisibility to adjust invisibility as needed instead. @@ -203,7 +203,7 @@ admin_chat_message(message = "Overmap panic button hit on z[z] ([name]) by '[user?.ckey || "Unknown"]'", color = "#FF2222") //VOREStation Add var/message = "This is an automated distress signal from a MIL-DTL-93352-compliant beacon transmitting on [PUB_FREQ*0.1]kHz. \ - This beacon was launched from '[name]'. I can provide this additional information to rescuers: [get_distress_info()]. \ + This beacon was launched from '[initial(name)]'. I can provide this additional information to rescuers: [get_distress_info()]. \ Per the Interplanetary Convention on Space SAR, those receiving this message must attempt rescue, \ or relay the message to those who can. This message will repeat one time in 5 minutes. Thank you for your urgent assistance." @@ -224,7 +224,7 @@ return "\[X:[x], Y:[y]\]" /obj/effect/overmap/visitable/proc/distress_update() - var/message = "This is the final message from the distress beacon launched from '[name]'. I can provide this additional information to rescuers: [get_distress_info()]. \ + var/message = "This is the final message from the distress beacon launched from '[initial(name)]'. I can provide this additional information to rescuers: [get_distress_info()]. \ Please render assistance under your obligations per the Interplanetary Convention on Space SAR, or relay this message to a party who can. Thank you for your urgent assistance." for(var/zlevel in levels_for_distress) @@ -240,8 +240,7 @@ testing("Putting overmap on [global.using_map.overmap_z]") var/area/overmap/A = new - for (var/square in block(locate(1,1,global.using_map.overmap_z), locate(global.using_map.overmap_size,global.using_map.overmap_size,global.using_map.overmap_z))) - var/turf/T = square + for(var/turf/T as anything in block(locate(1,1,global.using_map.overmap_z), locate(global.using_map.overmap_size,global.using_map.overmap_size,global.using_map.overmap_z))) if(T.x == 1 || T.y == 1 || T.x == global.using_map.overmap_size || T.y == global.using_map.overmap_size) T = T.ChangeTurf(/turf/unsimulated/map/edge) else diff --git a/code/modules/overmap/ships/computers/helm.dm b/code/modules/overmap/ships/computers/helm.dm index 8de83e1a725..e0692314f93 100644 --- a/code/modules/overmap/ships/computers/helm.dm +++ b/code/modules/overmap/ships/computers/helm.dm @@ -278,7 +278,7 @@ GLOBAL_LIST_EMPTY(all_waypoints) icon_keyboard = null icon_screen = null circuit = /obj/item/weapon/circuitboard/nav/tele - density = 0 + density = FALSE /obj/machinery/computer/ship/navigation/telescreen/update_icon() if(stat & NOPOWER || stat & BROKEN) diff --git a/code/modules/overmap/ships/computers/sensors.dm b/code/modules/overmap/ships/computers/sensors.dm index 86e4a91f52f..3775af9a753 100644 --- a/code/modules/overmap/ships/computers/sensors.dm +++ b/code/modules/overmap/ships/computers/sensors.dm @@ -128,7 +128,7 @@ desc = "Long range gravity scanner with various other sensors, used to detect irregularities in surrounding space. Can only run in vacuum to protect delicate quantum BS elements." //VOREStation Edit icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Edit icon_state = "sensors" - anchored = 1 + anchored = TRUE var/max_health = 200 var/health = 200 var/critical_heat = 50 // sparks and takes damage when active & above this heat diff --git a/code/modules/overmap/ships/engines/gas_thruster.dm b/code/modules/overmap/ships/engines/gas_thruster.dm index 40f2183dc71..5510a803dec 100644 --- a/code/modules/overmap/ships/engines/gas_thruster.dm +++ b/code/modules/overmap/ships/engines/gas_thruster.dm @@ -58,7 +58,7 @@ icon = 'icons/turf/shuttle_parts.dmi' icon_state = "nozzle" opacity = 1 - density = 1 + density = TRUE can_atmos_pass = ATMOS_PASS_NO connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_FUEL @@ -86,8 +86,7 @@ controller = new(src) update_nearby_tiles(need_rebuild=1) - for(var/ship in SSshuttles.ships) - var/obj/effect/overmap/visitable/ship/S = ship + for(var/obj/effect/overmap/visitable/ship/S as anything in SSshuttles.ships) if(S.check_ownership(src)) S.engines |= controller if(dir != S.fore_dir) @@ -188,7 +187,7 @@ icon = 'icons/effects/effects.dmi' icon_state = "smoke" light_color = "#ed9200" - anchored = 1 + anchored = TRUE /obj/effect/engine_exhaust/New(var/turf/nloc, var/ndir, var/flame) ..(nloc) diff --git a/code/modules/overmap/ships/panicbutton.dm b/code/modules/overmap/ships/panicbutton.dm index 4e819db6426..dcbcbf500fb 100644 --- a/code/modules/overmap/ships/panicbutton.dm +++ b/code/modules/overmap/ships/panicbutton.dm @@ -66,8 +66,7 @@ var/turf/us = get_turf(src) for(var/hz in hear_z) - for(var/m in GLOB.players_by_zlevel[hz]) - var/mob/M = m + for(var/mob/M as anything in GLOB.players_by_zlevel[hz]) var/sound/SND = sound('sound/misc/emergency_beacon_launched.ogg') // Inside the loop because playsound_local modifies it for each person, so, need separate instances var/turf/them = get_turf(M) var/volume = max(0.20, 1-(get_dist(us,them) / mapsize*0.8))*100 diff --git a/code/modules/overmap/turfs.dm b/code/modules/overmap/turfs.dm index 6647d16a4d6..9d7a35c2265 100644 --- a/code/modules/overmap/turfs.dm +++ b/code/modules/overmap/turfs.dm @@ -13,7 +13,7 @@ var/global/list/map_sectors = list() /turf/unsimulated/map/edge opacity = 1 - density = 1 + density = TRUE var/map_is_to_my var/turf/unsimulated/map/edge/wrap_buddy diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index c4fa72a9b52..396390a6505 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -14,8 +14,8 @@ desc = "A large cabinet with drawers." icon = 'icons/obj/bureaucracy.dmi' icon_state = "filingcabinet" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE /obj/structure/filingcabinet/chestdrawer name = "chest drawer" diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 4ed881f65c1..95bcda3b36b 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -648,7 +648,7 @@ /obj/item/weapon/paper/flag icon_state = "flag_neutral" item_state = "paper" - anchored = 1.0 + anchored = TRUE /obj/item/weapon/paper/jobs name = "Job Information" diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 65c3bff6bf7..a8cb28b8736 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -40,8 +40,7 @@ if(!stamped) stamped = new else if(stamped) - for(var/S in stamped) - var/obj/item/weapon/stamp/ = S + for(var/obj/item/weapon/stamp/stamp as anything in stamped) var/image/stampoverlay = image('icons/obj/bureaucracy.dmi', "paperplane_[initial(stamp.icon_state)]") add_overlay(stampoverlay) diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm index 223608f0aa7..19a09946999 100644 --- a/code/modules/paperwork/papershredder.dm +++ b/code/modules/paperwork/papershredder.dm @@ -7,8 +7,8 @@ icon = 'icons/obj/papershredder.dmi' icon_state = "shredder-off" var/shred_anim = "shredder-shredding" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 active_power_usage = 200 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 5e546cd9251..36a1f747377 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -150,8 +150,8 @@ embed_chance = active_embed_chance force = active_force throwforce = active_throwforce - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE w_class = active_w_class playsound(src, 'sound/weapons/saberon.ogg', 15, 1) damtype = SEARING diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 0ac1a96e198..72eca4beb48 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/library.dmi' icon_state = "bigscanner" var/insert_anim = "bigscanner1" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE use_power = USE_POWER_IDLE idle_power_usage = 30 active_power_usage = 200 diff --git a/code/modules/pda/cart.dm b/code/modules/pda/cart.dm index d391419d91c..596486f3dfc 100644 --- a/code/modules/pda/cart.dm +++ b/code/modules/pda/cart.dm @@ -69,11 +69,9 @@ var/list/civilian_cartridges = list( return ..() /obj/item/weapon/cartridge/proc/update_programs(obj/item/device/pda/pda) - for(var/A in programs) - var/datum/data/pda/P = A + for(var/datum/data/pda/P as anything in programs) P.pda = pda - for(var/A in messenger_plugins) - var/datum/data/pda/messenger_plugin/P = A + for(var/datum/data/pda/messenger_plugin/P as anything in messenger_plugins) P.pda = pda /obj/item/weapon/cartridge/engineering diff --git a/code/modules/pda/cart_apps.dm b/code/modules/pda/cart_apps.dm index f5eef7b0461..c0f24ed9df6 100644 --- a/code/modules/pda/cart_apps.dm +++ b/code/modules/pda/cart_apps.dm @@ -136,8 +136,7 @@ records["general"] = general_records.fields return records else - for(var/A in sortRecord(data_core.general)) - var/datum/data/record/R = A + for(var/datum/data/record/R as anything in sortRecord(data_core.general)) if(R) records += list(list(Name = R.fields["name"], "ref" = "\ref[R]")) data["recordsList"] = records @@ -182,8 +181,7 @@ /datum/data/pda/app/crew_records/medical/load_records(datum/data/record/R) ..(R) - for(var/A in data_core.medical) - var/datum/data/record/E = A + for(var/datum/data/record/E as anything in data_core.medical) if(E && (E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) medical_records = E break @@ -208,8 +206,7 @@ /datum/data/pda/app/crew_records/security/load_records(datum/data/record/R) ..(R) - for(var/A in data_core.security) - var/datum/data/record/E = A + for(var/datum/data/record/E as anything in data_core.security) if(E && (E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) security_records = E break @@ -229,8 +226,7 @@ supplyData["shuttle_loc"] = shuttle.at_station() ? "Station" : "Dock" var/supplyOrderCount = 0 var/supplyOrderData[0] - for(var/S in SSsupply.shoppinglist) - var/datum/supply_order/SO = S + for(var/datum/supply_order/SO as anything in SSsupply.shoppinglist) supplyOrderCount++ supplyOrderData[++supplyOrderData.len] = list("Number" = SO.ordernum, "Name" = html_encode(SO.object.name), "ApprovedBy" = SO.ordered_by, "Comment" = html_encode(SO.comment)) @@ -240,8 +236,7 @@ var/requestCount = 0 var/requestData[0] - for(var/S in SSsupply.order_history) - var/datum/supply_order/SO = S + for(var/datum/supply_order/SO as anything in SSsupply.order_history) if(SO.status != SUP_ORDER_REQUESTED) continue diff --git a/code/modules/pda/messenger.dm b/code/modules/pda/messenger.dm index efb87577d56..03996dc35cf 100644 --- a/code/modules/pda/messenger.dm +++ b/code/modules/pda/messenger.dm @@ -33,8 +33,7 @@ else var/convopdas[0] var/pdas[0] - for(var/A in PDAs) - var/obj/item/device/pda/P = A + for(var/obj/item/device/pda/P as anything in PDAs) var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger) if(!P.owner || PM.toff || P == pda || PM.m_hidden) @@ -49,8 +48,7 @@ var/list/plugins = list() if(pda.cartridge) - for(var/A in pda.cartridge.messenger_plugins) - var/datum/data/pda/messenger_plugin/P = A + for(var/datum/data/pda/messenger_plugin/P as anything in pda.cartridge.messenger_plugins) plugins += list(list(name = P.name, icon = P.icon, ref = "\ref[P]")) data["plugins"] = plugins @@ -148,8 +146,7 @@ //var/telecomms_intact = telecomms_process(P.owner, owner, t) var/obj/machinery/message_server/useMS = null if(message_servers) - for(var/A in message_servers) - var/obj/machinery/message_server/MS = A + for(var/obj/machinery/message_server/MS as anything in message_servers) //PDAs are now dependent on the Message Server. if(MS.active) useMS = MS @@ -194,8 +191,7 @@ to_chat(usr, "Turn on your receiver in order to send messages.") return - for(var/A in PDAs) - var/obj/item/device/pda/P = A + for(var/obj/item/device/pda/P as anything in PDAs) var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger) if(!P.owner || !PM || PM.hidden || P == pda || PM.toff) diff --git a/code/modules/pda/pda.dm b/code/modules/pda/pda.dm index 274a27857ac..a2374369741 100644 --- a/code/modules/pda/pda.dm +++ b/code/modules/pda/pda.dm @@ -197,8 +197,7 @@ var/global/list/obj/item/device/pda/PDAs = list() shortcut_cache.Cut() /obj/item/device/pda/proc/update_programs() - for(var/A in programs) - var/datum/data/pda/P = A + for(var/datum/data/pda/P as anything in programs) P.pda = src /obj/item/device/pda/proc/detonate_act(var/obj/item/device/pda/P) diff --git a/code/modules/pda/pda_tgui.dm b/code/modules/pda/pda_tgui.dm index 6d57a6c25eb..036ec1fbe47 100644 --- a/code/modules/pda/pda_tgui.dm +++ b/code/modules/pda/pda_tgui.dm @@ -22,8 +22,7 @@ if(cartridge) prog_list |= cartridge.programs - for(var/A in prog_list) - var/datum/data/pda/P = A + for(var/datum/data/pda/P as anything in prog_list) if(P.hidden) continue diff --git a/code/modules/persistence/filth.dm b/code/modules/persistence/filth.dm index 059f1b61fe6..55590c805c2 100644 --- a/code/modules/persistence/filth.dm +++ b/code/modules/persistence/filth.dm @@ -5,7 +5,7 @@ icon_state = "mfloor1" random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") color = "#464f33" - anchored = 1 + anchored = TRUE persistent = TRUE /obj/effect/decal/cleanable/filth/Initialize() diff --git a/code/modules/persistence/graffiti.dm b/code/modules/persistence/graffiti.dm index 999a82ea900..fefc73c1997 100644 --- a/code/modules/persistence/graffiti.dm +++ b/code/modules/persistence/graffiti.dm @@ -9,7 +9,7 @@ blend_mode = BLEND_MULTIPLY color = "#000000" alpha = 120 - anchored = 1 + anchored = TRUE var/message var/graffiti_age = 0 diff --git a/code/modules/persistence/noticeboard.dm b/code/modules/persistence/noticeboard.dm index ced0b3128bb..c187225fa12 100644 --- a/code/modules/persistence/noticeboard.dm +++ b/code/modules/persistence/noticeboard.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "nboard00" layer = ABOVE_WINDOW_LAYER - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/list/notices var/base_icon_state = "nboard0" var/const/max_notices = 5 diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index af6f632bdc5..1d2e4b0af01 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -499,8 +499,7 @@ var/datum/planet/sif/planet_sif = null /datum/weather/sif/ash_storm/process_effects() ..() - for(var/thing in living_mob_list) - var/mob/living/L = thing + for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) if(!T.outdoors) @@ -536,8 +535,7 @@ var/datum/planet/sif/planet_sif = null /datum/weather/sif/fallout/process_effects() ..() - for(var/thing in living_mob_list) - var/mob/living/L = thing + for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) irradiate_nearby_turf(L) var/turf/T = get_turf(L) diff --git a/code/modules/planet/virgo3b_vr.dm b/code/modules/planet/virgo3b_vr.dm index ea441b6f38e..d2faf2315dd 100644 --- a/code/modules/planet/virgo3b_vr.dm +++ b/code/modules/planet/virgo3b_vr.dm @@ -471,8 +471,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null /datum/weather/virgo3b/ash_storm/process_effects() ..() - for(var/thing in living_mob_list) - var/mob/living/L = thing + for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) if(!T.outdoors) @@ -508,8 +507,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null /datum/weather/virgo3b/fallout/process_effects() ..() - for(var/thing in living_mob_list) - var/mob/living/L = thing + for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) irradiate_nearby_turf(L) var/turf/T = get_turf(L) diff --git a/code/modules/planet/virgo4_vr.dm b/code/modules/planet/virgo4_vr.dm index 6ac748f4218..18f4298aa1f 100644 --- a/code/modules/planet/virgo4_vr.dm +++ b/code/modules/planet/virgo4_vr.dm @@ -444,8 +444,7 @@ var/datum/planet/virgo4/planet_virgo4 = null /datum/weather/virgo4/ash_storm/process_effects() ..() - for(var/thing in living_mob_list) - var/mob/living/L = thing + for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) if(!T.outdoors) @@ -481,8 +480,7 @@ var/datum/planet/virgo4/planet_virgo4 = null /datum/weather/virgo4/fallout/process_effects() ..() - for(var/thing in living_mob_list) - var/mob/living/L = thing + for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) irradiate_nearby_turf(L) var/turf/T = get_turf(L) diff --git a/code/modules/planet/weather.dm b/code/modules/planet/weather.dm index 48953a97f19..bbe2318a278 100644 --- a/code/modules/planet/weather.dm +++ b/code/modules/planet/weather.dm @@ -202,8 +202,7 @@ return for(var/z_level in 1 to world.maxz) - for(var/a in GLOB.players_by_zlevel[z_level]) - var/mob/M = a + for(var/mob/M as anything in GLOB.players_by_zlevel[z_level]) // Check if the mob left the z-levels we control. If so, make the sounds stop for them. if(!(z_level in holder.our_planet.expected_z_levels)) diff --git a/code/modules/power/antimatter/containment_jar.dm b/code/modules/power/antimatter/containment_jar.dm index dd0e503bd47..f2da66eea0b 100644 --- a/code/modules/power/antimatter/containment_jar.dm +++ b/code/modules/power/antimatter/containment_jar.dm @@ -3,8 +3,8 @@ desc = "Holds antimatter." icon = 'icons/obj/machines/antimatter.dmi' icon_state = "jar" - density = 0 - anchored = 0 + density = FALSE + anchored = FALSE force = 8 throwforce = 10 throw_speed = 1 diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 93c716b4266..8f3c3db0091 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -3,8 +3,8 @@ desc = "This device injects antimatter into connected shielding units, the more antimatter injected the more power produced. Wrench the device to set it up." icon = 'icons/obj/machines/antimatter.dmi' icon_state = "control" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE use_power = USE_POWER_IDLE idle_power_usage = 100 active_power_usage = 1000 @@ -146,14 +146,14 @@ user.visible_message("[user.name] secures the [src.name] to the floor.", \ "You secure the anchor bolts to the floor.", \ "You hear a ratchet.") - src.anchored = 1 + src.anchored = TRUE connect_to_network() else if(!linked_shielding.len > 0) playsound(src, W.usesound, 75, 1) user.visible_message("[user.name] unsecures the [src.name].", \ "You remove the anchor bolts.", \ "You hear a ratchet.") - src.anchored = 0 + src.anchored = FALSE disconnect_from_network() else to_chat(user, "Once bolted and linked to a shielding unit it the [src.name] is unable to be moved!") diff --git a/code/modules/power/antimatter/engine.dm b/code/modules/power/antimatter/engine.dm index aa1c2245d6f..613c866020d 100644 --- a/code/modules/power/antimatter/engine.dm +++ b/code/modules/power/antimatter/engine.dm @@ -1,7 +1,7 @@ /obj/machinery/power/am_engine icon = 'icons/am_engine.dmi' - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE flags = ON_BORDER /obj/machinery/power/am_engine/bits @@ -98,7 +98,7 @@ H_fuel = 0 antiH_fuel = 0 else - var/residual_matter = modulus(H_fuel - antiH_fuel) + var/residual_matter = abs(H_fuel - antiH_fuel) var/mass = antiH_fuel + H_fuel - residual_matter energy = convert2energy(mass) if( H_fuel > antiH_fuel ) @@ -149,7 +149,7 @@ else //else if they're not equal determine which isn't equal //and set it equal to either H or antiH so we don't lose anything - var/residual_matter = modulus(H_fuel - antiH_fuel) + var/residual_matter = abs(H_fuel - antiH_fuel) mass = antiH_fuel + H_fuel - residual_matter energy = convert2energy(mass) diff --git a/code/modules/power/antimatter/fuel.dm b/code/modules/power/antimatter/fuel.dm index e54f0eb0d7c..bd78186a96f 100644 --- a/code/modules/power/antimatter/fuel.dm +++ b/code/modules/power/antimatter/fuel.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/items.dmi' icon_state = "rcdammo" opacity = 0 - density = 0 - anchored = 0.0 + density = FALSE + anchored = FALSE var/fuel = 0 var/s_time = 1.0 var/content = null diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index 8dfd12a296a..3dc9e97af3b 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -13,8 +13,8 @@ icon = 'icons/obj/machines/antimatter.dmi' icon_state = "shield" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE dir = 1 use_power = USE_POWER_OFF //Living things generally dont use power idle_power_usage = 0 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index c9ecf3d8fb4..a4198a4e033 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -81,7 +81,7 @@ GLOBAL_LIST_EMPTY(apcs) icon = 'icons/obj/power.dmi' icon_state = "apc0" layer = ABOVE_WINDOW_LAYER - anchored = 1 + anchored = TRUE use_power = USE_POWER_OFF clicksound = "switch" req_access = list(access_engine_equip) diff --git a/code/modules/power/batteryrack.dm b/code/modules/power/batteryrack.dm index ae42d8c7278..c5021ba960f 100644 --- a/code/modules/power/batteryrack.dm +++ b/code/modules/power/batteryrack.dm @@ -36,10 +36,10 @@ /obj/machinery/power/smes/batteryrack/proc/add_parts() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/batteryrack - component_parts += new /obj/item/weapon/stock_parts/capacitor/ // Capacitors: Maximal I/O - component_parts += new /obj/item/weapon/stock_parts/capacitor/ - component_parts += new /obj/item/weapon/stock_parts/capacitor/ - component_parts += new /obj/item/weapon/stock_parts/matter_bin/ // Matter Bin: Max. amount of cells. + component_parts += new /obj/item/weapon/stock_parts/capacitor // Capacitors: Maximal I/O + component_parts += new /obj/item/weapon/stock_parts/capacitor + component_parts += new /obj/item/weapon/stock_parts/capacitor + component_parts += new /obj/item/weapon/stock_parts/matter_bin // Matter Bin: Max. amount of cells. /obj/machinery/power/smes/batteryrack/RefreshParts() var/capacitor_efficiency = 0 @@ -61,6 +61,9 @@ internal_cells = null return ..() +/obj/machinery/power/smes/batteryrack/check_terminals() + return TRUE // we don't necessarily need terminals + /obj/machinery/power/smes/batteryrack/update_icon() cut_overlays() icon_update = 0 diff --git a/code/modules/power/breaker_box.dm b/code/modules/power/breaker_box.dm index 5ebf4826795..669600bab72 100644 --- a/code/modules/power/breaker_box.dm +++ b/code/modules/power/breaker_box.dm @@ -12,8 +12,8 @@ //directwired = 0 var/icon_state_on = "bbox_on" var/icon_state_off = "bbox_off" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/breakerbox var/on = 0 var/busy = 0 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index cdc7f4343ac..b71ee80b287 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -45,7 +45,7 @@ var/list/possible_cable_coil_colours = list( /obj/structure/cable level = 1 - anchored =1 + anchored =TRUE var/datum/powernet/powernet name = "power cable" desc = "A flexible superconducting cable for heavy-duty power transfer." diff --git a/code/modules/power/cable_ender.dm b/code/modules/power/cable_ender.dm index 20ca1fdd051..5a581e37be2 100644 --- a/code/modules/power/cable_ender.dm +++ b/code/modules/power/cable_ender.dm @@ -11,7 +11,7 @@ plane = PLATING_PLANE layer = PIPES_LAYER - 0.05 //Just below pipes color = null - unacidable = 1 + unacidable = TRUE var/id = null /obj/structure/cable/ender/get_connections(var/powernetless_only = 0) diff --git a/code/modules/power/debug_items.dm b/code/modules/power/debug_items.dm index c7ca43705b3..0fe6e9fb079 100644 --- a/code/modules/power/debug_items.dm +++ b/code/modules/power/debug_items.dm @@ -1,8 +1,8 @@ /obj/machinery/power/debug_items/ icon = 'icons/obj/power.dmi' icon_state = "tracker" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/show_extended_information = 1 // Set to 0 to disable extra information on examining (for example, when used on admin events) /obj/machinery/power/debug_items/examine(mob/user) diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm index aba9087b752..0fb5626a57c 100644 --- a/code/modules/power/fusion/core/_core.dm +++ b/code/modules/power/fusion/core/_core.dm @@ -12,11 +12,11 @@ GLOBAL_LIST_EMPTY(fusion_cores) desc = "An enormous solenoid for generating extremely high power electromagnetic fields. It includes a kinetic energy harvester." icon = 'icons/obj/machines/power/fusion.dmi' icon_state = "core0" - density = 1 + density = TRUE use_power = USE_POWER_IDLE idle_power_usage = 50 active_power_usage = 500 //multiplied by field strength - anchored = 0 + anchored = FALSE circuit = /obj/item/weapon/circuitboard/fusion_core @@ -30,7 +30,7 @@ GLOBAL_LIST_EMPTY(fusion_cores) var/reactant_dump = FALSE // Does the tokomak actively try to syphon materials? /obj/machinery/power/fusion_core/mapped - anchored = 1 + anchored = TRUE /obj/machinery/power/fusion_core/Initialize() . = ..() diff --git a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm index cccde09edc7..ea6a39b2624 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm @@ -3,8 +3,8 @@ name = "fuel compressor" icon = 'icons/obj/machines/power/fusion.dmi' icon_state = "fuel_compressor1" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/fusion_fuel_compressor diff --git a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm index da989865e62..b8df2267751 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm @@ -4,8 +4,8 @@ GLOBAL_LIST_EMPTY(fuel_injectors) name = "fuel injector" icon = 'icons/obj/machines/power/fusion.dmi' icon_state = "injector0" - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE req_access = list(access_engine) use_power = USE_POWER_IDLE idle_power_usage = 10 @@ -31,7 +31,7 @@ GLOBAL_LIST_EMPTY(fuel_injectors) return ..() /obj/machinery/fusion_fuel_injector/mapped - anchored = 1 + anchored = TRUE /obj/machinery/fusion_fuel_injector/process() if(injecting) diff --git a/code/modules/power/fusion/fusion_particle_catcher.dm b/code/modules/power/fusion/fusion_particle_catcher.dm index 78e4b8b9508..d70f10a255d 100644 --- a/code/modules/power/fusion/fusion_particle_catcher.dm +++ b/code/modules/power/fusion/fusion_particle_catcher.dm @@ -1,7 +1,7 @@ /obj/effect/fusion_particle_catcher icon = 'icons/effects/effects.dmi' - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE invisibility = 101 var/obj/effect/fusion_em_field/parent var/mysize = 0 @@ -26,10 +26,10 @@ /obj/effect/fusion_particle_catcher/proc/UpdateSize() if(parent.size >= mysize) - density = 1 + density = TRUE name = "collector [mysize] ON" else - density = 0 + density = FALSE name = "collector [mysize] OFF" /obj/effect/fusion_particle_catcher/bullet_act(var/obj/item/projectile/Proj) diff --git a/code/modules/power/fusion/fusion_reactions.dm b/code/modules/power/fusion/fusion_reactions.dm index b49fa564bcd..54d72b11e89 100644 --- a/code/modules/power/fusion/fusion_reactions.dm +++ b/code/modules/power/fusion/fusion_reactions.dm @@ -17,7 +17,8 @@ var/list/fusion_reactions /proc/get_fusion_reaction(var/p_react, var/s_react, var/m_energy) if(!fusion_reactions) fusion_reactions = list() - for(var/rtype in typesof(/decl/fusion_reaction) - /decl/fusion_reaction) + for(var/rtype in subtypesof(/decl/fusion_reaction) + ) var/decl/fusion_reaction/cur_reaction = new rtype() if(!fusion_reactions[cur_reaction.p_react]) fusion_reactions[cur_reaction.p_react] = list() diff --git a/code/modules/power/fusion/gyrotron/gyrotron.dm b/code/modules/power/fusion/gyrotron/gyrotron.dm index 4740e0a1183..8f7e1f9f52a 100644 --- a/code/modules/power/fusion/gyrotron/gyrotron.dm +++ b/code/modules/power/fusion/gyrotron/gyrotron.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY(gyrotrons) /obj/machinery/power/emitter/gyrotron/anchored - anchored = 1 + anchored = TRUE state = 2 /obj/machinery/power/emitter/gyrotron/Initialize() diff --git a/code/modules/power/fusion/magpower.dm b/code/modules/power/fusion/magpower.dm index 9ebea0e4fcc..81ab2e5ce5a 100644 --- a/code/modules/power/fusion/magpower.dm +++ b/code/modules/power/fusion/magpower.dm @@ -6,7 +6,7 @@ desc = "A device for extracting power from high-energy plasma in toroidal fields." icon = 'icons/obj/machines/power/fusion.dmi' icon_state = "mag_trap0" - anchored = 1 + anchored = TRUE var/list/things_in_range = list()//what is in a radius of us? var/list/fields_in_range = list()//What EM fields are in that radius? var/list/active_field = list()//Our active field. diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index c6ad30ccc5d..590a681cec8 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -4,8 +4,8 @@ GLOBAL_LIST_EMPTY(all_turbines) name = "thermoelectric generator" desc = "It's a high efficiency thermoelectric generator." icon_state = "teg-unassembled" - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE use_power = USE_POWER_IDLE idle_power_usage = 100 //Watts, I hope. Just enough to do the computer and display things. diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index d71da42e9e8..abad3f3431e 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -4,8 +4,8 @@ name = "gravity generator control" desc = "A computer to control a local gravity generator. Qualified personnel only." icon_state = "airtunnel0e" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/obj/machinery/gravity_generator = null @@ -14,8 +14,8 @@ desc = "A device which produces a gravaton field when set up." icon = 'icons/obj/singularity.dmi' icon_state = "TheSingGen" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE use_power = USE_POWER_IDLE idle_power_usage = 200 active_power_usage = 1000 diff --git a/code/modules/power/gravitygenerator_vr.dm b/code/modules/power/gravitygenerator_vr.dm index cce22b705af..ae282b41caf 100644 --- a/code/modules/power/gravitygenerator_vr.dm +++ b/code/modules/power/gravitygenerator_vr.dm @@ -389,8 +389,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // Shake everyone on the z level to let them know that gravity was enagaged/disenagaged. /obj/machinery/gravity_generator/main/proc/shake_everyone() var/sound/alert_sound = sound('sound/effects/alert.ogg') - for(var/i in player_list) - var/mob/M = i + for(var/mob/M as anything in player_list) if(!(M.z in levels)) continue M.update_gravity(M.mob_has_gravity()) diff --git a/code/modules/power/grid_checker.dm b/code/modules/power/grid_checker.dm index 53766098f06..1409be9fef0 100644 --- a/code/modules/power/grid_checker.dm +++ b/code/modules/power/grid_checker.dm @@ -4,8 +4,8 @@ than the alternative." icon_state = "gridchecker_on" circuit = /obj/item/weapon/circuitboard/grid_checker - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/power_failing = FALSE // Turns to TRUE when the grid check event is fired by the Game Master, or perhaps a cheeky antag. // Wire stuff below. var/datum/wires/grid_checker/wires diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 54f417cc30b..c639d22fc5e 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -24,7 +24,7 @@ var/global/list/light_type_cache = list() desc = "A light fixture under construction." icon = 'icons/obj/lighting.dmi' icon_state = "tube-construct-stage1" - anchored = 1 + anchored = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER var/stage = 1 @@ -166,7 +166,7 @@ var/global/list/light_type_cache = list() desc = "A small light fixture under construction." icon = 'icons/obj/lighting.dmi' icon_state = "bulb-construct-stage1" - anchored = 1 + anchored = TRUE stage = 1 fixture_type = /obj/machinery/light/small sheets_refunded = 1 @@ -185,7 +185,7 @@ var/global/list/light_type_cache = list() desc = "A floor light fixture under construction." icon = 'icons/obj/lighting.dmi' icon_state = "flamp-construct-stage1" - anchored = 0 + anchored = FALSE plane = OBJ_PLANE layer = OBJ_LAYER stage = 1 @@ -208,7 +208,7 @@ var/global/list/light_type_cache = list() var/base_state = "tube" // base description and icon_state icon_state = "tube1" desc = "A lighting fixture." - anchored = 1 + anchored = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER use_power = USE_POWER_ACTIVE @@ -1051,7 +1051,7 @@ var/global/list/light_type_cache = list() src.visible_message("[name] shatters."," You hear a small glass object shatter.") status = LIGHT_BROKEN force = 5 - sharp = 1 + sharp = TRUE playsound(src, 'sound/effects/Glasshit.ogg', 75, 1) update_icon() diff --git a/code/modules/power/lighting_vr.dm b/code/modules/power/lighting_vr.dm index 4c13300a731..b7f0fb320ce 100644 --- a/code/modules/power/lighting_vr.dm +++ b/code/modules/power/lighting_vr.dm @@ -70,7 +70,7 @@ icon = 'icons/obj/lighting_vr.dmi' icon_state = "floortube-construct-stage1" stage = 1 - anchored = 0 + anchored = FALSE fixture_type = /obj/machinery/light/floortube sheets_refunded = 2 @@ -101,8 +101,8 @@ base_state = "big_flamp" desc = "A set of tube lights on a raised, solid fixture" shows_alerts = FALSE - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER construct_type = /obj/machinery/light_construct/bigfloorlamp @@ -116,7 +116,7 @@ icon = 'icons/obj/lighting32x64.dmi' icon_state = "big_flamp-construct-stage1" stage = 1 - anchored = 0 + anchored = FALSE fixture_type = /obj/machinery/light/bigfloorlamp sheets_refunded = 3 diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index dce52720b47..abf536f6519 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -4,8 +4,8 @@ desc = "A portable generator for emergency backup power" icon = 'icons/obj/power_vr.dmi' //VOREStation Edit icon_state = "portgen0" //VOREStation Edit - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE use_power = USE_POWER_OFF interact_offline = TRUE diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm index 5964adc2978..b2c8deb4695 100644 --- a/code/modules/power/port_gen_vr.dm +++ b/code/modules/power/port_gen_vr.dm @@ -5,7 +5,7 @@ icon_state = "potato" time_per_sheet = 1152 //same power output, but a 50 sheet stack will last 4 hours at max safe power power_gen = 50000 //watts - anchored = 1 + anchored = TRUE // Circuits for the RTGs below /obj/item/weapon/circuitboard/machine/rtg diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 5c8ba5a8a41..1c98b6fe958 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -9,7 +9,7 @@ /obj/machinery/power name = null icon = 'icons/obj/power.dmi' - anchored = 1.0 + anchored = TRUE var/datum/powernet/powernet = null use_power = USE_POWER_OFF idle_power_usage = 0 diff --git a/code/modules/power/sensors/powernet_sensor.dm b/code/modules/power/sensors/powernet_sensor.dm index 6f1b53db05a..6dd58ea1022 100644 --- a/code/modules/power/sensors/powernet_sensor.dm +++ b/code/modules/power/sensors/powernet_sensor.dm @@ -10,8 +10,8 @@ /obj/machinery/power/sensor name = "Powernet Sensor" desc = "Small machine which transmits data about specific powernet" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE layer = ABOVE_UTILITY icon = 'icons/obj/objects.dmi' icon_state = "floor_beacon" // If anyone wants to make better sprite, feel free to do so without asking me. diff --git a/code/modules/power/sensors/sensor_monitoring.dm b/code/modules/power/sensors/sensor_monitoring.dm index 4e6198f410f..277b175102f 100644 --- a/code/modules/power/sensors/sensor_monitoring.dm +++ b/code/modules/power/sensors/sensor_monitoring.dm @@ -11,8 +11,8 @@ light_color = "#ffcc33" //computer stuff - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/powermonitor var/alerting = 0 use_power = USE_POWER_IDLE diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index c036cf03686..86a4d00edb8 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -6,8 +6,8 @@ var/global/list/rad_collectors = list() desc = "A device which uses Hawking Radiation and phoron to produce power." icon = 'icons/obj/singularity.dmi' icon_state = "ca" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE req_access = list(access_engine_equip) // use_power = 0 var/obj/item/weapon/tank/phoron/P = null diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 50655315ad5..c47352e09dd 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -5,9 +5,9 @@ desc = "An energy field." icon = 'icons/obj/singularity.dmi' icon_state = "Contain_F" - anchored = 1 - density = 0 - unacidable = 1 + anchored = TRUE + density = FALSE + unacidable = TRUE use_power = USE_POWER_OFF light_range = 4 var/obj/machinery/field_generator/FG1 = null diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 903ac6100fe..61acc41293d 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -5,8 +5,8 @@ desc = "It is a heavy duty industrial laser." icon = 'icons/obj/singularity.dmi' icon_state = "emitter" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE req_access = list(access_engine_equip) var/id = null @@ -158,14 +158,14 @@ user.visible_message("[user.name] secures [src] to the floor.", \ "You secure the external reinforcing bolts to the floor.", \ "You hear a ratchet.") - src.anchored = 1 + src.anchored = TRUE if(1) state = 0 playsound(src, W.usesound, 75, 1) user.visible_message("[user.name] unsecures [src] reinforcing bolts from the floor.", \ "You undo the external reinforcing bolts.", \ "You hear a ratchet.") - src.anchored = 0 + src.anchored = FALSE disconnect_from_network() if(2) to_chat(user, "\The [src] needs to be unwelded from the floor.") diff --git a/code/modules/power/singularity/emitter_vr.dm b/code/modules/power/singularity/emitter_vr.dm index b50769dbdf1..5b15d2ae819 100644 --- a/code/modules/power/singularity/emitter_vr.dm +++ b/code/modules/power/singularity/emitter_vr.dm @@ -1,5 +1,6 @@ /obj/machinery/power/emitter icon = 'icons/obj/singularity_vr.dmi' // New emitter sprite + icon_state = "emitter0" var/previous_state = 0 /obj/machinery/power/emitter/Initialize() diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index f6c7407b4e1..ec29e08efa0 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -18,8 +18,8 @@ field_generator power level display desc = "A large thermal battery that projects a high amount of energy when powered." icon = 'icons/obj/machines/field_generator.dmi' icon_state = "Field_Gen" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE use_power = USE_POWER_OFF var/const/num_power_levels = 6 // Total number of power level icon has var/Varedit_start = 0 @@ -67,7 +67,7 @@ field_generator power level display active = 1 state = 2 power = field_generator_max_power - anchored = 1 + anchored = TRUE warming_up = 3 start_fields() update_icon() @@ -111,14 +111,14 @@ field_generator power level display user.visible_message("[user.name] secures [src.name] to the floor.", \ "You secure the external reinforcing bolts to the floor.", \ "You hear ratchet") - src.anchored = 1 + src.anchored = TRUE if(1) state = 0 playsound(src, W.usesound, 75, 1) user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \ "You undo the external reinforcing bolts.", \ "You hear ratchet") - src.anchored = 0 + src.anchored = FALSE if(2) to_chat(user, "The [src.name] needs to be unwelded from the floor.") return diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index 5c9031a831b..c29e200e865 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -4,8 +4,8 @@ desc = "An Odd Device which produces a Gravitational Singularity when set up." icon = 'icons/obj/singularity.dmi' icon_state = "TheSingGen" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE use_power = USE_POWER_OFF var/energy = 0 var/creation_type = /obj/singularity diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index e54b46c7f0c..7f30e02966b 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -5,8 +5,8 @@ desc = "Small things moving very fast." icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "particle1"//Need a new icon for this - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/movement_range = 10 var/energy = 10 //energy in eV var/mega_energy = 0 //energy in MeV diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 6d7108fbd6e..bf005048ca6 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -63,8 +63,8 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin desc = "Part of a Particle Accelerator." icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "none" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE var/obj/machinery/particle_accelerator/control_box/master = null var/construction_state = 0 var/reference = null @@ -206,14 +206,14 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin if(0) if(O.is_wrench()) playsound(src, O.usesound, 75, 1) - src.anchored = 1 + src.anchored = TRUE user.visible_message("[user.name] secures the [src.name] to the floor.", \ "You secure the external bolts.") temp_state++ if(1) if(O.is_wrench()) playsound(src, O.usesound, 75, 1) - src.anchored = 0 + src.anchored = FALSE user.visible_message("[user.name] detaches the [src.name] from the floor.", \ "You remove the external bolts.") temp_state-- @@ -252,8 +252,8 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin desc = "Part of a Particle Accelerator." icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "none" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE use_power = USE_POWER_OFF idle_power_usage = 0 active_power_usage = 0 @@ -340,14 +340,14 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin if(0) if(O.is_wrench()) playsound(src, O.usesound, 75, 1) - src.anchored = 1 + src.anchored = TRUE user.visible_message("[user.name] secures the [src.name] to the floor.", \ "You secure the external bolts.") temp_state++ if(1) if(O.is_wrench()) playsound(src, O.usesound, 75, 1) - src.anchored = 0 + src.anchored = FALSE user.visible_message("[user.name] detaches the [src.name] from the floor.", \ "You remove the external bolts.") temp_state-- diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 6beda2db159..e4d3254fdad 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -6,8 +6,8 @@ icon = 'icons/obj/machines/particle_accelerator_vr.dmi' //VOREStation Edit icon_state = "control_box" reference = "control_box" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE use_power = USE_POWER_OFF idle_power_usage = 500 active_power_usage = 70000 //70 kW per unit of strength diff --git a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm index 44e5c5d4fc2..938f9b69345 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm @@ -7,8 +7,8 @@ desc = "A strange device used to create exotic matter." icon = 'icons/obj/machines/particle_smasher.dmi' icon_state = "smasher" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE use_power = USE_POWER_OFF var/successful_craft = FALSE // Are we waiting to be emptied? diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 61fae18c42e..39d413677d8 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -7,11 +7,11 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity) desc = "A gravitational singularity." icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE plane = ABOVE_PLANE light_range = 6 - unacidable = 1 //Don't comment this out. + unacidable = TRUE //Don't comment this out. var/current_size = 1 var/allowed_size = 1 @@ -265,8 +265,7 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity) return 1 /obj/singularity/proc/eat() - for(var/T in orange(grav_pull, src)) - var/atom/X = T + for(var/atom/X as anything in orange(grav_pull, src)) if(!X.simulated) continue var/dist = get_dist(X, src) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index d0dc9a21e06..e62c08a99b6 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -10,8 +10,8 @@ GLOBAL_LIST_EMPTY(smeses) name = "power storage unit" desc = "A high-capacity superconducting magnetic energy storage (SMES) unit." icon_state = "smes" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_OFF circuit = /obj/item/weapon/circuitboard/smes clicksound = "switch" @@ -68,14 +68,8 @@ GLOBAL_LIST_EMPTY(smeses) /obj/machinery/power/smes/Initialize() . = ..() GLOB.smeses += src - for(var/d in GLOB.cardinal) - var/turf/T = get_step(src, d) - for(var/obj/machinery/power/terminal/term in T) - if(term && term.dir == turn(d, 180) && !term.master) - terminals |= term - term.master = src - term.connect_to_network() - if(!terminals.len) + add_nearby_terminals() + if(!check_terminals()) stat |= BROKEN return update_icon() @@ -91,6 +85,20 @@ GLOBAL_LIST_EMPTY(smeses) GLOB.smeses -= src return ..() +/obj/machinery/power/smes/proc/add_nearby_terminals() + for(var/d in GLOB.cardinal) + var/turf/T = get_step(src, d) + for(var/obj/machinery/power/terminal/term in T) + if(term && term.dir == turn(d, 180) && !term.master) + terminals |= term + term.master = src + term.connect_to_network() + +/obj/machinery/power/smes/proc/check_terminals() + if(!terminals.len) + return FALSE + return TRUE + /obj/machinery/power/smes/add_avail(var/amount) if(..(amount)) powernet.smes_newavail += amount diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 52ed6731961..17bf6a400a8 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -11,8 +11,8 @@ GLOBAL_LIST_EMPTY(solars_list) desc = "A solar electrical generator." icon = 'icons/obj/power.dmi' icon_state = "sp_base" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE use_power = USE_POWER_OFF idle_power_usage = 0 active_power_usage = 0 @@ -202,7 +202,7 @@ GLOBAL_LIST_EMPTY(solars_list) icon_state = "sp_base" item_state = "camera" w_class = ITEMSIZE_LARGE // Pretty big! - anchored = 0 + anchored = FALSE var/tracker = 0 /obj/item/solar_assembly/attack_hand(var/mob/user) @@ -214,13 +214,13 @@ GLOBAL_LIST_EMPTY(solars_list) return 0 if(!anchored) if(W.is_wrench()) - anchored = 1 + anchored = TRUE user.visible_message("[user] wrenches the solar assembly into place.") playsound(src, W.usesound, 75, 1) return 1 else if(W.is_wrench()) - anchored = 0 + anchored = FALSE user.visible_message("[user] unwrenches the solar assembly from it's place.") playsound(src, W.usesound, 75, 1) return 1 @@ -264,8 +264,8 @@ GLOBAL_LIST_EMPTY(solars_list) desc = "A controller for solar panel arrays." icon = 'icons/obj/computer.dmi' icon_state = "solar" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE use_power = USE_POWER_IDLE idle_power_usage = 250 var/id = 0 @@ -314,8 +314,7 @@ GLOBAL_LIST_EMPTY(solars_list) // This would use LateInitialize(), however the powernet does not appear to exist during that time. /hook/roundstart/proc/auto_start_solars() - for(var/a in GLOB.solars_list) - var/obj/machinery/power/solar_control/SC = a + for(var/obj/machinery/power/solar_control/SC as anything in GLOB.solars_list) SC.auto_start() return TRUE @@ -421,7 +420,7 @@ GLOBAL_LIST_EMPTY(solars_list) A.circuit = M A.state = 3 A.icon_state = "computer_3" - A.anchored = 1 + A.anchored = TRUE qdel(src) else to_chat(user, "You disconnect the monitor.") @@ -432,7 +431,7 @@ GLOBAL_LIST_EMPTY(solars_list) A.circuit = M A.state = 4 A.icon_state = "computer_4" - A.anchored = 1 + A.anchored = TRUE qdel(src) else src.attack_hand(user) diff --git a/code/modules/power/supermatter/setup_supermatter.dm b/code/modules/power/supermatter/setup_supermatter.dm index 1d9225351cf..2267909e850 100644 --- a/code/modules/power/supermatter/setup_supermatter.dm +++ b/code/modules/power/supermatter/setup_supermatter.dm @@ -103,8 +103,8 @@ name = "Engine Setup Marker" desc = "You shouldn't see this." invisibility = 101 - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE icon = 'icons/mob/screen1.dmi' icon_state = "x3" diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index f03261d133c..b76a3c07064 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -53,8 +53,8 @@ icon_state = "darkmatter" plane = MOB_PLANE // So people can walk behind the top part layer = ABOVE_MOB_LAYER // So people can walk behind the top part - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE light_range = 4 var/gasefficency = 0.25 @@ -166,7 +166,7 @@ message_admins("Supermatter exploded at ([x],[y],[z] - JMP)",0,1) log_game("SUPERMATTER([x],[y],[z]) Exploded. Power:[power], Oxygen:[oxygen], Damage:[damage], Integrity:[get_integrity()]") - anchored = 1 + anchored = TRUE grav_pulling = 1 exploded = 1 sleep(pull_time) diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index 7846ff6ff16..068b131cf84 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -9,7 +9,7 @@ desc = "It's an underfloor wiring terminal for power equipment." level = 1 var/obj/machinery/power/master = null - anchored = 1 + anchored = TRUE plane = PLATING_PLANE layer = WIRES_LAYER+0.01 diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 9ec2d2e4ab9..6163b3a8a11 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -40,8 +40,7 @@ var/obj/singularity/energy_ball/EB = orbiting.orbiting EB.orbiting_balls -= src - for(var/ball in orbiting_balls) - var/obj/singularity/energy_ball/EB = ball + for(var/obj/singularity/energy_ball/EB as anything in orbiting_balls) qdel(EB) . = ..() diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index c03d7db3b67..299d4de8238 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -8,8 +8,8 @@ desc = "A solar directional tracker." icon = 'icons/obj/power.dmi' icon_state = "tracker" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE use_power = USE_POWER_OFF var/glass_type = /obj/item/stack/material/glass diff --git a/code/modules/projectiles/broken.dm b/code/modules/projectiles/broken.dm index f46f7f34e50..57809fdbd12 100644 --- a/code/modules/projectiles/broken.dm +++ b/code/modules/projectiles/broken.dm @@ -31,20 +31,19 @@ if(do_after(user, 5 SECONDS)) to_chat(user, "\The [src] can possibly be restored with:") - for(var/resource in material_needs) - var/obj/item/res = resource - if(material_needs[resource] > 0) + for(var/obj/item/res as anything in material_needs) + if(material_needs[res] > 0) var/res_name = "" if(ispath(res,/obj/item/stack/material)) var/obj/item/stack/material/mat_stack = res var/datum/material/mat = get_material_by_name("[initial(mat_stack.default_type)]") - if(material_needs[resource]>1) + if(material_needs[res]>1) res_name = "[mat.use_name] [mat.sheet_plural_name]" else res_name = "[mat.use_name] [mat.sheet_singular_name]" else res_name = initial(res.name) - to_chat(user, "- x [material_needs[resource]] [res_name]") + to_chat(user, "- x [material_needs[res]] [res_name]") /obj/item/weapon/broken_gun/proc/setup_gun(var/obj/item/weapon/gun/path) if(ispath(path)) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index de0a1f46bd4..4979cc743c4 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -156,11 +156,11 @@ var/mob/living/M = loc if(istype(M)) if(M.can_wield_item(src) && src.is_held_twohanded(M)) - item_state_slots[slot_l_hand_str] = wielded_item_state - item_state_slots[slot_r_hand_str] = wielded_item_state + LAZYSET(item_state_slots, slot_l_hand_str, wielded_item_state) + LAZYSET(item_state_slots, slot_r_hand_str, wielded_item_state) else - item_state_slots[slot_l_hand_str] = initial(item_state) - item_state_slots[slot_r_hand_str] = initial(item_state) + LAZYSET(item_state_slots, slot_l_hand_str, initial(item_state)) + LAZYSET(item_state_slots, slot_r_hand_str, initial(item_state)) ..() @@ -709,7 +709,7 @@ in_chamber.on_hit(M) if(in_chamber.damage_type != HALLOSS && !in_chamber.nodamage) log_and_message_admins("[key_name(user)] commited suicide using \a [src]") - user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1) + user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp = TRUE) user.death() else if(in_chamber.damage_type == HALLOSS) to_chat(user, "Ow...") diff --git a/code/modules/projectiles/guns/automatic_fire.dm b/code/modules/projectiles/guns/automatic_fire.dm index 25e1e3a461b..e85c33a485a 100644 --- a/code/modules/projectiles/guns/automatic_fire.dm +++ b/code/modules/projectiles/guns/automatic_fire.dm @@ -8,8 +8,8 @@ /obj/screen/auto_target name = "targeter" icon = null//We dont want people to see this guy - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/obj/item/weapon/gun/gun var/active = 0//Just tells us that it was clicked on so we should start shooting var/delay_del = 0//Delays the del if we retarget without shooting diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm index b5d6f8172ba..e7edc8418d9 100644 --- a/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm +++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm @@ -33,8 +33,7 @@ if(batt.shots_left) return new chambered.projectile_type() else - for(var/B in ammo_magazine.stored_ammo) - var/obj/item/ammo_casing/microbattery/other_batt = B + for(var/obj/item/ammo_casing/microbattery/other_batt as anything in ammo_magazine.stored_ammo) if(istype(other_batt,chambered.type) && other_batt.shots_left) switch_to(other_batt) return new chambered.projectile_type() @@ -53,8 +52,7 @@ charge_left = batt.shots_left max_charge = initial(batt.shots_left) if(ammo_magazine) //Crawl to find more - for(var/B in ammo_magazine.stored_ammo) - var/obj/item/ammo_casing/microbattery/bullet = B + for(var/obj/item/ammo_casing/microbattery/bullet as anything in ammo_magazine.stored_ammo) if(istype(bullet,batt.type)) charge_left += bullet.shots_left max_charge += initial(bullet.shots_left) @@ -178,8 +176,7 @@ return //Why bother var/current = 0 - for(var/B in stored_ammo) - var/obj/item/ammo_casing/microbattery/batt = B + for(var/obj/item/ammo_casing/microbattery/batt as anything in stored_ammo) var/image/cap = image(icon, icon_state = "[capname]_cap") cap.color = batt.type_color cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/nsfw_cells.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/nsfw_cells.dm index 946368baadc..4e8b328026d 100644 --- a/code/modules/projectiles/guns/energy/cell_loaded_vr/nsfw_cells.dm +++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/nsfw_cells.dm @@ -44,7 +44,7 @@ base_spread = 90 //lower means the pellets spread more across body parts. If zero then this is considered a shrapnel explosion instead of a shrapnel cone spread_step = 10 embed_chance = 0 - sharp = 0 + sharp = FALSE check_armour = "melee" /obj/item/ammo_casing/microbattery/combat/ion @@ -64,7 +64,7 @@ nodamage = 1 agony = 5 embed_chance = 0 - sharp = 0 + sharp = FALSE check_armour = "melee" /obj/item/projectile/bullet/stripper/on_hit(var/atom/stripped) diff --git a/code/modules/projectiles/guns/energy/gunsword_vr.dm b/code/modules/projectiles/guns/energy/gunsword_vr.dm index 2b8b45a9fe4..cd28b53c905 100644 --- a/code/modules/projectiles/guns/energy/gunsword_vr.dm +++ b/code/modules/projectiles/guns/energy/gunsword_vr.dm @@ -7,7 +7,7 @@ icon_override = 'icons/vore/custom_guns_vr.dmi' item_state = "gbuster" - item_icons = list(slot_r_hand_str = 'icons/vore/custom_guns_vr.dmi', slot_l_hand_str = 'icons/vore/custom_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi') + item_icons = list(slot_r_hand_str = 'icons/vore/custom_guns_vr.dmi', slot_l_hand_str = 'icons/vore/custom_guns_vr.dmi', "slot_belt" = 'icons/inventory/belt/mob_vr.dmi') w_class = ITEMSIZE_NORMAL origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 4) @@ -48,8 +48,8 @@ var/active_throwforce = 20 var/active_w_class = ITEMSIZE_LARGE var/active_embed_chance = 0 //In the off chance one of these is supposed to embed, you can just tweak this var - sharp = 0 - edge = 0 + sharp = FALSE + edge = FALSE armor_penetration = 50 flags = NOBLOODY var/lrange = 2 @@ -66,8 +66,8 @@ embed_chance = active_embed_chance force = active_force throwforce = active_throwforce - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE w_class = active_w_class playsound(src, 'sound/weapons/saberon.ogg', 50, 1) set_light(lrange, lpower, lcolor) @@ -89,7 +89,7 @@ edge = initial(edge) w_class = initial(w_class) set_light(0,0) - attack_verb = list() + attack_verb = null /obj/item/weapon/cell/device/weapon/gunsword/attack_self(mob/living/user as mob) diff --git a/code/modules/projectiles/guns/energy/hooklauncher.dm b/code/modules/projectiles/guns/energy/hooklauncher.dm index 79ddf7443da..ee2d44042a7 100644 --- a/code/modules/projectiles/guns/energy/hooklauncher.dm +++ b/code/modules/projectiles/guns/energy/hooklauncher.dm @@ -22,7 +22,7 @@ /obj/item/weapon/gun/energy/hooklauncher/ring name = "ominous ring" desc = "A small ring with strange symbols engraved upon it." - icon = 'icons/obj/clothing/rings.dmi' + icon = 'icons/inventory/hands/item.dmi' icon_state = "seal-signet" item_state = "concealed" diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm index 4f3a35c7634..3d656b44669 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm @@ -25,8 +25,7 @@ . = ..() if(Adjacent(user) && max_mod_capacity) . += "[get_remaining_mod_capacity()]% mod capacity remaining." - for(var/A in get_modkits()) - var/obj/item/borg/upgrade/modkit/M = A + for(var/obj/item/borg/upgrade/modkit/M as anything in get_modkits()) . += "There is a [M.name] mod installed, using [M.cost]% capacity." /obj/item/weapon/gun/energy/kinetic_accelerator/attackby(obj/item/A, mob/user) @@ -46,8 +45,7 @@ /obj/item/weapon/gun/energy/kinetic_accelerator/proc/get_remaining_mod_capacity() var/current_capacity_used = 0 - for(var/A in get_modkits()) - var/obj/item/borg/upgrade/modkit/M = A + for(var/obj/item/borg/upgrade/modkit/M as anything in get_modkits()) current_capacity_used += M.cost return max_mod_capacity - current_capacity_used @@ -57,8 +55,7 @@ . += A /obj/item/weapon/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K) - for(var/A in get_modkits()) - var/obj/item/borg/upgrade/modkit/M = A + for(var/obj/item/borg/upgrade/modkit/M as anything in get_modkits()) M.modify_projectile(K) /obj/item/weapon/gun/energy/kinetic_accelerator/consume_next_projectile() @@ -185,8 +182,7 @@ . = TRUE if(denied_type) var/number_of_denied = 0 - for(var/A in KA.get_modkits()) - var/obj/item/borg/upgrade/modkit/M = A + for(var/obj/item/borg/upgrade/modkit/M as anything in KA.get_modkits()) if(istype(M, denied_type)) number_of_denied++ if(number_of_denied >= maximum_of_type) diff --git a/code/modules/projectiles/guns/energy/laser_vr.dm b/code/modules/projectiles/guns/energy/laser_vr.dm index 0199d154c42..6219af2ebf3 100644 --- a/code/modules/projectiles/guns/energy/laser_vr.dm +++ b/code/modules/projectiles/guns/energy/laser_vr.dm @@ -197,13 +197,13 @@ icon = 'icons/obj/gun_vr.dmi' icon_state = "phaserkill" item_state = "phaser" - item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi') + item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/inventory/belt/mob_vr.dmi') fire_sound = 'sound/weapons/laser2.ogg' origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4) charge_cost = 300 battery_lock = 1 - unacidable = 1 + unacidable = TRUE var/recharging = 0 var/phase_power = 75 diff --git a/code/modules/projectiles/guns/launcher/bows.dm b/code/modules/projectiles/guns/launcher/bows.dm new file mode 100644 index 00000000000..a56e390c87c --- /dev/null +++ b/code/modules/projectiles/guns/launcher/bows.dm @@ -0,0 +1,140 @@ +/obj/item/weapon/arrow/standard + name = "arrow" + desc = "It's got a tip for you - get the point?" + icon = 'icons/obj/guns/projectile/bows.dmi' + icon_state = "arrow" + item_state = "bolt" + throwforce = 8 + w_class = ITEMSIZE_NORMAL + sharp = TRUE + edge = FALSE + +/obj/item/weapon/arrow/energy + name = "hardlight arrow" + desc = "An arrow made out of energy! Classic?" + icon = 'icons/obj/guns/projectile/bows.dmi' + icon_state = "hardlight" + item_state = "bolt" + throwforce = 10 + w_class = ITEMSIZE_NORMAL + sharp = TRUE + edge = TRUE + embed_chance = 0 // it fizzles! + catchable = FALSE // oh god + +/obj/item/weapon/arrow/energy/throw_impact(atom/hit_atom) + . = ..() + qdel(src) + +/obj/item/weapon/arrow/energy/equipped() + if(isliving(loc)) + var/mob/living/L = loc + L.drop_from_inventory(src) + qdel(src) // noh + +/obj/item/weapon/gun/launcher/crossbow/bow + name = "shortbow" + desc = "A common shortbow, capable of firing arrows at high speed towards a target. Useful for hunting while keeping quiet." + icon = 'icons/obj/guns/projectile/bows.dmi' + icon_override = 'icons/obj/guns/projectile/bows.dmi' + icon_state = "bow" + item_state = "bow" + fire_sound = 'sound/weapons/punchmiss.ogg' // TODO: Decent THWOK noise. + fire_sound_text = "a solid thunk" + fire_delay = 25 + slot_flags = SLOT_BACK + release_force = 20 + release_speed = 15 + var/drawn = FALSE + +/obj/item/weapon/gun/launcher/crossbow/bow/update_release_force(obj/item/projectile) + return 0 + +/obj/item/weapon/gun/launcher/crossbow/bow/proc/unload(mob/user) + var/obj/item/weapon/arrow/A = bolt + bolt = null + drawn = FALSE + A.forceMove(get_turf(user)) + user.put_in_hands(A) + update_icon() + +/obj/item/weapon/gun/launcher/crossbow/bow/consume_next_projectile(mob/user) + if(!drawn) + to_chat(user, "\The [src] is not drawn back!") + return null + return bolt + +/obj/item/weapon/gun/launcher/crossbow/bow/handle_post_fire(mob/user, atom/target) + bolt = null + drawn = FALSE + update_icon() + ..() + +/obj/item/weapon/gun/launcher/crossbow/bow/attack_hand(mob/living/user) + if(loc == user && bolt && !drawn) + user.visible_message("[user] removes [bolt] from [src].","You remove [bolt] from [src].") + unload(user) + else + return ..() + +/obj/item/weapon/gun/launcher/crossbow/bow/attack_self(mob/living/user) + if(drawn) + user.visible_message("[user] relaxes the tension on [src]'s string.","You relax the tension on [src]'s string.") + drawn = FALSE + update_icon() + else + draw(user) + +/obj/item/weapon/gun/launcher/crossbow/bow/draw(var/mob/user) + if(!bolt) + to_chat(user, "You don't have anything nocked to [src].") + return + + if(user.restrained()) + return + + current_user = user + user.visible_message("[user] begins to draw back the string of [src].","You begin to draw back the string of [src].") + if(do_after(user, 25, src, exclusive = TASK_ALL_EXCLUSIVE)) + drawn = TRUE + user.visible_message("[user] draws the string on [src] back fully!", "You draw the string on [src] back fully!") + update_icon() + +/obj/item/weapon/gun/launcher/crossbow/bow/attackby(obj/item/W as obj, mob/user) + if(!bolt && istype(W,/obj/item/weapon/arrow/standard)) + user.drop_from_inventory(W, src) + bolt = W + user.visible_message("[user] slides [bolt] into [src].","You slide [bolt] into [src].") + update_icon() + +/obj/item/weapon/gun/launcher/crossbow/bow/update_icon() + if(drawn) + icon_state = "[initial(icon_state)]_firing" + else if(bolt) + icon_state = "[initial(icon_state)]_loaded" + else + icon_state = "[initial(icon_state)]" + + + +/obj/item/weapon/gun/launcher/crossbow/bow/hardlight + name = "hardlight bow" + icon_state = "bow_hardlight" + item_state = "bow_hardlight" + desc = "An energy bow, capable of producing arrows from an internal power supply." + +/obj/item/weapon/gun/launcher/crossbow/bow/hardlight/unload(mob/user) + qdel_null(bolt) + update_icon() + +/obj/item/weapon/gun/launcher/crossbow/bow/hardlight/attack_self(mob/living/user) + if(drawn) + user.visible_message("[user] relaxes the tension on [src]'s string.","You relax the tension on [src]'s string.") + drawn = FALSE + update_icon() + else if(!bolt) + user.visible_message("[user] fabricates a new hardlight projectile with [src].","You fabricate a new hardlight projectile with [src].") + bolt = new /obj/item/weapon/arrow/energy(src) + update_icon() + else + draw(user) diff --git a/code/modules/projectiles/guns/launcher/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm index 1201e89b7b9..74b3a5eb4c2 100644 --- a/code/modules/projectiles/guns/launcher/crossbow.dm +++ b/code/modules/projectiles/guns/launcher/crossbow.dm @@ -10,8 +10,8 @@ pickup_sound = 'sound/items/pickup/sword.ogg' throwforce = 8 w_class = ITEMSIZE_NORMAL - sharp = 1 - edge = 0 + sharp = TRUE + edge = FALSE /obj/item/weapon/arrow/proc/removed() //Helper for metal rods falling apart. return @@ -19,8 +19,8 @@ /obj/item/weapon/spike name = "alloy spike" desc = "It's about a foot of weird silver metal with a wicked point." - sharp = 1 - edge = 0 + sharp = TRUE + edge = FALSE throwforce = 5 w_class = ITEMSIZE_SMALL icon = 'icons/obj/weapons.dmi' diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index 981e5c988bd..3da58638a52 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -23,7 +23,7 @@ to_chat(user, "You carefully insert [syringe] into [src].") user.remove_from_mob(syringe) syringe.loc = src - sharp = 1 + sharp = TRUE name = "syringe dart" update_icon() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index c7fcc6d30ea..82753f3f0a0 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -323,7 +323,7 @@ var/turf/starting = get_turf(src) if(isnull(Angle)) //Try to resolve through offsets if there's no angle set. if(isnull(xo) || isnull(yo)) - crash_with("WARNING: Projectile [type] deleted due to being unable to resolve a target after angle was null!") + stack_trace("WARNING: Projectile [type] deleted due to being unable to resolve a target after angle was null!") qdel(src) return var/turf/target = locate(CLAMP(starting + xo, 1, world.maxx), CLAMP(starting + yo, 1, world.maxy), starting.z) @@ -400,7 +400,7 @@ xo = targloc.x - curloc.x setAngle(Get_Angle(src, targloc) + spread) else - crash_with("WARNING: Projectile [type] fired without either mouse parameters, or a target atom to aim at!") + stack_trace("WARNING: Projectile [type] fired without either mouse parameters, or a target atom to aim at!") qdel(src) /proc/calculate_projectile_angle_and_pixel_offsets(mob/user, params) diff --git a/code/modules/projectiles/projectile/beams_vr.dm b/code/modules/projectiles/projectile/beams_vr.dm index a3a149502cd..3f3e82071d7 100644 --- a/code/modules/projectiles/projectile/beams_vr.dm +++ b/code/modules/projectiles/projectile/beams_vr.dm @@ -74,7 +74,7 @@ pulse.icon = 'icons/effects/effects.dmi' pulse.icon_state = "heal" pulse.name = "heal" - pulse.anchored = 1 + pulse.anchored = TRUE spawn(20) qdel(pulse) to_chat(target, "As the beam strikes you, your injuries close up!") diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 1483d082744..31fa34dc120 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -7,7 +7,7 @@ nodamage = 0 check_armour = "bullet" embed_chance = 20 //Modified in the actual embed process, but this should keep embed chance about the same - sharp = 1 + sharp = TRUE hitsound_wall = "ricochet" impact_effect_type = /obj/effect/temp_visual/impact_effect excavation_amount = 20 @@ -100,7 +100,7 @@ damage = 10 agony = 60 embed_chance = 0 - sharp = 0 + sharp = FALSE check_armour = "melee" /obj/item/projectile/bullet/pistol/rubber // "Rubber" bullets for all other pistols. @@ -108,7 +108,7 @@ damage = 5 agony = 40 embed_chance = 0 - sharp = 0 + sharp = FALSE check_armour = "melee" fire_sound ='sound/weapons/Gunshot_pathetic.ogg' // Rubber shots have less powder in the casing. @@ -125,7 +125,7 @@ damage = 20 agony = 60 embed_chance = 0 - sharp = 0 + sharp = FALSE check_armour = "melee" //Should do about 80 damage at 1 tile distance (adjacent), and 50 damage at 3 tiles distance. @@ -150,7 +150,7 @@ fire_sound = 'sound/weapons/Laser.ogg' // Really? We got nothing better than this? damage = 15 embed_chance = 0 - sharp = 0 + sharp = FALSE check_armour = "melee" combustion = FALSE @@ -208,7 +208,7 @@ SA_bonus_damage = 35 // 50 total on animals. SA_vulnerability = SA_ANIMAL -/obj/item/projectile/bullet/rifle/a145 // 14.5×114mm is bigger than a .50 BMG round. +/obj/item/projectile/bullet/rifle/a145 // 14.5�114mm is bigger than a .50 BMG round. fire_sound = 'sound/weapons/Gunshot_cannon.ogg' // This is literally an anti-tank rifle caliber. It better sound like a fucking cannon. damage = 80 stun = 3 @@ -248,7 +248,7 @@ fire_sound = 'sound/effects/Explosion1.ogg' damage = 20 embed_chance = 0 - edge = 1 + edge = TRUE /obj/item/projectile/bullet/burstbullet/on_hit(var/atom/target, var/blocked = 0) if(isturf(target)) @@ -304,7 +304,7 @@ damage = 0 nodamage = 1 embed_chance = 0 - sharp = 0 + sharp = FALSE combustion = FALSE @@ -319,7 +319,7 @@ damage = 0 nodamage = 1 embed_chance = 0 - sharp = 0 + sharp = FALSE /obj/item/projectile/bullet/blank/cap/process() loc = null diff --git a/code/modules/projectiles/projectile/bullets_vr.dm b/code/modules/projectiles/projectile/bullets_vr.dm index 7b27a08942f..2f927afe998 100644 --- a/code/modules/projectiles/projectile/bullets_vr.dm +++ b/code/modules/projectiles/projectile/bullets_vr.dm @@ -2,7 +2,7 @@ damage = 10 agony = 60 embed_chance = 0 - sharp = 0 + sharp = FALSE check_armour = "melee" /obj/item/projectile/energy/flash/strong diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 80fa2227c40..3136f10199b 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -144,17 +144,21 @@ agony = 10 check_armour = "bio" armor_penetration = 25 // It's acid + hitsound_wall = 'sound/weapons/effects/alien_spit_wall.ogg' + hitsound = 'sound/weapons/effects/alien_spit_wall.ogg' combustion = FALSE /obj/item/projectile/energy/neurotoxin name = "neurotoxic spit" icon_state = "neurotoxin" - damage = 5 + damage = 0 damage_type = BIOACID agony = 80 check_armour = "bio" armor_penetration = 25 // It's acid-based + hitsound_wall = 'sound/weapons/effects/alien_spit_wall.ogg' + hitsound = 'sound/weapons/effects/alien_spit_wall.ogg' combustion = FALSE diff --git a/code/modules/projectiles/projectile/hook.dm b/code/modules/projectiles/projectile/hook.dm index 35b39910a0f..a6568e7b755 100644 --- a/code/modules/projectiles/projectile/hook.dm +++ b/code/modules/projectiles/projectile/hook.dm @@ -42,7 +42,7 @@ if(I_HURT) check_armour = "bullet" damage *= 3 - sharp = 1 + sharp = TRUE agony = 20 if(I_GRAB) check_armour = "melee" diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 9c06241ecfd..ee75074cc73 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -41,8 +41,8 @@ icon_state= "bolter" damage = 50 check_armour = "bullet" - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE /obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0) explosion(target, -1, 0, 2) diff --git a/code/modules/projectiles/targeting/targeting_overlay.dm b/code/modules/projectiles/targeting/targeting_overlay.dm index 67525bdc5be..a732d3c8ef1 100644 --- a/code/modules/projectiles/targeting/targeting_overlay.dm +++ b/code/modules/projectiles/targeting/targeting_overlay.dm @@ -3,11 +3,11 @@ desc = "Stick 'em up!" icon = 'icons/effects/Targeted.dmi' icon_state = "locking" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE opacity = 0 plane = ABOVE_PLANE - simulated = 0 + simulated = FALSE mouse_opacity = 0 var/mob/living/aiming_at // Who are we currently targeting, if anyone? diff --git a/code/modules/random_map/automata/diona.dm b/code/modules/random_map/automata/diona.dm index d6bee1c0ff4..2966c172c2a 100644 --- a/code/modules/random_map/automata/diona.dm +++ b/code/modules/random_map/automata/diona.dm @@ -15,8 +15,8 @@ /obj/structure/diona icon = 'icons/obj/diona.dmi' - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE opacity = 0 layer = TURF_LAYER + 0.01 diff --git a/code/modules/random_map/drop/droppod.dm b/code/modules/random_map/drop/droppod.dm index e63c31b1a5e..31a575212c4 100644 --- a/code/modules/random_map/drop/droppod.dm +++ b/code/modules/random_map/drop/droppod.dm @@ -158,7 +158,7 @@ var/mob/living/spawned_mob var/list/spawned_mobs = list() - var/spawn_path = tgui_input_list(usr, "Select a mob type.", "Drop Pod Selection", typesof(/mob/living)-/mob/living) + var/spawn_path = tgui_input_list(usr, "Select a mob type.", "Drop Pod Selection", subtypesof(/mob/living)) if(!spawn_path) return diff --git a/code/modules/random_map/drop/droppod_doors.dm b/code/modules/random_map/drop/droppod_doors.dm index c472a9f1f9f..c19aba40fd5 100644 --- a/code/modules/random_map/drop/droppod_doors.dm +++ b/code/modules/random_map/drop/droppod_doors.dm @@ -3,8 +3,8 @@ desc = "A drop pod door. Opens rapidly using explosive bolts." icon = 'icons/obj/structures.dmi' icon_state = "droppod_door_closed" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE opacity = 1 layer = TURF_LAYER + 0.1 var/deploying @@ -68,12 +68,12 @@ M.throw_at(get_edge_target_turf(origin,src.dir),rand(0,3),50) // Create a decorative ramp bottom and flatten out our current ramp. - density = 0 + density = FALSE set_opacity(0) icon_state = "ramptop" var/obj/structure/droppod_door/door_bottom = new(T) door_bottom.deployed = 1 - door_bottom.density = 0 + door_bottom.density = FALSE door_bottom.set_opacity(0) door_bottom.dir = src.dir door_bottom.icon_state = "rampbottom" \ No newline at end of file diff --git a/code/modules/random_map/drop/supply.dm b/code/modules/random_map/drop/supply.dm index 912542d6543..d1cc04211d8 100644 --- a/code/modules/random_map/drop/supply.dm +++ b/code/modules/random_map/drop/supply.dm @@ -55,14 +55,14 @@ choice = tgui_alert(usr, "Do you wish to add structures or machines?","Supply Drop",list("No","Yes")) if(choice == "Yes") while(1) - var/adding_loot_type = tgui_input_list(usr, "Select a new loot path. Cancel to finish.", "Loot Selection", typesof(/obj) - typesof(/obj/item)) + var/adding_loot_type = tgui_input_list(usr, "Select a new loot path. Cancel to finish.", "Loot Selection", subtypesof(/obj)) if(!adding_loot_type) break chosen_loot_types |= adding_loot_type choice = tgui_alert(usr, "Do you wish to add any non-weapon items?","Supply Drop",list("No","Yes")) if(choice == "Yes") while(1) - var/adding_loot_type = tgui_input_list(usr, "Select a new loot path. Cancel to finish.", "Loot Selection", typesof(/obj/item) - typesof(/obj/item/weapon)) + var/adding_loot_type = tgui_input_list(usr, "Select a new loot path. Cancel to finish.", "Loot Selection", subtypesof(/obj/item)) if(!adding_loot_type) break chosen_loot_types |= adding_loot_type diff --git a/code/modules/random_map/noise/desert.dm b/code/modules/random_map/noise/desert.dm index 0264d2a781a..ccb768ce3a0 100644 --- a/code/modules/random_map/noise/desert.dm +++ b/code/modules/random_map/noise/desert.dm @@ -24,14 +24,14 @@ switch(val) if(2 to 3) if(prob(60)) - var/grass_path = pick(typesof(/obj/structure/flora/grass)-/obj/structure/flora/grass) + var/grass_path = pick(subtypesof(/obj/structure/flora/grass)) new grass_path(T) if(prob(5)) var/mob_type = pick(list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/mouse)) new mob_type(T) if(5 to 6) if(prob(20)) - var/grass_path = pick(typesof(/obj/structure/flora/grass)-/obj/structure/flora/grass) + var/grass_path = pick(subtypesof(/obj/structure/flora/grass)) new grass_path(T) if(7 to 9) if(prob(60)) diff --git a/code/modules/random_map/noise/ore.dm b/code/modules/random_map/noise/ore.dm index f83f957c521..a2aaec2d75d 100644 --- a/code/modules/random_map/noise/ore.dm +++ b/code/modules/random_map/noise/ore.dm @@ -64,13 +64,13 @@ T.resources["hydrogen"] = 0 T.resources["verdantium"] = 0 T.resources["lead"] = 0 - T.resources["copper"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) - T.resources["tin"] = rand(RESOURCE_LOW_MIN, RESOURCE_MID_MAX) - T.resources["bauxite"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) + //T.resources["copper"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) + //T.resources["tin"] = rand(RESOURCE_LOW_MIN, RESOURCE_MID_MAX) + //T.resources["bauxite"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) T.resources["rutile"] = 0 - T.resources["void opal"] = 0 - T.resources["quartz"] = 0 - T.resources["painite"] = 0 + //T.resources["void opal"] = 0 + //T.resources["quartz"] = 0 + //T.resources["painite"] = 0 else if(current_cell < deep_val) // Rare metals. T.resources["gold"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX) T.resources["silver"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX) @@ -83,13 +83,13 @@ T.resources["diamond"] = 0 T.resources["hematite"] = 0 T.resources["marble"] = 0 - T.resources["copper"] = 0 - T.resources["tin"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX) - T.resources["bauxite"] = 0 + //T.resources["copper"] = 0 + //T.resources["tin"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX) + //T.resources["bauxite"] = 0 T.resources["rutile"] = rand(RESOURCE_LOW_MIN, RESOURCE_MID_MAX) - T.resources["void opal"] = 0 - T.resources["quartz"] = 0 - T.resources["painite"] = 0 + //T.resources["void opal"] = 0 + //T.resources["quartz"] = 0 + //T.resources["painite"] = 0 else // Deep metals. T.resources["uranium"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) T.resources["diamond"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) @@ -102,13 +102,13 @@ T.resources["hematite"] = 0 T.resources["gold"] = 0 T.resources["silver"] = 0 - T.resources["copper"] = 0 - T.resources["tin"] = 0 - T.resources["bauxite"] = 0 + //T.resources["copper"] = 0 + //T.resources["tin"] = 0 + //T.resources["bauxite"] = 0 T.resources["rutile"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) - T.resources["void opal"] = 0 - T.resources["quartz"] = 0 - T.resources["painite"] = 0 + //T.resources["void opal"] = 0 + //T.resources["quartz"] = 0 + //T.resources["painite"] = 0 return /datum/random_map/noise/ore/get_map_char(var/value) diff --git a/code/modules/random_map/random_map_verbs.dm b/code/modules/random_map/random_map_verbs.dm index c4d572d23f1..ff93b73b091 100644 --- a/code/modules/random_map/random_map_verbs.dm +++ b/code/modules/random_map/random_map_verbs.dm @@ -36,7 +36,7 @@ if(!holder) return - var/map_datum = tgui_input_list(usr, "Choose a map to create.", "Map Choice", typesof(/datum/random_map)-/datum/random_map) + var/map_datum = tgui_input_list(usr, "Choose a map to create.", "Map Choice", subtypesof(/datum/random_map)) if(!map_datum) return diff --git a/code/modules/reagents/holder/distilling.dm b/code/modules/reagents/holder/distilling.dm index 1599f395d91..9fb48679015 100644 --- a/code/modules/reagents/holder/distilling.dm +++ b/code/modules/reagents/holder/distilling.dm @@ -8,19 +8,16 @@ var/list/effect_reactions = list() do reaction_occurred = FALSE - for(var/i in reagent_list) - var/datum/reagent/R = i + for(var/datum/reagent/R as anything in reagent_list) if(SSchemistry.distilled_reactions_by_reagent[R.id]) eligible_reactions |= SSchemistry.distilled_reactions_by_reagent[R.id] - for(var/i in eligible_reactions) - var/decl/chemical_reaction/C = i + for(var/decl/chemical_reaction/C as anything in eligible_reactions) if(C.can_happen(src) && C.process(src)) effect_reactions |= C reaction_occurred = TRUE eligible_reactions.len = 0 while(reaction_occurred) - for(var/i in effect_reactions) - var/decl/chemical_reaction/C = i + for(var/decl/chemical_reaction/C as anything in effect_reactions) C.post_reaction(src) update_total() \ No newline at end of file diff --git a/code/modules/reagents/holder/holder.dm b/code/modules/reagents/holder/holder.dm index 8ddf4752b58..28f133c8409 100644 --- a/code/modules/reagents/holder/holder.dm +++ b/code/modules/reagents/holder/holder.dm @@ -85,20 +85,17 @@ var/list/effect_reactions = list() do reaction_occurred = FALSE - for(var/i in reagent_list) - var/datum/reagent/R = i + for(var/datum/reagent/R as anything in reagent_list) if(SSchemistry.instant_reactions_by_reagent[R.id]) eligible_reactions |= SSchemistry.instant_reactions_by_reagent[R.id] - for(var/i in eligible_reactions) - var/decl/chemical_reaction/C = i + for(var/decl/chemical_reaction/C as anything in eligible_reactions) if(C.can_happen(src) && C.process(src)) effect_reactions |= C reaction_occurred = TRUE eligible_reactions.len = 0 while(reaction_occurred) - for(var/i in effect_reactions) - var/decl/chemical_reaction/C = i + for(var/decl/chemical_reaction/C as anything in effect_reactions) C.post_reaction(src) update_total() @@ -111,27 +108,6 @@ update_total() amount = min(amount, get_free_space()) - if(istype(my_atom,/obj/item/weapon/reagent_containers/food)) //The following code is targeted specifically at getting allergen reagents into food items, since for the most part they're not applied by default. - var/list/add_reagents = list() - var/totalnum = 0 - - for(var/item in data) //Try to find the ID - var/add_reagent_id = null - if(item in SSchemistry.chemical_reagents) - add_reagent_id = item - else if("[item]juice" in SSchemistry.chemical_reagents) - add_reagent_id = "[item]juice" - if(add_reagent_id) //If we did find it, add it to our list of reagents to add, and add the number to our total. - add_reagents[add_reagent_id] += data[item] - totalnum += data[item] - - if(totalnum) - var/multconst = amount/totalnum //We're going to add these extra reagents so that they share the ratio described, but only add up to 1x the existing amount at the most - for(var/item in add_reagents) - add_reagent(item,add_reagents[item]*multconst) - - - for(var/datum/reagent/current in reagent_list) if(current.id == id) @@ -162,12 +138,11 @@ my_atom.on_reagent_change() return 1 else - crash_with("[my_atom] attempted to add a reagent called '[id]' which doesn't exist. ([usr])") + stack_trace("[my_atom] attempted to add a reagent called '[id]' which doesn't exist. ([usr])") return 0 /datum/reagents/proc/isolate_reagent(reagent) - for(var/A in reagent_list) - var/datum/reagent/R = A + for(var/datum/reagent/R as anything in reagent_list) if(R.id != reagent) del_reagent(R.id) update_total() @@ -505,19 +480,17 @@ objs += O if (objs.len) var/objportion = (amount * 0.2) / objs.len - for (var/o in objs) - var/obj/O = o + for(var/obj/O as anything in objs) trans_to(O, objportion, multiplier, copy) amount = min(amount, total_volume) if (mobs.len) var/mobportion = (amount * 0.5) / mobs.len - for (var/m in mobs) - var/mob/M = m + for(var/mob/M as anything in mobs) trans_to(M, mobportion, multiplier, copy) trans_to(T, total_volume, multiplier, copy) if (total_volume <= 0) qdel(src) - + /** * Calls [/datum/reagent/proc/on_update] on every reagent in this holder * diff --git a/code/modules/reagents/machinery/chem_master.dm b/code/modules/reagents/machinery/chem_master.dm index 9147588d70b..6c810251fc5 100644 --- a/code/modules/reagents/machinery/chem_master.dm +++ b/code/modules/reagents/machinery/chem_master.dm @@ -1,8 +1,8 @@ /obj/machinery/chem_master name = "ChemMaster 3000" desc = "Used to seperate and package chemicals in to patches, pills, or bottles. Warranty void if used to create Space Drugs." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE icon = 'icons/obj/chemical.dmi' icon_state = "mixer0" circuit = /obj/item/weapon/circuitboard/chem_master diff --git a/code/modules/reagents/machinery/dispenser/cartridge.dm b/code/modules/reagents/machinery/dispenser/cartridge.dm index 0e2b09eb575..ded38cf561c 100644 --- a/code/modules/reagents/machinery/dispenser/cartridge.dm +++ b/code/modules/reagents/machinery/dispenser/cartridge.dm @@ -9,7 +9,7 @@ amount_per_transfer_from_this = 50 // Large, but inaccurate. Use a chem dispenser or beaker for accuracy. possible_transfer_amounts = list(50, 100, 250, 500) - unacidable = 1 + unacidable = TRUE var/spawn_reagent = null var/label = "" diff --git a/code/modules/reagents/machinery/dispenser/dispenser2.dm b/code/modules/reagents/machinery/dispenser/dispenser2.dm index c956409dc98..fcc358274a8 100644 --- a/code/modules/reagents/machinery/dispenser/dispenser2.dm +++ b/code/modules/reagents/machinery/dispenser/dispenser2.dm @@ -17,7 +17,7 @@ use_power = USE_POWER_IDLE idle_power_usage = 100 - anchored = 1 + anchored = TRUE /obj/machinery/chemical_dispenser/Initialize() . = ..() diff --git a/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm b/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm index b0dec9f65bc..9c776d3266d 100644 --- a/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm +++ b/code/modules/reagents/machinery/dispenser/dispenser2_energy.dm @@ -15,7 +15,7 @@ for(var/id in dispense_reagents) var/datum/reagent/R = SSchemistry.chemical_reagents[id] if(!R) - crash_with("[src] at [x],[y],[z] failed to find reagent '[id]'!") + stack_trace("[src] at [x],[y],[z] failed to find reagent '[id]'!") dispense_reagents -= id continue var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[R.name] diff --git a/code/modules/reagents/machinery/dispenser/reagent_tank.dm b/code/modules/reagents/machinery/dispenser/reagent_tank.dm index f5c28ea7200..42e59d0c98e 100644 --- a/code/modules/reagents/machinery/dispenser/reagent_tank.dm +++ b/code/modules/reagents/machinery/dispenser/reagent_tank.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/objects.dmi' icon_state = "watertank" layer = TABLE_LAYER - density = 1 - anchored = 0 + density = TRUE + anchored = FALSE pressure_resistance = 2*ONE_ATMOSPHERE var/obj/item/hose_connector/input/active/InputSocket @@ -247,8 +247,8 @@ desc = "Refills pepper spray canisters." icon = 'icons/obj/objects.dmi' icon_state = "peppertank" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE amount_per_transfer_from_this = 45 /obj/structure/reagent_dispensers/peppertank/Initialize() @@ -263,7 +263,7 @@ icon = 'icons/obj/vending.dmi' icon_state = "water_cooler" possible_transfer_amounts = null - anchored = 1 + anchored = TRUE var/bottle = 0 var/cups = 0 var/cupholder = 0 @@ -416,7 +416,7 @@ icon = 'icons/obj/objects.dmi' icon_state = "virusfoodtank" amount_per_transfer_from_this = 10 - anchored = 1 + anchored = TRUE /obj/structure/reagent_dispensers/virusfood/Initialize() . = ..() @@ -428,7 +428,7 @@ icon = 'icons/obj/objects.dmi' icon_state = "acidtank" amount_per_transfer_from_this = 10 - anchored = 1 + anchored = TRUE /obj/structure/reagent_dispensers/acid/Initialize() . = ..() diff --git a/code/modules/reagents/machinery/dispenser/supply.dm b/code/modules/reagents/machinery/dispenser/supply.dm index 984d7786a82..ffbad53fab1 100644 --- a/code/modules/reagents/machinery/dispenser/supply.dm +++ b/code/modules/reagents/machinery/dispenser/supply.dm @@ -1,7 +1,7 @@ /datum/supply_pack/chemistry_dispenser name = "Reagent dispenser" contains = list( - /obj/machinery/chemical_dispenser{anchored = 0} + /obj/machinery/chemical_dispenser{anchored = FALSE} ) cost = 25 containertype = /obj/structure/largecrate @@ -11,7 +11,7 @@ /datum/supply_pack/beer_dispenser name = "Booze dispenser" contains = list( - /obj/machinery/chemical_dispenser/bar_alc{anchored = 0} + /obj/machinery/chemical_dispenser/bar_alc{anchored = FALSE} ) cost = 25 containertype = /obj/structure/largecrate @@ -21,7 +21,7 @@ /datum/supply_pack/soda_dispenser name = "Soda dispenser" contains = list( - /obj/machinery/chemical_dispenser/bar_soft{anchored = 0} + /obj/machinery/chemical_dispenser/bar_soft{anchored = FALSE} ) cost = 25 containertype = /obj/structure/largecrate diff --git a/code/modules/reagents/machinery/grinder.dm b/code/modules/reagents/machinery/grinder.dm index f913f7947b2..3b5ea9e4fd6 100644 --- a/code/modules/reagents/machinery/grinder.dm +++ b/code/modules/reagents/machinery/grinder.dm @@ -4,8 +4,8 @@ desc = "Grinds stuff into itty bitty bits." icon = 'icons/obj/kitchen.dmi' icon_state = "juicer1" - density = 0 - anchored = 0 + density = FALSE + anchored = FALSE use_power = USE_POWER_IDLE idle_power_usage = 5 active_power_usage = 100 @@ -28,6 +28,7 @@ /obj/item/stack/material/sandstone = list("silicon", "oxygen"), /obj/item/stack/material/glass = list("silicon"), /obj/item/stack/material/glass/phoronglass = list("platinum", "silicon", "silicon", "silicon"), //5 platinum, 15 silicon, + /obj/item/stack/material/supermatter = list("supermatter") ) var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine") @@ -55,8 +56,7 @@ . += "\The [src] contains:" if(beaker) . += "- \A [beaker]." - for(var/i in holdingitems) - var/obj/item/O = i + for(var/obj/item/O as anything in holdingitems) . += "- \A [O.name]." if(!(stat & (NOPOWER|BROKEN))) diff --git a/code/modules/reagents/reactions/instant/instant_vr.dm b/code/modules/reagents/reactions/instant/instant_vr.dm index 31e5fb7bc26..a1ea2aee0c5 100644 --- a/code/modules/reagents/reactions/instant/instant_vr.dm +++ b/code/modules/reagents/reactions/instant/instant_vr.dm @@ -208,7 +208,8 @@ result_amount = 1 /decl/chemical_reaction/instant/slime_food/on_reaction(var/datum/reagents/holder) - var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks // BORK BORK BORK + var/list/borks = subtypesof(/obj/item/weapon/reagent_containers/food/snacks) + playsound(holder.my_atom, 'sound/effects/phasein.ogg', 100, 1) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index fae3e0a75de..fba1372018b 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -15,7 +15,7 @@ volume = 60 w_class = ITEMSIZE_SMALL flags = OPENCONTAINER | NOCONDUCT - unacidable = 1 //glass doesn't dissolve in acid + unacidable = TRUE //glass doesn't dissolve in acid drop_sound = 'sound/items/drop/bottle.ogg' pickup_sound = 'sound/items/pickup/bottle.ogg' @@ -268,7 +268,7 @@ possible_transfer_amounts = list(10,20,30,60,120) volume = 120 flags = OPENCONTAINER - unacidable = 0 + unacidable = FALSE drop_sound = 'sound/items/drop/helm.ogg' pickup_sound = 'sound/items/pickup/helm.ogg' @@ -326,7 +326,7 @@ possible_transfer_amounts = list(10,20,30,60,120) volume = 120 flags = OPENCONTAINER - unacidable = 0 + unacidable = FALSE drop_sound = 'sound/items/drop/wooden.ogg' pickup_sound = 'sound/items/pickup/wooden.ogg' diff --git a/code/modules/reagents/reagent_containers/glass_vr.dm b/code/modules/reagents/reagent_containers/glass_vr.dm index 86601ea777a..e0d11cd5852 100644 --- a/code/modules/reagents/reagent_containers/glass_vr.dm +++ b/code/modules/reagents/reagent_containers/glass_vr.dm @@ -53,6 +53,11 @@ name = "vial (amorphorovir)" prefill = list("amorphorovir" = 1) +/obj/item/weapon/reagent_containers/glass/beaker/vial/supermatter + name = "vial (supermatter)" + desc = "A glass vial containing the extremely dangerous results of grinding a shard of supermatter down to a fine powder." + prefill = list("supermatter" = 5) + /obj/item/weapon/reagent_containers/glass/beaker/measuring_cup name = "measuring cup" desc = "A measuring cup." diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 5f05faeb701..62a469d3150 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -9,7 +9,7 @@ item_state = "hypo" icon_state = "hypo" amount_per_transfer_from_this = 5 - unacidable = 1 + unacidable = TRUE volume = 30 possible_transfer_amounts = null flags = OPENCONTAINER diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 237e9a4070a..34068bd4568 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -13,7 +13,7 @@ throw_speed = 2 throw_range = 10 amount_per_transfer_from_this = 10 - unacidable = 1 //plastic + unacidable = TRUE //plastic possible_transfer_amounts = list(5,10) //Set to null instead of list, if there is only one. var/spray_size = 3 var/list/spray_sizes = list(1,3) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index c8fc2ea379c..3ef20ceeda1 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -18,8 +18,8 @@ volume = 15 w_class = ITEMSIZE_TINY slot_flags = SLOT_EARS - sharp = 1 - unacidable = 1 //glass + sharp = TRUE + unacidable = TRUE //glass var/mode = SYRINGE_DRAW var/image/filling //holds a reference to the current filling overlay var/visible_name = "a syringe" diff --git a/code/modules/reagents/reagents/food_drinks.dm b/code/modules/reagents/reagents/food_drinks.dm index e7fb3176701..30ded7e14eb 100644 --- a/code/modules/reagents/reagents/food_drinks.dm +++ b/code/modules/reagents/reagents/food_drinks.dm @@ -648,7 +648,7 @@ /datum/reagent/frostoil/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) return - M.bodytemperature = max(M.bodytemperature - 10 * TEMPERATURE_DAMAGE_COEFFICIENT, 215) + M.bodytemperature = min(M.bodytemperature, max(M.bodytemperature - 10 * TEMPERATURE_DAMAGE_COEFFICIENT, 215)) if(prob(1)) M.emote("shiver") holder.remove_reagent("capsaicin", 5) diff --git a/code/modules/reagents/reagents/other.dm b/code/modules/reagents/reagents/other.dm index e9b702e54ea..b6775e1759f 100644 --- a/code/modules/reagents/reagents/other.dm +++ b/code/modules/reagents/reagents/other.dm @@ -306,6 +306,10 @@ /datum/reagent/supermatter name = "Supermatter" id = "supermatter" + color = "#fffd6b" + reagent_state = SOLID + affects_dead = TRUE + affects_robots = TRUE description = "The immense power of a supermatter crystal, in liquid form. You're not entirely sure how that's possible, but it's probably best handled with care." taste_description = "taffy" // 0. The supermatter is tasty, tasty taffy. diff --git a/code/modules/reagents/reagents/vore_vr.dm b/code/modules/reagents/reagents/vore_vr.dm index a86c755c3de..4da668883ee 100644 --- a/code/modules/reagents/reagents/vore_vr.dm +++ b/code/modules/reagents/reagents/vore_vr.dm @@ -76,8 +76,7 @@ M.make_dizzy(1) M.adjustHalLoss(2) - for(var/belly in M.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in M.vore_organs) for(var/atom/movable/A in B) if(isliving(A)) var/mob/living/P = A @@ -102,8 +101,7 @@ M.confused = max(M.confused, 20) M.hallucination += 15 - for(var/belly in M.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in M.vore_organs) if(B.digest_mode == DM_ABSORB) //Turn off absorbing on bellies B.digest_mode = DM_HOLD diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index d31b1f93785..8e54b057f88 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -12,7 +12,7 @@ desc = "A conveyor belt." plane = TURF_PLANE layer = ABOVE_TURF_LAYER - anchored = 1 + anchored = TRUE circuit = /obj/item/weapon/circuitboard/conveyor var/operating = OFF // 1 if running forward, -1 if backwards, 0 if off var/operable = 1 // true if can operate (no broken segments in this belt run) @@ -197,7 +197,7 @@ var/id = "" // must match conveyor IDs to control them var/list/conveyors // the list of converyors that are controlled by this switch - anchored = 1 + anchored = TRUE var/speed_active = FALSE // are the linked conveyors on SSfastprocess? diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 957d7662c32..2416f688266 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -7,8 +7,8 @@ desc = "A huge pipe segment used for constructing disposal systems." icon = 'icons/obj/pipes/disposal.dmi' icon_state = "conpipe-s" - anchored = 0 - density = 0 + anchored = FALSE + density = FALSE pressure_resistance = 5*ONE_ATMOSPHERE matter = list(MAT_STEEL = 1850) level = 2 @@ -37,7 +37,7 @@ switch(ptype) if(DISPOSAL_PIPE_BIN, DISPOSAL_PIPE_OUTLET, DISPOSAL_PIPE_CHUTE) - density = 1 + density = TRUE if(DISPOSAL_PIPE_SORTER, DISPOSAL_PIPE_SORTER_FLIPPED) subtype = newsubtype @@ -248,12 +248,12 @@ // wrench: (un)anchor if(I.is_wrench()) if(anchored) - anchored = 0 + anchored = FALSE if(ispipe) level = 2 - density = 0 + density = FALSE else - density = 1 + density = TRUE to_chat(user, "You detach the [nicetype] from the underfloor.") else if(ptype == DISPOSAL_PIPE_BIN || ptype == DISPOSAL_PIPE_OUTLET || ptype == DISPOSAL_PIPE_CHUTE) // Disposal or outlet @@ -274,12 +274,12 @@ to_chat(user, "There is already a [nicetype] at that location.") return - anchored = 1 + anchored = TRUE if(ispipe) level = 1 // We don't want disposal bins to disappear under the floors - density = 0 + density = FALSE else - density = 1 // We don't want disposal bins or outlets to go density 0 + density = TRUE // We don't want disposal bins or outlets to go density 0 to_chat(user, "You attach the [nicetype] to the underfloor.") playsound(src, I.usesound, 100, 1) update() diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index ae9a97c5d12..da3e3c64de5 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -14,8 +14,8 @@ desc = "A pneumatic waste disposal unit." icon = 'icons/obj/pipes/disposal.dmi' icon_state = "disposal" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/datum/gas_mixture/air_contents // internal reservoir var/mode = 1 // item mode 0=off 1=charging 2=charged var/flush = 0 // true if flush handle is pulled @@ -85,8 +85,8 @@ var/obj/structure/disposalconstruct/C = new (src.loc) src.transfer_fingerprints_to(C) C.ptype = 6 // 6 = disposal unit - C.anchored = 1 - C.density = 1 + C.anchored = TRUE + C.density = TRUE C.update() qdel(src) return @@ -741,8 +741,8 @@ icon = 'icons/obj/pipes/disposal.dmi' name = "disposal pipe" desc = "An underfloor disposal pipe." - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE level = 1 // underfloor only var/dpdir = 0 // bitmask of pipe directions @@ -1018,8 +1018,8 @@ C.subtype = src.subtype src.transfer_fingerprints_to(C) C.set_dir(dir) - C.density = 0 - C.anchored = 1 + C.density = FALSE + C.anchored = TRUE C.update() qdel(src) @@ -1513,8 +1513,8 @@ desc = "An outlet for the pneumatic disposal system." icon = 'icons/obj/pipes/disposal.dmi' icon_state = "outlet" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/active = 0 var/turf/target // this will be where the output objects are 'thrown' to. var/mode = 0 @@ -1576,8 +1576,8 @@ src.transfer_fingerprints_to(C) C.ptype = 7 // 7 = outlet C.update() - C.anchored = 1 - C.density = 1 + C.anchored = TRUE + C.density = TRUE qdel(src) return else diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 84e140ee4b9..a8e23e83e80 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit icon_state = "deliverycloset" var/obj/wrapped = null - density = 1 + density = TRUE var/sortTag = null flags = NOBLUDGEON mouse_drag_pointer = MOUSE_ACTIVE_POINTER @@ -374,7 +374,7 @@ /obj/machinery/disposal/deliveryChute name = "Delivery chute" desc = "A chute for big and small packages alike!" - density = 1 + density = TRUE icon_state = "intake" var/c_mode = 0 @@ -455,8 +455,8 @@ var/obj/structure/disposalconstruct/C = new (src.loc) C.ptype = 8 // 8 = Delivery chute C.update() - C.anchored = 1 - C.density = 1 + C.anchored = TRUE + C.density = TRUE qdel(src) return diff --git a/code/modules/research/designs/bag_of_holding.dm b/code/modules/research/designs/bag_of_holding.dm index 6f5a70adc6a..07fb6a8fff5 100644 --- a/code/modules/research/designs/bag_of_holding.dm +++ b/code/modules/research/designs/bag_of_holding.dm @@ -31,7 +31,7 @@ build_path = /obj/item/weapon/storage/backpack/holding/duffle sort_string = "QAAAB" -/datum/design/item/boh/bag_holding +/datum/design/item/boh/trashbag_holding name = "Trashbag of Holding" desc = "Considerably more utilitarian than the Bag of Holding, the Trashbag of Holding is a janitor's best friend." id = "trashbag_holding" @@ -48,4 +48,4 @@ materials = list("gold" = 3000, "diamond" = 2000, "uranium" = 250) build_path = /obj/item/weapon/storage/pouch/holding sort_string = "QAAAD" - \ No newline at end of file + diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 3614ba60bea..aa159f4a1a7 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -52,8 +52,8 @@ var/global/list/obj/machinery/message_server/message_servers = list() icon_state = "server" name = "Messaging Server" desc = "Facilitates both PDA messages and request console functions." - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 active_power_usage = 100 @@ -237,8 +237,8 @@ var/obj/machinery/blackbox_recorder/blackbox icon_state = "blackbox" name = "Blackbox Recorder" desc = "Records all radio communications, as well as various other information in case of the worst." - density = 1 - anchored = 1.0 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 10 active_power_usage = 100 diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index e317c665d0e..76bbe9d1677 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -5,8 +5,8 @@ /obj/machinery/r_n_d name = "R&D Device" icon = 'icons/obj/machines/research.dmi' - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE var/busy = 0 var/obj/machinery/computer/rdconsole/linked_console diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index e8ad090e10f..81ee392a8bb 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -52,12 +52,12 @@ GLOBAL_LIST_INIT(design_datums, list()) /datum/research/New() //Insert techs into possible_tech here. Known_tech automatically updated. if(!LAZYLEN(GLOB.design_datums)) - for(var/T in typesof(/datum/design) - /datum/design) + for(var/T in subtypesof(/datum/design)) GLOB.design_datums += new T possible_designs = GLOB.design_datums if(!LAZYLEN(known_tech)) - for(var/T in typesof(/datum/tech) - /datum/tech) + for(var/T in subtypesof(/datum/tech)) known_tech += new T RefreshResearch() @@ -120,8 +120,7 @@ GLOBAL_LIST_INIT(design_datums, list()) // A simple helper proc to find the name of a tech with a given ID. /proc/CallTechName(var/ID) - for(var/T in subtypesof(/datum/tech)) - var/datum/tech/check_tech = T + for(var/datum/tech/check_tech as anything in subtypesof(/datum/tech)) if(initial(check_tech.id) == ID) return initial(check_tech.name) diff --git a/code/modules/resleeving/infocore_records.dm b/code/modules/resleeving/infocore_records.dm index 5f3cb027c5f..0f16a2b3b70 100644 --- a/code/modules/resleeving/infocore_records.dm +++ b/code/modules/resleeving/infocore_records.dm @@ -182,8 +182,7 @@ organ_data[org] = I.robotic //Genetic modifiers - for(var/modifier in M.modifiers) - var/datum/modifier/mod = modifier + for(var/datum/modifier/mod as anything in M.modifiers) if(mod.flags & MODIFIER_GENETIC) genetic_modifiers.Add(mod.type) diff --git a/code/modules/resleeving/infomorph.dm b/code/modules/resleeving/infomorph.dm index 7ba0858334c..584ea22aaca 100644 --- a/code/modules/resleeving/infomorph.dm +++ b/code/modules/resleeving/infomorph.dm @@ -447,7 +447,7 @@ var/global/list/infomorph_software_by_key = list() var/global/list/default_infomorph_software = list() /hook/startup/proc/populate_infomorph_software_list() var/r = 1 // I would use ., but it'd sacrifice runtime detection - for(var/type in typesof(/datum/infomorph_software) - /datum/infomorph_software) + for(var/type in subtypesof(/datum/infomorph_software)) var/datum/infomorph_software/P = new type() if(infomorph_software_by_key[P.id]) var/datum/infomorph_software/O = infomorph_software_by_key[P.id] diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 2c97941309c..81f95423814 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -191,8 +191,8 @@ icon = 'icons/obj/machines/synthpod.dmi' icon_state = "pod_0" circuit = /obj/item/weapon/circuitboard/transhuman_synthprinter - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/list/stored_material = list(MAT_STEEL = 30000, MAT_GLASS = 30000) var/connected //What console it's done up with @@ -418,9 +418,9 @@ icon = 'icons/obj/machines/implantchair.dmi' icon_state = "implantchair" circuit = /obj/item/weapon/circuitboard/transhuman_resleever - density = 1 + density = TRUE opacity = 0 - anchored = 1 + anchored = TRUE var/blur_amount var/confuse_amount var/sickness_duration diff --git a/code/modules/rogueminer_vr/landmarks.dm b/code/modules/rogueminer_vr/landmarks.dm index cef03695eab..881c0aa8137 100644 --- a/code/modules/rogueminer_vr/landmarks.dm +++ b/code/modules/rogueminer_vr/landmarks.dm @@ -8,7 +8,7 @@ icon = 'icons/mob/screen1.dmi' icon_state = "x2" invisibility = 101 - anchored = 1 + anchored = TRUE var/datum/rogue/asteroid/myasteroid /obj/asteroid_spawner/New() @@ -21,7 +21,7 @@ icon = 'icons/mob/screen1.dmi' icon_state = "x" invisibility = 101 - anchored = 1 + anchored = TRUE var/mob/mymob /obj/rogue_mobspawner/New() diff --git a/code/modules/rogueminer_vr/zonemaster.dm b/code/modules/rogueminer_vr/zonemaster.dm index 2b1f3728f56..15d18878033 100644 --- a/code/modules/rogueminer_vr/zonemaster.dm +++ b/code/modules/rogueminer_vr/zonemaster.dm @@ -191,8 +191,7 @@ return var/farEnough = 1 - for(var/A in SSxenoarch.digsite_spawning_turfs) - var/turf/T = A + for(var/turf/T as anything in SSxenoarch.digsite_spawning_turfs) if(T in range(5, M)) farEnough = 0 break diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm index 8956e9e3c85..daeae949468 100644 --- a/code/modules/security levels/keycard authentication.dm +++ b/code/modules/security levels/keycard authentication.dm @@ -16,7 +16,7 @@ var/mob/event_confirmed_by //1 = select event //2 = authenticate - anchored = 1.0 + anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 6 @@ -55,7 +55,7 @@ A.pixel_y = pixel_y A.set_dir(dir) A.circuit = M - A.anchored = 1 + A.anchored = TRUE for (var/obj/C in src) C.forceMove(loc) A.state = 3 diff --git a/code/modules/security levels/security levels.dm b/code/modules/security levels/security levels.dm index 0c8baca51f2..e9876c7566c 100644 --- a/code/modules/security levels/security levels.dm +++ b/code/modules/security levels/security levels.dm @@ -76,8 +76,7 @@ if(FA.z in using_map.contact_levels) FA.on_alert_changed(newlevel) //VOREStation Add - for(var/hp in GLOB.holoposters) - var/obj/machinery/holoposter/HP = hp + for(var/obj/machinery/holoposter/HP as anything in GLOB.holoposters) HP.update_icon() //VOREStation Add End diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm index 53790689a9f..53c2f129eab 100644 --- a/code/modules/shieldgen/emergency_shield.dm +++ b/code/modules/shieldgen/emergency_shield.dm @@ -3,10 +3,10 @@ desc = "An energy shield used to contain hull breaches." icon = 'icons/effects/effects.dmi' icon_state = "shield-old" - density = 1 + density = TRUE opacity = 0 - anchored = 1 - unacidable = 1 + anchored = TRUE + unacidable = TRUE can_atmos_pass = ATMOS_PASS_NO var/const/max_health = 200 var/health = max_health //The shield can only take so much beating (prevents perma-prisons) @@ -35,7 +35,7 @@ /obj/machinery/shield/Destroy() opacity = 0 - density = 0 + density = FALSE update_nearby_tiles() ..() @@ -120,9 +120,9 @@ desc = "Used to seal minor hull breaches." icon = 'icons/obj/objects.dmi' icon_state = "shieldoff" - density = 1 + density = TRUE opacity = 0 - anchored = 0 + anchored = FALSE pressure_resistance = 2*ONE_ATMOSPHERE req_access = list(access_engine) var/const/max_health = 100 @@ -310,12 +310,12 @@ if(active) to_chat(user, "The [src] shuts off!") src.shields_down() - anchored = 0 + anchored = FALSE else if(istype(get_turf(src), /turf/space)) return //No wrenching these in space! playsound(src, W.usesound, 100, 1) to_chat(user, "You secure the [src] to the floor!") - anchored = 1 + anchored = TRUE else if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) diff --git a/code/modules/shieldgen/energy_field.dm b/code/modules/shieldgen/energy_field.dm index 7176baf23ba..04e97383490 100644 --- a/code/modules/shieldgen/energy_field.dm +++ b/code/modules/shieldgen/energy_field.dm @@ -14,10 +14,10 @@ icon = 'icons/obj/machines/shielding.dmi' icon_state = "shield" alpha = 100 - anchored = 1 + anchored = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER - density = 0 + density = FALSE can_atmos_pass = ATMOS_PASS_DENSITY var/obj/machinery/shield_gen/my_gen = null var/strength = 0 // in Renwicks @@ -101,13 +101,13 @@ ticks_recovering = min(ticks_recovering + 2, 10) if(strength < 1) // We broke - density = 0 + density = FALSE ticks_recovering = 10 strength = 0 else if(amount > 0) // Healing damage. if(strength >= 1) - density = 1 + density = TRUE if(density != old_density) update_icon() diff --git a/code/modules/shieldgen/energy_shield.dm b/code/modules/shieldgen/energy_shield.dm index 6c11eb62e22..0982b2d3b80 100644 --- a/code/modules/shieldgen/energy_shield.dm +++ b/code/modules/shieldgen/energy_shield.dm @@ -6,10 +6,10 @@ desc = "An impenetrable field of energy, capable of blocking anything as long as it's active." icon = 'icons/obj/machines/shielding_vr.dmi' icon_state = "shield" - anchored = 1 + anchored = TRUE plane = MOB_PLANE layer = ABOVE_MOB_LAYER - density = 1 + density = TRUE invisibility = 0 var/obj/machinery/power/shield_generator/gen = null // Owning generator var/disabled_for = 0 @@ -165,7 +165,7 @@ return if(!damtype) - crash_with("CANARY: shield.take_damage() callled without damtype.") + stack_trace("CANARY: shield.take_damage() callled without damtype.") if(!damage) return diff --git a/code/modules/shieldgen/sheldwallgen.dm b/code/modules/shieldgen/sheldwallgen.dm index b510c8b36b2..d03cd22c459 100644 --- a/code/modules/shieldgen/sheldwallgen.dm +++ b/code/modules/shieldgen/sheldwallgen.dm @@ -4,8 +4,8 @@ desc = "A shield generator." icon = 'icons/obj/stationobjs.dmi' icon_state = "Shield_Gen" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE req_access = list(access_engine_equip) var/active = 0 var/power = 0 @@ -166,14 +166,14 @@ state = 1 playsound(src, W.usesound, 75, 1) to_chat(user, "You secure the external reinforcing bolts to the floor.") - src.anchored = 1 + src.anchored = TRUE return else if(state == 1) state = 0 playsound(src, W.usesound, 75, 1) to_chat(user, "You undo the external reinforcing bolts.") - src.anchored = 0 + src.anchored = FALSE return if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) @@ -224,9 +224,9 @@ desc = "An energy shield." icon = 'icons/effects/effects.dmi' icon_state = "shieldwall" - anchored = 1 - density = 1 - unacidable = 1 + anchored = TRUE + density = TRUE + unacidable = TRUE light_range = 3 var/needs_power = 0 var/active = 1 diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm index 35cd71e1340..b1ba46b57a4 100644 --- a/code/modules/shieldgen/shield_capacitor.dm +++ b/code/modules/shieldgen/shield_capacitor.dm @@ -8,7 +8,7 @@ icon = 'icons/obj/machines/shielding.dmi' icon_state = "capacitor" var/active = 0 - density = 1 + density = TRUE var/stored_charge = 0 //not to be confused with power cell charge, this is in Joules var/last_stored_charge = 0 var/time_since_fail = 100 diff --git a/code/modules/shieldgen/shield_diffuser.dm b/code/modules/shieldgen/shield_diffuser.dm index f8d93284029..d5ec71f7368 100644 --- a/code/modules/shieldgen/shield_diffuser.dm +++ b/code/modules/shieldgen/shield_diffuser.dm @@ -8,8 +8,8 @@ use_power = USE_POWER_ACTIVE idle_power_usage = 25 // Previously 100. active_power_usage = 500 // Previously 2000 - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE level = 1 var/alarm = 0 var/enabled = 1 diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index af9d10d444f..bf40ac90529 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -7,7 +7,7 @@ var/field_radius = 3 var/max_field_radius = 150 var/list/field = list() - density = 1 + density = TRUE var/locked = 0 var/average_field_strength = 0 var/strengthen_rate = 0.2 diff --git a/code/modules/shieldgen/shield_generator.dm b/code/modules/shieldgen/shield_generator.dm index 2ab1d3ff5b3..48d712bf537 100644 --- a/code/modules/shieldgen/shield_generator.dm +++ b/code/modules/shieldgen/shield_generator.dm @@ -7,7 +7,7 @@ icon = 'icons/obj/machines/shielding_vr.dmi' icon_state = "generator0" circuit = /obj/item/weapon/circuitboard/shield_generator - density = 1 + density = TRUE var/datum/wires/shield_generator/wires = null var/list/field_segments = list() // List of all shield segments owned by this generator. var/list/damaged_segments = list() // List of shield segments that have failed and are currently regenerating. diff --git a/code/modules/shuttles/crashes.dm b/code/modules/shuttles/crashes.dm index 6f6c66e177a..a71ab5e07e2 100644 --- a/code/modules/shuttles/crashes.dm +++ b/code/modules/shuttles/crashes.dm @@ -52,8 +52,7 @@ return // Lucky! // Hide people - for(var/living in victims) - var/mob/living/L = living + for(var/mob/living/L as anything in victims) victims[L] = get_turf(L) L.Sleeping(rand(10,20)) L.Life() @@ -70,8 +69,7 @@ command_announcement.Announce("[crash_message]", "Shuttle Alert") // Put people back - for(var/living in victims) - var/mob/living/L = living + for(var/mob/living/L as anything in victims) L.loc = victims[L] L.adjustBruteLoss(5) L.adjustBruteLoss(10) diff --git a/code/modules/shuttles/landmarks.dm b/code/modules/shuttles/landmarks.dm index 6d1249a8adc..103aa69639d 100644 --- a/code/modules/shuttles/landmarks.dm +++ b/code/modules/shuttles/landmarks.dm @@ -3,9 +3,9 @@ name = "Nav Point" icon = 'icons/effects/effects.dmi' icon_state = "energynet" - anchored = 1 - unacidable = 1 - simulated = 0 + anchored = TRUE + unacidable = TRUE + simulated = FALSE invisibility = 101 flags = SLANDMARK_FLAG_AUTOSET // We generally want to use current area/turf as base. @@ -181,7 +181,7 @@ return active = 1 - anchored = 1 + anchored = TRUE var/obj/effect/shuttle_landmark/automatic/mark = new(T) mark.name = ("Beacon signal ([T.x],[T.y])") diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index a263267f5a8..53f8c1b7344 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -151,8 +151,7 @@ GLOBAL_LIST_BOILERPLATE(papers_dockingcode, /obj/item/weapon/paper/dockingcodes) /hook/roundstart/proc/populate_dockingcodes() - for(var/paper in global.papers_dockingcode) - var/obj/item/weapon/paper/dockingcodes/dcp = paper + for(var/obj/item/weapon/paper/dockingcodes/dcp as anything in global.papers_dockingcode) dcp.populate_info() return TRUE diff --git a/code/modules/shuttles/shuttles_web.dm b/code/modules/shuttles/shuttles_web.dm index f871f49bdd5..935b47ca722 100644 --- a/code/modules/shuttles/shuttles_web.dm +++ b/code/modules/shuttles/shuttles_web.dm @@ -112,8 +112,7 @@ web_master.process_autopath() /datum/shuttle/autodock/web_shuttle/proc/update_helmets() - for(var/helm in helmets) - var/obj/item/clothing/head/pilot/H = helm + for(var/obj/item/clothing/head/pilot/H as anything in helmets) if(QDELETED(H)) helmets -= H continue diff --git a/code/modules/shuttles/web_datums.dm b/code/modules/shuttles/web_datums.dm index 6e34d3750b0..d061ebe3975 100644 --- a/code/modules/shuttles/web_datums.dm +++ b/code/modules/shuttles/web_datums.dm @@ -193,7 +193,7 @@ /datum/shuttle_web_master/proc/build_destinations() // First, instantiate all the destination subtypes relevant to this datum. - var/list/destination_types = typesof(destination_class) - destination_class + var/list/destination_types = subtypesof(destination_class) for(var/new_type in destination_types) var/datum/shuttle_destination/D = new_type if(initial(D.skip_me)) diff --git a/code/modules/spells/aoe_turf/conjure/conjure.dm b/code/modules/spells/aoe_turf/conjure/conjure.dm index e9874ccc127..10c9948d522 100644 --- a/code/modules/spells/aoe_turf/conjure/conjure.dm +++ b/code/modules/spells/aoe_turf/conjure/conjure.dm @@ -53,8 +53,8 @@ How they spawn stuff is decided by behaviour vars, which are explained below summoned_object = new summoned_object_type(spawn_place) var/atom/movable/overlay/animation = new /atom/movable/overlay(spawn_place) animation.name = "conjure" - animation.density = 0 - animation.anchored = 1 + animation.density = FALSE + animation.anchored = TRUE animation.icon = 'icons/effects/effects.dmi' animation.plane = OBJ_PLANE animation.layer = ABOVE_JUNK_LAYER diff --git a/code/modules/spells/aoe_turf/conjure/forcewall.dm b/code/modules/spells/aoe_turf/conjure/forcewall.dm index 6d6bfdc3d8c..92643b6e6d4 100644 --- a/code/modules/spells/aoe_turf/conjure/forcewall.dm +++ b/code/modules/spells/aoe_turf/conjure/forcewall.dm @@ -29,10 +29,10 @@ name = "FORCEWALL" icon = 'icons/effects/effects.dmi' icon_state = "m_shield" - anchored = 1.0 + anchored = TRUE opacity = 0 - density = 1 - unacidable = 1 + density = TRUE + unacidable = TRUE invisibility = 101 /obj/effect/forcefield/bullet_act(var/obj/item/projectile/Proj, var/def_zone) diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm index 5ab06434507..6db671d1bb9 100644 --- a/code/modules/spells/spell_code.dm +++ b/code/modules/spells/spell_code.dm @@ -146,8 +146,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now var/obj/effect/overlay/spell = new /obj/effect/overlay(location) spell.icon = overlay_icon spell.icon_state = overlay_icon_state - spell.anchored = 1 - spell.density = 0 + spell.anchored = TRUE + spell.density = FALSE spawn(overlay_lifespan) qdel(spell) return valid_targets diff --git a/code/modules/spells/spell_projectile.dm b/code/modules/spells/spell_projectile.dm index 01e7d163fa4..924553f16fc 100644 --- a/code/modules/spells/spell_projectile.dm +++ b/code/modules/spells/spell_projectile.dm @@ -30,7 +30,7 @@ trails += trail trail.icon = proj_trail_icon trail.icon_state = proj_trail_icon_state - trail.density = 0 + trail.density = FALSE spawn(proj_trail_lifespan) trails -= trail qdel(trail) diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 0c855626fc9..eea8cc1a9ab 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -407,7 +407,7 @@ if(istype(user, /mob/living/carbon/human)) to_chat(user, "HOR-SIE HAS RISEN") var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead - magichead.canremove = 0 //curses! + magichead.canremove = FALSE //curses! magichead.flags_inv = null //so you can still see their face magichead.voicechange = 1 //NEEEEIIGHH user.drop_from_inventory(user.wear_mask) diff --git a/code/modules/spells/targeted/equip/horsemask.dm b/code/modules/spells/targeted/equip/horsemask.dm index c52f75acee7..462cca13ef3 100644 --- a/code/modules/spells/targeted/equip/horsemask.dm +++ b/code/modules/spells/targeted/equip/horsemask.dm @@ -30,8 +30,8 @@ /spell/targeted/equip_item/horsemask/summon_item(var/new_type) var/obj/item/new_item = new new_type - new_item.canremove = 0 //curses! - new_item.unacidable = 1 + new_item.canremove = FALSE //curses! + new_item.unacidable = TRUE if(istype(new_item, /obj/item/clothing/mask/horsehead)) var/obj/item/clothing/mask/horsehead/magichead = new_item magichead.flags_inv = null //so you can still see their face diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm index e31cec5b4c0..d300f6a9129 100644 --- a/code/modules/spells/targeted/ethereal_jaunt.dm +++ b/code/modules/spells/targeted/ethereal_jaunt.dm @@ -23,8 +23,8 @@ var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc ) var/atom/movable/overlay/animation = new /atom/movable/overlay( mobloc ) animation.name = "water" - animation.density = 0 - animation.anchored = 1 + animation.density = FALSE + animation.anchored = TRUE animation.icon = 'icons/mob/mob.dmi' animation.plane = MOB_PLANE animation.layer = ABOVE_MOB_LAYER @@ -74,8 +74,8 @@ icon_state = "nothing" var/canmove = 1 var/reappearing = 0 - density = 0 - anchored = 1 + density = FALSE + anchored = TRUE var/turf/last_valid_turf /obj/effect/dummy/spell_jaunt/New(var/location) diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm index b670497fc94..fc10ecfcca4 100644 --- a/code/modules/surgery/face.dm +++ b/code/modules/surgery/face.dm @@ -116,7 +116,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user]'s hand slips, tearing skin on [target]'s face with \the [tool]!", \ "Your hand slips, tearing skin on [target]'s face with \the [tool]!") - target.apply_damage(10, BRUTE, affected, sharp=1, sharp=1) + target.apply_damage(10, BRUTE, affected, sharp = TRUE, sharp = TRUE) /////////////////////////////////////////////////////////////// // Face Cauterizing Surgery diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index a5ccd15050f..d26ea6c0c18 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -257,7 +257,7 @@ msg = "[user]'s hand slips, damaging several organs in [target]'s lower abdomen with \the [tool]!" self_msg = "Your hand slips, damaging several organs in [target]'s lower abdomen with \the [tool]!" user.visible_message(msg, self_msg) - target.apply_damage(12, BRUTE, affected, sharp=1) + target.apply_damage(12, BRUTE, affected, sharp = TRUE) /////////////////////////////////////////////////////////////// // Cauterize Surgery diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm index ecbf1917418..8a25be5b510 100644 --- a/code/modules/surgery/limb_reattach.dm +++ b/code/modules/surgery/limb_reattach.dm @@ -74,7 +74,7 @@ var/obj/item/organ/external/E = tool user.visible_message(" [user]'s hand slips, damaging [target]'s [E.amputation_point]!", \ " Your hand slips, damaging [target]'s [E.amputation_point]!") - target.apply_damage(10, BRUTE, null, sharp=1) + target.apply_damage(10, BRUTE, null, sharp = TRUE) /////////////////////////////////////////////////////////////// // Limb Connection Surgery @@ -113,7 +113,7 @@ var/obj/item/organ/external/E = tool user.visible_message(" [user]'s hand slips, damaging [target]'s [E.amputation_point]!", \ " Your hand slips, damaging [target]'s [E.amputation_point]!") - target.apply_damage(10, BRUTE, null, sharp=1) + target.apply_damage(10, BRUTE, null, sharp = TRUE) /////////////////////////////////////////////////////////////// // Robolimb Attachment Surgery @@ -164,4 +164,4 @@ /datum/surgery_step/limb/mechanize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message(" [user]'s hand slips, damaging [target]'s flesh!", \ " Your hand slips, damaging [target]'s flesh!") - target.apply_damage(10, BRUTE, null, sharp=1) + target.apply_damage(10, BRUTE, null, sharp = TRUE) diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index effdecd863a..e5f49cc922f 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -14,48 +14,8 @@ return 0 return affected && affected.open == (affected.encased ? 3 : 2) +//Removed unused Embryo Surgery, derelict and broken. -////////////////////////////////////////////////////////////////// -// ALIEN EMBRYO SURGERY // -////////////////////////////////////////////////////////////////// // Here for future reference incase it's needed. See: Alien_embryo.dm and Alien_facehugger.dm -/* -/datum/surgery_step/internal/remove_embryo - allowed_tools = list( - /obj/item/weapon/surgical/hemostat = 100, \ - /obj/item/weapon/material/kitchen/utensil/fork = 20 - ) - - allowed_procs = list(IS_WIRECUTTER = 75) - blood_level = 2 - - min_duration = 80 - max_duration = 100 - - can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/embryo = 0 - for(var/obj/item/alien_embryo/A in target) - embryo = 1 - break - - if (!hasorgans(target)) - return - var/obj/item/organ/external/affected = target.get_organ(target_zone) - return ..() && affected && embryo && affected.open == 3 && target_zone == BP_TORSO - - begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/msg = "[user] starts to pull something out from [target]'s ribcage with \the [tool]." - var/self_msg = "You start to pull something out from [target]'s ribcage with \the [tool]." - user.visible_message(msg, self_msg) - target.custom_pain("Something hurts horribly in your chest!",1) - ..() - - end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] rips the larva out of [target]'s ribcage!", - "You rip the larva out of [target]'s ribcage!") - - for(var/obj/item/alien_embryo/A in target) - A.loc = A.loc.loc -*/ ////////////////////////////////////////////////////////////////// // CHEST INTERNAL ORGAN SURGERY // ////////////////////////////////////////////////////////////////// diff --git a/code/modules/tables/bench.dm b/code/modules/tables/bench.dm index 88c2b61526c..f1ae3d141b2 100644 --- a/code/modules/tables/bench.dm +++ b/code/modules/tables/bench.dm @@ -5,7 +5,7 @@ desc = "It's a bench, for putting things on. Or standing on, if you really want to." can_reinforce = 0 flipped = -1 - density = 0 + density = FALSE /obj/structure/table/bench/update_desc() if(material) diff --git a/code/modules/tables/flipping.dm b/code/modules/tables/flipping.dm index 18bcc4fe583..cc6be3352b8 100644 --- a/code/modules/tables/flipping.dm +++ b/code/modules/tables/flipping.dm @@ -86,7 +86,7 @@ if(dir != NORTH) plane = MOB_PLANE layer = ABOVE_MOB_LAYER - climbable = 0 //flipping tables allows them to be used as makeshift barriers + climbable = FALSE //flipping tables allows them to be used as makeshift barriers flipped = 1 flags |= ON_BORDER for(var/D in list(turn(direction, 90), turn(direction, -90))) diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index 7111cd52d77..55d01276612 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -5,9 +5,9 @@ var/list/table_icon_cache = list() icon = 'icons/obj/tables.dmi' icon_state = "frame" desc = "It's a table, for putting things on. Or standing on, if you really want to." - density = 1 - anchored = 1 - climbable = 1 + density = TRUE + anchored = TRUE + climbable = TRUE layer = TABLE_LAYER throwpass = 1 surgery_odds = 50 //VOREStation Edit @@ -359,24 +359,27 @@ var/list/table_icon_cache = list() // Base frame shape. Mostly done for glass/diamond tables, where this is visible. for(var/i = 1 to 4) - var/image/I = get_table_image(icon, connections[i], 1<<(i-1)) + var/image/I = get_table_image(icon, connections?[i] || 0, 1<<(i-1)) add_overlay(I) // Standard table image if(material) for(var/i = 1 to 4) - var/image/I = get_table_image(icon, "[material.icon_base]_[connections[i]]", 1<<(i-1), material.icon_colour, 255 * material.opacity) + var/connect = connections?[i] || 0 + var/image/I = get_table_image(icon, "[material.icon_base]_[connect]", 1<<(i-1), material.icon_colour, 255 * material.opacity) add_overlay(I) // Reinforcements if(reinforced) for(var/i = 1 to 4) - var/image/I = get_table_image(icon, "[reinforced.icon_reinf]_[connections[i]]", 1<<(i-1), reinforced.icon_colour, 255 * reinforced.opacity) + var/connect = connections?[i] || 0 + var/image/I = get_table_image(icon, "[reinforced.icon_reinf]_[connect]", 1<<(i-1), reinforced.icon_colour, 255 * reinforced.opacity) add_overlay(I) if(carpeted) for(var/i = 1 to 4) - var/image/I = get_table_image(icon, "carpet_[connections[i]]", 1<<(i-1)) + var/connect = connections?[i] || 0 + var/image/I = get_table_image(icon, "carpet_[connect]", 1<<(i-1)) add_overlay(I) else cut_overlays() diff --git a/code/modules/telesci/quantum_pad.dm b/code/modules/telesci/quantum_pad.dm index 0588f802b7b..6f1381a1915 100644 --- a/code/modules/telesci/quantum_pad.dm +++ b/code/modules/telesci/quantum_pad.dm @@ -2,7 +2,7 @@ name = "quantum pad" desc = "A bluespace quantum-linked telepad used for teleporting objects to other quantum pads." icon = 'icons/obj/telescience.dmi' - icon_state = "qpad-idle" + icon_state = "qpad" anchored = TRUE use_power = USE_POWER_IDLE idle_power_usage = 200 @@ -26,6 +26,7 @@ connect_to_network() if(map_pad_id) mapped_quantum_pads[map_pad_id] = src + update_icon() /obj/machinery/power/quantumpad/Destroy() mapped_quantum_pads -= map_pad_id @@ -53,14 +54,15 @@ if(istype(I, /obj/item/device/multitool)) if(panel_open) var/obj/item/device/multitool/M = I - M.buffer = src + M.connectable = src to_chat(user, "You save the data in [I]'s buffer.") return 1 else var/obj/item/device/multitool/M = I - if(istype(M.buffer, /obj/machinery/power/quantumpad)) - linked_pad = M.buffer + if(istype(M.connectable, /obj/machinery/power/quantumpad)) + linked_pad = M.connectable to_chat(user, "You link [src] to the one in [I]'s buffer.") + update_icon() return 1 if(default_part_replacement(user, I)) @@ -73,12 +75,28 @@ /obj/machinery/power/quantumpad/update_icon() . = ..() - - if(inoperable() || panel_open) - icon_state = "pad-idle-o" + + cut_overlays() + if(panel_open) + add_overlay("qpad-panel") + + if(inoperable() || panel_open || !powernet) + icon_state = "[initial(icon_state)]-o" + else if (!linked_pad) + icon_state = "[initial(icon_state)]-b" else icon_state = initial(icon_state) +// Panel flips retry power cable connections so you don't have to decon the whole thing +/obj/machinery/power/quantumpad/default_deconstruction_screwdriver(var/mob/user, var/obj/item/S) + if((. = ..())) + var/original_powernet = powernet + if(powernet) + disconnect_from_network() + connect_to_network() + if(powernet != original_powernet) + update_icon() + /obj/machinery/power/quantumpad/attack_hand(mob/user) . = ..() if(.) @@ -133,57 +151,114 @@ ghost.forceMove(get_turf(linked_pad)) /obj/machinery/power/quantumpad/proc/doteleport(mob/user) + update_icon() if(!linked_pad) return playsound(src, 'sound/weapons/flash.ogg', 25, 1) teleporting = 1 spawn(teleport_speed) + // We gone if(!src || QDELETED(src)) teleporting = 0 return + // Broken or whatever if(inoperable()) to_chat(user, "[src] is nonfunctional!") teleporting = 0 return + // Linked pad or not, we can always re-scatter people + if(!can_traverse_gateway()) + teleporting = 0 + last_teleport = world.time + gateway_scatter(user) + return + // Nothing to teleport to if(!linked_pad || QDELETED(linked_pad) || linked_pad.inoperable()) to_chat(user, "Linked pad is not responding to ping. Teleport aborted.") teleporting = 0 return + // Insufficient power + if(!use_teleport_power()) + to_chat(user, "Power is not sufficient to complete a teleport. Teleport aborted.") + teleporting = 0 + return teleporting = 0 last_teleport = world.time - // use a lot of power - var/power_to_use = 10000 / power_efficiency - if(draw_power(power_to_use) != power_to_use) - to_chat(user, "Power is not sufficient to complete a teleport. Teleport aborted.") - return sparks() linked_pad.sparks() - flick("qpad-beam", src) + flick("qpad-beam-out", src) playsound(src, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) - flick("qpad-beam", linked_pad) + flick("qpad-beam-in", linked_pad) playsound(linked_pad, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) - for(var/atom/movable/ROI in get_turf(src)) - // if is anchored, don't let through - if(ROI.anchored) - if(isliving(ROI)) - var/mob/living/L = ROI - if(L.buckled) - // TP people on office chairs - if(L.buckled.anchored) - continue - else - continue - else if(!isobserver(ROI)) - continue - do_teleport(ROI, get_turf(linked_pad), local = FALSE) + + transport_objects(get_turf(linked_pad)) /obj/machinery/power/quantumpad/proc/initMappedLink() . = FALSE var/obj/machinery/power/quantumpad/link = mapped_quantum_pads[map_pad_link_id] if(link) linked_pad = link + update_icon() . = TRUE + +/obj/machinery/power/quantumpad/proc/use_teleport_power() + var/area/A = get_area(src) + // Well, I guess you can do it! + if(!A?.requires_power) + return TRUE + + // Otherwise we'll need a powernet + var/power_to_use = 10000 / power_efficiency + if(draw_power(power_to_use) != power_to_use) + return FALSE + return TRUE + +/obj/machinery/power/quantumpad/proc/transport_objects(turf/destination) + for(var/atom/movable/ROI in get_turf(src)) + // if is anchored, don't let through + if(ROI.anchored) + if(isliving(ROI)) + var/mob/living/L = ROI + if(L.buckled) + // TP people on office chairs + if(L.buckled.anchored) + continue + else + continue + else if(!isobserver(ROI)) + continue + do_teleport(ROI, destination, local = FALSE) + +/obj/machinery/power/quantumpad/proc/can_traverse_gateway() + // Well, if there's no gateway map we're definitely not on it + if(!GLOB.gateway_away) + return TRUE + + // Traverse! + if(GLOB.gateway_away.calibrated) + return TRUE + + var/list/gateway_zs = GetConnectedZlevels(GLOB.gateway_away.z) + if(z in gateway_zs) + return FALSE // It's not calibrated and we're in a connected z + + return TRUE + +/obj/machinery/power/quantumpad/proc/gateway_scatter(mob/user) + var/obj/effect/landmark/dest = pick(awaydestinations) + if(!dest) + to_chat(user, "Nothing happens... maybe there's no signal to the remote pad?") + return + // Insufficient power + if(!use_teleport_power()) + to_chat(user, "Power is not sufficient to complete a teleport. Teleport aborted.") + return + + sparks() + to_chat(user, "You feel yourself pulled in different directions, before ending up not far from where you started.") + flick("qpad-beam-out", src) + transport_objects(get_turf(dest)) diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index a5ee8cbd932..86f2279a893 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -4,7 +4,7 @@ desc = "A bluespace telepad used for teleporting objects to and from a location." icon = 'icons/obj/telescience.dmi' icon_state = "pad-idle" - anchored = 1 + anchored = TRUE use_power = USE_POWER_IDLE circuit = /obj/item/weapon/circuitboard/telesci_pad idle_power_usage = 200 diff --git a/code/modules/tgs/v3210/commands.dm b/code/modules/tgs/v3210/commands.dm index 50466319813..fe33018c131 100644 --- a/code/modules/tgs/v3210/commands.dm +++ b/code/modules/tgs/v3210/commands.dm @@ -8,7 +8,7 @@ var/list/command_name_types = list() var/list/warned_command_names = warnings_only ? list() : null var/warned_about_the_dangers_of_robutussin = !warnings_only - for(var/I in typesof(/datum/tgs_chat_command) - /datum/tgs_chat_command) + for(var/I in subtypesof(/datum/tgs_chat_command)) if(!warned_about_the_dangers_of_robutussin) TGS_ERROR_LOG("Custom chat commands in [ApiVersion()] lacks the /datum/tgs_chat_user/sender.channel field!") warned_about_the_dangers_of_robutussin = TRUE @@ -32,8 +32,7 @@ /datum/tgs_api/v3210/proc/HandleServiceCustomCommand(command, sender, params) if(!cached_custom_tgs_chat_commands) cached_custom_tgs_chat_commands = list() - for(var/I in typesof(/datum/tgs_chat_command) - /datum/tgs_chat_command) - var/datum/tgs_chat_command/stc = I + for(var/datum/tgs_chat_command/stc as anything in subtypesof(/datum/tgs_chat_command)) cached_custom_tgs_chat_commands[lowertext(initial(stc.name))] = stc var/command_type = cached_custom_tgs_chat_commands[command] diff --git a/code/modules/tgs/v4/api.dm b/code/modules/tgs/v4/api.dm index ba18aab6888..c0e71cf3519 100644 --- a/code/modules/tgs/v4/api.dm +++ b/code/modules/tgs/v4/api.dm @@ -263,8 +263,7 @@ var/list/ids if(length(channels)) ids = list() - for(var/I in channels) - var/datum/tgs_chat_channel/channel = I + for(var/datum/tgs_chat_channel/channel as anything in channels) ids += channel.id message = list("message" = message, "channelIds" = ids) if(intercepted_message_queue) @@ -274,8 +273,7 @@ /datum/tgs_api/v4/ChatTargetedBroadcast(message, admin_only) var/list/channels = list() - for(var/I in ChatChannelInfo()) - var/datum/tgs_chat_channel/channel = I + for(var/datum/tgs_chat_channel/channel as anything in ChatChannelInfo()) if (!channel.is_private_channel && ((channel.is_admin_channel && admin_only) || (!channel.is_admin_channel && !admin_only))) channels += channel.id message = list("message" = message, "channelIds" = channels) diff --git a/code/modules/tgs/v4/commands.dm b/code/modules/tgs/v4/commands.dm index 1d9951bc041..8d283b4cd59 100644 --- a/code/modules/tgs/v4/commands.dm +++ b/code/modules/tgs/v4/commands.dm @@ -1,7 +1,7 @@ /datum/tgs_api/v4/proc/ListCustomCommands() var/results = list() custom_commands = list() - for(var/I in typesof(/datum/tgs_chat_command) - /datum/tgs_chat_command) + for(var/I in subtypesof(/datum/tgs_chat_command)) var/datum/tgs_chat_command/stc = new I var/command_name = stc.name if(!command_name || findtext(command_name, " ") || findtext(command_name, "'") || findtext(command_name, "\"")) diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index d0d6f2d0811..b3d2622d540 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -291,8 +291,7 @@ channels = ChatChannelInfo() var/list/ids = list() - for(var/I in channels) - var/datum/tgs_chat_channel/channel = I + for(var/datum/tgs_chat_channel/channel as anything in channels) ids += channel.id message = list(DMAPI5_CHAT_MESSAGE_TEXT = message, DMAPI5_CHAT_MESSAGE_CHANNEL_IDS = ids) @@ -303,8 +302,7 @@ /datum/tgs_api/v5/ChatTargetedBroadcast(message, admin_only) var/list/channels = list() - for(var/I in ChatChannelInfo()) - var/datum/tgs_chat_channel/channel = I + for(var/datum/tgs_chat_channel/channel as anything in ChatChannelInfo()) if (!channel.is_private_channel && ((channel.is_admin_channel && admin_only) || (!channel.is_admin_channel && !admin_only))) channels += channel.id message = list(DMAPI5_CHAT_MESSAGE_TEXT = message, DMAPI5_CHAT_MESSAGE_CHANNEL_IDS = channels) diff --git a/code/modules/tgs/v5/commands.dm b/code/modules/tgs/v5/commands.dm index 2775157656a..70db4333dde 100644 --- a/code/modules/tgs/v5/commands.dm +++ b/code/modules/tgs/v5/commands.dm @@ -1,7 +1,7 @@ /datum/tgs_api/v5/proc/ListCustomCommands() var/results = list() custom_commands = list() - for(var/I in typesof(/datum/tgs_chat_command) - /datum/tgs_chat_command) + for(var/I in subtypesof(/datum/tgs_chat_command)) var/datum/tgs_chat_command/stc = new I var/command_name = stc.name if(!command_name || findtext(command_name, " ") || findtext(command_name, "'") || findtext(command_name, "\"")) diff --git a/code/modules/tgui/external.dm b/code/modules/tgui/external.dm index 9abd0adce72..ce30eb2f453 100644 --- a/code/modules/tgui/external.dm +++ b/code/modules/tgui/external.dm @@ -224,7 +224,9 @@ if(window_id) window = usr.client.tgui_windows[window_id] if(!window) + // #ifdef TGUI_DEBUGGING // Always going to log these log_tgui(usr, "Error: Couldn't find the window datum, force closing.") + // #endif SStgui.force_close_window(usr, window_id) return FALSE // Decode payload diff --git a/code/modules/tgui/modules/admin_shuttle_controller.dm b/code/modules/tgui/modules/admin_shuttle_controller.dm index a40dec8fca4..d03e78b32d5 100644 --- a/code/modules/tgui/modules/admin_shuttle_controller.dm +++ b/code/modules/tgui/modules/admin_shuttle_controller.dm @@ -19,8 +19,7 @@ data["shuttles"] = shuttles var/list/overmap_ships = list() - for(var/ship in SSshuttles.ships) - var/obj/effect/overmap/visitable/ship/S = ship + for(var/obj/effect/overmap/visitable/ship/S as anything in SSshuttles.ships) overmap_ships.Add(list(list( "name" = S.name, "ref" = REF(S), diff --git a/code/modules/tgui/modules/agentcard.dm b/code/modules/tgui/modules/agentcard.dm index d61f8e33941..30460214369 100644 --- a/code/modules/tgui/modules/agentcard.dm +++ b/code/modules/tgui/modules/agentcard.dm @@ -58,6 +58,8 @@ if(choice && tgui_status(usr, state) == STATUS_INTERACTIVE) S.icon_state = choice.icon_state S.item_state = choice.item_state + S.sprite_stack = choice.sprite_stack + S.update_icon() to_chat(usr, "Appearance changed to [choice].") . = TRUE if("assignment") @@ -127,9 +129,13 @@ S.electronic_warfare = initial(S.electronic_warfare) S.fingerprint_hash = initial(S.fingerprint_hash) S.icon_state = initial(S.icon_state) + S.item_state = initial(S.item_state) + S.sprite_stack = S.initial_sprite_stack + S.front = null S.name = initial(S.name) S.registered_name = initial(S.registered_name) S.unset_registered_user() S.sex = initial(S.sex) + S.update_icon() to_chat(usr, "All information has been deleted from \the [src].") . = TRUE diff --git a/code/modules/tgui/modules/appearance_changer.dm b/code/modules/tgui/modules/appearance_changer.dm index 3b84e95d534..fe7bb954408 100644 --- a/code/modules/tgui/modules/appearance_changer.dm +++ b/code/modules/tgui/modules/appearance_changer.dm @@ -45,8 +45,7 @@ cam_plane_masters = get_tgui_plane_masters() - for(var/plane in cam_plane_masters) - var/obj/screen/instance = plane + for(var/obj/screen/instance as anything in cam_plane_masters) instance.assigned_map = map_name instance.del_on_map_removal = FALSE instance.screen_loc = "[map_name]:CENTER" diff --git a/code/modules/tgui/modules/camera.dm b/code/modules/tgui/modules/camera.dm index 86eb923c1c5..fa67030d557 100644 --- a/code/modules/tgui/modules/camera.dm +++ b/code/modules/tgui/modules/camera.dm @@ -37,8 +37,7 @@ cam_plane_masters = get_tgui_plane_masters() - for(var/plane in cam_plane_masters) - var/obj/screen/instance = plane + for(var/obj/screen/instance as anything in cam_plane_masters) instance.assigned_map = map_name instance.del_on_map_removal = FALSE instance.screen_loc = "[map_name]:CENTER" @@ -296,3 +295,7 @@ /datum/tgui_module/camera/ntos/hacked/New(host) . = ..(host, using_map.station_networks.Copy()) + +/datum/tgui_module/camera/bigscreen/tgui_state(mob/user) + return GLOB.tgui_physical_state_bigscreen + \ No newline at end of file diff --git a/code/modules/tgui/modules/ntos-only/cardmod.dm b/code/modules/tgui/modules/ntos-only/cardmod.dm index fc77417996c..8a8ace688f1 100644 --- a/code/modules/tgui/modules/ntos-only/cardmod.dm +++ b/code/modules/tgui/modules/ntos-only/cardmod.dm @@ -49,8 +49,7 @@ data["target_name"] = id_card ? id_card.name : "-----" var/list/departments = list() - for(var/D in SSjob.get_all_department_datums()) - var/datum/department/dept = D + for(var/datum/department/dept as anything in SSjob.get_all_department_datums()) if(!dept.assignable) // No AI ID cards for you. continue if(dept.centcom_only && !is_centcom) diff --git a/code/modules/tgui/modules/ntos-only/uav.dm b/code/modules/tgui/modules/ntos-only/uav.dm index f27a08eda95..54dcda16754 100644 --- a/code/modules/tgui/modules/ntos-only/uav.dm +++ b/code/modules/tgui/modules/ntos-only/uav.dm @@ -13,11 +13,11 @@ if(current_uav) if(QDELETED(current_uav)) - set_current(null) + clear_current() else if(signal_test_counter-- <= 0) signal_strength = get_signal_to(current_uav) if(!signal_strength) - set_current(null) + clear_current() else // Don't reset counter until we find a UAV that's actually in range we can stay connected to signal_test_counter = 20 @@ -30,8 +30,7 @@ var/list/paired_map = list() var/obj/item/modular_computer/mc_host = tgui_host() if(istype(mc_host)) - for(var/puav in mc_host.paired_uavs) - var/weakref/wr = puav + for(var/weakref/wr as anything in mc_host.paired_uavs) var/obj/item/device/uav/U = wr.resolve() paired_map.Add(list(list("name" = "[U ? U.nickname : "!!Missing!!"]", "uavref" = "\ref[U]"))) @@ -95,16 +94,33 @@ signal_strength = 0 current_uav = U + RegisterSignal(U, COMSIG_MOVABLE_Z_CHANGED, .proc/current_uav_changed_z) if(LAZYLEN(viewers)) for(var/weakref/W in viewers) var/M = W.resolve() if(M) - if(current_uav) - to_chat(M, "You're disconnected from the UAV's camera!") - unlook(M) - else - look(M) + look(M) + +/datum/tgui_module/uav/proc/clear_current() + if(!current_uav) + return + + UnregisterSignal(current_uav, COMSIG_MOVABLE_Z_CHANGED) + signal_strength = 0 + current_uav = null + + if(LAZYLEN(viewers)) + for(var/weakref/W in viewers) + var/M = W.resolve() + if(M) + to_chat(M, "You're disconnected from the UAV's camera!") + unlook(M) + +/datum/tgui_module/uav/proc/current_uav_changed_z(old_z, new_z) + signal_strength = get_signal_to(current_uav) + if(!signal_strength) + clear_current() //// //// Finding signal strength between us and the UAV @@ -130,8 +146,8 @@ var/list/zlevels_in_range = using_map.get_map_levels(their_z, FALSE) var/list/zlevels_in_long_range = using_map.get_map_levels(their_z, TRUE, om_range = DEFAULT_OVERMAP_RANGE) - zlevels_in_range var/their_signal = 0 - for(var/relay in ntnet_global.relays) - var/obj/machinery/ntnet_relay/R = relay + // Measure z-distance between the AM passed in and the nearest relay + for(var/obj/machinery/ntnet_relay/R as anything in ntnet_global.relays) if(!R.operable()) continue if(R.z == their_z) @@ -144,7 +160,8 @@ their_signal = 1 break - if(!their_signal) //They have no NTnet at all + // AM passed in has no NTnet at all + if(!their_signal) if(get_z(host) == their_z && (get_dist(host, AM) < adhoc_range)) return 1 //We can connect (with weak signal) in same z without ntnet, within 30 turfs else diff --git a/code/modules/tgui/states.dm b/code/modules/tgui/states.dm index 01b8ae1a843..5a66efc090d 100644 --- a/code/modules/tgui/states.dm +++ b/code/modules/tgui/states.dm @@ -85,7 +85,7 @@ * * Check the distance for a living mob. * Really only used for checks outside the context of a mob. - * Otherwise, use shared_living_ui_distance(). + * Otherwise, use shared_living_tgui_distance(). * * required src_object The object which owns the UI. * required user mob The mob who opened/is using the UI. @@ -119,10 +119,26 @@ return STATUS_DISABLED return STATUS_CLOSE // Otherwise, we got nothing. -/mob/living/carbon/human/shared_living_tgui_distance(atom/movable/src_object, viewcheck = TRUE) - if((TK in mutations) && (get_dist(src, src_object) <= 2)) +/** + * public + * + * Distance versus interaction check, with max'd update range. + * + * required src_object atom/movable The object which owns the UI. + * + * return UI_state The state of the UI. + */ +/mob/living/proc/shared_living_tgui_distance_bigscreen(atom/movable/src_object, viewcheck = TRUE) + // If the object is obscured, close it. + if(viewcheck && !(src_object in view(src))) + return STATUS_CLOSE + + var/dist = get_dist(src_object, src) + if(dist <= 1) // Open and interact if 1-0 tiles away. return STATUS_INTERACTIVE - return ..() + else if(dist <= world.view) + return STATUS_UPDATE + return STATUS_CLOSE // Otherwise, we got nothing. // Topic Extensions for old UIs /datum/proc/CanUseTopic(var/mob/user, var/datum/tgui_state/state) diff --git a/code/modules/tgui/states/physical.dm b/code/modules/tgui/states/physical.dm index 30c67906ae2..9712090b5da 100644 --- a/code/modules/tgui/states/physical.dm +++ b/code/modules/tgui/states/physical.dm @@ -47,3 +47,29 @@ GLOBAL_DATUM_INIT(tgui_physical_obscured_state, /datum/tgui_state/physical_obscu /mob/living/silicon/ai/physical_obscured_can_use_topic(src_object) return STATUS_UPDATE // AIs are not physical. + + /** + * tgui state: physical_state_bigscreen + * + * Short-circuits the default state to only check physical distance, + * but allows updates out to the full size of the screen. + **/ + +GLOBAL_DATUM_INIT(tgui_physical_state_bigscreen, /datum/tgui_state/physical_bigscreen, new) + +/datum/tgui_state/physical_bigscreen/can_use_topic(src_object, mob/user) + . = user.shared_tgui_interaction(src_object) + if(. > STATUS_CLOSE) + return min(., user.physical_can_use_tgui_topic_bigscreen(src_object)) + +/mob/proc/physical_can_use_tgui_topic_bigscreen(src_object) + return STATUS_CLOSE + +/mob/living/physical_can_use_tgui_topic_bigscreen(src_object) + return shared_living_tgui_distance_bigscreen(src_object) + +/mob/living/silicon/physical_can_use_tgui_topic_bigscreen(src_object) + return max(STATUS_UPDATE, shared_living_tgui_distance_bigscreen(src_object)) // Silicons can always see. + +/mob/living/silicon/ai/physical_can_use_tgui_topic(src_object) + return STATUS_UPDATE // AIs are not physical. \ No newline at end of file diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 5b62af468b8..5f95ab7db2c 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -257,12 +257,14 @@ return // Validate ping if(!initialized && world.time - opened_at > TGUI_PING_TIMEOUT) + // #ifdef TGUI_DEBUGGING // Always log zombie windows log_tgui(user, \ "Error: Zombie window detected, killing it with fire.\n" \ + "window_id: [window.id]\n" \ + "opened_at: [opened_at]\n" \ + "world.time: [world.time]") close(can_be_suspended = FALSE) + // #endif return // Update through a normal call to ui_interact if(status != STATUS_DISABLED && (autoupdate || force)) @@ -288,9 +290,6 @@ status = min(status, parent_ui.status) return prev_status != status -/datum/tgui/proc/log_message(message) - log_tgui("[user] ([user.ckey]) using \"[title]\":\n[message]") - /datum/tgui/proc/set_map_z_level(nz) map_z_level = nz @@ -305,7 +304,9 @@ // Pass act type messages to tgui_act if(type && copytext(type, 1, 5) == "act/") var/act_type = copytext(type, 5) + #ifdef TGUI_DEBUGGING log_tgui(user, "Action: [act_type] [href_list["payload"]], Window: [window.id], Source: [src_object]") + #endif process_status() if(src_object.tgui_act(act_type, payload, src, state)) SStgui.update_uis(src_object) diff --git a/code/modules/tgui/tgui_window.dm b/code/modules/tgui/tgui_window.dm index 55a08f88085..cc8a63ef27b 100644 --- a/code/modules/tgui/tgui_window.dm +++ b/code/modules/tgui/tgui_window.dm @@ -53,7 +53,9 @@ inline_assets = list(), inline_html = "", fancy = FALSE) + #ifdef TGUI_DEBUGGING log_tgui(client, "[id]/initiailize ([src])") + #endif if(!client) return src.inline_assets = inline_assets @@ -177,7 +179,9 @@ if(!client) return if(can_be_suspended && can_be_suspended()) + #ifdef TGUI_DEBUGGING log_tgui(client, "[id]/close: suspending") + #endif status = TGUI_WINDOW_READY send_message("suspend") // You would think that BYOND would null out client or make it stop passing istypes or, y'know, ANYTHING during @@ -187,7 +191,9 @@ if(!logout && client) winset(client, null, "mapwindow.map.focus=true") return + #ifdef TGUI_DEBUGGING log_tgui(client, "[id]/close") + #endif release_lock() status = TGUI_WINDOW_CLOSED message_queue = null diff --git a/code/modules/turbolift/turbolift_console.dm b/code/modules/turbolift/turbolift_console.dm index a638fbbad4c..4a17deabc2f 100644 --- a/code/modules/turbolift/turbolift_console.dm +++ b/code/modules/turbolift/turbolift_console.dm @@ -2,8 +2,8 @@ /obj/structure/lift name = "turbolift control component" icon = 'icons/obj/turbolift.dmi' - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE plane = MOB_PLANE var/datum/turbolift/lift diff --git a/code/modules/vehicles/Securitrain_vr.dm b/code/modules/vehicles/Securitrain_vr.dm index f28e7631c4f..3db5ffa3db5 100644 --- a/code/modules/vehicles/Securitrain_vr.dm +++ b/code/modules/vehicles/Securitrain_vr.dm @@ -39,7 +39,7 @@ desc = "A trolly designed to transport security personnel or prisoners." icon = 'icons/obj/vehicles_vr.dmi' icon_state = "paddy_trailer" - anchored = 0 + anchored = FALSE passenger_allowed = 1 locked = 0 @@ -384,6 +384,6 @@ src.active_engines = active_engines if(!lead && !tow) - anchored = 0 + anchored = FALSE else - anchored = 1 + anchored = TRUE diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm index 915e2687bab..783ed376d35 100644 --- a/code/modules/vehicles/bike.dm +++ b/code/modules/vehicles/bike.dm @@ -157,7 +157,7 @@ /obj/vehicle/bike/turn_on() ion.start() - anchored = 1 + anchored = TRUE update_icon() diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index 37da72f5361..0f102110e8d 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -30,7 +30,7 @@ desc = "A large, flat platform made for putting things on. Or people." icon = 'icons/obj/vehicles_vr.dmi' //VOREStation Edit icon_state = "cargo_trailer" - anchored = 0 + anchored = FALSE passenger_allowed = 0 locked = 0 @@ -385,9 +385,9 @@ src.active_engines = active_engines if(!lead && !tow) - anchored = 0 + anchored = FALSE else - anchored = 1 + anchored = TRUE // VOREStation Edit Start - Overlay stuff for the chair-like effect /obj/vehicle/train/engine/update_icon() diff --git a/code/modules/vehicles/quad.dm b/code/modules/vehicles/quad.dm index 7f5eee732c8..c66b2987b0e 100644 --- a/code/modules/vehicles/quad.dm +++ b/code/modules/vehicles/quad.dm @@ -160,7 +160,7 @@ name = "all terrain trailer" icon = 'icons/obj/vehicles_64x64.dmi' icon_state = "quadtrailer" - anchored = 0 + anchored = FALSE passenger_allowed = 1 buckle_lying = 1 locked = 0 diff --git a/code/modules/vehicles/rover_vr.dm b/code/modules/vehicles/rover_vr.dm index 05816fccdc8..fd831014e7b 100644 --- a/code/modules/vehicles/rover_vr.dm +++ b/code/modules/vehicles/rover_vr.dm @@ -47,7 +47,7 @@ desc = "A trolley designed to transport security equipment to a scene." icon = 'icons/obj/vehicles_vr.dmi' icon_state = "secitemcarrierbot" - anchored = 0 + anchored = FALSE passenger_allowed = 0 locked = 0 @@ -397,6 +397,6 @@ src.active_engines = active_engines if(!lead && !tow) - anchored = 0 + anchored = FALSE else - anchored = 1 + anchored = TRUE diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 44be1f6bd38..dcb909a2f5c 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -8,12 +8,12 @@ name = "vehicle" icon = 'icons/obj/vehicles.dmi' layer = MOB_LAYER + 0.1 //so it sits above objects including mobs - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE animate_movement=1 light_range = 3 - can_buckle = 1 + can_buckle = TRUE buckle_movable = 1 buckle_lying = 0 @@ -168,7 +168,7 @@ pulse2.icon = 'icons/effects/effects.dmi' pulse2.icon_state = "empdisable" pulse2.name = "emp sparks" - pulse2.anchored = 1 + pulse2.anchored = TRUE pulse2.set_dir(pick(cardinal)) spawn(10) @@ -317,7 +317,7 @@ C.forceMove(loc) C.set_dir(dir) - C.anchored = 1 + C.anchored = TRUE load = C @@ -367,7 +367,7 @@ load.forceMove(dest) load.set_dir(get_dir(loc, dest)) - load.anchored = 0 //we can only load non-anchored items, so it makes sense to set this to false + load.anchored = FALSE //we can only load non-anchored items, so it makes sense to set this to false load.pixel_x = initial(load.pixel_x) load.pixel_y = initial(load.pixel_y) load.layer = initial(load.layer) diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index dd96f40167e..a1fd6af5919 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -10,7 +10,8 @@ var/list/ventcrawl_machinery = list( /obj/item/weapon/holder, /obj/machinery/camera, /obj/belly, - /obj/screen + /obj/screen, + /atom/movable/emissive_blocker ) //VOREStation Edit : added /obj/belly, to this list, CI is complaining about this in his indentation check //mob/living/simple_mob/borer, //VORESTATION AI TEMPORARY REMOVAL REPLACE BACK IN LIST WHEN RESOLVED //VOREStation Edit diff --git a/code/modules/virus2/admin.dm b/code/modules/virus2/admin.dm index b0e92139b4c..dd9ae7ead77 100644 --- a/code/modules/virus2/admin.dm +++ b/code/modules/virus2/admin.dm @@ -57,10 +57,9 @@ var/list/L = list() - for(var/e in (typesof(/datum/disease2/effect) - /datum/disease2/effect)) - var/datum/disease2/effect/f = e + for(var/datum/disease2/effect/f as anything in subtypesof(/datum/disease2/effect)) if(initial(f.stage) <= stage) - L[initial(f.name)] = e + L[initial(f.name)] = f var/datum/disease2/effect/Eff = s[stage] diff --git a/code/modules/virus2/analyser.dm b/code/modules/virus2/analyser.dm index b45dba31ed0..5a736c28f7a 100644 --- a/code/modules/virus2/analyser.dm +++ b/code/modules/virus2/analyser.dm @@ -3,8 +3,8 @@ desc = "Analyzes diseases to find out information about them!" icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "analyser" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/scanning = 0 var/pause = 0 diff --git a/code/modules/virus2/biohazard destroyer.dm b/code/modules/virus2/biohazard destroyer.dm index 7d05c2f6079..eabb3f8c620 100644 --- a/code/modules/virus2/biohazard destroyer.dm +++ b/code/modules/virus2/biohazard destroyer.dm @@ -3,8 +3,8 @@ icon = 'icons/obj/pipes/disposal.dmi' icon_state = "disposalbio" var/list/accepts = list(/obj/item/clothing,/obj/item/weapon/virusdish/,/obj/item/weapon/cureimplanter,/obj/item/weapon/diseasedisk,/obj/item/weapon/reagent_containers) - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE /obj/machinery/disease2/biodestroyer/attackby(var/obj/I as obj, var/mob/user as mob) for(var/path in accepts) diff --git a/code/modules/virus2/dishincubator.dm b/code/modules/virus2/dishincubator.dm index 9dd935247ad..399aca8738a 100644 --- a/code/modules/virus2/dishincubator.dm +++ b/code/modules/virus2/dishincubator.dm @@ -1,8 +1,8 @@ /obj/machinery/disease2/incubator/ name = "pathogenic incubator" desc = "Encourages the growth of diseases. This model comes with a dispenser system and a small radiation generator." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "incubator" var/obj/item/weapon/virusdish/dish diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index dd19e5e3f45..5e3e9555748 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -15,9 +15,8 @@ /datum/disease2/effectholder/proc/getrandomeffect(var/badness = 1, exclude_types=list()) var/list/datum/disease2/effect/list = list() - for(var/e in (typesof(/datum/disease2/effect) - /datum/disease2/effect)) - var/datum/disease2/effect/f = e - if(e in exclude_types) + for(var/datum/disease2/effect/f as anything in subtypesof(/datum/disease2/effect)) + if(f in exclude_types) continue if(initial(f.badness) > badness) //we don't want such strong effects continue diff --git a/code/modules/virus2/isolator.dm b/code/modules/virus2/isolator.dm index d4053e8e52b..61fa5cf820e 100644 --- a/code/modules/virus2/isolator.dm +++ b/code/modules/virus2/isolator.dm @@ -1,8 +1,8 @@ /obj/machinery/disease2/isolator/ name = "pathogenic isolator" desc = "Used to isolate and identify diseases, allowing for comparison with a remote database." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "isolator" var/isolating = 0 diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index bacd5c296cf..54c0079ce5b 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -263,8 +263,7 @@ var/count = 0 //Iterate over contents and move them all - for(var/thing in contents) - var/atom/movable/AM = thing + for(var/atom/movable/AM as anything in contents) if(isliving(AM)) var/mob/living/L = AM if(L.absorbed && !include_absorbed) @@ -447,7 +446,7 @@ var/messages = null if(raw_messages) - messages = list2text(raw_messages, delim) + messages = raw_messages.Join(delim) return messages // The next function sets the messages on the belly, from human-readable var @@ -456,7 +455,7 @@ /obj/belly/proc/set_messages(raw_text, type, delim = "\n\n") ASSERT(type == "smo" || type == "smi" || type == "dmo" || type == "dmp" || type == "em" || type == "ema" || type == "im_digest" || type == "im_hold" || type == "im_absorb" || type == "im_heal" || type == "im_drain") - var/list/raw_list = text2list(html_encode(raw_text),delim) + var/list/raw_list = splittext(html_encode(raw_text),delim) if(raw_list.len > 10) raw_list.Cut(11) log_debug("[owner] tried to set [lowertext(name)] with 11+ messages") @@ -576,8 +575,7 @@ //This in particular will recurse oddly because if there is absorbed prey of prey of prey... //it will just move them up one belly. This should never happen though since... when they were //absobred, they should have been absorbed as well! - for(var/belly in M.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in M.vore_organs) for(var/mob/living/Mm in B) if(Mm.absorbed) absorb_living(Mm) @@ -714,8 +712,7 @@ else if(prob(transferchance) && transferlocation) //Next, let's have it see if they end up getting into an even bigger mess then when they started. var/obj/belly/dest_belly - for(var/belly in owner.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in owner.vore_organs) if(B.name == transferlocation) dest_belly = B break diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm index a4bbcfb50d7..df7b22897c3 100644 --- a/code/modules/vore/eating/bellymodes_datum_vr.dm +++ b/code/modules/vore/eating/bellymodes_datum_vr.dm @@ -175,8 +175,9 @@ GLOBAL_LIST_INIT(digest_modes, list()) return if(isliving(C)) var/mob/living/M = C + var/mob_holder_type = M.holder_type || /obj/item/weapon/holder B.ownegg.w_class = M.size_multiplier * 4 //Egg size and weight scaled to match occupant. - var/obj/item/weapon/holder/H = new M.holder_type(B.ownegg, M) + var/obj/item/weapon/holder/H = new mob_holder_type(B.ownegg, M) B.ownegg.max_storage_space = H.w_class B.ownegg.icon_scale_x = 0.25 * B.ownegg.w_class B.ownegg.icon_scale_y = 0.25 * B.ownegg.w_class @@ -199,4 +200,4 @@ GLOBAL_LIST_INIT(digest_modes, list()) if(B.ownegg.w_class > 4) B.ownegg.slowdown = B.ownegg.w_class - 4 B.ownegg = null - return \ No newline at end of file + return diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index e9641d0a73b..41b0bfae1ef 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -16,8 +16,10 @@ var/play_sound //Potential sound to play at the end to avoid code duplication. var/to_update = FALSE //Did anything update worthy happen? -///////////////////// Prey Loop Refresh/hack ////////////////////// - prey_loop() +/////////////////////////// Exit Early //////////////////////////// + var/list/touchable_atoms = contents - items_preserved + if(!length(touchable_atoms)) + return /////////////////////////// Sound Selections /////////////////////////// var/digestion_noise_chance = 0 @@ -30,10 +32,7 @@ prey_digest = sound(get_sfx("fancy_digest_prey")) pred_digest = sound(get_sfx("fancy_digest_pred")) -/////////////////////////// Exit Early //////////////////////////// - var/list/touchable_atoms = contents - items_preserved - if(!length(touchable_atoms)) - return +///////////////////// Early Non-Mode Handling ///////////////////// var/datum/digest_mode/DM = GLOB.digest_modes["[digest_mode]"] if(!DM) @@ -54,10 +53,58 @@ if(hta_returns["to_update"]) to_update = hta_returns["to_update"] + if(!digestion_noise_chance) + digestion_noise_chance = DM.noise_chance + +/////////////////////////// Make any noise /////////////////////////// + if(digestion_noise_chance && prob(digestion_noise_chance)) + for(var/mob/M in contents) + if(M && M.is_preference_enabled(/datum/client_preference/digestion_noises)) + SEND_SOUND(M, prey_digest) + play_sound = pred_digest + + if(to_update) + updateVRPanels() + if(!LAZYLEN(touchable_mobs)) + if(play_sound) + for(var/mob/M in hearers(VORE_SOUND_RANGE, get_turf(owner))) //so we don't fill the whole room with the sound effect + if(!M.is_preference_enabled(/datum/client_preference/digestion_noises)) + continue + if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check + if(fancy_vore) + M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + else + M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + //these are all external sound triggers now, so it's ok. return -///////////////////// Early Non-Mode Handling ///////////////////// +///////////////////// Prey Loop Refresh/hack ////////////////////// + prey_loop() + +///////////////////// Time to actually process mobs ///////////////////// + + for(var/mob/living/L as anything in touchable_mobs) + if(!istype(L)) + stack_trace("Touchable mobs had a nonmob: [L]") + continue + var/list/returns = DM.process_mob(src, L) + if(istype(returns) && returns["to_update"]) + to_update = TRUE + if(istype(returns) && returns["soundToPlay"] && !play_sound) + play_sound = returns["soundToPlay"] + + if(play_sound) + for(var/mob/M in hearers(VORE_SOUND_RANGE, get_turf(owner))) //so we don't fill the whole room with the sound effect + if(!M.is_preference_enabled(/datum/client_preference/digestion_noises)) + continue + if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check + if(fancy_vore) + M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + else + M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + //these are all external sound triggers now, so it's ok. + if(emote_active) var/list/EL = emote_lists[digest_mode] if(LAZYLEN(EL) && next_emote <= world.time) @@ -78,41 +125,6 @@ formatted_message = replacetext(formatted_message, "%countprey", living_count) to_chat(M, "[formatted_message]") - if(!digestion_noise_chance) - digestion_noise_chance = DM.noise_chance - - -///////////////////// Time to actually process mobs ///////////////////// - for(var/target in touchable_mobs) - var/mob/living/L = target - if(!istype(L)) - continue - var/list/returns = DM.process_mob(src, target) - if(istype(returns) && returns["to_update"]) - to_update = TRUE - if(istype(returns) && returns["soundToPlay"] && !play_sound) - play_sound = returns["soundToPlay"] - -/////////////////////////// Make any noise /////////////////////////// - if(digestion_noise_chance && prob(digestion_noise_chance)) - for(var/mob/M in contents) - if(M && M.is_preference_enabled(/datum/client_preference/digestion_noises)) - SEND_SOUND(M, prey_digest) - play_sound = pred_digest - - if(play_sound) - for(var/mob/M in hearers(VORE_SOUND_RANGE, get_turf(owner))) //so we don't fill the whole room with the sound effect - if(!M.is_preference_enabled(/datum/client_preference/digestion_noises)) - continue - if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check - if(fancy_vore) - M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) - else - M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) - //these are all external sound triggers now, so it's ok. - - if(to_update) - updateVRPanels() /obj/belly/proc/handle_touchable_atoms(list/touchable_atoms) var/did_an_item = FALSE // Only do one item per cycle. diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index fe9a02adc13..4a24d8d84ce 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -239,8 +239,7 @@ P.pickup_pref = src.pickup_pref var/list/serialized = list() - for(var/belly in src.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in src.vore_organs) serialized += list(B.serialize()) //Can't add a list as an object to another list in Byond. Thanks. P.belly_prefs = serialized @@ -286,8 +285,7 @@ // Release everything in every vore organ // /mob/living/proc/release_vore_contents(var/include_absorbed = TRUE, var/silent = FALSE) - for(var/belly in vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in vore_organs) B.release_all_contents(include_absorbed, silent) // @@ -298,10 +296,12 @@ return list() var/list/message_list = list() - for (var/belly in vore_organs) - var/obj/belly/B = belly - message_list += B.get_examine_msg() - message_list += B.get_examine_msg_absorbed() + for(var/obj/belly/B as anything in vore_organs) + var/bellymessage = B.get_examine_msg() + if(bellymessage) message_list += bellymessage + + bellymessage = B.get_examine_msg_absorbed() + if(bellymessage) message_list += bellymessage return message_list @@ -519,9 +519,9 @@ // Their AI should get notified so they can stab us prey.ai_holder?.react_to_attack(user) - + //Timer and progress bar - if(!do_after(user, swallow_time, prey, exclusive = TRUE)) + if(!do_after(user, swallow_time, prey, exclusive = TASK_USER_EXCLUSIVE)) return FALSE // Prey escpaed (or user disabled) before timer expired. // If we got this far, nom successful! Announce it! @@ -798,7 +798,7 @@ playsound(src, 'sound/items/eatfood.ogg', rand(10,50), 1) var/T = (istype(M) ? M.hardness/40 : 1) SECONDS //1.5 seconds to eat a sheet of metal. 2.5 for durasteel and diamond & 1 by default (applies to some ores like raw carbon, slag, etc. to_chat(src, "You start crunching on [I] with your powerful jaws, attempting to tear it apart...") - if(do_after(feeder, T, ignore_movement = TRUE, exclusive = TRUE)) //Eat on the move, but not multiple things at once. + if(do_after(feeder, T, ignore_movement = TRUE, exclusive = TASK_ALL_EXCLUSIVE)) //Eat on the move, but not multiple things at once. if(feeder != src) to_chat(feeder, "You feed [I] to [src].") log_admin("VORE: [feeder] fed [src] [I].") diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 9b480ff28ab..a3e5e0f3568 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -126,8 +126,7 @@ data["inside"] = inside var/list/our_bellies = list() - for(var/belly in host.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in host.vore_organs) our_bellies.Add(list(list( "selected" = (B == host.vore_selected), "name" = B.name, @@ -268,8 +267,7 @@ failure_msg = "Entered belly name length invalid (must be longer than [BELLIES_NAME_MIN], no more than than [BELLIES_NAME_MAX])." // else if(whatever) //Next test here. else - for(var/belly in host.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in host.vore_organs) if(lowertext(new_name) == lowertext(B.name)) failure_msg = "No duplicate belly names, please." break @@ -479,7 +477,7 @@ to_chat(user,"You begin to push [M] to freedom!") to_chat(M,"[host] begins to push you to freedom!") - to_chat(M.loc,"Someone is trying to escape from inside you!") + to_chat(OB.owner,"Someone is trying to escape from inside you!") sleep(50) if(prob(33)) OB.release_specific_contents(M) @@ -610,8 +608,7 @@ failure_msg = "Entered belly name length invalid (must be longer than [BELLIES_NAME_MIN], no more than than [BELLIES_NAME_MAX])." // else if(whatever) //Next test here. else - for(var/belly in host.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in host.vore_organs) if(lowertext(new_name) == lowertext(B.name)) failure_msg = "No duplicate belly names, please." break @@ -943,8 +940,7 @@ var/failure_msg = "" var/dest_for //Check to see if it's the destination of another vore organ. - for(var/belly in host.vore_organs) - var/obj/belly/B = belly + for(var/obj/belly/B as anything in host.vore_organs) if(B.transferlocation == host.vore_selected) dest_for = B.name failure_msg += "This is the destiantion for at least '[dest_for]' belly transfers. Remove it as the destination from any bellies before deleting it. " diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 7cba0803a31..d48c787df73 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -139,7 +139,7 @@ icon_state = "joanasuna" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "joanasuna" + item_state = "joanasuna_mob" //eekasqueak:Serkii Miishy /obj/item/clothing/under/skirt/fluff/serkii @@ -150,7 +150,7 @@ icon_state = "serkiskirt" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "serkiskirt" + item_state = "serkiskirt_mob" //Unknown. Please check records from the forums. /obj/item/clothing/under/suit_jacket/female/fluff/miqote @@ -161,7 +161,7 @@ icon_state = "miqote" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "miqote" + item_state = "miqote_mob" //JoanRisu:Joan Risu /obj/item/clothing/under/fluff/nightgown @@ -172,7 +172,7 @@ icon_state = "joannightgown" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "joannightgown" + item_state = "joannightgown_mob" //Vorrarkul:Lucina Dakarim /obj/item/clothing/under/dress/fluff/lucinadress @@ -182,7 +182,7 @@ icon = 'icons/vore/custom_clothes_vr.dmi' icon_state = "solara_dress" - icon_override = 'icons/mob/uniform.dmi' + icon_override = 'icons/inventory/uniform/mob.dmi' item_state = "solara_dress" //For general use @@ -464,7 +464,7 @@ icon_state = "harmcaptain" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "harmcaptain" + item_state = "harmcaptain_mob" //Variant /obj/item/clothing/under/rank/captain/fluff/harmuniform/centcom name = "\improper CentCom administrator's uniform" @@ -484,7 +484,7 @@ icon_state = "tasaldsuit" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "tasaldsuit" + item_state = "tasaldsuit_mob" armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) // bwoincognito:Tasald Corlethian @@ -653,7 +653,7 @@ icon_state = "screesuit" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "screesuit" + item_state = "screesuit_mob" /obj/item/clothing/under/fluff/screesuit/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0) if(..()) @@ -698,10 +698,10 @@ desc = " This is Lethe's Hat! A little tag attached inside reads: 'If found please return to Lethe! Or else!' It looks rather worn in. It also lacks armor." armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - icon = 'icons/obj/clothing/hats.dmi' + icon = 'icons/inventory/head/item.dmi' icon_state = "hoscap" - icon_override = 'icons/mob/head.dmi' + icon_override = 'icons/inventory/head/mob.dmi' item_state = "hoscap" /obj/item/weapon/storage/belt/utility/fluff/vulpine @@ -887,74 +887,56 @@ catalogue_data = list(/datum/category_item/catalogue/information/organization/khi) sensor_mode = 3 - icon = 'icons/vore/custom_clothes_vr.dmi' - icon_state = "khi_uniform_i" - - icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "" + icon = 'icons/inventory/uniform/item_vr.dmi' + default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi' + icon_state = "khi_uniform" /obj/item/clothing/under/rank/khi/cmd //Command version name = "KHI command suit" desc = "Kitsuhana Heavy Industries uniform. An extra-comfortable command one, at that. I guess if you DON'T want anarchy for some reason." - icon_state = "khi_uniform_cmd_i" - item_state = "khi_uniform_cmd" - worn_state = "khi_uniform_cmd" + icon_state = "khi_uniform_cmd" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/sec //Security version name = "KHI security suit" desc = "Kitsuhana Heavy Industries uniform. This one has angry red security stripes. Keepin' the peace in style." - icon_state = "khi_uniform_sec_i" - item_state = "khi_uniform_sec" - worn_state = "khi_uniform_sec" + icon_state = "khi_uniform_sec" armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/med //Medical version name = "KHI medical suit" desc = "Kitsuhana Heavy Industries uniform. The medical version. Why not just get a new body, anyway?" - icon_state = "khi_uniform_med_i" - item_state = "khi_uniform_med" - worn_state = "khi_uniform_med" + icon_state = "khi_uniform_med" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0) /obj/item/clothing/under/rank/khi/eng //Engineering version name = "KHI engineering suit" desc = "Kitsuhana Heavy Industries uniform. One fit for an engineer, by the looks of it. Building the future, one disaster at a time." - icon_state = "khi_uniform_eng_i" - item_state = "khi_uniform_eng" - worn_state = "khi_uniform_eng" + icon_state = "khi_uniform_eng" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10) /obj/item/clothing/under/rank/khi/sci //Science version name = "KHI science suit" desc = "Kitsuhana Heavy Industries uniform. For performing science in, based on the color! Only SCIENCE can save us now." - icon_state = "khi_uniform_sci_i" - item_state = "khi_uniform_sci" - worn_state = "khi_uniform_sci" + icon_state = "khi_uniform_sci" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/crg //Cargo version name = "KHI cargo suit" desc = "Kitsuhana Heavy Industries uniform. Looks like it's in supply and cargo division colors. Even post-scarcity societies need things moved and mined sometimes." - icon_state = "khi_uniform_crg_i" - item_state = "khi_uniform_crg" - worn_state = "khi_uniform_crg" + icon_state = "khi_uniform_crg" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/civ //Science version name = "KHI civilian suit" desc = "Kitsuhana Heavy Industries uniform. Snazzy silver trim marks this is as the general civilian branch. Smells like paperwork and bureaucracy." - icon_state = "khi_uniform_civ_i" - item_state = "khi_uniform_civ" - worn_state = "khi_uniform_civ" + icon_state = "khi_uniform_civ" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/fluff/aronai //Aro fluff version name = "KHI meditech suit" desc = "Kitsuhana Heavy Industries uniform. This one has the colors of a resleeving or mnemonics engineer. It has 'Aronai' written inside the top." - icon_state = "khi_uniform_aro_i" - item_state = "khi_uniform_aro" - worn_state = "khi_uniform_aro" + icon_state = "khi_uniform_aro" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0) //jacobdragon:Earthen Breath @@ -962,7 +944,7 @@ name = "Earth Swimsuit" desc = "The suit of Subject 688,509,403. Made of an enviromentally safe elastic. Dry-clean not required." icon_state = "fluffearthenbreath" - item_state = "fluffearthenbreath" + item_state = "fluffearthenbreath_mob" //jacobdragon:Earthen Breath /obj/item/clothing/head/fluff/hairflowerpin @@ -1036,7 +1018,7 @@ icon_state = "gildedcuffs" icon_override = 'icons/vore/custom_onmob_vr.dmi' - item_icons = list() + item_icons = null body_parts_covered = 0 @@ -1187,30 +1169,26 @@ Departamental Swimsuits, for general use /obj/item/clothing/under/rank/trek name = "Section 31 Uniform" desc = "Oooh... right." - icon = 'icons/vore/custom_clothes_vr.dmi' - icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "" + icon = 'icons/inventory/uniform/item_vr.dmi' + default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi' //TOS /obj/item/clothing/under/rank/trek/command name = "Command Uniform" desc = "The uniform worn by command officers in the mid 2260s." icon_state = "trek_command" - item_state = "trek_command" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // Considering only staff heads get to pick it /obj/item/clothing/under/rank/trek/engsec name = "Operations Uniform" desc = "The uniform worn by operations officers of the mid 2260s. You feel strangely vulnerable just seeing this..." icon_state = "trek_engsec" - item_state = "trek_engsec" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // since they're shared between jobs and kinda moot. /obj/item/clothing/under/rank/trek/medsci name = "MedSci Uniform" desc = "The uniform worn by medsci officers in the mid 2260s." icon_state = "trek_medsci" - item_state = "trek_medsci" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) // basically a copy of vanilla sci/med @@ -1218,59 +1196,48 @@ Departamental Swimsuits, for general use /obj/item/clothing/under/rank/trek/command/next desc = "The uniform worn by command officers. This one's from the mid 2360s." icon_state = "trek_next_command" - item_state = "trek_next_command" /obj/item/clothing/under/rank/trek/engsec/next desc = "The uniform worn by operation officers. This one's from the mid 2360s." icon_state = "trek_next_engsec" - item_state = "trek_next_engsec" /obj/item/clothing/under/rank/trek/medsci/next desc = "The uniform worn by medsci officers. This one's from the mid 2360s." icon_state = "trek_next_medsci" - item_state = "trek_next_medsci" //ENT /obj/item/clothing/under/rank/trek/command/ent desc = "The uniform worn by command officers of the 2140s." icon_state = "trek_ent_command" - item_state = "trek_ent_command" /obj/item/clothing/under/rank/trek/engsec/ent desc = "The uniform worn by operations officers of the 2140s." icon_state = "trek_ent_engsec" - item_state = "trek_ent_engsec" /obj/item/clothing/under/rank/trek/medsci/ent desc = "The uniform worn by medsci officers of the 2140s." icon_state = "trek_ent_medsci" - item_state = "trek_ent_medsci" //VOY /obj/item/clothing/under/rank/trek/command/voy desc = "The uniform worn by command officers of the 2370s." icon_state = "trek_voy_command" - item_state = "trek_voy_command" /obj/item/clothing/under/rank/trek/engsec/voy desc = "The uniform worn by operations officers of the 2370s." icon_state = "trek_voy_engsec" - item_state = "trek_voy_engsec" /obj/item/clothing/under/rank/trek/medsci/voy desc = "The uniform worn by medsci officers of the 2370s." icon_state = "trek_voy_medsci" - item_state = "trek_voy_medsci" //DS9 - /obj/item/clothing/suit/storage/trek/ds9 name = "Padded Overcoat" desc = "The overcoat worn by all officers of the 2380s." + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' icon_state = "trek_ds9_coat" - icon = 'icons/vore/custom_clothes_vr.dmi' - item_state = "trek_ds9_coat_mob" - icon_override = 'icons/vore/custom_clothes_vr.dmi' body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS permeability_coefficient = 0.50 allowed = list( @@ -1287,23 +1254,21 @@ Departamental Swimsuits, for general use name = "Admiral Overcoat" desc = "Admirality specialty coat to keep flag officers fashionable and protected." icon_state = "trek_ds9_coat_adm" - item_state = "trek_ds9_coat_adm_mob" armor = list(melee = 45, bullet = 35, laser = 35, energy = 20, bomb = 0, bio = 40, rad = 55) - /obj/item/clothing/under/rank/trek/command/ds9 desc = "The uniform worn by command officers of the 2380s." - icon_state = "trek_command" + icon_state = "trek_command" // no unique state for this one item_state = "trek_ds9_command" /obj/item/clothing/under/rank/trek/engsec/ds9 desc = "The uniform worn by operations officers of the 2380s." - icon_state = "trek_engsec" + icon_state = "trek_engsec" // no unique state for this one item_state = "trek_ds9_engsec" /obj/item/clothing/under/rank/trek/medsci/ds9 desc = "The uniform undershit worn by medsci officers of the 2380s." - icon_state = "trek_medsci" + icon_state = "trek_medsci" // no unique state for this one item_state = "trek_ds9_medsci" //For general use maybe @@ -1523,7 +1488,7 @@ Departamental Swimsuits, for general use icon = 'icons/vore/custom_clothes_vr.dmi' icon_state = "nanovest" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "nanovest" + item_state = "nanovest_mob" //General use /obj/item/clothing/suit/storage/fluff/loincloth @@ -1534,7 +1499,7 @@ Departamental Swimsuits, for general use icon_state = "loincloth" icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "loincloth" + item_state = "loincloth_mob" //BeyondMyLife: Ne'tra Ky'ram /obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat @@ -1592,7 +1557,7 @@ Departamental Swimsuits, for general use icon = 'icons/vore/custom_clothes_vr.dmi' icon_override = 'icons/vore/custom_clothes_vr.dmi' icon_state = "kilanosuit" - item_state = "kilanosuit" + item_state = "kilanosuit_mob" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 @@ -1689,7 +1654,7 @@ Departamental Swimsuits, for general use name = "purple and silver dress uniform" desc = "A royal purple dress, replicating the usual captains dress, made of the same glossy/silky material, with odd oriental and foriegn patterns on it, silver lined too!" icon_state = "kilanosuit_p" - item_state = "kilanosuit_p" + item_state = "kilanosuit_p_mob" //Mewchild: Phi Vietsi /obj/item/clothing/gloves/ring/seal/signet/fluff/phi @@ -1876,13 +1841,13 @@ Departamental Swimsuits, for general use icon_override = 'icons/vore/custom_clothes_vr.dmi' icon_state = "blackutility_med" - worn_state = "blackutility_med" - item_state = "blackutility_med" + worn_state = "blackutility_med_mob" + item_state = "blackutility_med_mob" rolled_down = 0 rolled_sleeves = 0 starting_accessories = null - item_icons = list() + item_icons = null //Vorrarkul: Melanie Farmer /obj/item/clothing/under/fluff/slime_skeleton @@ -1936,7 +1901,8 @@ Departamental Swimsuits, for general use body_parts_covered = UPPER_TORSO|LOWER_TORSO icon = 'icons/vore/custom_clothes_vr.dmi' icon_state = "latex_clothes" - item_icons = list() + item_state = "latex_clothes_mob" + item_icons = null default_worn_icon = 'icons/vore/custom_clothes_vr.dmi' color = COLOR_NAVY sprite_sheets = null @@ -2029,7 +1995,7 @@ Departamental Swimsuits, for general use icon_override = 'icons/vore/custom_onmob_vr.dmi' icon_state = "nikki_outfit" item_state = "nikki_outfit" - item_icons = list() + item_icons = null sensor_mode = 3 // I'm a dumbass and forget these all the time please understand :( /obj/item/clothing/under/skirt/outfit/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0) diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 503ce8c523a..79b061004d1 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -170,8 +170,8 @@ item_state = "joanariamob" origin_tech = "materials=7" force = 15 - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE hitsound = 'sound/weapons/bladeslice.ogg' @@ -937,8 +937,8 @@ icon_state = "stunstaff00" var/base_icon = "stunstaff" force = 5 - sharp = 0 - edge = 0 + sharp = FALSE + edge = FALSE throwforce = 7 w_class = ITEMSIZE_HUGE origin_tech = list(TECH_COMBAT = 2) @@ -1033,8 +1033,8 @@ var/active_throwforce var/active_w_class var/active_embed_chance = 0 - sharp = 0 - edge = 0 + sharp = FALSE + edge = FALSE /obj/item/weapon/melee/fluffstuff/proc/activate(mob/living/user) if(active) @@ -1043,8 +1043,8 @@ embed_chance = active_embed_chance force = active_force throwforce = active_throwforce - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE w_class = active_w_class playsound(src, 'sound/weapons/sparkle.ogg', 50, 1) @@ -1116,8 +1116,8 @@ ..() attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - sharp = 1 - edge = 1 + sharp = TRUE + edge = TRUE icon_state = "[active_state]_sharp" damtype = BRUTE diff --git a/code/modules/vore/persist/persist_vr.dm b/code/modules/vore/persist/persist_vr.dm index 3bae4a8524e..d5833e4b3b7 100644 --- a/code/modules/vore/persist/persist_vr.dm +++ b/code/modules/vore/persist/persist_vr.dm @@ -40,7 +40,7 @@ */ /proc/prep_for_persist(var/mob/persister) if(!istype(persister)) - crash_with("Persist (P4P): Given non-mob [persister].") + stack_trace("Persist (P4P): Given non-mob [persister].") return // Find out of this mob is a proper mob! @@ -74,7 +74,7 @@ /proc/persist_interround_data(var/mob/occupant, var/datum/spawnpoint/new_spawn_point_type) if(!istype(occupant)) - crash_with("Persist (PID): Given non-mob [occupant].") + stack_trace("Persist (PID): Given non-mob [occupant].") return var/datum/preferences/prefs = prep_for_persist(occupant) @@ -225,7 +225,7 @@ */ /proc/persist_nif_data(var/mob/living/carbon/human/H,var/datum/preferences/prefs) if(!istype(H)) - crash_with("Persist (NIF): Given a nonhuman: [H]") + stack_trace("Persist (NIF): Given a nonhuman: [H]") return if(!prefs) diff --git a/code/modules/vore/resizing/holder_micro_vr.dm b/code/modules/vore/resizing/holder_micro_vr.dm index cbcbe3b0e71..d4f114fc2aa 100644 --- a/code/modules/vore/resizing/holder_micro_vr.dm +++ b/code/modules/vore/resizing/holder_micro_vr.dm @@ -4,11 +4,11 @@ name = "micro" desc = "Another crewmember, small enough to fit in your hand." icon_state = "micro" - icon_override = 'icons/mob/head_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' slot_flags = SLOT_FEET | SLOT_HEAD | SLOT_ID w_class = ITEMSIZE_SMALL - item_icons = list() // No in-hand sprites (for now, anyway, we could totally add some) - pixel_y = 0 // Override value from parent. + item_icons = null // No in-hand sprites (for now, anyway, we could totally add some) + pixel_y = 0 // Override value from parent. /obj/item/weapon/holder/micro/examine(mob/user) . = list() diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index 3c7e5b70893..ec2aead7deb 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -47,7 +47,7 @@ /atom/movable/proc/size_range_check(size_select) //both objects and mobs needs to have that var/area/A = get_area(src) //Get the atom's area to check for size limit. - if((A.limit_mob_size && (size_select > 200 || size_select < 25)) || (size_select > 600 || size_select <1)) + if((A?.limit_mob_size && (size_select > 200 || size_select < 25)) || (size_select > 600 || size_select <1)) return FALSE return TRUE @@ -78,7 +78,7 @@ var/datum/component/resize_guard/guard = GetComponent(/datum/component/resize_guard) if(guard) qdel(guard) - + if(size_multiplier == new_size) return 1 @@ -143,7 +143,7 @@ var/nagmessage = "Adjust your mass to be a size between 25 to 200% (or 1% to 600% in dormitories). (DO NOT ABUSE)" var/new_size = input(nagmessage, "Pick a Size") as num|null if(size_range_check(new_size)) - resize(new_size/100) + resize(new_size/100, uncapped = has_large_resize_bounds(), ignore_prefs = TRUE) // I'm not entirely convinced that `src ? ADMIN_JMP(src) : "null"` here does anything // but just in case it does, I'm leaving the null-src checking message_admins("[key_name(src)] used the resize command in-game to be [new_size]% size. [src ? ADMIN_JMP(src) : "null"]") diff --git a/code/modules/vore/smoleworld/smoleworld_vr.dm b/code/modules/vore/smoleworld/smoleworld_vr.dm index 50dbacfe1f3..f9d1c92a642 100644 --- a/code/modules/vore/smoleworld/smoleworld_vr.dm +++ b/code/modules/vore/smoleworld/smoleworld_vr.dm @@ -107,7 +107,8 @@ //defineing actions /obj/structure/smoletrack icon = 'icons/vore/smoleworld_vr.dmi' - density = 0 + color = "#ffffff" + density = FALSE /obj/structure/smoletrack/attack_hand(mob/user) if(user.a_intent == I_DISARM) @@ -120,6 +121,7 @@ new /obj/item/stack/material/smolebricks(F) qdel(src) +//rotates piece /obj/structure/smoletrack/verb/rotate_clockwise() set name = "Rotate Road Clockwise" set category = "Object" @@ -128,6 +130,33 @@ return src.set_dir(turn(src.dir, 270)) +//color roads +/obj/structure/smoletrack/verb/colorpieces() + set name = "Use Color Pieces" + set category = "Object" + set src in oview(1) + if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction)) + return + var/new_color = input(usr, "Please select color.", "Paint Color", color) as color|null + color = new_color + return + + +// probably redundant, allows for direct way to dismantal without knowing intents +/obj/structure/smoletrack/verb/menudismantal() + set name = "Take Road Apart" + set category = "Object" + set src in oview(1) + if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction)) + return + playsound(src, 'sound/items/smolesmallbuild.ogg', 50, 1, -1, volume_channel = VOLUME_CHANNEL_MASTER) + var/turf/simulated/floor/F = get_turf(src) + if(istype(F)) + new /obj/item/stack/material/smolebricks(F) + qdel(src) + return + + // Road pieces /obj/structure/smoletrack/roadS @@ -135,35 +164,36 @@ icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "carstraight" desc = "A long set of tiny road." - anchored = 1 + anchored = TRUE /obj/structure/smoletrack/roadT name = "road threeway piece" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "carthreeway" desc = "A tiny threeway road piece." - anchored = 1 + anchored = TRUE /obj/structure/smoletrack/roadturn name = "road turn piece" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "carturn" desc = "A tiny turn road piece." - anchored = 1 + anchored = TRUE /obj/structure/smoletrack/roadF name = "road four-way piece" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "carfourway" desc = "A four-way road piece." - anchored = 1 + anchored = TRUE //buildings code //Defining building actions /obj/structure/smolebuilding icon = 'icons/vore/smoleworld_vr.dmi' - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE + color = "#ffffff" var/health = 75 var/damage //makes it so buildings can be dismaintaled or GodZilla style attacked @@ -258,31 +288,60 @@ qdel(src) return +//color buildings +/obj/structure/smolebuilding/verb/colorpieces() + set name = "Use Color Pieces" + set category = "Object" + set src in oview(1) + if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction)) + return + var/new_color = input(usr, "Please select color.", "Paint Color", color) as color|null + color = new_color + return + +//probably a bit redundant but gives a more direct way to disassemble buildings without using intents +/obj/structure/smolebuilding/verb/menudismantal() + set name = "Take Building Apart" + set category = "Object" + set src in oview(1) + if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction)) + return + playsound(src, 'sound/items/smolesmallbuild.ogg', 50, 1, -1, volume_channel = VOLUME_CHANNEL_MASTER) + if(!isnull(loc)) + new /obj/item/stack/material/smolebricks(loc) + new /obj/item/stack/material/smolebricks(loc) + qdel(src) + return + //buildings /obj/structure/smoleruins icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "ruins" - density = 0 + density = FALSE /obj/structure/smolebuilding/houses name = "smole houses" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolehouses" + color = "#ffffff" /obj/structure/smolebuilding/business name = "smole business" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolebusiness" + color = "#ffffff" /obj/structure/smolebuilding/warehouses name = "smole warehouses" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolewarehouses" + color = "#ffffff" /obj/structure/smolebuilding/museum name = "smole museum" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolemuseum" + color = "#ffffff" // //CAR STUFF < WILL BE MESSED WITH IN A LATER UPDATE COMMENTED OUT FOR NOW ///obj/item/smolecar @@ -298,7 +357,7 @@ // desc = "Lets burn rubber!" // icon = 'icons/vore/smoleworld_vr.dmi' // icon_state = "smolecarA" -// anchored = 0 +// anchored = FALSE // buckle_movable = 1 // var/carry_type = /obj/item/smolecar // @@ -312,11 +371,11 @@ // // //snack planets, currently just plopped out will be organized later. -/obj/item/trash/Asteroidsmall +/obj/item/trash/candychunk icon = 'icons/vore/smoleworld_vr.dmi' - icon_state = "sp_asteriodB" - name = "asteriod" - desc = "A solid chunk of candy crumb that looks like a asteriod." + icon_state = "sp_sugarchunk" + name = "chunk of candy" + desc = "A solid chunk of candy crumbs, looks like it could be messy." /obj/item/trash/Asteroidlarge icon = 'icons/vore/smoleworld_vr.dmi' @@ -351,7 +410,6 @@ icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_moon" bitesize = 1 - trash = /obj/item/trash/Asteroidsmall nutriment_amt = 2 nutriment_desc = list("sugar" = 2) drop_sound = 'sound/items/drop/basketball.ogg' @@ -373,7 +431,7 @@ icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_phoron" bitesize = 3 - trash = /obj/item/trash/Asteroidmulti + trash = /obj/item/trash/candychunk nutriment_amt = 2 nutriment_desc = list("spicy" = 2) drop_sound = 'sound/items/drop/basketball.ogg' @@ -384,7 +442,7 @@ icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_virgoprime" bitesize = 3 - trash = /obj/item/trash/Asteroidmulti + trash = /obj/item/trash/candychunk nutriment_amt = 2 nutriment_desc = list("salty" = 2) drop_sound = 'sound/items/drop/basketball.ogg' diff --git a/code/modules/vore/weight/fitness_machines_vr.dm b/code/modules/vore/weight/fitness_machines_vr.dm index e9125b26d87..ca6267ba491 100644 --- a/code/modules/vore/weight/fitness_machines_vr.dm +++ b/code/modules/vore/weight/fitness_machines_vr.dm @@ -2,7 +2,7 @@ name = "workout equipment" desc = "A utility often used to lose weight." icon = 'icons/obj/machines/fitness_machines_vr.dmi' - anchored = 1 + anchored = TRUE use_power = USE_POWER_OFF idle_power_usage = 0 active_power_usage = 0 @@ -32,8 +32,8 @@ name = "punching bag" desc = "A bag often used to relieve stress and burn fat." icon_state = "punchingbag" - anchored = 0 - density = 1 + anchored = FALSE + density = TRUE workout_sounds = list( "punch") messages = list( @@ -87,7 +87,7 @@ icon = 'icons/obj/machines/fitness_machines_vr.dmi' icon_state = "scale" desc = "A scale used to measure ones weight relative to their size and species." - anchored = 1 // Set to 0 when we can construct or dismantle these. + anchored = TRUE // Set to 0 when we can construct or dismantle these. use_power = USE_POWER_OFF idle_power_usage = 0 active_power_usage = 0 diff --git a/code/modules/xenoarcheaology/anomaly_container.dm b/code/modules/xenoarcheaology/anomaly_container.dm index 795cd9d6df3..f9ac6ef4f5e 100644 --- a/code/modules/xenoarcheaology/anomaly_container.dm +++ b/code/modules/xenoarcheaology/anomaly_container.dm @@ -3,7 +3,7 @@ desc = "Used to safely contain and move anomalies." icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "anomaly_container" - density = 1 + density = TRUE var/obj/machinery/artifact/contained diff --git a/code/modules/xenoarcheaology/artifacts/artifact.dm b/code/modules/xenoarcheaology/artifacts/artifact.dm index 3344afa24e3..e723561a73c 100644 --- a/code/modules/xenoarcheaology/artifacts/artifact.dm +++ b/code/modules/xenoarcheaology/artifacts/artifact.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "ano00" var/icon_num = 0 - density = 1 + density = TRUE var/datum/artifact_effect/my_effect var/datum/artifact_effect/secondary_effect var/being_used = 0 @@ -33,11 +33,11 @@ secondary_effect.ToggleActivate(0) else - var/effecttype = pick(typesof(/datum/artifact_effect) - /datum/artifact_effect) + var/effecttype = pick(subtypesof(/datum/artifact_effect)) my_effect = new effecttype(src) if(prob(75)) - effecttype = pick(typesof(/datum/artifact_effect) - /datum/artifact_effect) + effecttype = pick(subtypesof(/datum/artifact_effect)) secondary_effect = new effecttype(src) if(prob(75)) secondary_effect.ToggleActivate(0) @@ -85,11 +85,11 @@ secondary_effect.trigger = predefined_trig_secondary /obj/machinery/artifact/proc/choose_effect() - var/effect_type = tgui_input_list(usr, "What type do you want?", "Effect Type", typesof(/datum/artifact_effect) - /datum/artifact_effect) + var/effect_type = tgui_input_list(usr, "What type do you want?", "Effect Type", subtypesof(/datum/artifact_effect)) if(effect_type) my_effect = new effect_type(src) if(tgui_alert(usr, "Do you want a secondary effect?", "Second Effect", list("No", "Yes")) == "Yes") - var/second_effect_type = tgui_input_list(usr, "What type do you want as well?", "Second Effect Type", typesof(/datum/artifact_effect) - list(/datum/artifact_effect, effect_type)) + var/second_effect_type = tgui_input_list(usr, "What type do you want as well?", "Second Effect Type", subtypesof(/datum/artifact_effect) - effect_type) secondary_effect = new second_effect_type(src) else secondary_effect = null diff --git a/code/modules/xenoarcheaology/artifacts/autocloner.dm b/code/modules/xenoarcheaology/artifacts/autocloner.dm index 28cb0a7360e..96195fd7001 100644 --- a/code/modules/xenoarcheaology/artifacts/autocloner.dm +++ b/code/modules/xenoarcheaology/artifacts/autocloner.dm @@ -7,7 +7,7 @@ var/time_spent_spawning = 0 var/time_per_spawn = 0 var/last_process= 0 - density = 1 + density = TRUE var/previous_power_state = 0 use_power = USE_POWER_IDLE diff --git a/code/modules/xenoarcheaology/artifacts/crystal.dm b/code/modules/xenoarcheaology/artifacts/crystal.dm index c090c23a3f8..a1d93d824b5 100644 --- a/code/modules/xenoarcheaology/artifacts/crystal.dm +++ b/code/modules/xenoarcheaology/artifacts/crystal.dm @@ -2,7 +2,7 @@ name = "large crystal" icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "crystal" - density = 1 + density = TRUE /obj/structure/crystal/New() ..() diff --git a/code/modules/xenoarcheaology/artifacts/gigadrill.dm b/code/modules/xenoarcheaology/artifacts/gigadrill.dm index b30b1ed9591..5579f3d9a6c 100644 --- a/code/modules/xenoarcheaology/artifacts/gigadrill.dm +++ b/code/modules/xenoarcheaology/artifacts/gigadrill.dm @@ -6,7 +6,7 @@ var/active = 0 var/drill_time = 10 var/turf/drilling_turf - density = 1 + density = TRUE layer = ABOVE_JUNK_LAYER /obj/machinery/giga_drill/attack_hand(mob/user as mob) @@ -25,10 +25,10 @@ var/turf/simulated/mineral/M = A drilling_turf = get_turf(src) src.visible_message("\The [src] begins to drill into \the [M].") - anchored = 1 + anchored = TRUE spawn(drill_time) if(get_turf(src) == drilling_turf && active) M.GetDrilled() src.loc = M drilling_turf = null - anchored = 0 + anchored = FALSE diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm index a1f069e546c..f3ad6d674c4 100644 --- a/code/modules/xenoarcheaology/artifacts/replicator.dm +++ b/code/modules/xenoarcheaology/artifacts/replicator.dm @@ -3,7 +3,7 @@ desc = "It's some kind of pod with strange wires and gadgets all over it." icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "borgcharger0(old)" - density = 1 + density = TRUE idle_power_usage = 100 active_power_usage = 1000 diff --git a/code/modules/xenoarcheaology/boulder.dm b/code/modules/xenoarcheaology/boulder.dm index b66ed8f0e60..7baa2546430 100644 --- a/code/modules/xenoarcheaology/boulder.dm +++ b/code/modules/xenoarcheaology/boulder.dm @@ -3,9 +3,9 @@ desc = "Leftover rock from an excavation, it's been partially dug out already but there's still a lot to go." icon = 'icons/obj/mining.dmi' icon_state = "boulder1" - density = 1 + density = TRUE opacity = 1 - anchored = 1 + anchored = TRUE var/excavation_level = 0 var/datum/geosample/geological_data var/datum/artifact_find/artifact_find diff --git a/code/modules/xenoarcheaology/effects/forcefield.dm b/code/modules/xenoarcheaology/effects/forcefield.dm index 028eff3a75a..f4f1a3ab073 100644 --- a/code/modules/xenoarcheaology/effects/forcefield.dm +++ b/code/modules/xenoarcheaology/effects/forcefield.dm @@ -19,8 +19,8 @@ var/obj/effect/energy_field/E = new (locate(T.x,T.y,T.z)) created_field.Add(E) E.strength = 1 - E.density = 1 - E.anchored = 1 + E.density = TRUE + E.anchored = TRUE E.invisibility = 0 spawn(10) UpdateMove() @@ -41,8 +41,8 @@ //for now, just instantly respawn the fields when they get destroyed var/obj/effect/energy_field/E = new (locate(T.x,T.y,T)) created_field.Add(E) - E.anchored = 1 - E.density = 1 + E.anchored = TRUE + E.density = TRUE E.invisibility = 0 var/obj/effect/energy_field/E = created_field[1] diff --git a/code/modules/xenoarcheaology/finds/fossils.dm b/code/modules/xenoarcheaology/finds/fossils.dm index 89d83efa4e9..5448db97f2e 100644 --- a/code/modules/xenoarcheaology/finds/fossils.dm +++ b/code/modules/xenoarcheaology/finds/fossils.dm @@ -64,7 +64,7 @@ usr = user icon_state = "skel" src.bstate = 1 - src.density = 1 + src.density = TRUE src.name = "alien skeleton display" if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'." diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm index 69aa73a02f4..02a5096b984 100644 --- a/code/modules/xenoarcheaology/finds/special.dm +++ b/code/modules/xenoarcheaology/finds/special.dm @@ -170,7 +170,7 @@ name = "shadow wight" icon = 'icons/mob/mob.dmi' icon_state = "shade" - density = 1 + density = TRUE /obj/effect/shadow_wight/New() START_PROCESSING(SSobj, src) diff --git a/code/modules/xenoarcheaology/sampling.dm b/code/modules/xenoarcheaology/sampling.dm index 3cdea12960e..f9fc735f2ef 100644 --- a/code/modules/xenoarcheaology/sampling.dm +++ b/code/modules/xenoarcheaology/sampling.dm @@ -5,7 +5,7 @@ icon_state = "sliver1" randpixel = 8 w_class = ITEMSIZE_TINY - sharp = 1 + sharp = TRUE var/datum/geosample/geological_data /obj/item/weapon/rocksliver/New() diff --git a/code/modules/xenoarcheaology/tools/artifact_analyser.dm b/code/modules/xenoarcheaology/tools/artifact_analyser.dm index 090bef1c289..44afa6ea2c7 100644 --- a/code/modules/xenoarcheaology/tools/artifact_analyser.dm +++ b/code/modules/xenoarcheaology/tools/artifact_analyser.dm @@ -3,8 +3,8 @@ desc = "Studies the emissions of anomalous materials to discover their uses." icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "isolator" - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE var/scan_in_progress = 0 var/scan_num = 0 var/obj/scanned_obj @@ -72,7 +72,7 @@ if(A.being_used) artifact_in_use = 1 else - A.anchored = 1 + A.anchored = TRUE A.being_used = 1 if(artifact_in_use) @@ -113,7 +113,7 @@ if(scanned_object && istype(scanned_object, /obj/machinery/artifact)) var/obj/machinery/artifact/A = scanned_object - A.anchored = 0 + A.anchored = FALSE A.being_used = 0 scanned_object = null diff --git a/code/modules/xenoarcheaology/tools/artifact_harvester.dm b/code/modules/xenoarcheaology/tools/artifact_harvester.dm index b149b52ec1e..05aa87442d0 100644 --- a/code/modules/xenoarcheaology/tools/artifact_harvester.dm +++ b/code/modules/xenoarcheaology/tools/artifact_harvester.dm @@ -2,8 +2,8 @@ name = "Exotic Particle Harvester" icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "incubator" //incubator_on - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE idle_power_usage = 50 active_power_usage = 750 use_power = USE_POWER_IDLE @@ -85,7 +85,7 @@ if(harvesting < 0 && inserted_battery.battery_effect && inserted_battery.battery_effect.activated) inserted_battery.battery_effect.ToggleActivate() harvesting = 0 - cur_artifact.anchored = 0 + cur_artifact.anchored = FALSE cur_artifact.being_used = 0 cur_artifact = null atom_say("Energy harvesting interrupted.") @@ -196,7 +196,7 @@ if(source_effect) harvesting = 1 update_use_power(USE_POWER_ACTIVE) - cur_artifact.anchored = 1 + cur_artifact.anchored = TRUE cur_artifact.being_used = 1 icon_state = "incubator_on" atom_say("Beginning energy harvesting.") @@ -228,7 +228,7 @@ if(inserted_battery.stored_charge >= inserted_battery.capacity) update_use_power(USE_POWER_IDLE) harvesting = 0 - cur_artifact.anchored = 0 + cur_artifact.anchored = FALSE cur_artifact.being_used = 0 cur_artifact = null src.visible_message("[name] states, \"Battery is full.\"") diff --git a/code/modules/xenoarcheaology/tools/artifact_scanner.dm b/code/modules/xenoarcheaology/tools/artifact_scanner.dm index c5bdfe015ab..2b1a1196caf 100644 --- a/code/modules/xenoarcheaology/tools/artifact_scanner.dm +++ b/code/modules/xenoarcheaology/tools/artifact_scanner.dm @@ -3,5 +3,5 @@ desc = "Place things here for scanning." icon = 'icons/obj/stationobjs.dmi' icon_state = "tele0" - anchored = 1 - density = 0 + anchored = TRUE + density = FALSE diff --git a/code/modules/xenoarcheaology/tools/equipment.dm b/code/modules/xenoarcheaology/tools/equipment.dm index b241f714be3..2cdc3e5d0e3 100644 --- a/code/modules/xenoarcheaology/tools/equipment.dm +++ b/code/modules/xenoarcheaology/tools/equipment.dm @@ -1,10 +1,9 @@ /obj/item/clothing/suit/bio_suit/anomaly name = "Anomaly suit" desc = "A sealed bio suit capable of insulating against exotic alien energies." - icon = 'icons/obj/clothing/spacesuits.dmi' + icon = 'icons/inventory/suit/item.dmi' icon_state = "engspace_suit" item_state = "engspace_suit" - update_icon_define = "icons/mob/spacesuit.dmi" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100) max_pressure_protection = 5 * ONE_ATMOSPHERE // Not very good protection, but if an anomaly starts doing gas stuff you're not screwed min_pressure_protection = 0.4 * ONE_ATMOSPHERE diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm index d6711db804d..dc634789bf9 100644 --- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm +++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm @@ -1,8 +1,8 @@ /obj/machinery/radiocarbon_spectrometer name = "radiocarbon spectrometer" desc = "A specialised, complex scanner for gleaning information on all manner of small things." - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE icon = 'icons/obj/virology_vr.dmi' //VOREStation Edit icon_state = "analyser" diff --git a/code/modules/xenoarcheaology/tools/suspension_generator.dm b/code/modules/xenoarcheaology/tools/suspension_generator.dm index cd39d0e1815..08d41fc1213 100644 --- a/code/modules/xenoarcheaology/tools/suspension_generator.dm +++ b/code/modules/xenoarcheaology/tools/suspension_generator.dm @@ -3,7 +3,7 @@ desc = "It has stubby legs bolted up against it's body for stabilising." icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "suspension2" - density = 1 + density = TRUE req_access = list(access_research) var/obj/item/weapon/cell/cell var/locked = TRUE @@ -95,9 +95,9 @@ else if(W.is_wrench()) if(!suspension_field) if(anchored) - anchored = 0 + anchored = FALSE else - anchored = 1 + anchored = TRUE playsound(src, W.usesound, 50, 1) to_chat(user, "You wrench the stabilising legs [anchored ? "into place" : "up against the body"].") if(anchored) @@ -198,8 +198,8 @@ /obj/effect/suspension_field name = "energy field" icon = 'icons/effects/effects.dmi' - anchored = 1 - density = 1 + anchored = TRUE + density = TRUE /obj/effect/suspension_field/Destroy() for(var/atom/movable/I in src) diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm index cde8d83d31b..9945c8a2000 100644 --- a/code/modules/xenoarcheaology/tools/tools.dm +++ b/code/modules/xenoarcheaology/tools/tools.dm @@ -58,8 +58,7 @@ var/turf/cur_turf = get_turf(src) if(SSxenoarch) //Sanity check due to runtimes ~Z - for(var/A in SSxenoarch.artifact_spawning_turfs) - var/turf/simulated/mineral/T = A + for(var/turf/simulated/mineral/T as anything in SSxenoarch.artifact_spawning_turfs) if(T.density && T.artifact_find) if(T.z == cur_turf.z) var/cur_dist = get_dist(cur_turf, T) * 2 @@ -69,8 +68,7 @@ else SSxenoarch.artifact_spawning_turfs.Remove(T) - for(var/A in SSxenoarch.digsite_spawning_turfs) - var/turf/simulated/mineral/T = A + for(var/turf/simulated/mineral/T as anything in SSxenoarch.digsite_spawning_turfs) if(T.density && T.finds && T.finds.len) if(T.z == cur_turf.z) var/cur_dist = get_dist(cur_turf, T) * 2 diff --git a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm index 7962976a0e5..ddca8b6fe51 100644 --- a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm +++ b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm @@ -125,7 +125,7 @@ /obj/item/weapon/pickaxe/hand) max_storage_space = ITEMSIZE_COST_SMALL * 9 max_w_class = ITEMSIZE_SMALL - use_to_pickup = 1 + use_to_pickup = TRUE /obj/item/weapon/storage/excavation/New() ..() diff --git a/code/modules/xenobio2/machinery/core_extractor.dm b/code/modules/xenobio2/machinery/core_extractor.dm index 01068e4cd19..4a6b8651e28 100644 --- a/code/modules/xenobio2/machinery/core_extractor.dm +++ b/code/modules/xenobio2/machinery/core_extractor.dm @@ -8,8 +8,8 @@ desc = "A machine for cutting up slimes to get to their cores." icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "scanner_0old" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/slimeextractor var/inuse var/mob/living/simple_mob/xeno/slime/occupant = null diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm index 4438c60fdf7..c896f14309a 100644 --- a/code/modules/xenobio2/machinery/gene_manipulators.dm +++ b/code/modules/xenobio2/machinery/gene_manipulators.dm @@ -40,8 +40,8 @@ new /obj/item/weapon/disk/xenobio(src) /obj/machinery/xenobio - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE var/obj/item/weapon/disk/xenobio/loaded_disk //Currently loaded data disk. diff --git a/code/modules/xenobio2/machinery/injector.dm b/code/modules/xenobio2/machinery/injector.dm index 2c0454a8e22..3e31b54cd81 100644 --- a/code/modules/xenobio2/machinery/injector.dm +++ b/code/modules/xenobio2/machinery/injector.dm @@ -8,8 +8,8 @@ /obj/machinery/xenobio2/manualinjector name = "biological injector" desc = "Injects biological organisms that are inserted with the contents of an inserted beaker at the command of a remote computer." - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE use_power = USE_POWER_IDLE icon = 'icons/obj/biogenerator.dmi' icon_state = "biogen-work" diff --git a/code/modules/xenobio2/machinery/slime_replicator.dm b/code/modules/xenobio2/machinery/slime_replicator.dm index b5e49b7c62e..f845ad6e8d8 100644 --- a/code/modules/xenobio2/machinery/slime_replicator.dm +++ b/code/modules/xenobio2/machinery/slime_replicator.dm @@ -8,8 +8,8 @@ desc = "A machine for creating slimes from cores. Amazing!" icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "restruct_0" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE circuit = /obj/item/weapon/circuitboard/slimereplicator var/obj/item/xenoproduct/slime/core/core = null var/inuse diff --git a/code/modules/xenobio2/mob/slime/slime.dm b/code/modules/xenobio2/mob/slime/slime.dm index 3d52c053d87..a3fca442d5d 100644 --- a/code/modules/xenobio2/mob/slime/slime.dm +++ b/code/modules/xenobio2/mob/slime/slime.dm @@ -82,7 +82,7 @@ Slime definitions, Life and New live here. /mob/living/simple_mob/xeno/slime/New() ..() - for(var/datum/language/L in (typesof(/datum/language) - /datum/language)) + for(var/datum/language/L in subtypesof(/datum/language)) languages += L speak += "[station_name()]?" traitdat.source = "Slime" diff --git a/code/modules/xgm/xgm_gas_data.dm b/code/modules/xgm/xgm_gas_data.dm index 4ee3e1c5011..42c508c4f64 100644 --- a/code/modules/xgm/xgm_gas_data.dm +++ b/code/modules/xgm/xgm_gas_data.dm @@ -29,7 +29,7 @@ /hook/startup/proc/generateGasData() gas_data = new - for(var/p in (typesof(/decl/xgm_gas) - /decl/xgm_gas)) + for(var/p in subtypesof(/decl/xgm_gas)) var/decl/xgm_gas/gas = new p //avoid initial() because of potential New() actions if(gas.id in gas_data.gases) diff --git a/code/unit_tests/integrated_circuits/prefabs.dm b/code/unit_tests/integrated_circuits/prefabs.dm index 04b31366406..1436e7d097f 100644 --- a/code/unit_tests/integrated_circuits/prefabs.dm +++ b/code/unit_tests/integrated_circuits/prefabs.dm @@ -10,8 +10,7 @@ var/available_size = initial(assembly.max_components) var/available_complexity = initial(assembly.max_complexity) - for(var/ic in prefab.integrated_circuits) - var/datum/ic_assembly_integrated_circuits/iaic = ic + for(var/datum/ic_assembly_integrated_circuits/iaic as anything in prefab.integrated_circuits) var/obj/item/integrated_circuit/circuit = iaic.circuit_type available_size -= initial(circuit.size) available_complexity -= initial(circuit.complexity) diff --git a/code/unit_tests/loadout_tests.dm b/code/unit_tests/loadout_tests.dm index aba71842298..f6bfd19d5a9 100644 --- a/code/unit_tests/loadout_tests.dm +++ b/code/unit_tests/loadout_tests.dm @@ -3,8 +3,7 @@ /datum/unit_test/loadout_test_shall_have_name_cost_path/start_test() var/failed = 0 - for(var/geartype in typesof(/datum/gear) - /datum/gear) - var/datum/gear/G = geartype + for(var/datum/gear/G as anything in subtypesof(/datum/gear)) if(!initial(G.display_name)) log_unit_test("[G]: Loadout - Missing display name.") diff --git a/code/unit_tests/material_tests.dm b/code/unit_tests/material_tests.dm new file mode 100644 index 00000000000..e3c80b6cd32 --- /dev/null +++ b/code/unit_tests/material_tests.dm @@ -0,0 +1,19 @@ +/datum/unit_test/materials_shall_have_names + name = "MATERIALS: Materials Shall Have All Names" + +/datum/unit_test/materials_shall_have_names/start_test() + var/list/failures = list() + populate_material_list() + for(var/name in global.name_to_material) + var/datum/material/mat = global.name_to_material[name] + if(!mat) + continue // how did we get here? + if(!mat.display_name || !mat.use_name || !mat.sheet_singular_name || !mat.sheet_plural_name || !mat.sheet_collective_name) + failures[name] = mat.type + + if(length(failures)) + fail("[length(failures)] material\s had missing name strings: [english_list(failures)].") + else + pass("All materials had all their name strings.") + + return TRUE diff --git a/code/unit_tests/research_tests.dm b/code/unit_tests/research_tests.dm index 9d0174cabe3..09de5aaca6e 100644 --- a/code/unit_tests/research_tests.dm +++ b/code/unit_tests/research_tests.dm @@ -47,7 +47,7 @@ /datum/unit_test/research_designs_have_valid_materials/start_test() var/number_of_issues = 0 - for(var/design_type in typesof(/datum/design) - /datum/design) + for(var/design_type in subtypesof(/datum/design)) var/datum/design/design = design_type if(initial(design.id) == "id") continue diff --git a/code/unit_tests/unit_test.dm b/code/unit_tests/unit_test.dm index e775f6f763f..7d7dee16173 100644 --- a/code/unit_tests/unit_test.dm +++ b/code/unit_tests/unit_test.dm @@ -30,7 +30,7 @@ var/total_unit_tests = 0 log_unit_test("Initializing Unit Testing") if(!ticker) - crash_with("No Ticker") + stack_trace("No Ticker") world.Del() var/said_msg = 0 diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index e10245339a2..ac0a80f2d36 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -30,6 +30,7 @@ funnyman2003 - Xenochimera greennyy - Protean hawkerthegreat - Vox hollifex - Diona +huenererschrecker - Xenochimera h0lysquirr3l - Protean idcaboutaname - Protean inuzari - Diona @@ -91,6 +92,7 @@ terrestris - Common Skrellian terrestris - High Skrellian timidvi - Diona thedavestdave - Protean +trifireblade - Protean trikonei - Protean umbrenos - Black-Eyed Shadekin varonis - Xenochimera @@ -102,6 +104,7 @@ voidalynx - Protean wickedtemp - Shadekin Empathy xioen - Diona xioen - Xenochimera +xioen - Protean xonkon - Protean zalvine - Shadekin Empathy zammyman215 - Vox diff --git a/icons/_nanomaps/tether_nanomap_z1.png b/icons/_nanomaps/tether_nanomap_z1.png index 8258aa32bb8..e1fa895cd95 100644 Binary files a/icons/_nanomaps/tether_nanomap_z1.png and b/icons/_nanomaps/tether_nanomap_z1.png differ diff --git a/icons/_nanomaps/tether_nanomap_z2.png b/icons/_nanomaps/tether_nanomap_z2.png index 6f8f1c88925..3c49153eb64 100644 Binary files a/icons/_nanomaps/tether_nanomap_z2.png and b/icons/_nanomaps/tether_nanomap_z2.png differ diff --git a/icons/_nanomaps/tether_nanomap_z3.png b/icons/_nanomaps/tether_nanomap_z3.png index 992f0c9c37c..6dd5c295e73 100644 Binary files a/icons/_nanomaps/tether_nanomap_z3.png and b/icons/_nanomaps/tether_nanomap_z3.png differ diff --git a/icons/_nanomaps/tether_nanomap_z4.png b/icons/_nanomaps/tether_nanomap_z4.png index eb95d89199c..510d22b3d61 100644 Binary files a/icons/_nanomaps/tether_nanomap_z4.png and b/icons/_nanomaps/tether_nanomap_z4.png differ diff --git a/icons/_nanomaps/tether_nanomap_z5.png b/icons/_nanomaps/tether_nanomap_z5.png index a1281e42f9d..228a581f504 100644 Binary files a/icons/_nanomaps/tether_nanomap_z5.png and b/icons/_nanomaps/tether_nanomap_z5.png differ diff --git a/icons/inventory/accessory/item.dmi b/icons/inventory/accessory/item.dmi new file mode 100644 index 00000000000..61e8c368412 Binary files /dev/null and b/icons/inventory/accessory/item.dmi differ diff --git a/icons/obj/clothing/ties_vr.dmi b/icons/inventory/accessory/item_vr.dmi similarity index 100% rename from icons/obj/clothing/ties_vr.dmi rename to icons/inventory/accessory/item_vr.dmi diff --git a/icons/mob/ties.dmi b/icons/inventory/accessory/mob.dmi similarity index 100% rename from icons/mob/ties.dmi rename to icons/inventory/accessory/mob.dmi diff --git a/icons/mob/species/teshari/ties.dmi b/icons/inventory/accessory/mob_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/ties.dmi rename to icons/inventory/accessory/mob_teshari.dmi diff --git a/icons/mob/ties_vr.dmi b/icons/inventory/accessory/mob_vr.dmi similarity index 100% rename from icons/mob/ties_vr.dmi rename to icons/inventory/accessory/mob_vr.dmi diff --git a/icons/mob/species/teshari/ties_vr.dmi b/icons/inventory/accessory/mob_vr_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/ties_vr.dmi rename to icons/inventory/accessory/mob_vr_teshari.dmi diff --git a/icons/mob/species/werebeast/ears.dmi b/icons/inventory/accessory/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/ears.dmi rename to icons/inventory/accessory/mob_vr_werebeast.dmi diff --git a/icons/obj/clothing/backpack.dmi b/icons/inventory/back/item.dmi similarity index 100% rename from icons/obj/clothing/backpack.dmi rename to icons/inventory/back/item.dmi diff --git a/icons/obj/clothing/backpack_vr.dmi b/icons/inventory/back/item_vr.dmi similarity index 100% rename from icons/obj/clothing/backpack_vr.dmi rename to icons/inventory/back/item_vr.dmi diff --git a/icons/inventory/back/mob.dmi b/icons/inventory/back/mob.dmi new file mode 100644 index 00000000000..755a2d75d42 Binary files /dev/null and b/icons/inventory/back/mob.dmi differ diff --git a/icons/inventory/back/mob_teshari.dmi b/icons/inventory/back/mob_teshari.dmi new file mode 100644 index 00000000000..bdec7b14677 Binary files /dev/null and b/icons/inventory/back/mob_teshari.dmi differ diff --git a/icons/mob/back_vr.dmi b/icons/inventory/back/mob_vr.dmi similarity index 100% rename from icons/mob/back_vr.dmi rename to icons/inventory/back/mob_vr.dmi diff --git a/icons/mob/species/werebeast/back.dmi b/icons/inventory/back/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/back.dmi rename to icons/inventory/back/mob_vr_werebeast.dmi diff --git a/icons/inventory/belt/item.dmi b/icons/inventory/belt/item.dmi new file mode 100644 index 00000000000..9fd819307a1 Binary files /dev/null and b/icons/inventory/belt/item.dmi differ diff --git a/icons/obj/clothing/belts_vr.dmi b/icons/inventory/belt/item_vr.dmi similarity index 100% rename from icons/obj/clothing/belts_vr.dmi rename to icons/inventory/belt/item_vr.dmi diff --git a/icons/mob/belt.dmi b/icons/inventory/belt/mob.dmi similarity index 100% rename from icons/mob/belt.dmi rename to icons/inventory/belt/mob.dmi diff --git a/icons/mob/species/teshari/belt.dmi b/icons/inventory/belt/mob_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/belt.dmi rename to icons/inventory/belt/mob_teshari.dmi diff --git a/icons/mob/belt_vr.dmi b/icons/inventory/belt/mob_vr.dmi similarity index 100% rename from icons/mob/belt_vr.dmi rename to icons/inventory/belt/mob_vr.dmi diff --git a/icons/mob/species/werebeast/belt.dmi b/icons/inventory/belt/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/belt.dmi rename to icons/inventory/belt/mob_vr_werebeast.dmi diff --git a/icons/obj/clothing/ears.dmi b/icons/inventory/ears/item.dmi similarity index 100% rename from icons/obj/clothing/ears.dmi rename to icons/inventory/ears/item.dmi diff --git a/icons/mob/ears.dmi b/icons/inventory/ears/mob.dmi similarity index 100% rename from icons/mob/ears.dmi rename to icons/inventory/ears/mob.dmi diff --git a/icons/mob/species/teshari/ears.dmi b/icons/inventory/ears/mob_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/ears.dmi rename to icons/inventory/ears/mob_teshari.dmi diff --git a/icons/mob/species/werebeast/ties.dmi b/icons/inventory/ears/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/ties.dmi rename to icons/inventory/ears/mob_vr_werebeast.dmi diff --git a/icons/inventory/eyes/item.dmi b/icons/inventory/eyes/item.dmi new file mode 100644 index 00000000000..768235110b4 Binary files /dev/null and b/icons/inventory/eyes/item.dmi differ diff --git a/icons/obj/clothing/glasses_vr.dmi b/icons/inventory/eyes/item_vr.dmi similarity index 100% rename from icons/obj/clothing/glasses_vr.dmi rename to icons/inventory/eyes/item_vr.dmi diff --git a/icons/inventory/eyes/mob.dmi b/icons/inventory/eyes/mob.dmi new file mode 100644 index 00000000000..70113e3d8c5 Binary files /dev/null and b/icons/inventory/eyes/mob.dmi differ diff --git a/icons/inventory/eyes/mob_teshari.dmi b/icons/inventory/eyes/mob_teshari.dmi new file mode 100644 index 00000000000..fafb8b62fc8 Binary files /dev/null and b/icons/inventory/eyes/mob_teshari.dmi differ diff --git a/icons/inventory/eyes/mob_vox.dmi b/icons/inventory/eyes/mob_vox.dmi new file mode 100644 index 00000000000..e021abfd672 Binary files /dev/null and b/icons/inventory/eyes/mob_vox.dmi differ diff --git a/icons/mob/eyes_vr.dmi b/icons/inventory/eyes/mob_vr.dmi similarity index 100% rename from icons/mob/eyes_vr.dmi rename to icons/inventory/eyes/mob_vr.dmi diff --git a/icons/mob/species/werebeast/eyes.dmi b/icons/inventory/eyes/mob_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/eyes.dmi rename to icons/inventory/eyes/mob_werebeast.dmi diff --git a/icons/obj/clothing/masks.dmi b/icons/inventory/face/item.dmi similarity index 81% rename from icons/obj/clothing/masks.dmi rename to icons/inventory/face/item.dmi index d7daacb379e..5bde3b32d46 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/inventory/face/item.dmi differ diff --git a/icons/obj/clothing/masks_vr.dmi b/icons/inventory/face/item_vr.dmi similarity index 100% rename from icons/obj/clothing/masks_vr.dmi rename to icons/inventory/face/item_vr.dmi diff --git a/icons/mob/mask.dmi b/icons/inventory/face/mob.dmi similarity index 100% rename from icons/mob/mask.dmi rename to icons/inventory/face/mob.dmi diff --git a/icons/mob/species/tajaran/mask.dmi b/icons/inventory/face/mob_tajaran.dmi similarity index 100% rename from icons/mob/species/tajaran/mask.dmi rename to icons/inventory/face/mob_tajaran.dmi diff --git a/icons/mob/species/teshari/masks.dmi b/icons/inventory/face/mob_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/masks.dmi rename to icons/inventory/face/mob_teshari.dmi diff --git a/icons/mob/species/unathi/mask.dmi b/icons/inventory/face/mob_unathi.dmi similarity index 100% rename from icons/mob/species/unathi/mask.dmi rename to icons/inventory/face/mob_unathi.dmi diff --git a/icons/mob/species/vox/masks.dmi b/icons/inventory/face/mob_vox.dmi similarity index 100% rename from icons/mob/species/vox/masks.dmi rename to icons/inventory/face/mob_vox.dmi diff --git a/icons/mob/mask_vr.dmi b/icons/inventory/face/mob_vr.dmi similarity index 100% rename from icons/mob/mask_vr.dmi rename to icons/inventory/face/mob_vr.dmi diff --git a/icons/mob/species/akula/mask_vr.dmi b/icons/inventory/face/mob_vr_akula.dmi similarity index 100% rename from icons/mob/species/akula/mask_vr.dmi rename to icons/inventory/face/mob_vr_akula.dmi diff --git a/icons/mob/species/fennec/mask_vr.dmi b/icons/inventory/face/mob_vr_fennec.dmi similarity index 100% rename from icons/mob/species/fennec/mask_vr.dmi rename to icons/inventory/face/mob_vr_fennec.dmi diff --git a/icons/mob/species/fox/mask_vr.dmi b/icons/inventory/face/mob_vr_fox.dmi similarity index 100% rename from icons/mob/species/fox/mask_vr.dmi rename to icons/inventory/face/mob_vr_fox.dmi diff --git a/icons/mob/species/nevrean/mask_vr.dmi b/icons/inventory/face/mob_vr_nevrean.dmi similarity index 100% rename from icons/mob/species/nevrean/mask_vr.dmi rename to icons/inventory/face/mob_vr_nevrean.dmi diff --git a/icons/mob/species/sergal/mask_vr.dmi b/icons/inventory/face/mob_vr_sergal.dmi similarity index 100% rename from icons/mob/species/sergal/mask_vr.dmi rename to icons/inventory/face/mob_vr_sergal.dmi diff --git a/icons/mob/species/tajaran/mask_vr.dmi b/icons/inventory/face/mob_vr_tajaran.dmi similarity index 100% rename from icons/mob/species/tajaran/mask_vr.dmi rename to icons/inventory/face/mob_vr_tajaran.dmi diff --git a/icons/mob/species/teshari/masks_vr.dmi b/icons/inventory/face/mob_vr_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/masks_vr.dmi rename to icons/inventory/face/mob_vr_teshari.dmi diff --git a/icons/mob/species/unathi/mask_vr.dmi b/icons/inventory/face/mob_vr_unathi.dmi similarity index 100% rename from icons/mob/species/unathi/mask_vr.dmi rename to icons/inventory/face/mob_vr_unathi.dmi diff --git a/icons/mob/species/vulpkanin/mask.dmi b/icons/inventory/face/mob_vr_vulpkanin.dmi similarity index 100% rename from icons/mob/species/vulpkanin/mask.dmi rename to icons/inventory/face/mob_vr_vulpkanin.dmi diff --git a/icons/mob/species/werebeast/masks.dmi b/icons/inventory/face/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/masks.dmi rename to icons/inventory/face/mob_vr_werebeast.dmi diff --git a/icons/obj/clothing/shoes.dmi b/icons/inventory/feet/item.dmi similarity index 100% rename from icons/obj/clothing/shoes.dmi rename to icons/inventory/feet/item.dmi diff --git a/icons/inventory/feet/item_vr.dmi b/icons/inventory/feet/item_vr.dmi new file mode 100644 index 00000000000..ef79bb38c99 Binary files /dev/null and b/icons/inventory/feet/item_vr.dmi differ diff --git a/icons/mob/feet.dmi b/icons/inventory/feet/mob.dmi similarity index 100% rename from icons/mob/feet.dmi rename to icons/inventory/feet/mob.dmi diff --git a/icons/mob/species/teshari/shoes.dmi b/icons/inventory/feet/mob_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/shoes.dmi rename to icons/inventory/feet/mob_teshari.dmi diff --git a/icons/mob/species/vox/shoes.dmi b/icons/inventory/feet/mob_vox.dmi similarity index 100% rename from icons/mob/species/vox/shoes.dmi rename to icons/inventory/feet/mob_vox.dmi diff --git a/icons/inventory/feet/mob_vr.dmi b/icons/inventory/feet/mob_vr.dmi new file mode 100644 index 00000000000..f341eb6f283 Binary files /dev/null and b/icons/inventory/feet/mob_vr.dmi differ diff --git a/icons/mob/species/werebeast/feet.dmi b/icons/inventory/feet/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/feet.dmi rename to icons/inventory/feet/mob_vr_werebeast.dmi diff --git a/icons/obj/clothing/gloves.dmi b/icons/inventory/hands/item.dmi similarity index 62% rename from icons/obj/clothing/gloves.dmi rename to icons/inventory/hands/item.dmi index bfb27a0ec86..9949cefb10e 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/inventory/hands/item.dmi differ diff --git a/icons/inventory/hands/item_vr.dmi b/icons/inventory/hands/item_vr.dmi new file mode 100644 index 00000000000..749d4df189c Binary files /dev/null and b/icons/inventory/hands/item_vr.dmi differ diff --git a/icons/mob/hands.dmi b/icons/inventory/hands/mob.dmi similarity index 100% rename from icons/mob/hands.dmi rename to icons/inventory/hands/mob.dmi diff --git a/icons/mob/species/teshari/gloves.dmi b/icons/inventory/hands/mob_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/gloves.dmi rename to icons/inventory/hands/mob_teshari.dmi diff --git a/icons/mob/species/vox/gloves.dmi b/icons/inventory/hands/mob_vox.dmi similarity index 100% rename from icons/mob/species/vox/gloves.dmi rename to icons/inventory/hands/mob_vox.dmi diff --git a/icons/inventory/hands/mob_vr.dmi b/icons/inventory/hands/mob_vr.dmi new file mode 100644 index 00000000000..3a8806e48c8 Binary files /dev/null and b/icons/inventory/hands/mob_vr.dmi differ diff --git a/icons/mob/species/werebeast/hands.dmi b/icons/inventory/hands/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/hands.dmi rename to icons/inventory/hands/mob_vr_werebeast.dmi diff --git a/icons/obj/clothing/hats.dmi b/icons/inventory/head/item.dmi similarity index 100% rename from icons/obj/clothing/hats.dmi rename to icons/inventory/head/item.dmi diff --git a/icons/obj/clothing/species/skrell/hats.dmi b/icons/inventory/head/item_skrell.dmi similarity index 97% rename from icons/obj/clothing/species/skrell/hats.dmi rename to icons/inventory/head/item_skrell.dmi index def79846d36..39772619322 100644 Binary files a/icons/obj/clothing/species/skrell/hats.dmi and b/icons/inventory/head/item_skrell.dmi differ diff --git a/icons/obj/clothing/species/tajaran/hats.dmi b/icons/inventory/head/item_tajaran.dmi similarity index 100% rename from icons/obj/clothing/species/tajaran/hats.dmi rename to icons/inventory/head/item_tajaran.dmi diff --git a/icons/obj/clothing/species/teshari/hats.dmi b/icons/inventory/head/item_teshari.dmi similarity index 100% rename from icons/obj/clothing/species/teshari/hats.dmi rename to icons/inventory/head/item_teshari.dmi diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/inventory/head/item_unathi.dmi similarity index 100% rename from icons/obj/clothing/species/unathi/hats.dmi rename to icons/inventory/head/item_unathi.dmi diff --git a/icons/obj/clothing/species/vox/hats.dmi b/icons/inventory/head/item_vox.dmi similarity index 100% rename from icons/obj/clothing/species/vox/hats.dmi rename to icons/inventory/head/item_vox.dmi diff --git a/icons/inventory/head/item_vr.dmi b/icons/inventory/head/item_vr.dmi new file mode 100644 index 00000000000..c80a9e2927c Binary files /dev/null and b/icons/inventory/head/item_vr.dmi differ diff --git a/icons/inventory/head/item_vr_akula.dmi b/icons/inventory/head/item_vr_akula.dmi new file mode 100644 index 00000000000..3fd5294057a Binary files /dev/null and b/icons/inventory/head/item_vr_akula.dmi differ diff --git a/icons/inventory/head/item_vr_sergal.dmi b/icons/inventory/head/item_vr_sergal.dmi new file mode 100644 index 00000000000..48908b9e396 Binary files /dev/null and b/icons/inventory/head/item_vr_sergal.dmi differ diff --git a/icons/inventory/head/item_vr_skrell.dmi b/icons/inventory/head/item_vr_skrell.dmi new file mode 100644 index 00000000000..9a23e59f203 Binary files /dev/null and b/icons/inventory/head/item_vr_skrell.dmi differ diff --git a/icons/inventory/head/item_vr_tajaran.dmi b/icons/inventory/head/item_vr_tajaran.dmi new file mode 100644 index 00000000000..2223bafae4a Binary files /dev/null and b/icons/inventory/head/item_vr_tajaran.dmi differ diff --git a/icons/mob/uniform_sleeves_rolled_vr.dmi b/icons/inventory/head/item_vr_teshari.dmi similarity index 100% rename from icons/mob/uniform_sleeves_rolled_vr.dmi rename to icons/inventory/head/item_vr_teshari.dmi diff --git a/icons/inventory/head/item_vr_unathi.dmi b/icons/inventory/head/item_vr_unathi.dmi new file mode 100644 index 00000000000..2223bafae4a Binary files /dev/null and b/icons/inventory/head/item_vr_unathi.dmi differ diff --git a/icons/inventory/head/item_vr_vulpkanin.dmi b/icons/inventory/head/item_vr_vulpkanin.dmi new file mode 100644 index 00000000000..b83b041501d Binary files /dev/null and b/icons/inventory/head/item_vr_vulpkanin.dmi differ diff --git a/icons/mob/head.dmi b/icons/inventory/head/mob.dmi similarity index 100% rename from icons/mob/head.dmi rename to icons/inventory/head/mob.dmi diff --git a/icons/mob/species/skrell/helmet.dmi b/icons/inventory/head/mob_skrell.dmi similarity index 100% rename from icons/mob/species/skrell/helmet.dmi rename to icons/inventory/head/mob_skrell.dmi diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/inventory/head/mob_tajaran.dmi similarity index 100% rename from icons/mob/species/tajaran/helmet.dmi rename to icons/inventory/head/mob_tajaran.dmi diff --git a/icons/mob/species/teshari/head.dmi b/icons/inventory/head/mob_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/head.dmi rename to icons/inventory/head/mob_teshari.dmi diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/inventory/head/mob_unathi.dmi similarity index 100% rename from icons/mob/species/unathi/helmet.dmi rename to icons/inventory/head/mob_unathi.dmi diff --git a/icons/mob/species/vox/head.dmi b/icons/inventory/head/mob_vox.dmi similarity index 100% rename from icons/mob/species/vox/head.dmi rename to icons/inventory/head/mob_vox.dmi diff --git a/icons/inventory/head/mob_vr.dmi b/icons/inventory/head/mob_vr.dmi new file mode 100644 index 00000000000..14c51c27481 Binary files /dev/null and b/icons/inventory/head/mob_vr.dmi differ diff --git a/icons/inventory/head/mob_vr_akula.dmi b/icons/inventory/head/mob_vr_akula.dmi new file mode 100644 index 00000000000..d030932919f Binary files /dev/null and b/icons/inventory/head/mob_vr_akula.dmi differ diff --git a/icons/inventory/head/mob_vr_sergal.dmi b/icons/inventory/head/mob_vr_sergal.dmi new file mode 100644 index 00000000000..4d5a35c047a Binary files /dev/null and b/icons/inventory/head/mob_vr_sergal.dmi differ diff --git a/icons/inventory/head/mob_vr_skrell.dmi b/icons/inventory/head/mob_vr_skrell.dmi new file mode 100644 index 00000000000..d3de0f973d4 Binary files /dev/null and b/icons/inventory/head/mob_vr_skrell.dmi differ diff --git a/icons/inventory/head/mob_vr_tajaran.dmi b/icons/inventory/head/mob_vr_tajaran.dmi new file mode 100644 index 00000000000..8f478fe37a1 Binary files /dev/null and b/icons/inventory/head/mob_vr_tajaran.dmi differ diff --git a/icons/mob/species/teshari/helmet_vr.dmi b/icons/inventory/head/mob_vr_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/helmet_vr.dmi rename to icons/inventory/head/mob_vr_teshari.dmi diff --git a/icons/inventory/head/mob_vr_unathi.dmi b/icons/inventory/head/mob_vr_unathi.dmi new file mode 100644 index 00000000000..9e05584157f Binary files /dev/null and b/icons/inventory/head/mob_vr_unathi.dmi differ diff --git a/icons/inventory/head/mob_vr_vulpkanin.dmi b/icons/inventory/head/mob_vr_vulpkanin.dmi new file mode 100644 index 00000000000..50001ce846e Binary files /dev/null and b/icons/inventory/head/mob_vr_vulpkanin.dmi differ diff --git a/icons/mob/species/werebeast/head.dmi b/icons/inventory/head/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/head.dmi rename to icons/inventory/head/mob_vr_werebeast.dmi diff --git a/icons/obj/clothing/pouches.dmi b/icons/inventory/pockets/item.dmi similarity index 100% rename from icons/obj/clothing/pouches.dmi rename to icons/inventory/pockets/item.dmi diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi new file mode 100644 index 00000000000..82ae3043078 Binary files /dev/null and b/icons/inventory/suit/item.dmi differ diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/inventory/suit/item_skrell.dmi similarity index 100% rename from icons/obj/clothing/species/skrell/suits.dmi rename to icons/inventory/suit/item_skrell.dmi diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/inventory/suit/item_tajaran.dmi similarity index 100% rename from icons/obj/clothing/species/tajaran/suits.dmi rename to icons/inventory/suit/item_tajaran.dmi diff --git a/icons/inventory/suit/item_teshari.dmi b/icons/inventory/suit/item_teshari.dmi new file mode 100644 index 00000000000..6867d8e45b2 Binary files /dev/null and b/icons/inventory/suit/item_teshari.dmi differ diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/inventory/suit/item_unathi.dmi similarity index 100% rename from icons/obj/clothing/species/unathi/suits.dmi rename to icons/inventory/suit/item_unathi.dmi diff --git a/icons/obj/clothing/species/vox/suits.dmi b/icons/inventory/suit/item_vox.dmi similarity index 100% rename from icons/obj/clothing/species/vox/suits.dmi rename to icons/inventory/suit/item_vox.dmi diff --git a/icons/inventory/suit/item_vr.dmi b/icons/inventory/suit/item_vr.dmi new file mode 100644 index 00000000000..30fc4669552 Binary files /dev/null and b/icons/inventory/suit/item_vr.dmi differ diff --git a/icons/inventory/suit/item_vr_akula.dmi b/icons/inventory/suit/item_vr_akula.dmi new file mode 100644 index 00000000000..4804ce6e4a9 Binary files /dev/null and b/icons/inventory/suit/item_vr_akula.dmi differ diff --git a/icons/inventory/suit/item_vr_sergal.dmi b/icons/inventory/suit/item_vr_sergal.dmi new file mode 100644 index 00000000000..1c30a0b6af4 Binary files /dev/null and b/icons/inventory/suit/item_vr_sergal.dmi differ diff --git a/icons/inventory/suit/item_vr_skrell.dmi b/icons/inventory/suit/item_vr_skrell.dmi new file mode 100644 index 00000000000..29b1dc6c747 Binary files /dev/null and b/icons/inventory/suit/item_vr_skrell.dmi differ diff --git a/icons/inventory/suit/item_vr_tajaran.dmi b/icons/inventory/suit/item_vr_tajaran.dmi new file mode 100644 index 00000000000..29b1dc6c747 Binary files /dev/null and b/icons/inventory/suit/item_vr_tajaran.dmi differ diff --git a/icons/obj/clothing/spacesuits_vr.dmi b/icons/inventory/suit/item_vr_teshari.dmi similarity index 100% rename from icons/obj/clothing/spacesuits_vr.dmi rename to icons/inventory/suit/item_vr_teshari.dmi diff --git a/icons/inventory/suit/item_vr_unathi.dmi b/icons/inventory/suit/item_vr_unathi.dmi new file mode 100644 index 00000000000..29b1dc6c747 Binary files /dev/null and b/icons/inventory/suit/item_vr_unathi.dmi differ diff --git a/icons/inventory/suit/item_vr_vulpkanin.dmi b/icons/inventory/suit/item_vr_vulpkanin.dmi new file mode 100644 index 00000000000..feeb780f605 Binary files /dev/null and b/icons/inventory/suit/item_vr_vulpkanin.dmi differ diff --git a/icons/inventory/suit/mob.dmi b/icons/inventory/suit/mob.dmi new file mode 100644 index 00000000000..f5c48376be7 Binary files /dev/null and b/icons/inventory/suit/mob.dmi differ diff --git a/icons/mob/species/skrell/suit.dmi b/icons/inventory/suit/mob_skrell.dmi similarity index 100% rename from icons/mob/species/skrell/suit.dmi rename to icons/inventory/suit/mob_skrell.dmi diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/inventory/suit/mob_tajaran.dmi similarity index 100% rename from icons/mob/species/tajaran/suit.dmi rename to icons/inventory/suit/mob_tajaran.dmi diff --git a/icons/inventory/suit/mob_teshari.dmi b/icons/inventory/suit/mob_teshari.dmi new file mode 100644 index 00000000000..749d678ef56 Binary files /dev/null and b/icons/inventory/suit/mob_teshari.dmi differ diff --git a/icons/mob/species/unathi/suit.dmi b/icons/inventory/suit/mob_unathi.dmi similarity index 100% rename from icons/mob/species/unathi/suit.dmi rename to icons/inventory/suit/mob_unathi.dmi diff --git a/icons/mob/species/vox/suit.dmi b/icons/inventory/suit/mob_vox.dmi similarity index 100% rename from icons/mob/species/vox/suit.dmi rename to icons/inventory/suit/mob_vox.dmi diff --git a/icons/inventory/suit/mob_vr.dmi b/icons/inventory/suit/mob_vr.dmi new file mode 100644 index 00000000000..4288fd03265 Binary files /dev/null and b/icons/inventory/suit/mob_vr.dmi differ diff --git a/icons/inventory/suit/mob_vr_akula.dmi b/icons/inventory/suit/mob_vr_akula.dmi new file mode 100644 index 00000000000..3ab9c20220b Binary files /dev/null and b/icons/inventory/suit/mob_vr_akula.dmi differ diff --git a/icons/inventory/suit/mob_vr_sergal.dmi b/icons/inventory/suit/mob_vr_sergal.dmi new file mode 100644 index 00000000000..66ed4830951 Binary files /dev/null and b/icons/inventory/suit/mob_vr_sergal.dmi differ diff --git a/icons/inventory/suit/mob_vr_skrell.dmi b/icons/inventory/suit/mob_vr_skrell.dmi new file mode 100644 index 00000000000..02832b4f2bd Binary files /dev/null and b/icons/inventory/suit/mob_vr_skrell.dmi differ diff --git a/icons/inventory/suit/mob_vr_tajaran.dmi b/icons/inventory/suit/mob_vr_tajaran.dmi new file mode 100644 index 00000000000..d409d0cf189 Binary files /dev/null and b/icons/inventory/suit/mob_vr_tajaran.dmi differ diff --git a/icons/mob/species/teshari/suit_vr.dmi b/icons/inventory/suit/mob_vr_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/suit_vr.dmi rename to icons/inventory/suit/mob_vr_teshari.dmi diff --git a/icons/inventory/suit/mob_vr_unathi.dmi b/icons/inventory/suit/mob_vr_unathi.dmi new file mode 100644 index 00000000000..a5dddccaa20 Binary files /dev/null and b/icons/inventory/suit/mob_vr_unathi.dmi differ diff --git a/icons/inventory/suit/mob_vr_vulpkanin.dmi b/icons/inventory/suit/mob_vr_vulpkanin.dmi new file mode 100644 index 00000000000..7d0e5376bdf Binary files /dev/null and b/icons/inventory/suit/mob_vr_vulpkanin.dmi differ diff --git a/icons/mob/species/werebeast/suit.dmi b/icons/inventory/suit/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/suit.dmi rename to icons/inventory/suit/mob_vr_werebeast.dmi diff --git a/icons/mob/belt_mirror.dmi b/icons/inventory/suit_store/mob.dmi similarity index 100% rename from icons/mob/belt_mirror.dmi rename to icons/inventory/suit_store/mob.dmi diff --git a/icons/mob/species/teshari/belt_mirror.dmi b/icons/inventory/suit_store/mob_teshari.dmi similarity index 100% rename from icons/mob/species/teshari/belt_mirror.dmi rename to icons/inventory/suit_store/mob_teshari.dmi diff --git a/icons/mob/species/werebeast/belt_mirror.dmi b/icons/inventory/suit_store/mob_vr_werebeast.dmi similarity index 100% rename from icons/mob/species/werebeast/belt_mirror.dmi rename to icons/inventory/suit_store/mob_vr_werebeast.dmi diff --git a/icons/inventory/uniform/item.dmi b/icons/inventory/uniform/item.dmi new file mode 100644 index 00000000000..08cc0cb8157 Binary files /dev/null and b/icons/inventory/uniform/item.dmi differ diff --git a/icons/inventory/uniform/item_teshari.dmi b/icons/inventory/uniform/item_teshari.dmi new file mode 100644 index 00000000000..4d53d7dad44 Binary files /dev/null and b/icons/inventory/uniform/item_teshari.dmi differ diff --git a/icons/inventory/uniform/item_vr.dmi b/icons/inventory/uniform/item_vr.dmi new file mode 100644 index 00000000000..e3242dda791 Binary files /dev/null and b/icons/inventory/uniform/item_vr.dmi differ diff --git a/icons/inventory/uniform/mob.dmi b/icons/inventory/uniform/mob.dmi new file mode 100644 index 00000000000..87cee8aca9c Binary files /dev/null and b/icons/inventory/uniform/mob.dmi differ diff --git a/icons/inventory/uniform/mob_rolled_down.dmi b/icons/inventory/uniform/mob_rolled_down.dmi new file mode 100644 index 00000000000..7c7afd85941 Binary files /dev/null and b/icons/inventory/uniform/mob_rolled_down.dmi differ diff --git a/icons/inventory/uniform/mob_sleeves_rolled.dmi b/icons/inventory/uniform/mob_sleeves_rolled.dmi new file mode 100644 index 00000000000..5803d1a3a1b Binary files /dev/null and b/icons/inventory/uniform/mob_sleeves_rolled.dmi differ diff --git a/icons/inventory/uniform/mob_teshari.dmi b/icons/inventory/uniform/mob_teshari.dmi new file mode 100644 index 00000000000..50790c3b69f Binary files /dev/null and b/icons/inventory/uniform/mob_teshari.dmi differ diff --git a/icons/inventory/uniform/mob_vox.dmi b/icons/inventory/uniform/mob_vox.dmi new file mode 100644 index 00000000000..870fa34d38f Binary files /dev/null and b/icons/inventory/uniform/mob_vox.dmi differ diff --git a/icons/inventory/uniform/mob_vr.dmi b/icons/inventory/uniform/mob_vr.dmi new file mode 100644 index 00000000000..3dc58ffd2c6 Binary files /dev/null and b/icons/inventory/uniform/mob_vr.dmi differ diff --git a/icons/inventory/uniform/mob_vr_rolled_down.dmi b/icons/inventory/uniform/mob_vr_rolled_down.dmi new file mode 100644 index 00000000000..8c82d1f7c25 Binary files /dev/null and b/icons/inventory/uniform/mob_vr_rolled_down.dmi differ diff --git a/icons/inventory/uniform/mob_vr_werebeast.dmi b/icons/inventory/uniform/mob_vr_werebeast.dmi new file mode 100644 index 00000000000..b1e9966b067 Binary files /dev/null and b/icons/inventory/uniform/mob_vr_werebeast.dmi differ diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi index f00110275dd..8f49d078a81 100644 Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 47ebeb11faf..fd99eed3f02 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi deleted file mode 100644 index bae46a47da1..00000000000 Binary files a/icons/mob/back.dmi and /dev/null differ diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index 0be51e7c5c7..70113e3d8c5 100644 Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ diff --git a/icons/mob/feet_vr.dmi b/icons/mob/feet_vr.dmi deleted file mode 100644 index b1fbd831a12..00000000000 Binary files a/icons/mob/feet_vr.dmi and /dev/null differ diff --git a/icons/mob/fox_vr.dmi b/icons/mob/fox_vr.dmi deleted file mode 100644 index 96b5164df54..00000000000 Binary files a/icons/mob/fox_vr.dmi and /dev/null differ diff --git a/icons/mob/hands_vr.dmi b/icons/mob/hands_vr.dmi deleted file mode 100644 index 36e42192895..00000000000 Binary files a/icons/mob/hands_vr.dmi and /dev/null differ diff --git a/icons/mob/head.dmi.orig b/icons/mob/head.dmi.orig deleted file mode 100644 index 1ac40803aae..00000000000 Binary files a/icons/mob/head.dmi.orig and /dev/null differ diff --git a/icons/mob/head_vr.dmi b/icons/mob/head_vr.dmi deleted file mode 100644 index 417faba92ca..00000000000 Binary files a/icons/mob/head_vr.dmi and /dev/null differ diff --git a/icons/mob/human_races/cyberlimbs/_fluff_vr/aronai.dmi b/icons/mob/human_races/cyberlimbs/_fluff_vr/aronai.dmi index 4d533fc8d31..50fcac9a56d 100644 Binary files a/icons/mob/human_races/cyberlimbs/_fluff_vr/aronai.dmi and b/icons/mob/human_races/cyberlimbs/_fluff_vr/aronai.dmi differ diff --git a/icons/mob/human_races/r_human.dmi b/icons/mob/human_races/r_human.dmi index bb9f4f2acf3..7e87a48de21 100644 Binary files a/icons/mob/human_races/r_human.dmi and b/icons/mob/human_races/r_human.dmi differ diff --git a/icons/mob/items/lefthand_holder.dmi b/icons/mob/items/lefthand_holder.dmi index 3003e5b5a6c..e7c1da2fd31 100644 Binary files a/icons/mob/items/lefthand_holder.dmi and b/icons/mob/items/lefthand_holder.dmi differ diff --git a/icons/mob/items/lefthand_melee.dmi b/icons/mob/items/lefthand_melee.dmi index 6889aa22b1f..1aca98f66fd 100644 Binary files a/icons/mob/items/lefthand_melee.dmi and b/icons/mob/items/lefthand_melee.dmi differ diff --git a/icons/mob/items/lefthand_suits.dmi b/icons/mob/items/lefthand_suits.dmi index d69739d40f4..aab06d09ee5 100644 Binary files a/icons/mob/items/lefthand_suits.dmi and b/icons/mob/items/lefthand_suits.dmi differ diff --git a/icons/mob/items/lefthand_suits_1.dmi b/icons/mob/items/lefthand_suits_1.dmi deleted file mode 100644 index 33e2d22930b..00000000000 Binary files a/icons/mob/items/lefthand_suits_1.dmi and /dev/null differ diff --git a/icons/mob/items/lefthand_uniforms.dmi b/icons/mob/items/lefthand_uniforms.dmi index 832613e04a0..29f70f0ec4b 100644 Binary files a/icons/mob/items/lefthand_uniforms.dmi and b/icons/mob/items/lefthand_uniforms.dmi differ diff --git a/icons/mob/items/lefthand_uniforms_1.dmi b/icons/mob/items/lefthand_uniforms_1.dmi deleted file mode 100644 index 280af8518b8..00000000000 Binary files a/icons/mob/items/lefthand_uniforms_1.dmi and /dev/null differ diff --git a/icons/mob/items/righthand_holder.dmi b/icons/mob/items/righthand_holder.dmi index a29bb598edb..cb874e61816 100644 Binary files a/icons/mob/items/righthand_holder.dmi and b/icons/mob/items/righthand_holder.dmi differ diff --git a/icons/mob/items/righthand_melee.dmi b/icons/mob/items/righthand_melee.dmi index 931b902bbe3..b4a1a9f3410 100644 Binary files a/icons/mob/items/righthand_melee.dmi and b/icons/mob/items/righthand_melee.dmi differ diff --git a/icons/mob/items/righthand_suits.dmi b/icons/mob/items/righthand_suits.dmi index 3e0d73d39de..6afe96f8067 100644 Binary files a/icons/mob/items/righthand_suits.dmi and b/icons/mob/items/righthand_suits.dmi differ diff --git a/icons/mob/items/righthand_suits_1.dmi b/icons/mob/items/righthand_suits_1.dmi deleted file mode 100644 index e5be8ffab62..00000000000 Binary files a/icons/mob/items/righthand_suits_1.dmi and /dev/null differ diff --git a/icons/mob/items/righthand_uniforms.dmi b/icons/mob/items/righthand_uniforms.dmi index e889b35aeec..877532b4cdb 100644 Binary files a/icons/mob/items/righthand_uniforms.dmi and b/icons/mob/items/righthand_uniforms.dmi differ diff --git a/icons/mob/items/righthand_uniforms_1.dmi b/icons/mob/items/righthand_uniforms_1.dmi deleted file mode 100644 index 1508f67bed8..00000000000 Binary files a/icons/mob/items/righthand_uniforms_1.dmi and /dev/null differ diff --git a/icons/mob/light_overlays.dmi b/icons/mob/light_overlays.dmi index 4260d9f16c4..2a0f5b153c5 100644 Binary files a/icons/mob/light_overlays.dmi and b/icons/mob/light_overlays.dmi differ diff --git a/icons/mob/pai_vr.dmi b/icons/mob/pai_vr.dmi index 45ee85a0662..0b8b985ff7c 100644 Binary files a/icons/mob/pai_vr.dmi and b/icons/mob/pai_vr.dmi differ diff --git a/icons/mob/pets.dmi b/icons/mob/pets.dmi new file mode 100644 index 00000000000..aefb954350b Binary files /dev/null and b/icons/mob/pets.dmi differ diff --git a/icons/mob/rig_back_vr.dmi b/icons/mob/rig_back_vr.dmi new file mode 100644 index 00000000000..9d36cd96946 Binary files /dev/null and b/icons/mob/rig_back_vr.dmi differ diff --git a/icons/mob/spacesuit.dmi b/icons/mob/spacesuit.dmi deleted file mode 100644 index 7d7c0c61cf1..00000000000 Binary files a/icons/mob/spacesuit.dmi and /dev/null differ diff --git a/icons/mob/spacesuit_vr.dmi b/icons/mob/spacesuit_vr.dmi deleted file mode 100644 index 836b3a623de..00000000000 Binary files a/icons/mob/spacesuit_vr.dmi and /dev/null differ diff --git a/icons/mob/species/akula/helmet_vr.dmi b/icons/mob/species/akula/helmet_vr.dmi deleted file mode 100644 index 5f74f6930cd..00000000000 Binary files a/icons/mob/species/akula/helmet_vr.dmi and /dev/null differ diff --git a/icons/mob/species/akula/suit_vr.dmi b/icons/mob/species/akula/suit_vr.dmi deleted file mode 100644 index 98767384b31..00000000000 Binary files a/icons/mob/species/akula/suit_vr.dmi and /dev/null differ diff --git a/icons/mob/species/sergal/helmet_vr.dmi b/icons/mob/species/sergal/helmet_vr.dmi deleted file mode 100644 index a890d2bb7d3..00000000000 Binary files a/icons/mob/species/sergal/helmet_vr.dmi and /dev/null differ diff --git a/icons/mob/species/sergal/suit_vr.dmi b/icons/mob/species/sergal/suit_vr.dmi deleted file mode 100644 index 8cdc3c2da07..00000000000 Binary files a/icons/mob/species/sergal/suit_vr.dmi and /dev/null differ diff --git a/icons/mob/species/skrell/helmet_vr.dmi b/icons/mob/species/skrell/helmet_vr.dmi deleted file mode 100644 index be0c1ce344f..00000000000 Binary files a/icons/mob/species/skrell/helmet_vr.dmi and /dev/null differ diff --git a/icons/mob/species/skrell/suit_vr.dmi b/icons/mob/species/skrell/suit_vr.dmi deleted file mode 100644 index ab071d50698..00000000000 Binary files a/icons/mob/species/skrell/suit_vr.dmi and /dev/null differ diff --git a/icons/mob/species/tajaran/helmet_vr.dmi b/icons/mob/species/tajaran/helmet_vr.dmi deleted file mode 100644 index 49cbece23f4..00000000000 Binary files a/icons/mob/species/tajaran/helmet_vr.dmi and /dev/null differ diff --git a/icons/mob/species/tajaran/suit_vr.dmi b/icons/mob/species/tajaran/suit_vr.dmi deleted file mode 100644 index c20178dacb8..00000000000 Binary files a/icons/mob/species/tajaran/suit_vr.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/back.dmi b/icons/mob/species/teshari/back.dmi deleted file mode 100644 index 9de0f3544c8..00000000000 Binary files a/icons/mob/species/teshari/back.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/deptcloak.dmi b/icons/mob/species/teshari/deptcloak.dmi deleted file mode 100644 index 7a9a4128537..00000000000 Binary files a/icons/mob/species/teshari/deptcloak.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/deptjacket.dmi b/icons/mob/species/teshari/deptjacket.dmi deleted file mode 100644 index 020415a61e4..00000000000 Binary files a/icons/mob/species/teshari/deptjacket.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/eyes.dmi b/icons/mob/species/teshari/eyes.dmi deleted file mode 100644 index 250a56d4f97..00000000000 Binary files a/icons/mob/species/teshari/eyes.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/suit.dmi b/icons/mob/species/teshari/suit.dmi deleted file mode 100644 index 714b0408a53..00000000000 Binary files a/icons/mob/species/teshari/suit.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/teshari_cloak.dmi b/icons/mob/species/teshari/teshari_cloak.dmi deleted file mode 100644 index a222ede26b1..00000000000 Binary files a/icons/mob/species/teshari/teshari_cloak.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/teshari_hood.dmi b/icons/mob/species/teshari/teshari_hood.dmi deleted file mode 100644 index 64ae2eced37..00000000000 Binary files a/icons/mob/species/teshari/teshari_hood.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/teshari_uniform.dmi b/icons/mob/species/teshari/teshari_uniform.dmi deleted file mode 100644 index 092f78a0e18..00000000000 Binary files a/icons/mob/species/teshari/teshari_uniform.dmi and /dev/null differ diff --git a/icons/mob/species/teshari/uniform.dmi b/icons/mob/species/teshari/uniform.dmi deleted file mode 100644 index aab4dcfe06d..00000000000 Binary files a/icons/mob/species/teshari/uniform.dmi and /dev/null differ diff --git a/icons/mob/species/unathi/helmet_vr.dmi b/icons/mob/species/unathi/helmet_vr.dmi deleted file mode 100644 index e10d5b31ae2..00000000000 Binary files a/icons/mob/species/unathi/helmet_vr.dmi and /dev/null differ diff --git a/icons/mob/species/unathi/suit_vr.dmi b/icons/mob/species/unathi/suit_vr.dmi deleted file mode 100644 index f1625306a74..00000000000 Binary files a/icons/mob/species/unathi/suit_vr.dmi and /dev/null differ diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi deleted file mode 100644 index 384fc15d996..00000000000 Binary files a/icons/mob/species/vox/eyes.dmi and /dev/null differ diff --git a/icons/mob/species/vox/uniform.dmi b/icons/mob/species/vox/uniform.dmi deleted file mode 100644 index fe53df15ed5..00000000000 Binary files a/icons/mob/species/vox/uniform.dmi and /dev/null differ diff --git a/icons/mob/species/vulpkanin/helmet.dmi b/icons/mob/species/vulpkanin/helmet.dmi deleted file mode 100644 index a800f5f951c..00000000000 Binary files a/icons/mob/species/vulpkanin/helmet.dmi and /dev/null differ diff --git a/icons/mob/species/vulpkanin/helmet_vr.dmi b/icons/mob/species/vulpkanin/helmet_vr.dmi deleted file mode 100644 index 7ccdf2a14cc..00000000000 Binary files a/icons/mob/species/vulpkanin/helmet_vr.dmi and /dev/null differ diff --git a/icons/mob/species/vulpkanin/suit.dmi b/icons/mob/species/vulpkanin/suit.dmi deleted file mode 100644 index 10604dc0b3a..00000000000 Binary files a/icons/mob/species/vulpkanin/suit.dmi and /dev/null differ diff --git a/icons/mob/species/vulpkanin/suit_vr.dmi b/icons/mob/species/vulpkanin/suit_vr.dmi deleted file mode 100644 index e0c20b6092f..00000000000 Binary files a/icons/mob/species/vulpkanin/suit_vr.dmi and /dev/null differ diff --git a/icons/mob/species/werebeast/uniform.dmi b/icons/mob/species/werebeast/uniform.dmi deleted file mode 100644 index 267847085fa..00000000000 Binary files a/icons/mob/species/werebeast/uniform.dmi and /dev/null differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi deleted file mode 100644 index 58b92c82dda..00000000000 Binary files a/icons/mob/suit.dmi and /dev/null differ diff --git a/icons/mob/suit_1.dmi b/icons/mob/suit_1.dmi deleted file mode 100644 index 7515beba12b..00000000000 Binary files a/icons/mob/suit_1.dmi and /dev/null differ diff --git a/icons/mob/suit_solgov.dmi b/icons/mob/suit_solgov.dmi deleted file mode 100644 index de20b89c178..00000000000 Binary files a/icons/mob/suit_solgov.dmi and /dev/null differ diff --git a/icons/mob/suit_vr.dmi b/icons/mob/suit_vr.dmi deleted file mode 100644 index 77862540b3a..00000000000 Binary files a/icons/mob/suit_vr.dmi and /dev/null differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi deleted file mode 100644 index 9c210eb641c..00000000000 Binary files a/icons/mob/uniform.dmi and /dev/null differ diff --git a/icons/mob/uniform_1.dmi b/icons/mob/uniform_1.dmi deleted file mode 100644 index 1f22a767b62..00000000000 Binary files a/icons/mob/uniform_1.dmi and /dev/null differ diff --git a/icons/mob/uniform_fat.dmi b/icons/mob/uniform_fat.dmi deleted file mode 100644 index c887239f1ff..00000000000 Binary files a/icons/mob/uniform_fat.dmi and /dev/null differ diff --git a/icons/mob/uniform_huge_old.dmi b/icons/mob/uniform_huge_old.dmi deleted file mode 100644 index 3bac93b933a..00000000000 Binary files a/icons/mob/uniform_huge_old.dmi and /dev/null differ diff --git a/icons/mob/uniform_rolled_down.dmi b/icons/mob/uniform_rolled_down.dmi deleted file mode 100644 index b5002751cf6..00000000000 Binary files a/icons/mob/uniform_rolled_down.dmi and /dev/null differ diff --git a/icons/mob/uniform_rolled_down_1.dmi b/icons/mob/uniform_rolled_down_1.dmi deleted file mode 100644 index 2412be7420b..00000000000 Binary files a/icons/mob/uniform_rolled_down_1.dmi and /dev/null differ diff --git a/icons/mob/uniform_rolled_down_vr.dmi b/icons/mob/uniform_rolled_down_vr.dmi deleted file mode 100644 index 726708d8222..00000000000 Binary files a/icons/mob/uniform_rolled_down_vr.dmi and /dev/null differ diff --git a/icons/mob/uniform_sleeves_rolled.dmi b/icons/mob/uniform_sleeves_rolled.dmi deleted file mode 100644 index 1c7c6ef7c39..00000000000 Binary files a/icons/mob/uniform_sleeves_rolled.dmi and /dev/null differ diff --git a/icons/mob/uniform_sleeves_rolled_1.dmi b/icons/mob/uniform_sleeves_rolled_1.dmi deleted file mode 100644 index 2412be7420b..00000000000 Binary files a/icons/mob/uniform_sleeves_rolled_1.dmi and /dev/null differ diff --git a/icons/mob/uniform_solgov.dmi b/icons/mob/uniform_solgov.dmi deleted file mode 100644 index ecc6310dc4f..00000000000 Binary files a/icons/mob/uniform_solgov.dmi and /dev/null differ diff --git a/icons/mob/uniform_vr.dmi b/icons/mob/uniform_vr.dmi deleted file mode 100644 index cd9683972ec..00000000000 Binary files a/icons/mob/uniform_vr.dmi and /dev/null differ diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index ed4dab34073..ddba37210a5 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi deleted file mode 100644 index 4f97b40e273..00000000000 Binary files a/icons/obj/clothing/belts.dmi and /dev/null differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi deleted file mode 100644 index 93d368d42c4..00000000000 Binary files a/icons/obj/clothing/glasses.dmi and /dev/null differ diff --git a/icons/obj/clothing/gloves_vr.dmi b/icons/obj/clothing/gloves_vr.dmi deleted file mode 100644 index c6820167305..00000000000 Binary files a/icons/obj/clothing/gloves_vr.dmi and /dev/null differ diff --git a/icons/obj/clothing/hats_vr.dmi b/icons/obj/clothing/hats_vr.dmi deleted file mode 100644 index bc6cd122450..00000000000 Binary files a/icons/obj/clothing/hats_vr.dmi and /dev/null differ diff --git a/icons/obj/clothing/helmets_vr.dmi b/icons/obj/clothing/helmets_vr.dmi deleted file mode 100644 index 3b210b9980a..00000000000 Binary files a/icons/obj/clothing/helmets_vr.dmi and /dev/null differ diff --git a/icons/obj/clothing/rings.dmi b/icons/obj/clothing/rings.dmi deleted file mode 100644 index 5274bf8735d..00000000000 Binary files a/icons/obj/clothing/rings.dmi and /dev/null differ diff --git a/icons/obj/clothing/shoes_vr.dmi b/icons/obj/clothing/shoes_vr.dmi deleted file mode 100644 index 5b81be4b1fc..00000000000 Binary files a/icons/obj/clothing/shoes_vr.dmi and /dev/null differ diff --git a/icons/obj/clothing/spacesuits.dmi b/icons/obj/clothing/spacesuits.dmi deleted file mode 100644 index ae9cc5764f1..00000000000 Binary files a/icons/obj/clothing/spacesuits.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/akula/hats.dmi b/icons/obj/clothing/species/akula/hats.dmi deleted file mode 100644 index 729050c5f5d..00000000000 Binary files a/icons/obj/clothing/species/akula/hats.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/akula/suits.dmi b/icons/obj/clothing/species/akula/suits.dmi deleted file mode 100644 index 60fb367009e..00000000000 Binary files a/icons/obj/clothing/species/akula/suits.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/sergal/hats.dmi b/icons/obj/clothing/species/sergal/hats.dmi deleted file mode 100644 index 9a412ee16a3..00000000000 Binary files a/icons/obj/clothing/species/sergal/hats.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/sergal/suits.dmi b/icons/obj/clothing/species/sergal/suits.dmi deleted file mode 100644 index 589c5a4a96d..00000000000 Binary files a/icons/obj/clothing/species/sergal/suits.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/teshari/suits.dmi b/icons/obj/clothing/species/teshari/suits.dmi deleted file mode 100644 index 820649befa7..00000000000 Binary files a/icons/obj/clothing/species/teshari/suits.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/teshari/uniform.dmi b/icons/obj/clothing/species/teshari/uniform.dmi deleted file mode 100644 index 82d4d126da5..00000000000 Binary files a/icons/obj/clothing/species/teshari/uniform.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/vulpkanin/hats.dmi b/icons/obj/clothing/species/vulpkanin/hats.dmi deleted file mode 100644 index f2dc0386289..00000000000 Binary files a/icons/obj/clothing/species/vulpkanin/hats.dmi and /dev/null differ diff --git a/icons/obj/clothing/species/vulpkanin/suits.dmi b/icons/obj/clothing/species/vulpkanin/suits.dmi deleted file mode 100644 index 3df33763a0c..00000000000 Binary files a/icons/obj/clothing/species/vulpkanin/suits.dmi and /dev/null differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi deleted file mode 100644 index 788bfa06ba6..00000000000 Binary files a/icons/obj/clothing/suits.dmi and /dev/null differ diff --git a/icons/obj/clothing/suits_1.dmi b/icons/obj/clothing/suits_1.dmi deleted file mode 100644 index 3e905eda581..00000000000 Binary files a/icons/obj/clothing/suits_1.dmi and /dev/null differ diff --git a/icons/obj/clothing/suits_solgov.dmi b/icons/obj/clothing/suits_solgov.dmi deleted file mode 100644 index e5259d22e87..00000000000 Binary files a/icons/obj/clothing/suits_solgov.dmi and /dev/null differ diff --git a/icons/obj/clothing/suits_vr.dmi b/icons/obj/clothing/suits_vr.dmi deleted file mode 100644 index 31083070bea..00000000000 Binary files a/icons/obj/clothing/suits_vr.dmi and /dev/null differ diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi deleted file mode 100644 index 21d8bbff1d7..00000000000 Binary files a/icons/obj/clothing/ties.dmi and /dev/null differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi deleted file mode 100644 index 7b397d3ead6..00000000000 Binary files a/icons/obj/clothing/uniforms.dmi and /dev/null differ diff --git a/icons/obj/clothing/uniforms_1.dmi b/icons/obj/clothing/uniforms_1.dmi deleted file mode 100644 index 348cf8dd946..00000000000 Binary files a/icons/obj/clothing/uniforms_1.dmi and /dev/null differ diff --git a/icons/obj/clothing/uniforms_solgov.dmi b/icons/obj/clothing/uniforms_solgov.dmi deleted file mode 100644 index 2b55ea04a26..00000000000 Binary files a/icons/obj/clothing/uniforms_solgov.dmi and /dev/null differ diff --git a/icons/obj/clothing/uniforms_vr.dmi b/icons/obj/clothing/uniforms_vr.dmi deleted file mode 100644 index 4dc173cff2f..00000000000 Binary files a/icons/obj/clothing/uniforms_vr.dmi and /dev/null differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 9f212a6a27f..9227707ea39 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/doors/1x4blast_hor_sec.dmi b/icons/obj/doors/1x4blast_hor_sec.dmi new file mode 100644 index 00000000000..53df08b41fe Binary files /dev/null and b/icons/obj/doors/1x4blast_hor_sec.dmi differ diff --git a/icons/obj/doors/1x4blast_vert_sec.dmi b/icons/obj/doors/1x4blast_vert_sec.dmi new file mode 100644 index 00000000000..73cbc1b95fd Binary files /dev/null and b/icons/obj/doors/1x4blast_vert_sec.dmi differ diff --git a/icons/obj/entertainment_monitor.dmi b/icons/obj/entertainment_monitor.dmi new file mode 100644 index 00000000000..40250b33e0e Binary files /dev/null and b/icons/obj/entertainment_monitor.dmi differ diff --git a/icons/obj/guns/projectile/bows.dmi b/icons/obj/guns/projectile/bows.dmi new file mode 100644 index 00000000000..3d3494bfd26 Binary files /dev/null and b/icons/obj/guns/projectile/bows.dmi differ diff --git a/icons/obj/light_overlays.dmi b/icons/obj/light_overlays.dmi index cfcbba67a27..470631d1046 100644 Binary files a/icons/obj/light_overlays.dmi and b/icons/obj/light_overlays.dmi differ diff --git a/icons/obj/overmap_vr.dmi b/icons/obj/overmap_vr.dmi index 347f06ead1a..b31599d5a6a 100644 Binary files a/icons/obj/overmap_vr.dmi and b/icons/obj/overmap_vr.dmi differ diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi index a0088064db8..91d596a570a 100644 Binary files a/icons/obj/reagentfillings.dmi and b/icons/obj/reagentfillings.dmi differ diff --git a/icons/obj/rig_modules.dmi b/icons/obj/rig_modules.dmi index 1b6b12e4658..a63fcc23a85 100644 Binary files a/icons/obj/rig_modules.dmi and b/icons/obj/rig_modules.dmi differ diff --git a/icons/obj/rig_modules_vr.dmi b/icons/obj/rig_modules_vr.dmi index 1ee2c008aa4..334a8e881ff 100644 Binary files a/icons/obj/rig_modules_vr.dmi and b/icons/obj/rig_modules_vr.dmi differ diff --git a/icons/obj/singularity_vr.dmi b/icons/obj/singularity_vr.dmi index a6fce4ab58a..16519a4c458 100644 Binary files a/icons/obj/singularity_vr.dmi and b/icons/obj/singularity_vr.dmi differ diff --git a/icons/obj/stacks.dmi b/icons/obj/stacks.dmi index 1e8faff31f1..430314b223f 100644 Binary files a/icons/obj/stacks.dmi and b/icons/obj/stacks.dmi differ diff --git a/icons/obj/suitdispenser.dmi b/icons/obj/suitdispenser.dmi index 09723225a41..fc21043ced4 100644 Binary files a/icons/obj/suitdispenser.dmi and b/icons/obj/suitdispenser.dmi differ diff --git a/icons/obj/telescience.dmi b/icons/obj/telescience.dmi index 34d42f100f6..c76b4a3c789 100644 Binary files a/icons/obj/telescience.dmi and b/icons/obj/telescience.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 47a4d21d248..a8b57870bf0 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/icons/skybox/virgo3b.dmi b/icons/skybox/virgo3b.dmi new file mode 100644 index 00000000000..2192fab846b Binary files /dev/null and b/icons/skybox/virgo3b.dmi differ diff --git a/icons/turf/flooring/asteroid.dmi b/icons/turf/flooring/asteroid.dmi index f9c0b2cdf88..9df90896580 100644 Binary files a/icons/turf/flooring/asteroid.dmi and b/icons/turf/flooring/asteroid.dmi differ diff --git a/icons/turf/outdoors.dmi b/icons/turf/outdoors.dmi index f08a94a80f7..5b9ee2d7a58 100644 Binary files a/icons/turf/outdoors.dmi and b/icons/turf/outdoors.dmi differ diff --git a/icons/turf/outdoors_edge.dmi b/icons/turf/outdoors_edge.dmi index 1c852ecaebf..764336a4f0e 100644 Binary files a/icons/turf/outdoors_edge.dmi and b/icons/turf/outdoors_edge.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index 52f1fa13e38..e3fc2202e9b 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ diff --git a/icons/vore/custom_clothes_tesh_vr.dmi b/icons/vore/custom_clothes_tesh_vr.dmi index 95f68191304..53d1abe1971 100644 Binary files a/icons/vore/custom_clothes_tesh_vr.dmi and b/icons/vore/custom_clothes_tesh_vr.dmi differ diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi index 647e4d3f826..6c8267333ad 100644 Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ diff --git a/icons/vore/smoleworld_vr.dmi b/icons/vore/smoleworld_vr.dmi index 213543e6c14..ae09c350c36 100644 Binary files a/icons/vore/smoleworld_vr.dmi and b/icons/vore/smoleworld_vr.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index 1aeb3f7530a..4788b28291e 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -74,6 +74,12 @@ macro "borghotkeymode" elem name = "CTRL+SOUTH" command = "southface" + elem + name = "South" + command = "KeyDown South" + elem + name = "South+UP" + command = "KeyUp South" elem name = "CTRL+SHIFT+NORTH" command = "shiftnorth" @@ -86,11 +92,6 @@ macro "borghotkeymode" elem name = "CTRL+SHIFT+EAST" command = "shifteast" - name = "South" - command = "KeyDown South" - elem - name = "South+UP" - command = "KeyUp South" elem name = "INSERT" command = "a-intent right" @@ -333,6 +334,12 @@ macro "macro" elem name = "CTRL+SOUTH" command = "southface" + elem + name = "South" + command = "KeyDown South" + elem + name = "South+UP" + command = "KeyUp South" elem name = "CTRL+SHIFT+NORTH" command = "shiftnorth" @@ -345,11 +352,6 @@ macro "macro" elem name = "CTRL+SHIFT+EAST" command = "shifteast" - name = "South" - command = "KeyDown South" - elem - name = "South+UP" - command = "KeyUp South" elem name = "INSERT" command = "a-intent right" @@ -556,6 +558,12 @@ macro "hotkeymode" elem name = "CTRL+SOUTH" command = "southface" + elem + name = "South" + command = "KeyDown South" + elem + name = "South+UP" + command = "KeyUp South" elem name = "CTRL+SHIFT+NORTH" command = "shiftnorth" @@ -568,11 +576,6 @@ macro "hotkeymode" elem name = "CTRL+SHIFT+EAST" command = "shifteast" - name = "South" - command = "KeyDown South" - elem - name = "South+UP" - command = "KeyUp South" elem name = "INSERT" command = "a-intent right" @@ -836,6 +839,12 @@ macro "borgmacro" elem name = "CTRL+SOUTH" command = "southface" + elem + name = "South" + command = "KeyDown South" + elem + name = "South+UP" + command = "KeyUp South" elem name = "CTRL+SHIFT+NORTH" command = "shiftnorth" @@ -848,11 +857,6 @@ macro "borgmacro" elem name = "CTRL+SHIFT+EAST" command = "shifteast" - name = "South" - command = "KeyDown South" - elem - name = "South+UP" - command = "KeyUp South" elem name = "INSERT" command = "a-intent right" diff --git a/maps/expedition_vr/aerostat/_aerostat.dm b/maps/expedition_vr/aerostat/_aerostat.dm index 9a98a764616..460771bf9c8 100644 --- a/maps/expedition_vr/aerostat/_aerostat.dm +++ b/maps/expedition_vr/aerostat/_aerostat.dm @@ -135,7 +135,7 @@ VIRGO2_TURF_CREATE(/turf/simulated/mineral) if(mineral) return - var/mineral_name = pickweight(list("marble" = 5, "uranium" = 5, "platinum" = 5, "hematite" = 5, "carbon" = 5, "diamond" = 5, "gold" = 5, "silver" = 5, "lead" = 5, "verdantium" = 5, "rutile" = 10, "copper" = 5, "tin" = 5, "bauxite" = 5)) + var/mineral_name = pickweight(list("marble" = 5, "uranium" = 5, "platinum" = 5, "hematite" = 5, "carbon" = 5, "diamond" = 5, "gold" = 5, "silver" = 5, "lead" = 5, "verdantium" = 5, "rutile" = 20)) if(mineral_name && (mineral_name in GLOB.ore_data)) mineral = GLOB.ore_data[mineral_name] @@ -186,3 +186,30 @@ VIRGO2_TURF_CREATE(/turf/simulated/mineral/floor/ignore_mapgen) /area/tether_away/aerostat/surface/unexplored name = "Away Mission - Aerostat Surface (UE)" icon_state = "unexplored" + +VIRGO2_TURF_CREATE(/turf/simulated/floor/hull) +/area/tether_away/aerostat/surface/outpost + requires_power = TRUE + dynamic_lighting = TRUE + ambience = null + +/area/tether_away/aerostat/surface/outpost/backroom + name = "V4 Outpost - Research Area" +/area/tether_away/aerostat/surface/outpost/hallway + name = "V4 Outpost - Hallway" +/area/tether_away/aerostat/surface/outpost/cafe + name = "V4 Outpost - Cafe" +/area/tether_away/aerostat/surface/outpost/park + name = "V4 Outpost - Park" +/area/tether_away/aerostat/surface/outpost/officerone + name = "V4 Outpost - Officer's Quarters 1" +/area/tether_away/aerostat/surface/outpost/officertwo + name = "V4 Outpost - Officer's Quarters 2" +/area/tether_away/aerostat/surface/outpost/barracks + name = "V4 Outpost - Barracks" +/area/tether_away/aerostat/surface/outpost/airlock + name = "V4 Outpost - Airlock" +/area/tether_away/aerostat/surface/outpost/powerroom + name = "V4 Outpost - Power Room" +/area/tether_away/aerostat/surface/outpost/guardpost + name = "V4 Outpost - Guard Post" diff --git a/maps/expedition_vr/aerostat/aerostat.dmm b/maps/expedition_vr/aerostat/aerostat.dmm index 6f29db48bd0..9e305251e0b 100644 --- a/maps/expedition_vr/aerostat/aerostat.dmm +++ b/maps/expedition_vr/aerostat/aerostat.dmm @@ -191,16 +191,16 @@ "az" = ( /obj/machinery/atmospherics/binary/algae_farm, /obj/machinery/atmospherics/pipe/simple/hidden/black{ - icon_state = "intact"; - dir = 5 + dir = 5; + icon_state = "intact" }, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) "aA" = ( /obj/machinery/atmospherics/binary/algae_farm, /obj/machinery/atmospherics/pipe/simple/hidden/black{ - icon_state = "intact"; - dir = 9 + dir = 9; + icon_state = "intact" }, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) @@ -219,12 +219,12 @@ "aC" = ( /obj/machinery/atmospherics/binary/algae_farm, /obj/machinery/atmospherics/pipe/simple/hidden/black{ - icon_state = "intact"; - dir = 5 + dir = 5; + icon_state = "intact" }, /obj/machinery/atmospherics/pipe/simple/hidden/black{ - icon_state = "intact"; - dir = 5 + dir = 5; + icon_state = "intact" }, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) @@ -252,8 +252,8 @@ "aF" = ( /obj/machinery/atmospherics/binary/algae_farm, /obj/machinery/atmospherics/pipe/simple/hidden/black{ - icon_state = "intact"; - dir = 6 + dir = 6; + icon_state = "intact" }, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) @@ -283,8 +283,8 @@ "aI" = ( /obj/machinery/atmospherics/binary/algae_farm, /obj/machinery/atmospherics/pipe/simple/hidden/black{ - icon_state = "intact"; - dir = 10 + dir = 10; + icon_state = "intact" }, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) @@ -779,8 +779,8 @@ /area/tether_away/aerostat/inside) "cg" = ( /obj/machinery/door/airlock/multi_tile/metal{ - icon_state = "door_closed"; - dir = 1 + dir = 1; + icon_state = "door_closed" }, /turf/simulated/floor/plating/virgo2, /area/tether_away/aerostat/inside) @@ -799,8 +799,8 @@ "cj" = ( /obj/machinery/computer/shuttle_control/aerostat_shuttle, /obj/machinery/light{ - icon_state = "tube1"; - dir = 1 + dir = 1; + icon_state = "tube1" }, /turf/simulated/shuttle/floor/yellow, /area/shuttle/aerostat) @@ -835,8 +835,8 @@ icon_state = "4-8" }, /obj/machinery/door/airlock/multi_tile/metal{ - icon_state = "door_closed"; - dir = 1 + dir = 1; + icon_state = "door_closed" }, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) @@ -922,7 +922,7 @@ /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) "cD" = ( -/obj/machinery/cryopod/robot, +/obj/structure/salvageable/server_os, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) "cE" = ( @@ -1468,8 +1468,8 @@ "dM" = ( /obj/machinery/power/smes/buildable, /obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 + d2 = 2; + icon_state = "0-2" }, /turf/simulated/floor/bluegrid/virgo2, /area/tether_away/aerostat/inside) @@ -1692,6 +1692,10 @@ /obj/random/firstaid, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) +"yq" = ( +/obj/structure/salvageable/machine_os, +/turf/simulated/floor/tiled/techfloor/virgo2, +/area/tether_away/aerostat/inside) "yy" = ( /obj/structure/salvageable/autolathe, /turf/simulated/floor/tiled/techfloor/virgo2, @@ -1753,6 +1757,10 @@ /obj/structure/metal_edge, /turf/unsimulated/floor/sky/virgo2_sky, /area/tether_away/aerostat) +"Lt" = ( +/obj/structure/salvageable/data_os, +/turf/simulated/floor/tiled/techfloor/virgo2, +/area/tether_away/aerostat/inside) "Lw" = ( /obj/structure/table/standard, /obj/random/powercell, @@ -1768,8 +1776,8 @@ /area/tether_away/aerostat/inside) "ON" = ( /obj/structure/railing{ - icon_state = "railing0"; - dir = 1 + dir = 1; + icon_state = "railing0" }, /turf/simulated/floor/plating/virgo2, /area/tether_away/aerostat) @@ -11528,7 +11536,7 @@ bv bK bK cz -cD +yy bv be be @@ -11670,7 +11678,7 @@ bv gX bK cz -cD +TR bv be be @@ -11704,7 +11712,7 @@ aw bq be bv -cD +Lt cB bK bK @@ -11812,7 +11820,7 @@ bv fH bK cz -cD +gX bv be be @@ -11846,7 +11854,7 @@ aw bq be bv -cD +Lt cB bK TR @@ -11954,7 +11962,7 @@ bv bK bK cz -cD +QE bv be be @@ -11988,7 +11996,7 @@ bU bs be bv -cD +yq cB bK TR diff --git a/maps/expedition_vr/aerostat/surface.dmm b/maps/expedition_vr/aerostat/surface.dmm index df5cb3e2e4d..b60deeb4dec 100644 --- a/maps/expedition_vr/aerostat/surface.dmm +++ b/maps/expedition_vr/aerostat/surface.dmm @@ -1,44 +1,1040 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"b" = ( -/turf/unsimulated/wall/planetary/virgo2, -/area/tether_away/aerostat/surface) -"e" = ( +"ab" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"au" = ( +/obj/structure/salvageable/server, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"aA" = ( +/obj/machinery/door/airlock/security, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"aD" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"aK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"aU" = ( +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/backroom) +"bc" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"bm" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"br" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/hallway) +"bt" = ( +/obj/machinery/door/airlock/security, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"bT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"bU" = ( +/obj/random/crate, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/officerone) +"bZ" = ( +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"cq" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"cB" = ( +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"cC" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"dz" = ( +/obj/structure/table/steel, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/backroom) +"dA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 + }, +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/airlock) +"dE" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/hallway) +"dI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"ex" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"eD" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 10 + }, +/obj/structure/catwalk, +/obj/machinery/airlock_sensor/airlock_interior{ + dir = 8; + pixel_x = 26; + pixel_y = -26 + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/airlock) +"eG" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"fa" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"fs" = ( /obj/tether_away_spawner/aerostat_surface, /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/tether_away/aerostat/surface/explored) -"i" = ( +"fx" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/cafe) +"fK" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"fS" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/tether_away/aerostat/surface/outpost/airlock) +"fZ" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp/green, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officerone) +"gb" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/park) +"gd" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"gq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"gv" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"gx" = ( +/obj/item/weapon/bedsheet/blue, +/obj/structure/bed/padded, +/obj/structure/curtain/black, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"gy" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 10 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"gN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"gU" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp/green, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officertwo) +"hi" = ( +/obj/structure/prop/dominator, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"hj" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"hq" = ( +/obj/random/empty_or_lootable_crate, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/officerone) +"hr" = ( +/obj/structure/table/woodentable, +/obj/item/modular_computer/laptop/preset/custom_loadout/rugged, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officertwo) +"hB" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"hI" = ( +/turf/unsimulated/wall/planetary/virgo2, +/area/tether_away/aerostat/surface) +"hM" = ( +/obj/structure/table/rack/shelf/steel, +/obj/random/gun/random, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/officerone) +"iu" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 4; + req_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"jd" = ( +/obj/structure/cable/cyan{ + icon_state = "4-9" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"ji" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"jj" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 5 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"js" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8; + req_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officerone) +"jz" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8; + req_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officertwo) +"jF" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/officertwo) +"kp" = ( +/obj/structure/cable/yellow{ + icon_state = "6-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"ks" = ( +/obj/structure/cable/yellow{ + icon_state = "4-6" + }, +/obj/structure/cable/yellow{ + icon_state = "5-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"kz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"ld" = ( +/obj/machinery/door/airlock/multi_tile/metal{ + icon_state = "door_locked"; + locked = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"lI" = ( +/obj/structure/closet/crate{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"lP" = ( +/obj/structure/closet/walllocker/medical/north, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"lZ" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"mC" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 1; + req_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"nk" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"nr" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"nx" = ( +/obj/structure/sign/painting/away_areas{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/hallway) +"nI" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"nK" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"nQ" = ( +/obj/machinery/door/airlock/external, +/obj/effect/map_helper/airlock/door/int_door, +/obj/structure/cable/cyan{ + icon_state = "6-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/airlock) +"nS" = ( +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"or" = ( +/obj/structure/salvageable/machine, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"oB" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/heavy, +/area/tether_away/aerostat/surface/outpost/park) +"oK" = ( +/obj/structure/table/bench/wooden, +/obj/machinery/power/apc/alarms_hidden{ + dir = 4; + req_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/simulated/floor/outdoors/grass/heavy, +/area/tether_away/aerostat/surface/outpost/park) +"oW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"pj" = ( +/obj/structure/bed/alien, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"pv" = ( +/obj/structure/cable/cyan{ + icon_state = "5-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/hallway) +"pD" = ( +/turf/simulated/floor/outdoors/grass/heavy, +/area/tether_away/aerostat/surface/outpost/park) +"pK" = ( +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"pS" = ( +/obj/machinery/power/rtg/advanced, +/obj/structure/cable/yellow{ + icon_state = "0-9" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"ql" = ( +/obj/structure/salvageable/personal, /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/tether_away/aerostat/surface/explored) -"n" = ( -/obj/structure/railing{ - icon_state = "railing0"; +"qs" = ( +/obj/machinery/door/airlock/command{ + icon_state = "door_locked"; + locked = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/officerone) +"qJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"qP" = ( +/obj/machinery/atmospherics/pipe/tank/air, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"rm" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/backroom) +"rn" = ( +/obj/machinery/airlock_sensor/airlock_interior{ + dir = 4; + pixel_x = -26; + pixel_y = 1 + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + cycle_to_external_air = 1; + id_tag = "v2outpost_airlock"; + pixel_y = 25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/tether_away/aerostat/surface/outpost/airlock) +"rp" = ( +/obj/machinery/power/rtg/advanced, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"ru" = ( +/obj/structure/table/woodentable, +/obj/structure/sign/painting/away_areas{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"rA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"rC" = ( +/obj/machinery/airlock_sensor/airlock_exterior{ + dir = 4; + pixel_x = -23; + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"rS" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/airlock) +"sa" = ( +/obj/effect/map_helper/airlock/atmos/pump_out_internal, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/tether_away/aerostat/surface/outpost/airlock) +"si" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"sl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/airlock) +"sm" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"st" = ( +/obj/structure/closet/crate{ + dir = 1 + }, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/item/weapon/material/knife/table, +/obj/item/weapon/material/knife/table, +/obj/item/weapon/material/knife/table, +/obj/item/weapon/material/knife/table, +/obj/item/weapon/material/kitchen/utensil/spoon, +/obj/item/weapon/material/kitchen/utensil/spoon, +/obj/item/weapon/material/kitchen/utensil/spoon, +/obj/item/weapon/material/kitchen/utensil/spoon, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/cafe) +"sA" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/barracks) +"sC" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/cafe) +"sL" = ( +/obj/structure/bed/chair/bay{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"sO" = ( +/obj/structure/cable/yellow{ + icon_state = "4-10" + }, +/obj/structure/cable/yellow{ + icon_state = "8-9" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"tm" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officertwo) +"ts" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"ty" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"tG" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"tL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"tP" = ( +/obj/structure/salvageable/implant_container, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"uc" = ( +/obj/structure/bed/chair/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"uD" = ( +/obj/structure/railing, +/turf/simulated/mineral/floor/ignore_mapgen/virgo2, +/area/tether_away/aerostat/surface/explored) +"uG" = ( +/obj/item/stack/cable_coil/green, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"uJ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance/engi, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"uQ" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/guardpost) +"uU" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"uW" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/park) +"vl" = ( +/obj/structure/bed/roller/adv, +/obj/effect/decal/cleanable/blood/splatter, +/obj/machinery/light, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"vt" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"vu" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"vx" = ( +/obj/machinery/door/airlock/command{ + req_one_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/officerone) +"vV" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"wb" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/cafe) +"wf" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/techfloor/virgo2, +/area/tether_away/aerostat/surface/explored) +"wi" = ( +/obj/structure/table/marble, +/obj/machinery/door/window/brigdoor/southright, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"wN" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officertwo) +"wT" = ( +/obj/structure/cable/cyan{ + icon_state = "6-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"xe" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"xf" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/tether_away/aerostat/surface/outpost/airlock) +"xv" = ( +/obj/structure/bed/chair/bay/chair/padded/red, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"xQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"yx" = ( +/obj/machinery/power/apc/alarms_hidden{ + req_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "0-9" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/tether_away/aerostat/surface/outpost/airlock) +"yJ" = ( +/obj/structure/table/woodentable, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"yK" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"yL" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/visible/supply, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"zl" = ( +/obj/structure/bed/chair/wood, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"zr" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/simulated/floor/tiled/eris/steel/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/cafe) +"zG" = ( +/obj/item/weapon/stool/baystool/padded{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"zL" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"zN" = ( +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/hallway) +"Ah" = ( +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officertwo) +"Ao" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"AQ" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/hopdouble, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officertwo) +"Bb" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"Bs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/machinery/door/blast/multi_tile/four_tile_ver_sec{ + id = "v2outpost" + }, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"Cj" = ( +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Cn" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/officerone) +"CF" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"CN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 6 + }, +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/airlock) +"CZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"Da" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Do" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"DN" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"DW" = ( +/obj/structure/railing{ + dir = 1; + icon_state = "railing0" + }, /obj/structure/metal_edge, /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/tether_away/aerostat/surface/explored) -"q" = ( -/obj/structure/salvageable/personal, -/turf/simulated/mineral/floor/ignore_mapgen/virgo2, -/area/tether_away/aerostat/surface/explored) -"A" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 8 - }, -/turf/simulated/mineral/floor/ignore_mapgen/virgo2, -/area/tether_away/aerostat/surface/explored) -"E" = ( -/turf/simulated/mineral/virgo2, -/area/tether_away/aerostat/surface/explored) -"F" = ( -/turf/simulated/mineral/virgo2, -/area/tether_away/aerostat/surface/unexplored) -"I" = ( -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor/virgo2, -/area/tether_away/aerostat/surface/explored) -"Q" = ( +"Ea" = ( +/obj/structure/salvageable/autolathe, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"EL" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/powerroom) +"EQ" = ( /obj/effect/floor_decal/rust, /obj/effect/shuttle_landmark{ base_area = /area/tether_away/aerostat/surface/explored; @@ -48,19895 +1044,20635 @@ }, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/surface/explored) -"V" = ( -/obj/structure/railing, -/turf/simulated/mineral/floor/ignore_mapgen/virgo2, -/area/tether_away/aerostat/surface/explored) -"X" = ( -/obj/structure/railing{ - icon_state = "railing0"; +"ET" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/hopdouble, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officerone) +"EV" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"Fr" = ( +/obj/effect/catwalk_plated, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"FL" = ( +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"FM" = ( +/obj/machinery/button/remote/blast_door{ + id = "v2outpost"; + pixel_y = 27 + }, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"FO" = ( +/obj/structure/closet/crate{ + dir = 2 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"FT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"FU" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"FW" = ( +/obj/structure/cable/yellow{ + icon_state = "6-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"Ge" = ( +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/alarms_hidden{ + dir = 8; + req_access = null + }, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"Gr" = ( +/obj/machinery/power/rtg/advanced, +/obj/structure/cable/yellow, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"Gv" = ( +/obj/structure/table/woodentable, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"Gy" = ( +/obj/structure/salvageable/server, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"GD" = ( +/obj/structure/medical_stand/anesthetic, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"GH" = ( +/obj/structure/table/woodentable, +/obj/structure/sign/painting/away_areas{ + pixel_x = 32 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"Ha" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Hn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"Hx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"HF" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"HR" = ( +/turf/simulated/mineral/virgo2, +/area/tether_away/aerostat/surface/unexplored) +"HU" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ dir = 4 }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/tether_away/aerostat/surface/outpost/airlock) +"IB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"II" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"IO" = ( +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officerone) +"Jf" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Jp" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Js" = ( +/obj/structure/table/bench/wooden, +/turf/simulated/floor/outdoors/grass/heavy, +/area/tether_away/aerostat/surface/outpost/park) +"JS" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"JZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"Kf" = ( +/obj/structure/bed/chair/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Kl" = ( +/obj/structure/table/steel, +/obj/item/modular_computer/tablet/preset/custom_loadout/elite, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/backroom) +"KB" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"KJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 8 + }, +/obj/effect/map_helper/airlock/atmos/pump_out_external, +/obj/machinery/light, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"Ll" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"Lq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"Lr" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"Lz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"LA" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 9 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"LL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"LN" = ( +/obj/structure/railing{ + dir = 4; + icon_state = "railing0" + }, /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/tether_away/aerostat/surface/explored) +"LT" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 4; + req_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"LV" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"Mw" = ( +/obj/structure/closet/crate/bin, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Mz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 9 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"MJ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"MR" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"MT" = ( +/obj/machinery/button/remote/blast_door{ + id = "v2outpost"; + pixel_y = 27 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 10 + }, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"MX" = ( +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/officerone) +"Ng" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"Nl" = ( +/obj/structure/closet/crate/bin, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/alarms_hidden{ + dir = 1; + req_access = null + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"Nm" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officerone) +"Nn" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 1; + req_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"Ny" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/white/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/backroom) +"NF" = ( +/obj/structure/closet/crate/bin, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/backroom) +"NU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"NW" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"Oi" = ( +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/cafe) +"Ot" = ( +/obj/structure/window/reinforced/full, +/obj/structure/grille, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"ON" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/storage/box/glasses, +/obj/item/paint_brush, +/obj/item/paint_palette, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/cafe) +"OT" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/officerone) +"Pe" = ( +/obj/structure/closet/wardrobe/grey, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"Pn" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"Px" = ( +/obj/structure/table/bench/wooden, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/turf/simulated/floor/outdoors/grass/heavy, +/area/tether_away/aerostat/surface/outpost/park) +"PE" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"PH" = ( +/obj/structure/cable/cyan{ + icon_state = "4-10" + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"PZ" = ( +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/hallway) +"Qp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/hallway) +"QF" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"QJ" = ( +/turf/simulated/wall/r_wall, +/area/tether_away/aerostat/surface/outpost/backroom) +"Ra" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Rh" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/structure/salvageable/server, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"Rl" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"Rw" = ( +/turf/simulated/floor/hull/virgo2, +/area/tether_away/aerostat/surface/outpost/airlock) +"RP" = ( +/obj/machinery/door/airlock/command{ + req_one_access = null + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/officertwo) +"RQ" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/structure/salvageable/implant_container, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"Sr" = ( +/obj/structure/closet/walllocker_double/kitchen/west, +/obj/item/weapon/storage/box/tgmc_mre, +/obj/item/weapon/storage/box/tgmc_mre{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/tgmc_mre, +/obj/item/weapon/storage/box/tgmc_mre{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/weapon/storage/box/tgmc_mre{ + pixel_x = 4; + pixel_y = -4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Sx" = ( +/obj/structure/railing{ + dir = 8; + icon_state = "railing0" + }, +/turf/simulated/mineral/floor/ignore_mapgen/virgo2, +/area/tether_away/aerostat/surface/explored) +"SI" = ( +/turf/simulated/floor/water/indoors, +/area/tether_away/aerostat/surface/outpost/park) +"SS" = ( +/turf/simulated/mineral/floor/ignore_mapgen/virgo2, +/area/tether_away/aerostat/surface/explored) +"Ta" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/structure/salvageable/machine, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"Tc" = ( +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/airlock) +"TM" = ( +/obj/structure/bed/chair/bay/chair/padded/red{ + dir = 4 + }, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled/eris/steel, +/area/tether_away/aerostat/surface/outpost/backroom) +"Ur" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/storage/box/glasses/pint, +/obj/item/canvas/twentyfour_twentyfour, +/obj/item/canvas/nineteen_nineteen, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/cafe) +"UC" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4 + }, +/obj/effect/map_helper/airlock/atmos/pump_out_internal, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/tether_away/aerostat/surface/outpost/airlock) +"UE" = ( +/obj/machinery/power/terminal, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"UJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/park) +"UN" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/tiled/eris/steel/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/cafe) +"Vb" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 8 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"Vq" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/tether_away/aerostat/surface/outpost/airlock) +"Vr" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"VH" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/officerone) +"VJ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"VW" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/guardpost) +"We" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) +"Wg" = ( +/obj/machinery/light, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"Wy" = ( +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/power/smes/buildable/point_of_interest, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/powerroom) +"Wz" = ( +/obj/random/coin, +/obj/structure/closet/crate/large, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/officerone) +"WB" = ( +/obj/machinery/door/airlock/glass, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/cafe) +"WC" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"WF" = ( +/obj/machinery/door/airlock/maintenance/engi{ + req_one_access = null + }, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"WV" = ( +/obj/machinery/door/airlock/external, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/airlock) +"Xh" = ( +/obj/structure/cable/cyan{ + icon_state = "2-10" + }, +/obj/machinery/atmospherics/pipe/manifold/visible/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"Xq" = ( +/obj/structure/cable/cyan{ + icon_state = "5-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/hallway) +"XN" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/tiled/eris/dark, +/area/tether_away/aerostat/surface/outpost/cafe) +"Yk" = ( +/obj/structure/salvageable/machine, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/backroom) +"Zb" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled/eris/bcircuit, +/area/tether_away/aerostat/surface/outpost/hallway) +"Zi" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/door/airlock/multi_tile/metal{ + dir = 2; + req_one_access = list(777) + }, +/turf/simulated/floor/tiled/eris/dark/orangecorner, +/area/tether_away/aerostat/surface/outpost/hallway) +"Zt" = ( +/obj/structure/table/woodentable, +/obj/machinery/chemical_dispenser/bar_soft/full, +/turf/simulated/floor/tiled/eris/steel/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/cafe) +"Zu" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/officerone) +"Zv" = ( +/obj/structure/closet/walllocker/medical/north, +/obj/machinery/washing_machine, +/turf/simulated/floor/wood, +/area/tether_away/aerostat/surface/outpost/barracks) +"ZJ" = ( +/obj/machinery/vending/foodfast, +/turf/simulated/floor/tiled/eris/steel/techfloor_grid, +/area/tether_away/aerostat/surface/outpost/cafe) +"ZL" = ( +/obj/random/crate, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled/eris/dark/monofloor, +/area/tether_away/aerostat/surface/outpost/officerone) +"ZQ" = ( +/turf/simulated/mineral/virgo2, +/area/tether_away/aerostat/surface/explored) +"ZW" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 28 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating/eris/under, +/area/tether_away/aerostat/surface/outpost/guardpost) (1,1,1) = {" -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI "} (2,1,1) = {" -b -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -b +hI +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (3,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (4,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (5,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +QJ +QJ +QJ +QJ +QJ +QJ +QJ +QJ +dE +dE +dE +dE +dE +dE +dE +dE +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (6,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +QJ +NF +rm +bZ +bZ +Ll +Ge +QJ +Zb +br +nx +nx +nx +br +zN +dE +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (7,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +QJ +TM +aU +rA +Ny +FT +xe +ld +Fr +Fr +Fr +Fr +NU +fa +zN +dE +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (8,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +QJ +Kl +dz +Hx +cC +bZ +gv +nI +ab +ab +ab +ab +LV +vu +zN +dE +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (9,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +QJ +RQ +Ta +pK +pK +Rh +Rh +QJ +zN +zN +zN +zN +xQ +NW +zN +dE +gb +gb +gb +gb +gb +gb +OT +OT +OT +OT +OT +ZQ +ZQ +ZQ +hI "} (10,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +QJ +tP +or +pK +pK +pK +pK +QJ +dE +dE +dE +dE +Qp +Zi +dE +dE +oB +SI +SI +SI +SI +oB +OT +bU +VH +hM +OT +ZQ +ZQ +ZQ +hI "} (11,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +QJ +tP +or +pj +GD +pK +pK +QJ +ZQ +ZQ +dE +PZ +xQ +NW +PZ +Ot +pD +SI +SI +SI +SI +pD +OT +Wz +MX +Cn +OT +ZQ +ZQ +ZQ +hI "} (12,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +QJ +tP +Yk +Ea +hi +au +Gy +QJ +ZQ +ZQ +dE +FU +II +bm +gq +Ot +pD +SI +SI +SI +SI +pD +OT +ZL +MX +hq +OT +ZQ +ZQ +ZQ +hI "} (13,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +QJ +QJ +QJ +QJ +QJ +QJ +QJ +QJ +ZQ +ZQ +dE +Pn +xQ +NW +PZ +Ot +pD +pD +pD +pD +pD +pD +OT +Cn +MX +Cn +OT +ZQ +ZQ +ZQ +hI "} (14,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +dE +dE +Qp +pv +dE +dE +Px +oK +uW +UJ +Js +Js +OT +Cn +MX +hq +OT +ZQ +ZQ +ZQ +hI "} (15,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +dE +bT +Xh +eG +gq +dE +fx +fx +wb +sC +fx +fx +OT +OT +qs +OT +OT +ZQ +ZQ +ZQ +hI "} (16,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +dE +mC +LV +ex +PZ +dE +ZJ +zL +Jp +IB +zL +Sr +OT +js +IO +fZ +OT +ZQ +ZQ +ZQ +hI "} (17,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +EL +EL +EL +EL +EL +uQ +uQ +dE +uU +xQ +NW +Ng +dE +UN +aD +Ao +Ha +MR +MR +vx +Nm +IO +IO +OT +ZQ +ZQ +ZQ +hI "} (18,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +EL +UE +Wy +uG +EL +si +si +dE +lP +xQ +Xq +PZ +Ot +Mw +sm +uc +Da +Jf +Cj +OT +Zu +IO +ET +OT +ZQ +ZQ +ZQ +hI "} (19,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +EL +ks +FL +Lr +EL +kz +tL +dE +Pn +PH +aK +PZ +Ot +Cj +JS +Kf +cq +Jf +HF +OT +OT +OT +OT +OT +ZQ +ZQ +ZQ +hI "} (20,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +EL +sO +FL +vt +uJ +VJ +MJ +aA +DN +yL +nk +DN +ji +nr +ts +XN +Ra +Jf +Cj +jF +jz +gU +hr +jF +ZQ +ZQ +ZQ +hI "} (21,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +EL +kp +Gr +Wg +EL +ty +VW +Ot +PZ +xQ +Xq +PZ +PZ +Cj +CF +zl +yJ +Do +Vr +RP +wN +Ah +Ah +jF +ZQ +ZQ +ZQ +hI "} (22,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +EL +FW +pS +Lr +EL +Nn +xv +wi +PZ +PH +aK +PZ +Ot +Cj +WC +Cj +Cj +Cj +vV +jF +tm +Ah +AQ +jF +ZQ +ZQ +ZQ +hI "} (23,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +EL +rp +pS +LT +EL +Bb +yK +Ot +PZ +wT +aK +PZ +Ot +Cj +WC +Cj +Cj +Cj +hB +jF +jF +jF +jF +jF +ZQ +ZQ +ZQ +hI "} (24,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +EL +EL +EL +EL +EL +bt +uQ +dE +uU +xQ +jd +vl +dE +Zt +WC +zG +zG +zG +vV +fx +ON +st +Ur +fx +ZQ +ZQ +ZQ +hI "} (25,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +uQ +lZ +cB +LL +jj +dE +bT +bc +eD +gq +dE +zr +WC +ru +Ra +ru +iu +WF +Oi +Oi +Oi +fx +ZQ +ZQ +ZQ +hI "} (26,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +uQ +ZW +cB +oW +We +rS +rS +WV +nQ +rS +sA +fx +WB +fx +fx +fx +fx +fx +fx +fx +fx +fx +ZQ +ZQ +ZQ +hI "} (27,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +uQ +gd +gN +Mz +Rl +rS +rn +Vq +Vq +yx +sA +Nl +hj +fK +gx +gx +gx +gx +sA +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (28,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +uQ +qP +Vb +Vb +LA +CN +xf +HU +HU +fS +sA +Pe +Hn +qJ +lI +lI +lI +lI +sA +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (29,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +uQ +QF +EV +gy +KB +dA +UC +sa +sa +UC +sA +Pe +JZ +nS +nS +nS +nS +nS +sA +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (30,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +uQ +uQ +uQ +uQ +uQ +rS +sl +Tc +Tc +sl +sA +Zv +JZ +nS +nS +nS +nS +nS +sA +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (31,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +rS +MT +rC +CZ +Lz +sA +Gv +sL +dI +FO +FO +FO +FO +sA +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (32,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +rS +Rw +Rw +Rw +Bs +sA +nK +GH +tG +gx +gx +gx +gx +sA +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (33,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +rS +FM +Rw +Rw +Lq +sA +sA +sA +sA +sA +sA +sA +sA +sA +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (34,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +rS +PE +SS +SS +KJ +rS +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (35,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +rS +rS +SS +SS +rS +rS +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (36,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +ZQ +SS +SS +SS +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (37,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +ZQ +SS +SS +SS +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (38,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (39,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +HR +ZQ +hI "} (40,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (41,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +HR +HR +HR +HR +HR +ZQ +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (42,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (43,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (44,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -e -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +fs +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (45,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (46,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -F -F -F -F -F -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (47,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (48,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (49,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (50,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (51,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (52,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (53,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (54,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (55,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -i -i -F -F -F -F -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +SS +SS +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (56,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -i -i -i -i -i -F -i -i -i -i -i -i -F -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +SS +SS +SS +SS +SS +HR +SS +SS +SS +SS +SS +SS +HR +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (57,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -F -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (58,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -i -i -i -i -i -i -I -I -i -i -I -I -I -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +wf +wf +SS +SS +wf +wf +wf +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (59,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -e -i -i -i -i -i -i -i -i -i -i -i -I -I -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +fs +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +wf +wf +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (60,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -i -i -i -i -I -I -I -I -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +wf +wf +wf +wf +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (61,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -q -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +ql +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (62,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -X -X -X -X -X -X -I -I -X -X -X -X -X -X -X -X -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +LN +LN +LN +LN +LN +LN +wf +wf +LN +LN +LN +LN +LN +LN +LN +LN +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (63,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (64,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (65,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (66,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (67,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (68,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -V -I -I -I -I -I -I -I -Q -I -I -I -I -I -I -I -I -n -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +EQ +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (69,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (70,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (71,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (72,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (73,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (74,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (75,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -V -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -n -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +uD +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +wf +DW +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (76,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -A -A -A -A -A -A -I -I -A -A -A -A -A -A -A -A -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +Sx +Sx +Sx +Sx +Sx +Sx +wf +wf +Sx +Sx +Sx +Sx +Sx +Sx +Sx +Sx +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (77,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -I -i -i -I -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +wf +SS +SS +wf +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (78,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -I -I -i -I -i -i -I -I -i -i -i -i -i -i -i -i -i -i -i -e -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +wf +wf +SS +wf +SS +SS +wf +wf +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +fs +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (79,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -I -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +wf +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (80,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (81,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -i -F -F -F -i -i -i -i -i -F -F -i -i -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +SS +SS +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (82,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -F -F -F -F -F -i -i -F -F -F -F -i -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (83,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (84,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (85,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (86,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (87,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (88,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (89,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (90,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (91,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (92,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (93,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (94,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (95,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (96,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (97,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (98,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (99,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (100,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (101,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (102,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (103,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -e -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +fs +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (104,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (105,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (106,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (107,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -i -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +SS +SS +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (108,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (109,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (110,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (111,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (112,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (113,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (114,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (115,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (116,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (117,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (118,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (119,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (120,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (121,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (122,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (123,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (124,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (125,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (126,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (127,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (128,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (129,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (130,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (131,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (132,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (133,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (134,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (135,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (136,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (137,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (138,1,1) = {" -b -E -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -E -b +hI +ZQ +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +HR +ZQ +hI "} (139,1,1) = {" -b -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -E -b +hI +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +ZQ +hI "} (140,1,1) = {" -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI +hI "} diff --git a/maps/gateway_vr/carpfarm.dmm b/maps/gateway_vr/carpfarm.dmm index 51a3348abf1..34feaf87d4b 100644 --- a/maps/gateway_vr/carpfarm.dmm +++ b/maps/gateway_vr/carpfarm.dmm @@ -749,6 +749,10 @@ /obj/effect/overmap/visitable/sector/tether_gateway/carpfarm, /turf/space, /area/space) +"Ia" = ( +/obj/effect/landmark/hidden_level, +/turf/space, +/area/space) "Zb" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; @@ -1182,7 +1186,7 @@ aa aa aa aa -aa +Ia aa "} (4,1,1) = {" diff --git a/maps/gateway_vr/listeningpost.dmm b/maps/gateway_vr/listeningpost.dmm index ef039b722b9..8f451550f0f 100644 --- a/maps/gateway_vr/listeningpost.dmm +++ b/maps/gateway_vr/listeningpost.dmm @@ -416,6 +416,10 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor/airless, /area/awaymission/listeningpost) +"Hp" = ( +/obj/effect/landmark/hidden_level, +/turf/space, +/area/space) (1,1,1) = {" aa @@ -840,7 +844,7 @@ aa aa aa aa -aa +Hp aa "} (4,1,1) = {" diff --git a/maps/gateway_vr/snowfield.dmm b/maps/gateway_vr/snowfield.dmm index 2d09b9b2b3a..1189687dffd 100644 --- a/maps/gateway_vr/snowfield.dmm +++ b/maps/gateway_vr/snowfield.dmm @@ -1634,6 +1634,14 @@ temperature = 243.15 }, /area/awaymission/snowfield/base) +"no" = ( +/obj/effect/landmark/hidden_level, +/turf/simulated/floor/outdoors/snow{ + nitrogen = 93.7835; + oxygen = 20.7263; + temperature = 243.15 + }, +/area/awaymission/snowfield/restricted) "Bw" = ( /obj/effect/overmap/visitable/sector/tether_gateway/snowfield, /turf/simulated/floor/outdoors/snow{ @@ -2066,7 +2074,7 @@ ab ab ab ab -ab +no aa "} (4,1,1) = {" diff --git a/maps/gateway_vr/variable/arynthilake_a.dmm b/maps/gateway_vr/variable/arynthilake_a.dmm index 2c982bab657..6da233bf6c5 100644 --- a/maps/gateway_vr/variable/arynthilake_a.dmm +++ b/maps/gateway_vr/variable/arynthilake_a.dmm @@ -2068,6 +2068,10 @@ }, /turf/simulated/floor/tiled/eris/white/brown_platform, /area/gateway/arynthilake/dome) +"Or" = ( +/obj/effect/landmark/hidden_level, +/turf/simulated/mineral/ignore_cavegen, +/area/gateway/arynthilake/caves) "OC" = ( /turf/simulated/floor/carpet/blucarpet{ outdoors = 1 @@ -3052,7 +3056,7 @@ Qr Qr Qr Qr -Qr +Or aa "} (5,1,1) = {" diff --git a/maps/gateway_vr/variable/arynthilake_b.dmm b/maps/gateway_vr/variable/arynthilake_b.dmm index a56a67f1b3f..5ed87dc7654 100644 --- a/maps/gateway_vr/variable/arynthilake_b.dmm +++ b/maps/gateway_vr/variable/arynthilake_b.dmm @@ -2022,6 +2022,10 @@ }, /turf/simulated/floor/tiled/eris/steel/gray_platform, /area/gateway/arynthilake/dome) +"Ry" = ( +/obj/effect/landmark/hidden_level, +/turf/simulated/mineral/ignore_cavegen, +/area/gateway/arynthilake/caves) "RK" = ( /obj/structure/table/fancyblack, /obj/effect/landmark/mcguffin_spawner, @@ -3022,7 +3026,7 @@ ek ek ek ek -ek +Ry nF "} (5,1,1) = {" diff --git a/maps/gateway_vr/variable/arynthilakeunderground_a.dmm b/maps/gateway_vr/variable/arynthilakeunderground_a.dmm index d7282a80954..121b0fac96c 100644 --- a/maps/gateway_vr/variable/arynthilakeunderground_a.dmm +++ b/maps/gateway_vr/variable/arynthilakeunderground_a.dmm @@ -121,6 +121,10 @@ /obj/random/awayloot, /turf/simulated/floor/tiled/eris/steel/techfloor, /area/gateway/arynthilake/engine) +"nD" = ( +/obj/effect/landmark/hidden_level, +/turf/simulated/mineral/ignore_cavegen, +/area/gateway/arynthilake/underground) "nO" = ( /turf/simulated/mineral/floor/ignore_cavegen, /area/gateway/arynthilake/underground) @@ -670,7 +674,7 @@ gh gh gh gh -gh +nD Ft "} (3,1,1) = {" diff --git a/maps/gateway_vr/variable/arynthilakeunderground_b.dmm b/maps/gateway_vr/variable/arynthilakeunderground_b.dmm index 8755d3a2a52..75fa807ad5a 100644 --- a/maps/gateway_vr/variable/arynthilakeunderground_b.dmm +++ b/maps/gateway_vr/variable/arynthilakeunderground_b.dmm @@ -103,6 +103,10 @@ /obj/random/awayloot, /turf/simulated/floor/tiled/eris/techmaint, /area/gateway/arynthilake/engine) +"jX" = ( +/obj/effect/landmark/hidden_level, +/turf/simulated/mineral/ignore_cavegen, +/area/gateway/arynthilake/underground) "kb" = ( /turf/simulated/wall/r_wall, /area/gateway/arynthilake/engine) @@ -723,7 +727,7 @@ bL bL bL bL -bL +jX bX "} (3,1,1) = {" diff --git a/maps/gateway_vr/variable/honlethhighlands_a.dmm b/maps/gateway_vr/variable/honlethhighlands_a.dmm index e80e463c65e..19eebf89a3c 100644 --- a/maps/gateway_vr/variable/honlethhighlands_a.dmm +++ b/maps/gateway_vr/variable/honlethhighlands_a.dmm @@ -1984,6 +1984,12 @@ /obj/item/weapon/stool/padded, /turf/simulated/floor/lino, /area/gateway/honlethhighlands/town/bar) +"Ey" = ( +/obj/effect/landmark/hidden_level, +/turf/simulated/floor/water/deep{ + temperature = 253.15 + }, +/area/gateway/honlethhighlands/beach) "EP" = ( /obj/structure/table/glass, /obj/item/weapon/paper_bin, @@ -3504,7 +3510,7 @@ bm bm bm bm -bm +Ey aa "} (5,1,1) = {" diff --git a/maps/gateway_vr/variable/honlethhighlands_b.dmm b/maps/gateway_vr/variable/honlethhighlands_b.dmm index 482c65dc67f..1e46fe78df4 100644 --- a/maps/gateway_vr/variable/honlethhighlands_b.dmm +++ b/maps/gateway_vr/variable/honlethhighlands_b.dmm @@ -2048,6 +2048,12 @@ }, /turf/simulated/floor/wood, /area/gateway/honlethhighlands) +"Gm" = ( +/obj/effect/landmark/hidden_level, +/turf/simulated/floor/water/deep{ + temperature = 253.15 + }, +/area/gateway/honlethhighlands/beach) "Gn" = ( /obj/structure/cable/pink{ d1 = 2; @@ -3543,7 +3549,7 @@ bm bm bm bm -bm +Gm aa "} (5,1,1) = {" diff --git a/maps/gateway_vr/wildwest.dmm b/maps/gateway_vr/wildwest.dmm index 02354f8abfa..16e6a42d3f0 100644 --- a/maps/gateway_vr/wildwest.dmm +++ b/maps/gateway_vr/wildwest.dmm @@ -1983,6 +1983,10 @@ /obj/effect/floor_decal/corner/paleblue/diagonal, /turf/simulated/floor/tiled/white, /area/awaymission/wwmines) +"RC" = ( +/obj/effect/landmark/hidden_level, +/turf/space, +/area/space) "RP" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet/blue, @@ -2468,7 +2472,7 @@ ia ia ia ia -ia +RC aa "} (3,1,1) = {" diff --git a/maps/offmap_vr/om_ships/aro3.dmm b/maps/offmap_vr/om_ships/aro3.dmm index 74c69785d97..516f3d412fc 100644 --- a/maps/offmap_vr/om_ships/aro3.dmm +++ b/maps/offmap_vr/om_ships/aro3.dmm @@ -200,6 +200,10 @@ }, /turf/simulated/floor/reinforced/airless, /area/space) +"bF" = ( +/obj/machinery/light/floortube, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) "bH" = ( /obj/structure/closet/walllocker/emerglocker/north{ dir = 8; @@ -746,6 +750,12 @@ }, /turf/simulated/floor/tiled/eris/dark/gray_perforated, /area/aro3/power) +"gc" = ( +/obj/machinery/light/floortube{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) "gd" = ( /turf/simulated/floor/wood, /area/aro3/suite_port) @@ -1117,8 +1127,18 @@ }, /turf/simulated/floor/tiled/eris/dark/panels, /area/aro3/hallway_bunkrooms) +"iI" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_x = -25; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) "iJ" = ( -/obj/structure/bed/chair/sofa/black{ +/obj/structure/bed/chair/sofa/corp{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark, @@ -1209,8 +1229,8 @@ /turf/simulated/floor/tiled/eris/steel/panels, /area/aro3/function) "jh" = ( -/obj/structure/bed/chair/sofa/black/corner{ - dir = 4 +/obj/structure/bed/chair/sofa/corp/corner{ + dir = 1 }, /turf/simulated/floor/tiled/eris/dark, /area/aro3/function) @@ -1301,7 +1321,7 @@ /area/aro3/medical) "ke" = ( /obj/structure/fans/hardlight, -/obj/machinery/door/blast/multi_tile/two_tile_hor{ +/obj/machinery/door/blast/multi_tile/four_tile_hor_sec{ id = "aroshipshutter_ramp" }, /turf/simulated/floor/reinforced, @@ -1338,6 +1358,9 @@ /obj/structure/cable/cyan{ icon_state = "1-8" }, +/obj/machinery/light{ + dir = 4 + }, /turf/simulated/floor/carpet/turcarpet, /area/aro3/suite_starboard) "kl" = ( @@ -1517,6 +1540,15 @@ }, /turf/simulated/floor/wood, /area/aro3/suite_starboard) +"lC" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/workshop) "lI" = ( /obj/structure/cable/cyan{ icon_state = "1-2" @@ -1603,10 +1635,8 @@ /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/aro3/hallway_port) "mG" = ( -/obj/structure/closet/walllocker/emerglocker/north, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -25 +/obj/machinery/vending/boozeomat{ + density = 0 }, /turf/simulated/floor/tiled/eris/steel/bar_dance, /area/aro3/bar) @@ -1693,7 +1723,7 @@ /turf/simulated/floor/tiled/eris/dark/gray_perforated, /area/aro3/power) "nq" = ( -/obj/structure/bed/chair/sofa/black/right{ +/obj/structure/bed/chair/sofa/corp/right{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark, @@ -2049,10 +2079,10 @@ /area/aro3/workshop) "qV" = ( /obj/machinery/light{ - dir = 1 + dir = 4 }, -/turf/simulated/floor/plating/eris/under, -/area/aro3/power) +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_port) "qW" = ( /obj/structure/railing/grey{ dir = 4 @@ -2151,10 +2181,10 @@ /turf/simulated/floor/tiled/eris/dark/danger, /area/aro3/flight_deck) "rx" = ( -/obj/structure/bed/chair/sofa/black/right{ +/obj/machinery/light, +/obj/structure/bed/chair/sofa/corp/left{ dir = 1 }, -/obj/machinery/light, /turf/simulated/floor/tiled/eris/dark, /area/aro3/function) "rA" = ( @@ -2469,6 +2499,12 @@ }, /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/aro3/hallway_port) +"uL" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) "uS" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -2574,6 +2610,10 @@ /obj/structure/table/marble, /turf/simulated/floor/tiled/eris/cafe, /area/aro3/kitchen) +"vP" = ( +/obj/machinery/gear_dispenser/suit_fancy/aether, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/eva_hall) "vQ" = ( /obj/structure/table/steel, /obj/item/device/flashlight/lamp, @@ -2868,11 +2908,10 @@ /turf/simulated/floor/tiled/eris/dark, /area/aro3/power) "xG" = ( -/obj/structure/fans/hardlight, /obj/structure/cable/cyan{ icon_state = "1-2" }, -/turf/simulated/floor/reinforced, +/turf/simulated/wall/rpshull, /area/aro3/flight_deck) "xI" = ( /obj/structure/flora/pottedplant/unusual, @@ -2946,6 +2985,15 @@ }, /turf/simulated/floor/tiled/eris/dark/gray_platform, /area/aro3/repair_bay) +"yx" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "aronai3_aftstbd"; + name = "Aft and Starboard" + }, +/turf/space, +/area/space) "yy" = ( /obj/structure/cable/cyan{ icon_state = "1-2" @@ -3123,6 +3171,9 @@ /obj/structure/cable/cyan{ icon_state = "2-4" }, +/obj/machinery/light/floortube{ + dir = 4 + }, /turf/simulated/floor/tiled/eris/dark, /area/aro3/surfluid) "zu" = ( @@ -3233,10 +3284,7 @@ /turf/simulated/floor/tiled/eris/steel/bar_dance, /area/aro3/bar) "zY" = ( -/obj/machinery/vending/boozeomat{ - density = 0; - pixel_y = 32 - }, +/obj/structure/closet/walllocker/emerglocker/north, /turf/simulated/floor/tiled/eris/steel/bar_dance, /area/aro3/bar) "Aa" = ( @@ -3411,15 +3459,15 @@ /area/aro3/hallway_starboard) "Bw" = ( /obj/structure/fans/hardlight, -/obj/machinery/door/blast/multi_tile/four_tile_hor{ - id = "aroshipshutter_ramp" - }, /obj/machinery/button/remote/blast_door{ dir = 4; id = "aroshipshutter_ramp"; name = "hangar shutters"; pixel_x = -28 }, +/obj/machinery/door/blast/multi_tile/four_tile_hor_sec{ + id = "aroshipshutter_ramp" + }, /turf/simulated/floor/reinforced, /area/aro3/flight_deck) "Bx" = ( @@ -3581,13 +3629,10 @@ /turf/simulated/floor/tiled/techmaint, /area/aro3/hallway_bunkrooms) "Di" = ( -/obj/effect/shuttle_landmark{ - base_area = /area/space; - base_turf = /turf/space; - landmark_tag = "aronai3_aftstbd"; - name = "Aft and Starboard" +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 }, -/turf/space, +/turf/simulated/floor/reinforced/airless, /area/space) "Dn" = ( /turf/space/internal_edge/left, @@ -3614,12 +3659,14 @@ /turf/simulated/floor/tiled/eris/dark/gray_platform, /area/aro3/hallway_bunkrooms) "DA" = ( -/obj/structure/fans/hardlight, -/obj/machinery/door/blast/multi_tile/four_tile_hor{ - id = "aroshipshutter_ramp" +/obj/structure/cable/cyan{ + icon_state = "1-2" }, -/turf/simulated/floor/reinforced, -/area/aro3/flight_deck) +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) "DB" = ( /obj/structure/cable/cyan{ icon_state = "2-8" @@ -3640,7 +3687,7 @@ /turf/simulated/floor/tiled/eris/steel/panels, /area/aro3/eva_hall) "DQ" = ( -/obj/structure/bed/chair/sofa/black/left{ +/obj/structure/bed/chair/sofa/corp/left{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark, @@ -3717,6 +3764,12 @@ }, /turf/simulated/floor/carpet/turcarpet, /area/aro3/suite_starboard) +"Ew" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 26 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) "Ex" = ( /obj/machinery/computer/ship/navigation/telescreen{ pixel_y = 23 @@ -3945,7 +3998,9 @@ dir = 1; pixel_y = -24 }, -/obj/item/device/uav/loaded, +/obj/item/device/uav/loaded{ + nickname = "FoxBot Beta" + }, /turf/simulated/floor/tiled/eris/dark/gray_perforated, /area/aro3/repair_bay) "Gy" = ( @@ -4048,6 +4103,12 @@ "Hv" = ( /turf/simulated/floor/bluegrid, /area/space) +"Hw" = ( +/obj/machinery/light/floortube{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) "Hz" = ( /obj/structure/cable/cyan{ icon_state = "4-8" @@ -4070,7 +4131,7 @@ /turf/space, /area/space) "HH" = ( -/obj/structure/bed/chair/sofa/black{ +/obj/structure/bed/chair/sofa/corp{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark, @@ -4145,6 +4206,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, +/obj/machinery/light/floortube, /turf/simulated/floor/tiled/eris/dark/danger, /area/aro3/workshop) "IK" = ( @@ -4419,6 +4481,9 @@ /obj/machinery/clonepod/transhuman/full{ req_access = list() }, +/obj/machinery/light{ + dir = 1 + }, /turf/simulated/floor/tiled/eris/white/cargo, /area/aro3/medical) "Lp" = ( @@ -4437,7 +4502,7 @@ /turf/simulated/floor/tiled/eris/white/cargo, /area/aro3/medical) "Ls" = ( -/obj/structure/bed/chair/sofa/black/corner{ +/obj/structure/bed/chair/sofa/corp/corner{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark, @@ -4653,6 +4718,9 @@ /obj/structure/cable/cyan{ icon_state = "1-4" }, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/carpet/turcarpet, /area/aro3/suite_port) "Na" = ( @@ -4740,6 +4808,15 @@ }, /turf/simulated/floor/tiled/eris/dark/violetcorener, /area/aro3/cockpit) +"NR" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_starboard) "NU" = ( /obj/structure/table/steel, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -4753,6 +4830,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/machinery/light, /turf/simulated/floor/tiled/eris/white/cargo, /area/aro3/medical) "Ob" = ( @@ -4902,11 +4980,12 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/machinery/light, /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/aro3/hallway_bunkrooms) "Px" = ( -/obj/machinery/alarm/alarms_hidden{ - pixel_y = 26 +/obj/machinery/light{ + dir = 1 }, /turf/simulated/floor/plating/eris/under, /area/aro3/power) @@ -4937,7 +5016,7 @@ /turf/simulated/floor/tiled/eris/white/golden, /area/aro3/medical) "PJ" = ( -/obj/structure/bed/chair/sofa/black{ +/obj/structure/bed/chair/sofa/corp{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark, @@ -5416,10 +5495,10 @@ /turf/simulated/wall/rpshull, /area/aro3/flight_deck) "Us" = ( -/obj/structure/bed/chair/sofa/black/left{ +/obj/machinery/light, +/obj/structure/bed/chair/sofa/corp/right{ dir = 1 }, -/obj/machinery/light, /turf/simulated/floor/tiled/eris/dark, /area/aro3/function) "Ut" = ( @@ -10378,7 +10457,7 @@ Ua Ua Ua Ua -Ua +Lf Ua Ua Ua @@ -11224,7 +11303,7 @@ Ua Ua Ua Ua -Lf +Ua Ua Ua Ua @@ -13910,10 +13989,10 @@ xj uE kH aq -TW +uL rP Gs -TW +uL aq Fn yn @@ -14194,7 +14273,7 @@ aS uE XQ aq -TW +Ew wx wx TW @@ -14336,7 +14415,7 @@ jV ED NV aq -qV +TW wW RK TW @@ -14483,7 +14562,7 @@ ps xa TW TW -TW +uL aq aq aq @@ -15009,7 +15088,7 @@ IT hb Xm hU -Cv +qV Cv Ej ZB @@ -15578,7 +15657,7 @@ zu uJ dp uJ -zu +Hw qX Fb zu @@ -15749,7 +15828,7 @@ Fr NC NC ue -Is +bF hi Hn NC @@ -15909,8 +15988,8 @@ Ov Ov Ov Ov -ke -hD +Ur +Di hD hD Au @@ -16052,7 +16131,7 @@ MA MA MA xG -te +DA te te sV @@ -16175,7 +16254,7 @@ CH NC NC cc -Is +bF Is Gt NC @@ -16193,7 +16272,7 @@ Ov Ov Ov Ov -DA +ke hD hD hD @@ -16279,7 +16358,7 @@ el el vZ lu -DM +vP XF XF Nu @@ -16288,7 +16367,7 @@ zu uJ nW uJ -zu +Hw qX Fb zu @@ -16308,7 +16387,7 @@ AD RJ vb yk -yk +gc yk Kw RJ @@ -16855,7 +16934,7 @@ Hd wF uX Yh -re +NR re bR BX @@ -17309,7 +17388,7 @@ WJ ly aY ki -aY +lC aY ly lq @@ -18011,7 +18090,7 @@ Yj LS EV mG -aO +iI DH Fx YY @@ -18026,7 +18105,7 @@ dO Ym tl nm -NF +TM fB gG ax @@ -20880,7 +20959,7 @@ Ua Ua Ua Ua -Di +Ua Ua Ua Ua @@ -21738,7 +21817,7 @@ Ua Ua Ua Ua -Ua +yx Ua Ua Ua diff --git a/maps/offmap_vr/om_ships/curashuttle.dmm b/maps/offmap_vr/om_ships/curashuttle.dmm index 1a10e4dc5ba..a09407b77ff 100644 --- a/maps/offmap_vr/om_ships/curashuttle.dmm +++ b/maps/offmap_vr/om_ships/curashuttle.dmm @@ -979,7 +979,7 @@ /area/shuttle/curabitur/curashuttle/med) "bM" = ( /obj/structure/fans/hardlight, -/obj/machinery/door/airlock/external/glass/bolted{ +/obj/machinery/door/airlock/external/bolted{ frequency = 1480; id_tag = "curadocking" }, diff --git a/maps/offmap_vr/talon/talon_v2.dm b/maps/offmap_vr/talon/talon_v2.dm index d914fce7a02..53ca5f052e5 100644 --- a/maps/offmap_vr/talon/talon_v2.dm +++ b/maps/offmap_vr/talon/talon_v2.dm @@ -336,7 +336,7 @@ speaking of, if some dumbass does take it and fly off solo then get themselves k /obj/item/clothing/under/rank/medical, /obj/item/clothing/under/rank/nurse, /obj/item/clothing/under/rank/orderly, - /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/labcoat/modern, /obj/item/clothing/suit/storage/toggle/fr_jacket, /obj/item/clothing/shoes/white, /obj/item/device/radio/headset/talon, diff --git a/maps/offmap_vr/talon/talon_v2.dmm b/maps/offmap_vr/talon/talon_v2.dmm index 22dcd205d13..5c22d644517 100644 --- a/maps/offmap_vr/talon/talon_v2.dmm +++ b/maps/offmap_vr/talon/talon_v2.dmm @@ -1141,6 +1141,7 @@ /area/talon_v2/anomaly_storage) "cZ" = ( /obj/structure/table/woodentable, +/obj/item/device/paicard, /turf/simulated/floor/wood, /area/talon_v2/crew_quarters/meditation) "da" = ( @@ -1501,6 +1502,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/item/device/paicard, /turf/simulated/floor/tiled/techfloor, /area/talon_v2/workroom) "dV" = ( @@ -1850,6 +1852,15 @@ /obj/machinery/light{ dir = 8 }, +/obj/structure/dogbed, +/mob/living/simple_mob/animal/passive/dog/bullterrier{ + desc = "That's Rupert. He looks pretty important. He looks at you with an unwavering gaze of strength and power. You feel like it would be a mistake to challenge his authority."; + devourable = 0; + digestable = 0; + health = 200; + maxHealth = 200; + name = "Rupert" + }, /turf/simulated/floor/tiled/techfloor, /area/talon_v2/bridge) "eV" = ( @@ -2249,10 +2260,6 @@ /turf/simulated/floor/tiled/techfloor, /area/talon_v2/armory) "gj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, /obj/machinery/power/sensor{ name = "Talon Power Generation"; name_tag = "TLN-PWR-GEN" @@ -10631,7 +10638,9 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 }, -/obj/machinery/suspension_gen, +/obj/machinery/suspension_gen{ + req_access = list(301) + }, /turf/simulated/floor/tiled/techfloor, /area/talon_v2/anomaly_storage) "Jf" = ( @@ -13712,8 +13721,13 @@ /turf/simulated/wall/rshull, /area/talon_v2/maintenance/wing_port) "TT" = ( -/turf/simulated/wall/rshull, -/area/space) +/mob/living/simple_mob/animal/passive/dog/corgi/puppy{ + desc = "That's Hendrickson, warden of the Talon's brig. No schemes can escape the watchful gleam of this corgi's deep, dark eyes."; + name = "Hendrickson" + }, +/obj/structure/dogbed, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) "TW" = ( /obj/structure/cable/green{ d1 = 1; @@ -23667,7 +23681,7 @@ hS MT db ZW -Kj +TT Xm aN qm @@ -26199,7 +26213,7 @@ aa aa aa mI -TT +JO JO qc qI diff --git a/maps/southern_cross/items/clothing/sc_accessory.dm b/maps/southern_cross/items/clothing/sc_accessory.dm index 66d977ffc2e..f47c344fcd5 100644 --- a/maps/southern_cross/items/clothing/sc_accessory.dm +++ b/maps/southern_cross/items/clothing/sc_accessory.dm @@ -10,5 +10,5 @@ desc = "Sturdy mess of black synthcotton belts and buckles." icon_state = "pilot_webbing2" sprite_sheets = list( - SPECIES_TESHARI = 'icons/mob/species/teshari/ties.dmi' + SPECIES_TESHARI = 'icons/inventory/accessory/mob_teshari.dmi' ) \ No newline at end of file diff --git a/maps/southern_cross/loadout/loadout_vr.dm b/maps/southern_cross/loadout/loadout_vr.dm index 613095be303..db62b7394bb 100644 --- a/maps/southern_cross/loadout/loadout_vr.dm +++ b/maps/southern_cross/loadout/loadout_vr.dm @@ -9,6 +9,6 @@ allowed_roles = list("Pilot") /datum/gear/head/pilot/talon - display_name = "helmet, ITV pilot (Pilot)" + display_name = "helmet, Talon pilot (Pilot)" path = /obj/item/clothing/head/pilot_vr/talon allowed_roles = list("Pilot") \ No newline at end of file diff --git a/maps/southern_cross/structures/closets/medical.dm b/maps/southern_cross/structures/closets/medical.dm index f528c2a0f15..666b42d6173 100644 --- a/maps/southern_cross/structures/closets/medical.dm +++ b/maps/southern_cross/structures/closets/medical.dm @@ -13,6 +13,7 @@ /obj/item/clothing/under/rank/chief_medical_officer/skirt, /obj/item/clothing/suit/storage/toggle/labcoat/cmo, /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, + /obj/item/clothing/suit/storage/toggle/labcoat/modern/cmo, /obj/item/weapon/cartridge/cmo, /obj/item/clothing/gloves/sterile/latex, /obj/item/clothing/shoes/brown, diff --git a/maps/submaps/engine_submaps_vr/tether/engine_sme.dmm b/maps/submaps/engine_submaps_vr/tether/engine_sme.dmm index 7cf63e8768f..9aa7ed41fec 100644 --- a/maps/submaps/engine_submaps_vr/tether/engine_sme.dmm +++ b/maps/submaps/engine_submaps_vr/tether/engine_sme.dmm @@ -47,7 +47,6 @@ /area/space) "aj" = ( /obj/machinery/atmospherics/pipe/manifold/visible/black{ - icon_state = "map"; dir = 1 }, /obj/structure/lattice, @@ -55,7 +54,6 @@ /area/space) "ak" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ - icon_state = "intact"; dir = 4 }, /turf/space, @@ -107,9 +105,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 + name = "RADIOACTIVE AREA" }, /turf/simulated/wall/r_wall, /area/engineering/engine_room) @@ -136,7 +132,6 @@ /area/engineering/engine_room) "ay" = ( /obj/machinery/atmospherics/pipe/manifold/visible/black{ - icon_state = "map"; dir = 1 }, /turf/simulated/floor, @@ -176,10 +171,8 @@ "aF" = ( /obj/machinery/door/blast/regular{ dir = 4; - icon_state = "pdoor1"; id = "EngineVent"; - name = "Reactor Vent"; - p_open = 0 + name = "Reactor Vent" }, /turf/simulated/floor/reinforced/nitrogen{ nitrogen = 82.1472 @@ -237,7 +230,6 @@ /area/engineering/engine_room) "aN" = ( /obj/effect/floor_decal/industrial/warning/cee{ - icon_state = "warningcee"; dir = 1 }, /obj/machinery/atmospherics/unary/vent_pump/engine{ @@ -248,8 +240,6 @@ icon_state = "map_vent_in"; id_tag = "cooling_out"; initialize_directions = 4; - pressure_checks = 1; - pressure_checks_default = 1; pump_direction = 0; use_power = 1 }, @@ -259,20 +249,16 @@ /area/engineering/engine_room) "aO" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 4 }, /obj/structure/grille, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 1 }, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 8 }, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 4 }, /obj/machinery/door/blast/regular{ @@ -285,7 +271,6 @@ /area/engineering/engine_room) "aP" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 4 }, /obj/effect/floor_decal/industrial/warning{ @@ -295,7 +280,6 @@ /area/engineering/engine_room) "aQ" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 4 }, /obj/effect/floor_decal/industrial/warning, @@ -307,21 +291,18 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/black, /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 4 }, /turf/simulated/floor, /area/engineering/engine_room) "aS" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 4 }, /turf/simulated/floor, /area/engineering/engine_room) "aT" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 10 }, /obj/machinery/meter, @@ -345,11 +326,9 @@ /area/template_noop) "aW" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 4 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 8 }, /obj/machinery/camera/network/engine{ @@ -371,11 +350,9 @@ /area/engineering/engine_room) "aY" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 4 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 8 }, /turf/simulated/floor/reinforced/nitrogen{ @@ -385,11 +362,9 @@ "aZ" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 8 }, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 4 }, /obj/machinery/door/blast/regular{ @@ -410,12 +385,11 @@ /obj/machinery/power/emitter{ anchored = 1; dir = 8; + icon_state = "emitter2"; id = "EngineEmitter"; - pixel_y = 8; state = 2 }, /obj/structure/cable/cyan{ - d1 = 0; d2 = 4; icon_state = "0-4" }, @@ -470,7 +444,6 @@ icon_state = "0-8" }, /obj/structure/cable/cyan{ - d1 = 0; d2 = 4; icon_state = "0-4" }, @@ -495,16 +468,13 @@ /area/engineering/engine_room) "bh" = ( /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; dir = 4 }, /obj/effect/floor_decal/industrial/warning{ dir = 10 }, /obj/machinery/atmospherics/unary/outlet_injector{ - dir = 2; frequency = 1438; - icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; pixel_y = 1; @@ -518,7 +488,6 @@ /area/engineering/engine_room) "bi" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 1 }, /obj/effect/floor_decal/industrial/warning, @@ -546,11 +515,9 @@ /obj/structure/grille, /obj/structure/window/phoronreinforced, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 8 }, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 4 }, /obj/machinery/door/blast/regular{ @@ -563,7 +530,6 @@ /area/engineering/engine_room) "bl" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 9 }, /turf/simulated/floor, @@ -585,7 +551,6 @@ /area/engineering/engine_room) "bo" = ( /obj/machinery/atmospherics/pipe/simple/visible/black{ - icon_state = "intact"; dir = 10 }, /turf/simulated/floor, @@ -601,8 +566,7 @@ icon_state = "1-2" }, /obj/machinery/light{ - dir = 4; - icon_state = "tube1" + dir = 4 }, /turf/simulated/floor, /area/engineering/engine_room) @@ -611,15 +575,12 @@ /obj/structure/grille, /obj/structure/window/phoronreinforced, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 1 }, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 8 }, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 4 }, /obj/machinery/door/blast/regular{ @@ -643,15 +604,12 @@ /obj/structure/grille, /obj/structure/window/phoronreinforced, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 1 }, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 8 }, /obj/structure/window/phoronreinforced{ - icon_state = "phoronrwindow"; dir = 4 }, /obj/machinery/door/blast/regular{ @@ -686,9 +644,10 @@ req_access = list(10) }, /obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 + dir = 8 + }, +/obj/item/device/geiger/wall/west{ + pixel_x = -36 }, /turf/simulated/floor, /area/engineering/engine_room) @@ -728,12 +687,9 @@ /area/template_noop) "bB" = ( /obj/machinery/computer/general_air_control/supermatter_core{ - dir = 2; - frequency = 1438; input_tag = "cooling_in"; name = "Engine Cooling Control"; output_tag = "cooling_out"; - pressure_setting = 100; sensors = list("engine_sensor" = "Engine Core"); throwpass = 1 }, @@ -751,7 +707,6 @@ id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = -25; - pixel_y = 0; req_access = list(10) }, /turf/simulated/floor, @@ -801,7 +756,6 @@ dir = 4 }, /obj/machinery/atmospherics/valve/digital{ - dir = 2; name = "Emergency Cooling Valve 1" }, /obj/effect/floor_decal/industrial/warning/corner{ @@ -856,7 +810,6 @@ desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; - pixel_x = 0; pixel_y = -3; req_access = list(10) }, @@ -944,8 +897,7 @@ /area/engineering/engine_room) "bX" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 10; - icon_state = "intact" + dir = 10 }, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor, @@ -956,7 +908,6 @@ /area/engineering/engine_room) "bZ" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 6 }, /obj/effect/floor_decal/industrial/warning, @@ -964,7 +915,6 @@ /area/engineering/engine_room) "ca" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ - icon_state = "map"; dir = 4 }, /obj/effect/floor_decal/industrial/warning/corner{ @@ -1043,7 +993,6 @@ "ci" = ( /obj/machinery/atmospherics/pipe/simple/visible/green, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 4 }, /turf/simulated/floor, @@ -1254,7 +1203,6 @@ /area/engineering/engine_room) "cF" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ - icon_state = "intact"; dir = 5 }, /obj/effect/floor_decal/industrial/warning/corner, @@ -1262,7 +1210,6 @@ /area/engineering/engine_room) "cG" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ - icon_state = "map"; dir = 4 }, /obj/machinery/meter, @@ -1301,7 +1248,6 @@ desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; - pixel_x = 0; pixel_y = -25; req_access = null; req_one_access = list(11,24) @@ -1331,7 +1277,6 @@ /area/engineering/engine_room) "cP" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 4 }, /turf/simulated/floor, @@ -1346,7 +1291,6 @@ id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_x = 22; - pixel_y = 0; req_access = list(10) }, /turf/simulated/floor, @@ -1354,7 +1298,6 @@ "cR" = ( /obj/machinery/door/blast/regular{ dir = 4; - icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Gas Storage" @@ -1420,7 +1363,6 @@ desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; - pixel_x = 0; pixel_y = 25; req_access = null; req_one_access = list(11,24) @@ -1432,7 +1374,6 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /obj/structure/extinguisher_cabinet{ dir = 1; - icon_state = "extinguisher_closed"; pixel_y = 32 }, /turf/simulated/floor, @@ -1445,7 +1386,6 @@ /obj/machinery/button/remote/blast_door{ id = "EngineVent"; name = "Reactor Ventillatory Control"; - pixel_x = 0; pixel_y = -25; req_access = list(10) }, @@ -1471,7 +1411,6 @@ /area/engineering/engine_room) "df" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 4 }, /obj/machinery/alarm{ @@ -1483,14 +1422,12 @@ /area/engineering/engine_room) "dg" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 9 }, /turf/simulated/floor, /area/engineering/engine_room) "dh" = ( /obj/item/device/radio/intercom{ - dir = 2; pixel_y = -24 }, /turf/simulated/floor, @@ -1518,13 +1455,11 @@ /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /obj/machinery/light/small{ - dir = 4; - pixel_y = 0 + dir = 4 }, /obj/machinery/alarm{ dir = 8; - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -1532,8 +1467,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_y = 0 + name = "HIGH VOLTAGE" }, /turf/simulated/wall/r_wall, /area/engineering/engine_room) @@ -1541,8 +1475,7 @@ /obj/effect/floor_decal/industrial/outline/blue, /obj/machinery/portable_atmospherics/canister/phoron, /obj/machinery/light/small{ - dir = 8; - pixel_x = 0 + dir = 8 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -1617,7 +1550,6 @@ id = "EngineEmitterPortWest2"; name = "Engine Room Blast Doors"; pixel_x = 25; - pixel_y = 0; req_access = null; req_one_access = list(11,24) }, @@ -1627,9 +1559,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 + name = "RADIOACTIVE AREA" }, /turf/simulated/wall/r_wall, /area/template_noop) @@ -1637,7 +1567,6 @@ /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 4; - icon_state = "pdoor1"; id = "EngineEmitterPortWest2"; layer = 3.3; name = "Engine Gas Storage" @@ -1655,13 +1584,16 @@ }, /obj/machinery/door/blast/regular{ dir = 4; - icon_state = "pdoor1"; id = "EngineEmitterPortWest2"; layer = 3.3; name = "Engine Gas Storage" }, /turf/simulated/floor/tiled/steel_grid, /area/template_noop) +"vA" = ( +/obj/item/device/geiger/wall/south, +/turf/template_noop, +/area/template_noop) (1,1,1) = {" aa @@ -2515,7 +2447,7 @@ bA aa aa aa -aa +vA av aa aa diff --git a/maps/submaps/engine_submaps_vr/tether/engine_tesla.dmm b/maps/submaps/engine_submaps_vr/tether/engine_tesla.dmm index 16d5fee0fd1..c4b683b2215 100644 --- a/maps/submaps/engine_submaps_vr/tether/engine_tesla.dmm +++ b/maps/submaps/engine_submaps_vr/tether/engine_tesla.dmm @@ -122,6 +122,7 @@ /obj/structure/cable/cyan, /obj/machinery/power/emitter{ anchored = 1; + icon_state = "emitter1"; state = 1 }, /turf/simulated/floor/airless, @@ -1632,6 +1633,7 @@ /obj/machinery/power/emitter{ anchored = 1; dir = 1; + icon_state = "emitter1"; state = 1 }, /turf/simulated/floor/airless, diff --git a/maps/submaps/pois_vr/debris_field/derelict.dmm b/maps/submaps/pois_vr/debris_field/derelict.dmm index c1dcd090225..cbc325c351f 100644 --- a/maps/submaps/pois_vr/debris_field/derelict.dmm +++ b/maps/submaps/pois_vr/debris_field/derelict.dmm @@ -870,7 +870,6 @@ /turf/simulated/floor/tiled/dark, /area/submap/debrisfield/derelict/interior) "cF" = ( -/obj/effect/alien/egg, /obj/effect/alien/weeds, /turf/simulated/floor/tiled/dark, /area/submap/debrisfield/derelict/interior) diff --git a/maps/submaps/pois_vr/debris_field/mining_drones.dmm b/maps/submaps/pois_vr/debris_field/mining_drones.dmm index 5fa8f77d65d..c94ba771825 100644 --- a/maps/submaps/pois_vr/debris_field/mining_drones.dmm +++ b/maps/submaps/pois_vr/debris_field/mining_drones.dmm @@ -166,7 +166,7 @@ /turf/simulated/floor/tiled/airless, /area/submap/debrisfield/mining_outpost) "E" = ( -/obj/machinery/door/airlock/external/glass{ +/obj/machinery/door/airlock/external{ density = 0; health = 0; icon_state = "door_open"; @@ -175,7 +175,7 @@ /turf/simulated/floor/airless, /area/submap/debrisfield/mining_outpost) "F" = ( -/obj/machinery/door/airlock/external/glass/bolted, +/obj/machinery/door/airlock/external/bolted, /turf/simulated/floor/airless, /area/submap/debrisfield/mining_outpost) "G" = ( diff --git a/maps/submaps/pois_vr/debris_field/new_escapepod_xeno.dmm b/maps/submaps/pois_vr/debris_field/new_escapepod_xeno.dmm index ed2b127f4fd..5042974f3c9 100644 --- a/maps/submaps/pois_vr/debris_field/new_escapepod_xeno.dmm +++ b/maps/submaps/pois_vr/debris_field/new_escapepod_xeno.dmm @@ -66,7 +66,6 @@ /area/submap/debrisfield/misc_debris) "W" = ( /obj/effect/alien/weeds, -/obj/effect/alien/egg, /turf/simulated/floor/airless, /area/submap/debrisfield/misc_debris) "X" = ( diff --git a/maps/submaps/pois_vr/debris_field/ship_mining_drone.dmm b/maps/submaps/pois_vr/debris_field/ship_mining_drone.dmm index bb029e9daab..89891b76859 100644 --- a/maps/submaps/pois_vr/debris_field/ship_mining_drone.dmm +++ b/maps/submaps/pois_vr/debris_field/ship_mining_drone.dmm @@ -203,7 +203,7 @@ /area/submap/debrisfield/mining_drone_ship) "ay" = ( /obj/machinery/door/airlock/maintenance_hatch, -/turf/simulated/wall/rthull, +/turf/simulated/floor/airless, /area/submap/debrisfield/mining_drone_ship) "az" = ( /obj/machinery/door/blast/regular/open{ diff --git a/maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm b/maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm index 20924e23eb0..ea129ae20d9 100644 --- a/maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm +++ b/maps/submaps/surface_submaps/mountains/crashed_ufo_frigate.dmm @@ -2,7 +2,7 @@ "ab" = (/turf/simulated/shuttle/wall/alien,/area/submap/cave/crashed_ufo_frigate) "ac" = (/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) "ad" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/template_noop) -"ae" = (/obj/effect/alien/egg,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) +"ae" = (/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) "af" = (/mob/living/simple_mob/animal/space/alien/drone,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) "ag" = (/obj/machinery/porta_turret/alien{faction = "xeno"},/turf/simulated/floor/outdoors/ice,/area/submap/cave/crashed_ufo_frigate) "ah" = (/obj/structure/table/alien,/turf/simulated/floor/outdoors/ice,/area/submap/cave/crashed_ufo_frigate) @@ -11,7 +11,7 @@ "ak" = (/obj/machinery/porta_turret/alien{faction = "xeno"},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) "al" = (/turf/simulated/floor/outdoors/ice,/area/submap/cave/crashed_ufo_frigate) "am" = (/obj/structure/window/phoronreinforced,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) -"an" = (/obj/structure/window/phoronreinforced,/obj/effect/alien/egg,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) +"an" = (/obj/structure/window/phoronreinforced,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) "ao" = (/obj/structure/loot_pile/surface/alien/security,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo_frigate) "ap" = (/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate) "aq" = (/obj/structure/prop/alien/pod/open,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo_frigate) diff --git a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm index 003a57a7111..c641f359b8b 100644 --- a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm +++ b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm @@ -1,147 +1,1518 @@ -"aa" = (/turf/template_noop,/area/template_noop) -"ab" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ac" = (/obj/item/clothing/head/cone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ad" = (/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"ae" = (/obj/structure/inflatable,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"af" = (/obj/structure/inflatable/door,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ag" = (/obj/structure/shuttle/engine/heater{dir = 4; icon_state = "heater"},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"ah" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_l"},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"ai" = (/obj/structure/grille,/obj/structure/shuttle/window,/obj/machinery/door/blast/regular{dir = 8; id = "QShuttlePoIDoors"; layer = 3.3; name = "Emergency Lockdown Shutters"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aj" = (/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"ak" = (/obj/machinery/door/airlock/external{desc = "It opens and closes. It is stamped with the logo of Major Bill's Transportation"; frequency = 1380; icon_state = "door_locked"; id_tag = null; locked = 1; name = "MBT-540"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"al" = (/obj/structure/sign/biohazard{dir = 1},/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"am" = (/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/vomit,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"an" = (/obj/machinery/door/airlock{name = "Restroom"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"ao" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ap" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ar" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"as" = (/obj/machinery/vending/snack{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 0, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 0, /obj/item/weapon/reagent_containers/food/snacks/chips = 0, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 0, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 0, /obj/item/weapon/reagent_containers/food/snacks/packaged/spacetwinkie = 0, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 0, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 0, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 0)},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"at" = (/obj/machinery/vending/cola{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 0)},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"au" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"av" = (/obj/item/weapon/pickaxe/drill,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aw" = (/obj/item/clothing/mask/breath,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ax" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ay" = (/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"az" = (/obj/item/trash/syndi_cakes,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aA" = (/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aB" = (/obj/item/trash/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aC" = (/obj/item/weapon/material/knife/tacknife/boot,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aD" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aE" = (/obj/item/trash/sosjerky,/obj/item/weapon/storage/box/donut/empty,/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aG" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aI" = (/obj/machinery/button{name = "Cargo Hatch"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"aJ" = (/obj/machinery/computer,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"aK" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aL" = (/obj/structure/prop/blackbox/quarantined_shuttle,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"aM" = (/obj/item/trash/cheesie,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aO" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aP" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aQ" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aR" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aS" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aT" = (/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aU" = (/obj/machinery/door/airlock/engineering{icon_state = "door_locked"; locked = 1; name = "Cargo Bay"},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aV" = (/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aW" = (/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aX" = (/obj/item/device/paicard,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aY" = (/obj/machinery/door/blast/regular{name = "Cargo Door"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aZ" = (/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"ba" = (/obj/item/trash/cigbutt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bb" = (/obj/machinery/door/airlock/command{icon_state = "door_locked"; locked = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bc" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bd" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bh" = (/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bi" = (/obj/item/trash/candy,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bj" = (/obj/structure/table/rack,/obj/structure/loot_pile/maint/boxfort,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bk" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bl" = (/obj/structure/closet/crate/secure/science{icon_state = "scisecurecrateopen"; locked = 0; name = "Virus Samples - FRAGILE"; opened = 1},/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bm" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bn" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"bo" = (/obj/item/weapon/tool/crowbar/red,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bp" = (/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"br" = (/obj/structure/bed/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bs" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bt" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bu" = (/obj/effect/decal/remains/xeno,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bv" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bw" = (/obj/effect/decal/remains/mouse,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bx" = (/obj/random/maintenance,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"by" = (/obj/item/weapon/coin/silver,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bA" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bB" = (/obj/item/weapon/tank/emergency/oxygen/engi,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bC" = (/obj/item/trash/sosjerky,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bD" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bG" = (/obj/machinery/button{dir = 4; name = "Cargo Access"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bK" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/mucus/mapped,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bL" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bM" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bN" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bO" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bP" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bQ" = (/obj/item/poster,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bR" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bS" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"bT" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bU" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bV" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bW" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bX" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bY" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"bZ" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"ca" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"cb" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cc" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cd" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ce" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cf" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cg" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ck" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaabacababaaaaadadadacaa -aaabababababaeafaeaeabaaaaabababababababadagahabaa -aaacababadaiajakakalaiadaiadadadadadadadadadadaaaa -aaababadadamanaoapadaqaqaradasatadauavauadagahaaaa -aaaaadadadadadawaxayazaAaBaCaDaEadaFaGaHadaIadabaa -aaaaaiaJaKaLadaMaNaOaPaQaQaRaSaTaUaVaAaWaXaAaYabaa -aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa -aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa -aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa -aaababadadbHbIbJbKadbLaQbMadbNbOadbPbQbRadagahabaa -ababacabadaiajakakbSaiadaiadadadadadadadadadadaaaa -ababababbTabaeaeafaeababababbUabababababadagahaaaa -aaabababbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWadadadaaaa -aaaaababababababababbXbYbZcacbcbcbabcccdceabcfaaaa -aaaaacababcgchcicjckclababcmabcbcbababababababaaaa -aaaaaaababcnchababababababababaaaaaaaaaaababacaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"ac" = ( +/obj/item/clothing/head/cone, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"ad" = ( +/turf/simulated/shuttle/wall, +/area/submap/cave/qShuttle) +"ae" = ( +/obj/structure/inflatable, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"af" = ( +/obj/structure/inflatable/door, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"ag" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4; + icon_state = "heater" + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"ah" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_l" + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"ai" = ( +/obj/structure/grille, +/obj/structure/shuttle/window, +/obj/machinery/door/blast/regular{ + dir = 8; + id = "QShuttlePoIDoors"; + layer = 3.3; + name = "Emergency Lockdown Shutters" + }, +/obj/item/tape/medical{ + dir = 4; + icon_state = "tape_door_0"; + layer = 3.4 + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"aj" = ( +/turf/simulated/shuttle/wall/hard_corner, +/area/submap/cave/qShuttle) +"ak" = ( +/obj/machinery/door/airlock/external{ + desc = "It opens and closes. It is stamped with the logo of Major Bill's Transportation"; + frequency = 1380; + icon_state = "door_locked"; + id_tag = null; + locked = 1; + name = "MBT-540" + }, +/obj/item/tape/medical{ + dir = 4; + icon_state = "tape_door_0"; + layer = 3.4 + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"al" = ( +/obj/structure/sign/biohazard{ + dir = 1 + }, +/turf/simulated/shuttle/wall/hard_corner, +/area/submap/cave/qShuttle) +"am" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/effect/decal/cleanable/vomit, +/obj/effect/decal/remains/human, +/turf/simulated/shuttle/floor, +/area/submap/cave/qShuttle) +"an" = ( +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"ao" = ( +/obj/effect/decal/cleanable/vomit, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"ap" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/suit/space/emergency, +/obj/item/clothing/head/helmet/space/emergency, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"aq" = ( +/obj/structure/bed/chair, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"ar" = ( +/obj/structure/bed/chair, +/obj/effect/decal/remains/human, +/obj/item/clothing/suit/space/emergency, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"as" = ( +/obj/machinery/vending/snack{ + contraband = null; + products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 0, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 0, /obj/item/weapon/reagent_containers/food/snacks/chips = 0, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 0, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 0, /obj/item/weapon/reagent_containers/food/snacks/packaged/spacetwinkie = 0, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 0, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 0, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 0) + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"at" = ( +/obj/machinery/vending/cola{ + contraband = null; + products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 0) + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"au" = ( +/obj/structure/closet/crate/secure/loot, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"av" = ( +/obj/item/weapon/pickaxe/drill, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aw" = ( +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"ax" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"ay" = ( +/obj/effect/decal/remains/xeno, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"az" = ( +/obj/item/trash/syndi_cakes, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aA" = ( +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aB" = ( +/obj/item/trash/cigbutt, +/obj/item/weapon/tank/emergency/oxygen, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aC" = ( +/obj/item/weapon/material/knife/tacknife/boot, +/obj/item/clothing/mask/breath, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aD" = ( +/obj/effect/decal/remains/human, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"aE" = ( +/obj/item/trash/sosjerky, +/obj/item/weapon/storage/box/donut/empty, +/obj/item/weapon/reagent_containers/food/drinks/sillycup, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"aF" = ( +/obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"aG" = ( +/obj/machinery/door/airlock/glass, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aH" = ( +/obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"aI" = ( +/obj/machinery/button{ + name = "Cargo Hatch" + }, +/turf/simulated/shuttle/wall, +/area/submap/cave/qShuttle) +"aJ" = ( +/obj/machinery/computer, +/turf/simulated/shuttle/floor, +/area/submap/cave/qShuttle) +"aK" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 8 + }, +/obj/effect/decal/cleanable/vomit, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"aL" = ( +/obj/structure/prop/blackbox/quarantined_shuttle, +/turf/simulated/shuttle/floor, +/area/submap/cave/qShuttle) +"aM" = ( +/obj/item/trash/cheesie, +/obj/effect/decal/remains/human, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"aN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aO" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aP" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/decal/remains/human, +/obj/item/clothing/mask/breath, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"aQ" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"aR" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aS" = ( +/obj/effect/decal/cleanable/vomit, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aT" = ( +/obj/item/clothing/head/helmet/space/emergency, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"aU" = ( +/obj/machinery/door/airlock/engineering{ + icon_state = "door_locked"; + locked = 1; + name = "Cargo Bay" + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aV" = ( +/obj/item/weapon/virusdish/random, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aW" = ( +/obj/item/weapon/material/shard, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aX" = ( +/obj/item/device/paicard, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aY" = ( +/obj/machinery/door/blast/regular{ + name = "Cargo Door" + }, +/obj/item/tape/medical{ + dir = 4; + icon_state = "tape_door_0"; + layer = 3.4 + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"aZ" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/under/mbill{ + desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; + name = "\improper old Major Bill's uniform" + }, +/obj/item/clothing/head/soft/mbill{ + desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; + name = "old shipping cap" + }, +/turf/simulated/shuttle/floor, +/area/submap/cave/qShuttle) +"ba" = ( +/obj/item/trash/cigbutt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bb" = ( +/obj/machinery/door/airlock/command{ + icon_state = "door_locked"; + locked = 1 + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bc" = ( +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bd" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/suit/space/emergency, +/obj/item/clothing/head/helmet/space/emergency, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"be" = ( +/obj/structure/grille, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"bf" = ( +/obj/structure/grille, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"bg" = ( +/obj/structure/grille, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"bh" = ( +/obj/item/clothing/suit/space/emergency, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bi" = ( +/obj/item/trash/candy, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bj" = ( +/obj/structure/table/rack, +/obj/structure/loot_pile/maint/boxfort, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bk" = ( +/obj/structure/table/rack, +/obj/item/weapon/shovel, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bl" = ( +/obj/structure/closet/crate/secure/science{ + icon_state = "scisecurecrateopen"; + locked = 0; + name = "Virus Samples - FRAGILE"; + opened = 1 + }, +/obj/item/weapon/virusdish/random, +/obj/item/weapon/virusdish/random, +/obj/item/weapon/virusdish/random, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bm" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 8 + }, +/obj/effect/decal/remains/human, +/obj/item/clothing/under/mbill{ + desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; + name = "\improper old Major Bill's uniform" + }, +/obj/item/clothing/head/soft/mbill{ + desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; + name = "old shipping cap" + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bn" = ( +/obj/structure/table/standard, +/obj/item/device/taperecorder, +/turf/simulated/shuttle/floor, +/area/submap/cave/qShuttle) +"bo" = ( +/obj/item/weapon/tool/crowbar/red, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bp" = ( +/obj/item/trash/chips, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bq" = ( +/obj/structure/bed/chair, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"br" = ( +/obj/structure/bed/chair, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bs" = ( +/obj/structure/bed/chair, +/obj/effect/decal/remains/human, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/soft/mbill{ + desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; + name = "old shipping cap" + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bt" = ( +/obj/structure/bed/chair, +/obj/effect/decal/remains/human, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bu" = ( +/obj/effect/decal/remains/xeno, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bv" = ( +/obj/item/weapon/material/shard{ + icon_state = "medium" + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bw" = ( +/obj/effect/decal/remains/mouse, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bx" = ( +/obj/random/maintenance, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"by" = ( +/obj/item/weapon/coin/silver, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bz" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/suit/space/emergency, +/obj/item/clothing/head/helmet/space/emergency, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bA" = ( +/obj/effect/decal/cleanable/generic, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bB" = ( +/obj/item/weapon/tank/emergency/oxygen/engi, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bC" = ( +/obj/item/trash/sosjerky, +/obj/effect/decal/remains/human, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bD" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/mask/breath, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bE" = ( +/obj/structure/grille, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"bF" = ( +/obj/structure/grille, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/shuttle/plating, +/area/submap/cave/qShuttle) +"bG" = ( +/obj/machinery/button{ + dir = 4; + name = "Cargo Access" + }, +/turf/simulated/shuttle/wall, +/area/submap/cave/qShuttle) +"bH" = ( +/obj/machinery/recharge_station, +/turf/simulated/shuttle/floor, +/area/submap/cave/qShuttle) +"bI" = ( +/obj/machinery/door/airlock{ + name = "Charge Station" + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bJ" = ( +/obj/item/trash/tastybread, +/obj/item/weapon/material/butterfly/boxcutter, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bK" = ( +/obj/effect/decal/cleanable/vomit, +/obj/effect/decal/cleanable/mucus/mapped, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bL" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/decal/remains/xeno, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bM" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/item/weapon/card/id/external{ + desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; + name = "VIMC identification card"; + rank = "Miner"; + registered_name = "Nadia Chu" + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bN" = ( +/obj/structure/table/rack, +/obj/item/weapon/storage/toolbox/emergency, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bO" = ( +/obj/structure/table/rack, +/obj/item/clothing/head/soft/mbill{ + desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; + name = "old shipping cap" + }, +/turf/simulated/shuttle/floor{ + icon_state = "floor_white" + }, +/area/submap/cave/qShuttle) +"bP" = ( +/obj/structure/ore_box, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bQ" = ( +/obj/item/poster, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bR" = ( +/obj/structure/loot_pile/maint/technical, +/turf/simulated/shuttle/floor{ + icon_state = "floor_yellow" + }, +/area/submap/cave/qShuttle) +"bS" = ( +/obj/structure/sign/biohazard, +/turf/simulated/shuttle/wall/hard_corner, +/area/submap/cave/qShuttle) +"bT" = ( +/obj/item/tape/medical{ + icon_state = "tape_v_0" + }, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"bU" = ( +/obj/item/taperoll/medical, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"bV" = ( +/obj/item/tape/medical{ + dir = 1; + icon_state = "tape_dir_0" + }, +/obj/item/tape/medical{ + dir = 4; + icon_state = "tape_dir_0" + }, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"bW" = ( +/obj/item/tape/medical{ + icon_state = "tape_h_0" + }, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"bX" = ( +/obj/structure/lattice, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"bY" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/iron, +/area/submap/cave/qShuttle) +"bZ" = ( +/obj/structure/sign/kiddieplaque{ + desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; + name = "\improper Sif Department of Disease Control notice" + }, +/turf/simulated/wall/iron, +/area/submap/cave/qShuttle) +"ca" = ( +/obj/structure/sign/warning, +/turf/simulated/wall/iron, +/area/submap/cave/qShuttle) +"cb" = ( +/obj/item/bodybag, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"cc" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/bodybags, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"cd" = ( +/obj/structure/table/steel, +/obj/item/clothing/suit/bio_suit, +/obj/random/medical/lite, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"ce" = ( +/obj/structure/closet/l3closet/virology, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"cf" = ( +/obj/item/weapon/reagent_containers/syringe/antiviral, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"cg" = ( +/obj/structure/dispenser/oxygen, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"ch" = ( +/obj/structure/table/steel, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"ci" = ( +/obj/structure/table/steel, +/obj/item/weapon/reagent_containers/syringe/antiviral, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"cj" = ( +/obj/structure/table/steel, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; + name = "Chemistry Cleaner" + }, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"ck" = ( +/obj/structure/table/steel, +/obj/item/weapon/tool/crowbar/power, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"cl" = ( +/obj/structure/table/rack, +/obj/item/clothing/head/bio_hood, +/obj/item/clothing/suit/bio_suit, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"cm" = ( +/obj/item/weapon/weldingtool/largetank, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +"cn" = ( +/obj/structure/closet/crate/medical, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/qShuttle) +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ac +ab +aa +aa +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ad +ai +ai +ai +ad +ab +ac +ab +ab +ab +ac +aa +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ad +ad +aJ +aZ +aJ +ad +ad +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ad +ad +ad +aK +ba +bm +ad +ad +ad +bT +bV +ab +ab +ab +aa +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ai +am +ad +aL +ba +bn +ad +bH +ai +ab +bW +ab +cg +cn +aa +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +ae +aj +an +ad +ad +bb +ad +ad +bI +aj +ae +bW +ab +ch +ch +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +aa +aa +aa +aa +aa +af +ak +ao +aw +aM +bc +bo +aD +bJ +ak +ae +bW +ab +ci +ab +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +aa +aa +aa +aa +aa +ae +ak +ap +ax +aN +bd +bp +by +bK +ak +af +bW +ab +cj +ab +aa +aa +aa +aa +"} +(10,1,1) = {" +aa +aa +aa +aa +aa +aa +ae +al +ad +ay +aO +ad +bq +aA +ad +bS +ae +bW +ab +ck +ab +aa +aa +aa +aa +"} +(11,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ai +aq +az +aP +be +br +bz +bL +ai +ab +bW +bX +cl +ab +aa +aa +aa +aa +"} +(12,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ad +aq +aA +aQ +bf +bs +aA +aQ +ad +ab +bW +bY +ab +ab +aa +aa +aa +aa +"} +(13,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ai +ar +aB +aQ +bg +bt +bA +bM +ai +ab +bW +bZ +ab +ab +aa +aa +aa +aa +"} +(14,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ad +ad +aC +aR +ad +bq +bB +ad +ad +ab +bW +ca +cm +ab +aa +aa +aa +aa +"} +(15,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ad +as +aD +aS +bh +aN +bC +bN +ad +bU +bW +cb +ab +ab +aa +aa +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +ac +ab +ad +at +aE +aT +bi +bu +bD +bO +ad +ab +bW +cb +cb +aa +aa +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ad +ad +ad +aU +ad +aU +ad +ad +ad +ab +bW +cb +cb +aa +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ad +au +aF +aV +bj +bv +bE +bP +ad +ab +bW +ab +ab +aa +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ad +av +aG +aA +aA +aA +aG +bQ +ad +ab +bW +cc +ab +aa +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ad +au +aH +aW +bk +bw +bF +bR +ad +ab +bW +cd +ab +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +ad +ad +ad +ad +ad +aX +aA +aV +ad +ad +ad +ad +ad +ce +ab +ab +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +ad +ag +ad +ag +aI +aA +bl +bx +ad +ag +ad +ag +ad +ab +ab +ab +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +ab +ad +ah +ad +ah +ad +aY +aY +aY +bG +ah +ad +ah +ad +cf +ab +ac +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +ab +ac +ab +aa +aa +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/maps/submaps/surface_submaps/mountains/vault4.dmm b/maps/submaps/surface_submaps/mountains/vault4.dmm index 78ac6842d57..83843d7f687 100644 --- a/maps/submaps/surface_submaps/mountains/vault4.dmm +++ b/maps/submaps/surface_submaps/mountains/vault4.dmm @@ -7,7 +7,7 @@ "g" = (/obj/effect/alien/weeds/node,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) "h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) "i" = (/obj/effect/alien/weeds,/mob/living/simple_mob/animal/space/alien,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) -"j" = (/obj/effect/alien/weeds,/obj/effect/alien/egg,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) +"j" = (/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) (1,1,1) = {" aaaaaaaaa diff --git a/maps/submaps/surface_submaps/mountains/vault5.dmm b/maps/submaps/surface_submaps/mountains/vault5.dmm index 9de959c715e..24110c815e3 100644 --- a/maps/submaps/surface_submaps/mountains/vault5.dmm +++ b/maps/submaps/surface_submaps/mountains/vault5.dmm @@ -6,7 +6,7 @@ "f" = (/obj/effect/alien/weeds,/obj/item/clothing/suit/storage/vest/tactical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) "g" = (/obj/effect/alien/weeds,/obj/structure/bed/nest,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) "h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/mob/living/simple_mob/animal/space/alien/sentinel/praetorian,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) -"i" = (/obj/effect/alien/weeds,/obj/effect/alien/egg,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) +"i" = (/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) "j" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds/node,/mob/living/simple_mob/animal/space/alien/queen/empress,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) "k" = (/obj/effect/alien/weeds,/obj/item/clothing/head/helmet/tac,/obj/item/weapon/gun/projectile/SVD,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index f877a475d88..998734b07ab 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -537,15 +537,12 @@ /area/tether/surfacebase/medical/paramed) "aaT" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" + d1 = 2; + d2 = 4; + icon_state = "2-4" }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/surfacebase/outside/outside1) "aaU" = ( /turf/simulated/wall, /area/maintenance/lower/trash_pit) @@ -937,10 +934,8 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/surfacebase/outside/outside1) "abC" = ( /obj/effect/floor_decal/rust, /obj/structure/closet/crate, @@ -6294,7 +6289,7 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) "akK" = ( -/turf/simulated/wall, +/turf/simulated/wall/r_wall, /area/tether/surfacebase/lowernortheva/external) "akL" = ( /turf/simulated/floor/reinforced{ @@ -7690,6 +7685,7 @@ pixel_x = 32 }, /obj/structure/table/standard, +/obj/item/device/paicard, /turf/simulated/floor/tiled, /area/storage/primary) "amW" = ( @@ -8965,6 +8961,11 @@ locked = 1 }, /obj/effect/map_helper/airlock/door/ext_door, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled/steel_grid, /area/storage/surface_eva/external) "aoX" = ( @@ -8977,6 +8978,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled, /area/storage/surface_eva/external) "aoY" = ( @@ -8989,6 +8995,11 @@ icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled, /area/storage/surface_eva/external) "aoZ" = ( @@ -10818,11 +10829,6 @@ name = "Locker Room Maintenance" }, /obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /turf/simulated/floor/plating, /area/crew_quarters/locker) "asj" = ( @@ -12985,11 +12991,6 @@ /area/hallway/lower/first_west) "avK" = ( /obj/structure/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/structure/cable{ d1 = 1; d2 = 4; @@ -13744,13 +13745,12 @@ /area/rnd/hallway) "awU" = ( /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/structure/catwalk, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/storage/surface_eva/external) "awV" = ( /obj/effect/landmark{ name = "lightsout" @@ -14288,11 +14288,6 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 5 }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -14311,11 +14306,6 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -14337,16 +14327,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) -"axD" = ( -/obj/effect/floor_decal/rust, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/catwalk, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) "axE" = ( /obj/structure/catwalk, /obj/structure/cable{ @@ -14838,29 +14818,13 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) "ayr" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/tiled, -/area/rnd/hallway) +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/surfacebase/outside/outside1) "ays" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -15559,8 +15523,17 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_4) "azs" = ( -/turf/simulated/wall/r_wall, -/area/maintenance/lower/solars) +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/cable/heavyduty{ + icon_state = "2-4" + }, +/turf/simulated/floor/virgo3b, +/area/tether/surfacebase/outside/outside1) "azt" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -15574,11 +15547,6 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 5 }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/machinery/light{ dir = 8 }, @@ -16161,11 +16129,6 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/centralstairwell) "aAj" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/door/airlock/maintenance/rnd{ name = "Science Maintenance" }, @@ -16175,21 +16138,16 @@ /area/maintenance/lower/solars) "aAk" = ( /obj/effect/floor_decal/rust, -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/lower/solars) "aAl" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/cable, +/obj/structure/cable/heavyduty{ + icon_state = "0-8" }, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) +/turf/simulated/floor/virgo3b, +/area/tether/surfacebase/outside/outside1) "aAm" = ( /obj/random/junk, /obj/machinery/light/small{ @@ -16230,13 +16188,19 @@ /turf/simulated/floor/plating, /area/maintenance/lower/research) "aAs" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/structure/cable/heavyduty{ + icon_state = "1-2" }, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/plating, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/virgo3b_indoors, /area/maintenance/lower/solars) "aAt" = ( /obj/structure/cable{ @@ -16251,12 +16215,22 @@ /turf/simulated/floor/plating, /area/maintenance/lower/research) "aAu" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/cable/heavyduty{ + icon_state = "1-2" }, -/turf/simulated/floor/plating, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/virgo3b_indoors, /area/maintenance/lower/solars) "aAv" = ( /obj/structure/cable{ @@ -16293,17 +16267,18 @@ /turf/simulated/floor/plating, /area/maintenance/lower/research) "aAx" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; +/obj/structure/cable/heavyduty{ icon_state = "4-8" }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/maintenance/rnd{ - name = "Science Maintenance" +/obj/structure/railing{ + dir = 1 }, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/virgo3b_indoors, +/area/tether/surfacebase/outside/outside1) "aAy" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -16317,9 +16292,6 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 5 }, -/obj/structure/cable{ - icon_state = "1-8" - }, /turf/simulated/floor/tiled, /area/rnd/hallway) "aAz" = ( @@ -16852,14 +16824,17 @@ /area/maintenance/lower/research) "aBu" = ( /obj/structure/cable/heavyduty{ - icon_state = "0-2" + icon_state = "1-8" }, -/obj/structure/cable, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) -"aBv" = ( -/turf/simulated/wall, -/area/rnd/miscellaneous_lab) +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/virgo3b_indoors, +/area/tether/surfacebase/outside/outside1) "aBw" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -17211,12 +17186,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"aCc" = ( -/obj/structure/cable/heavyduty{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) "aCd" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -18642,20 +18611,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"aEQ" = ( -/obj/structure/sign/electricshock, -/turf/simulated/wall, -/area/maintenance/lower/solars) -"aER" = ( -/obj/structure/cable/heavyduty{ - icon_state = "1-2" - }, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) "aES" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -19791,7 +19746,7 @@ dir = 1 }, /obj/structure/railing, -/turf/simulated/floor/virgo3b, +/turf/simulated/floor/virgo3b_indoors, /area/tether/surfacebase/outside/outside1) "aGE" = ( /obj/structure/cable/heavyduty{ @@ -19803,45 +19758,13 @@ /obj/structure/railing, /turf/simulated/floor/virgo3b, /area/tether/surfacebase/outside/outside1) -"aGF" = ( -/obj/effect/floor_decal/rust, -/obj/structure/cable/heavyduty{ - icon_state = "4-8" - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/catwalk, -/turf/simulated/floor/virgo3b, -/area/tether/surfacebase/outside/outside1) "aGG" = ( /obj/effect/floor_decal/rust, /obj/structure/cable/heavyduty{ icon_state = "4-8" }, /obj/structure/catwalk, -/turf/simulated/floor/virgo3b, -/area/tether/surfacebase/outside/outside1) -"aGH" = ( -/obj/effect/floor_decal/rust, -/obj/structure/cable/heavyduty{ - icon_state = "4-8" - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/catwalk, -/turf/simulated/floor/virgo3b, -/area/tether/surfacebase/outside/outside1) -"aGI" = ( -/obj/structure/cable/heavyduty{ - icon_state = "1-8" - }, -/obj/structure/railing, -/obj/structure/railing{ - dir = 4 - }, -/turf/simulated/floor/virgo3b, +/turf/simulated/floor/virgo3b_indoors, /area/tether/surfacebase/outside/outside1) "aGJ" = ( /obj/structure/table/glass, @@ -28737,6 +28660,7 @@ dir = 8 }, /obj/structure/table/standard, +/obj/item/device/paicard, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) "aWW" = ( @@ -32556,9 +32480,6 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/cable/green{ - icon_state = "0-8" - }, /turf/simulated/floor/plating, /area/tether/surfacebase/security/brig) "eQz" = ( @@ -32879,7 +32800,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/orange{ d1 = 1; d2 = 2; @@ -32890,6 +32810,9 @@ d2 = 4; icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) "ghr" = ( @@ -33598,6 +33521,18 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) +"hTk" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/paicard, +/turf/simulated/floor/tiled, +/area/crew_quarters/locker) "hTw" = ( /obj/structure/cable/green{ d1 = 1; @@ -33635,10 +33570,6 @@ /area/tether/surfacebase/surface_one_hall) "hTQ" = ( /obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -33799,6 +33730,18 @@ dir = 1 }, /area/looking_glass/lg_1) +"iwg" = ( +/obj/structure/cable/heavyduty{ + icon_state = "1-2" + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/virgo3b_indoors, +/area/tether/surfacebase/outside/outside1) "iwE" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -34513,6 +34456,9 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) +"kGQ" = ( +/turf/simulated/floor/virgo3b_indoors, +/area/tether/surfacebase/outside/outside1) "kKl" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -38717,6 +38663,16 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) +"yiS" = ( +/obj/structure/cable/heavyduty{ + icon_state = "4-8" + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing, +/turf/simulated/floor/virgo3b_indoors, +/area/tether/surfacebase/outside/outside1) "ylH" = ( /obj/machinery/fitness/punching_bag/clown, /turf/simulated/floor/carpet/gaycarpet, @@ -38907,40 +38863,40 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aGD aaa aHL @@ -39050,40 +39006,40 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGE +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +yiS aaa aHL aHL @@ -39196,36 +39152,36 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGE +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +yiS aHo aad aad @@ -39340,35 +39296,35 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGE -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +yiS +aah aad aad aad @@ -39466,6 +39422,8 @@ aad aad aad aad +aah +aah aad aad aad @@ -39482,35 +39440,33 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGF -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +yiS +aah aad aad aad @@ -39605,6 +39561,14 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -39619,41 +39583,33 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGG -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +yiS +aah +aah aad aad aad @@ -39747,6 +39703,15 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -39760,42 +39725,33 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGG -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +yiS +aah +aah aad aad aad @@ -39888,6 +39844,16 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -39902,42 +39868,32 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGG -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +baU +baU +baU +baU +baU +aah +aah +aah +aah +aah +aah +aah +aah +aah +yiS +aah +aah aad aad aad @@ -40030,16 +39986,16 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad bcV aad @@ -40054,33 +40010,33 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGG -aad -aad -aad +baU +baU +aah +baU +ano +aah +baU +aah +ano +baU +baU +baU +ano +baU +baU +baU +ano +baU +baU +aah +ano +aah +aah +aAx +aah +baU +baU aad aad aad @@ -40172,6 +40128,17 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -40186,43 +40153,32 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU aGG -aad -aad -aad +baU +baU +baU aad aad aad @@ -40314,6 +40270,17 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -40328,43 +40295,32 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU aGG -aad -aad -aad +baU +baU +baU aad aad aad @@ -40456,6 +40412,18 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -40470,43 +40438,31 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGH -aad -aad -aad +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +aGG +baU +baU +baU aad aad aad @@ -40598,6 +40554,19 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -40610,6 +40579,32 @@ aad aad aad aad +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +aGG +baU +baU +baU aad aad aad @@ -40623,52 +40618,13 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGE -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -40741,6 +40697,18 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -40753,6 +40721,33 @@ aad aad aad aad +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +baU +kGQ +baU +baU +aGG +baU +baU +baU +baU aad aad aad @@ -40763,56 +40758,17 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGE -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -40883,19 +40839,19 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad ajK @@ -40903,59 +40859,59 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aGE -aad -aad -aad -aad +azs +aib +aib +aib +aib +iwg +iwg +aAu +iwg +iwg +iwg +aAs +iwg +iwg +iwg +aAs +iwg +iwg +iwg +aAs +iwg +iwg +iwg +aAs +iwg +iwg +aBu +baU +baU +baU +baU aad ajK aad aad aad +aah aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41026,45 +40982,19 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41074,31 +41004,57 @@ aad aGE aad aad +baU +baU +aah +aah +ano +aah +baU +baU +ano +baU +baU +baU +ano +baU +baU +baU +ano +baU +aah +aah +ano +baU +baU +baU +aah +aah +aah +aah aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41169,44 +41125,18 @@ aad aad aad aad +aah +aah +aah +aah aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41216,31 +41146,57 @@ aad aGE aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +baU +baU +baU +baU +baU +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41317,39 +41273,13 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +baU +baU +aah +aah aad aad aad @@ -41357,33 +41287,59 @@ aad aad aGE aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +baU +baU +baU +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41460,73 +41416,73 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aah -aah -aad -aad -aad -aad -aad -aad +baU +baU +baU +baU +baU +baU aad aad aad aad aad aGE -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41602,73 +41558,73 @@ aad aad aad aad -aad -aad -aad -aad -aad -aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aad +baU +baU +baU +baU +baU +baU aad aad aad aad aad aGE -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41755,62 +41711,62 @@ aad aad aad aad -aad -aad -aad -aad -aad -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -auK -auK -auK -auK -auK -auK -auK -aEQ -aad -aad aGE -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -41897,7 +41853,41 @@ aad aad aad aad -aad +aGE +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -41913,46 +41903,12 @@ aah aah aah aah -auK -aAs -aBu -aCc -aCc -aCc -aCc -aER -aib -aib -aGI -aad -aad aah aah aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad aad aad aad @@ -42036,33 +41992,53 @@ aah aah aah aoq -aoq -aoq -aoq -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -auK aaT -auK -auK -auK -auK -auK -auK +ayr +ayr +aAl +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -42075,26 +42051,6 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad aad aad aad @@ -42178,28 +42134,9 @@ aah aah aah aoq +abB aoq aoq -aoq -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -auK -aAu -auK aah aah aah @@ -42220,21 +42157,40 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -42320,7 +42276,7 @@ aah aah aah aor -aoV +awU aoV aqm aci @@ -42339,9 +42295,6 @@ aah aah aah aah -auK -aAu -auK aah aah aah @@ -42362,21 +42315,24 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -42481,9 +42437,6 @@ aah aah aah aah -auK -abB -auK aah aah aah @@ -42504,20 +42457,23 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -42623,9 +42579,6 @@ aah aah aah aah -auK -aAu -auK aah aah aah @@ -42646,16 +42599,19 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -42765,9 +42721,6 @@ aah aah aah aah -auK -aAl -auK aah aah aah @@ -42789,14 +42742,17 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -42907,9 +42863,16 @@ agv agv agv agv -azs -aAu -auK +agv +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -42931,13 +42894,6 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad aad aad aad @@ -43002,7 +42958,7 @@ aad aad aad aad -aad +aah ajO akL akL @@ -43049,9 +43005,15 @@ ahH adV aip aiJ -azs -aaT -auK +agv +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -43073,12 +43035,6 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad aad aad aad @@ -43143,7 +43099,7 @@ aad aad aad aad -aad +aah aah ajO akO @@ -43191,9 +43147,15 @@ ahO aij ais aiK -azs -aAu -auK +agv +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -43215,12 +43177,6 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad aad aad aad @@ -43284,8 +43240,8 @@ aad aad aad aad -aad -aad +aah +aah aah ajO ajO @@ -43333,9 +43289,14 @@ ahP ahP aiH aiL -azs -aAu -auK +agv +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -43357,11 +43318,6 @@ aah aah aah aah -aad -aad -aad -aad -aad aad aad aad @@ -43424,10 +43380,10 @@ aad aad aad aad -aad -aad -aad -aad +aah +aah +aah +aah aah aah ajO @@ -43475,9 +43431,13 @@ ahQ ain aiI aiM -azs -aAu -auK +agv +aah +aah +aah +aah +aah +aah aah aah aah @@ -43499,10 +43459,6 @@ aah aah aah aah -aad -aad -aad -aad aad aad aad @@ -43565,10 +43521,10 @@ aad aad aad aad -aad -aad -aad -aad +aah +aah +aah +aah aah aah aah @@ -43617,18 +43573,21 @@ agv agv agv agv -azs -aAx -auK -aBv -aBv -aBv -aBv -aBv -aBv -aBv -aBv -aBv +agv +awn +awn +awn +awn +awn +awn +awn +awn +awn +awn +awn +aah +aah +aah aah aah aah @@ -43641,9 +43600,6 @@ aah aah aah aah -aad -aad -aad aad aad aad @@ -43705,11 +43661,11 @@ aad aad aad aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah aah aah aah @@ -43758,7 +43714,7 @@ avE awl awS axA -ayr +akg azt aAy aBw @@ -43770,7 +43726,9 @@ aES ajB aFY aGd -aBv +awn +aah +aah aah aah aah @@ -43783,8 +43741,6 @@ aah aah aah aah -aad -aad aad aad aad @@ -43845,13 +43801,13 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -43912,7 +43868,7 @@ aET aCe cdO glH -aBv +awn aah aah aah @@ -43925,7 +43881,7 @@ aah aah aah aah -aad +aah aad aad aad @@ -43986,13 +43942,13 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -44054,7 +44010,7 @@ abN abN ygY aGX -aBv +awn aah aah aah @@ -44066,7 +44022,7 @@ aKL aah aah aah -aad +aah aad aad aad @@ -44126,16 +44082,16 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -44183,7 +44139,7 @@ ava avH awn auK -avh +aws abN aeR aeR @@ -44196,7 +44152,7 @@ aio abN xgQ ofS -aBv +awn aah aah aah @@ -44267,16 +44223,16 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -44325,7 +44281,7 @@ avb avI ahl rJv -avh +aws abN aeR aeR @@ -44338,11 +44294,11 @@ aiB abN lMf aGX -aBv -aBv -aBv -aBv -aBv +awn +awn +awn +awn +awn aKL aLo bbo @@ -44409,16 +44365,16 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -44467,7 +44423,7 @@ anx acJ ahl rJv -avh +aws abN aeR aeR @@ -44551,13 +44507,13 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -44609,7 +44565,7 @@ avc avJ ahl rJv -avh +aws abN aeR aeR @@ -44692,13 +44648,13 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -44751,7 +44707,7 @@ auK auK auK rJv -axD +aAk abN aeR aeR @@ -44834,12 +44790,12 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aah aah akB @@ -44891,8 +44847,8 @@ aul auH axI avK -axI -awU +aws +aws aAk abN akT @@ -44917,7 +44873,7 @@ aMd aKL aah aah -aad +aah aad aad aad @@ -44976,12 +44932,12 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aah aah akB @@ -45059,8 +45015,8 @@ auW aKL aah aah -aad -aad +aah +aah aad aad aad @@ -45118,12 +45074,12 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aah aah akB @@ -45201,10 +45157,10 @@ aKL aKL aah aah -aad -aad -aad -aad +aah +aah +aah +aah aad aad aad @@ -45260,12 +45216,12 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aah aah akB @@ -45344,6 +45300,10 @@ aah aah aah aah +aah +aah +aah +aah aad aad aad @@ -45353,14 +45313,10 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah aad aad aad @@ -45402,12 +45358,12 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aah aah akB @@ -45487,25 +45443,25 @@ aah aah aah aah +aah +aah +aah +aah +aah aad aad aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -45545,11 +45501,11 @@ aad aad aad aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah aah aah akB @@ -45629,28 +45585,28 @@ adn adn aah aah +aah +aah +aah +aah +aah +aah +aah aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -45688,10 +45644,10 @@ aad aad aad aad -aad -aad -aad -aad +aah +aah +aah +aah aah aah akB @@ -45772,28 +45728,28 @@ adn aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -45830,10 +45786,10 @@ aad aad aad aad -aad -aad -aad -aad +aah +aah +aah +aah aah aah aah @@ -45914,29 +45870,29 @@ adn aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad baq @@ -45973,10 +45929,10 @@ aad aad aad aad +aah +aah aad -aad -aad -aad +aah aah aah aah @@ -46057,29 +46013,29 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -46115,8 +46071,8 @@ aad aad aad aad -aad -aad +aah +aah aad aad aad @@ -46199,6 +46155,17 @@ aah aah aah aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -46206,22 +46173,11 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah aad aad aad @@ -46258,12 +46214,12 @@ aad aad aad aad +aah aad aad aad aad -aad -aad +aah aah aah aah @@ -46341,6 +46297,15 @@ aah aah aah aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -46350,21 +46315,12 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aad aad aad @@ -46405,8 +46361,8 @@ aad aad aad aad -aad -aad +aah +aah aah aah gCa @@ -46502,12 +46458,12 @@ aTW aTW aad aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aad aad aad @@ -46543,14 +46499,14 @@ aad aad aad aad -bcV -aad aad aad aad aad aad aah +aah +aah gCa jTQ nBT @@ -46644,12 +46600,12 @@ aUy aTW aTW aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aad aad aad @@ -46690,9 +46646,9 @@ aad aad aad aad -aad -aad -aad +aah +aah +aah gCa gCa ucv @@ -46786,12 +46742,12 @@ aUR aUy aTW aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aad aad aad @@ -46833,8 +46789,8 @@ aad aad aad aad -aad -aad +aah +aah gCa iWx qsl @@ -46929,10 +46885,10 @@ aXd aTW aad aad -aad -aad -aad -aad +aah +aah +aah +aah aad aad aad @@ -46975,8 +46931,8 @@ aad aad aad aad -aad -aad +aah +aah gCa kwN lLD @@ -47071,19 +47027,19 @@ aXd aTW aad aad +aah +aah +aah +aah +aah aad aad aad aad aad aad -aad -aad -aad -aad -aad -aad -aad +aah +aah aad aad aad @@ -47118,7 +47074,7 @@ aad aad aad aad -aad +aah gCa wwm jio @@ -47212,21 +47168,21 @@ aUR aUx aTW aad +aah +aah +aah +aah +aah +aah +aah aad aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah aad aad aad @@ -47252,7 +47208,7 @@ aad aad aad aad -aad +bcV aad aad aad @@ -47357,20 +47313,20 @@ aah aah aah aah +aah +aah +aah +aah aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aad aad aad @@ -47401,7 +47357,7 @@ aad aad aad aad -adK +ano aad aad aad @@ -47499,21 +47455,21 @@ aah aah aah aah +aah +aah +aah +aah +aah aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -47641,21 +47597,21 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -47784,21 +47740,21 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -47926,21 +47882,21 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -48071,18 +48027,18 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -48214,18 +48170,18 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -48358,16 +48314,16 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -48500,16 +48456,16 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -48642,15 +48598,15 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -48785,14 +48741,14 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -48926,14 +48882,14 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -49068,14 +49024,14 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -49104,8 +49060,8 @@ aad aad aad aad -adK -adK +ano +ano aad aad aad @@ -49208,9 +49164,9 @@ aah aah aah aah -aad -aad -aad +aah +aah +aah aad aad aad @@ -49349,8 +49305,8 @@ aVn aah aah aah -aad -aad +aah +aah aad aad aad @@ -49490,8 +49446,8 @@ aVn aVn aYd aYd -aad -aad +aah +aah aad aad aad @@ -51233,8 +51189,8 @@ aad aad aad aad -adK -adK +ano +ano aad aad aad @@ -51375,8 +51331,8 @@ aad aad aad aad -adK -adK +ano +ano aad aad aad @@ -52084,7 +52040,7 @@ aad aad aad aad -aad +ano aad aad aan @@ -52651,7 +52607,7 @@ aad aad aad aad -adK +aad aad aad aar @@ -53361,9 +53317,9 @@ aad aad aad aad -adK aad aad +aah aan aan abX @@ -53405,7 +53361,7 @@ apF ash asx asU -atp +hTk atT aux auR @@ -53504,9 +53460,9 @@ aad aad aad aad -aad -aad -aad +aah +aah +aah aan acc acI @@ -53639,16 +53595,16 @@ aad aad aad aad +aah +aah aad aad aad aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah aan ace acK @@ -53753,7 +53709,7 @@ aYi aYi aYi aah -aad +aah aad aad aad @@ -53780,17 +53736,17 @@ aad aad aad aad +aah +aah +aah +aah +aah aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah aan aan aan @@ -53895,8 +53851,8 @@ aah aah aah aah -aad -aad +aah +aah aad aad aad @@ -53922,20 +53878,20 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah aff @@ -54037,11 +53993,11 @@ aah aah aah aah -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah aad aad aad @@ -54064,21 +54020,21 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aeE afm afm @@ -54178,15 +54134,15 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -54206,21 +54162,21 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aeE afn avk @@ -54320,15 +54276,15 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -54348,21 +54304,21 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aeE afx avl @@ -54461,16 +54417,16 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -54492,19 +54448,19 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aeE afB avQ @@ -54603,16 +54559,16 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -54635,18 +54591,18 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aeE afD avl @@ -54745,17 +54701,17 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -54777,17 +54733,17 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aeE afL @@ -54878,7 +54834,6 @@ qKk aUm baU baU -baU aah aah aah @@ -54886,18 +54841,19 @@ aah aah aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -54919,18 +54875,18 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad aah +aah +aah +aah +aah +aah +aah +aah +ano +ano +ano +ano aeE agq avS @@ -55021,25 +54977,25 @@ aWn baU baU baU -baU aah aah aah -aad aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55059,17 +55015,17 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +ano ack acM acM @@ -55147,10 +55103,10 @@ aah aah aah aah -aad -aad -aad -aad +aah +aah +aah +aah aUm lei wVm @@ -55164,23 +55120,23 @@ aad baU baU baU -baU aah aah -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55201,20 +55157,20 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad aah aah +aah +aah +aah +aah +aah +aah +aah +aah +ano +ano +ano +ano aeE aeE aeE @@ -55280,8 +55236,28 @@ aad aad aad aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aUm +aUm +kcv +kcv +kcv +kcv +kcv +aUm +aUm aad aad aad @@ -55289,40 +55265,20 @@ aad aah aah aah -aad -aad -aad -aad -aUm -aUm -kcv -kcv -kcv -kcv -kcv -aUm -aUm -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55342,19 +55298,19 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah naC @@ -55423,6 +55379,18 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55436,35 +55404,23 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55484,19 +55440,19 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah naC @@ -55518,18 +55474,18 @@ gWO fWT aah aah -aad -aad -aad -aad -aad aah -aad -aad aah aah aah aah +baU +baU +baU +baU +aah +aah +aah aty atx atx @@ -55565,6 +55521,17 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55579,33 +55546,22 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55626,19 +55582,19 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah naC @@ -55658,20 +55614,20 @@ fWT fWT fWT fWT -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad aah aah aah aah +aah +aah +baU +baU +baU +baU +baU +aah +aah +aah auD atz atz @@ -55707,6 +55663,16 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55722,29 +55688,19 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55767,21 +55723,21 @@ aaa aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -ajK -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah naC aAC @@ -55796,22 +55752,22 @@ aah aah aah aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +baU +aah aah aah auD @@ -55849,6 +55805,15 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55864,26 +55829,17 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55909,22 +55865,22 @@ aaa aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah naC naC naC @@ -55936,6 +55892,15 @@ naC aah aah aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -55943,19 +55908,10 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +baU +baU +aah +aah auD aud aud @@ -55992,6 +55948,14 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56007,24 +55971,16 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56051,24 +56007,35 @@ aaa aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aah aah aah @@ -56083,21 +56050,10 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +baU +baU +aah +aah auD afH afH @@ -56135,6 +56091,13 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56150,22 +56113,15 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56194,6 +56150,39 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56203,43 +56192,10 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +baU +baU +aah +aah auD aud aud @@ -56278,6 +56234,10 @@ aad aad aad aad +aah +aah +aah +aah aad aad aad @@ -56295,19 +56255,15 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56336,6 +56292,37 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56348,40 +56335,9 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +baU +aah +aah auD aud aud @@ -56421,6 +56377,10 @@ aad aad aad aad +aah +aah +aah +aah aad aad aad @@ -56438,17 +56398,13 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56480,6 +56436,34 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56494,36 +56478,8 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +baU +aah auD aud aud @@ -56564,6 +56520,9 @@ aad aad aad aad +aah +aah +aah aad aad aad @@ -56582,14 +56541,11 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah aad aad aad @@ -56625,6 +56581,30 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56641,31 +56621,7 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah auD aud aud @@ -56707,8 +56663,8 @@ aad aad aad aad -aad -aad +aah +aah aad aad aad @@ -56768,6 +56724,28 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56785,29 +56763,7 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah auD aud aud @@ -56911,6 +56867,26 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -56929,27 +56905,7 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah auD afH afH @@ -57054,23 +57010,23 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -57091,7 +57047,7 @@ aad aad aad aad -aad +aah auD aud aud @@ -57197,21 +57153,21 @@ aad aad aad aad +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah aad aad aad @@ -57341,15 +57297,15 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah +aah +aah +aah aad aad aad @@ -57484,12 +57440,12 @@ aad aad aad aad -aad -aad -aad -aad -aad -aad +aah +aah +aah +aah +aah +aah aad aad aad @@ -57613,7 +57569,7 @@ aaa aad aad aad -aad +ajK aad aad aad diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index e8fb87c2222..60bdcc90873 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -1032,10 +1032,6 @@ /obj/structure/bed/chair{ dir = 4 }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, @@ -1993,9 +1989,6 @@ /area/tether/surfacebase/medical/resleeving) "acY" = ( /obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -3141,6 +3134,7 @@ /obj/effect/floor_decal/corner/red/bordercorner2{ dir = 4 }, +/obj/machinery/vending/fitness, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "aeS" = ( @@ -3153,9 +3147,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 5 }, -/obj/machinery/vending/coffee{ - dir = 8 - }, +/obj/machinery/vending/coffee, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "aeT" = ( @@ -3676,9 +3668,6 @@ /obj/effect/floor_decal/corner/red/border{ dir = 4 }, -/obj/machinery/vending/fitness{ - dir = 4 - }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "afH" = ( @@ -3779,7 +3768,6 @@ /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/outfitting) "afL" = ( -/obj/structure/closet/wardrobe/red, /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, @@ -3791,6 +3779,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/vending/wardrobe/detdrobe, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/outfitting) "afM" = ( @@ -3800,7 +3789,6 @@ /obj/effect/floor_decal/corner/red/border{ dir = 5 }, -/obj/structure/closet/wardrobe/red, /obj/machinery/camera/network/security, /obj/machinery/atmospherics/unary/vent_pump/on, /obj/effect/floor_decal/borderfloorblack/corner2{ @@ -3809,6 +3797,7 @@ /obj/effect/floor_decal/corner/red/bordercorner2{ dir = 5 }, +/obj/machinery/vending/wardrobe/secdrobe, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/outfitting) "afN" = ( @@ -4202,6 +4191,7 @@ }, /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, +/obj/structure/table/bench/steel, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "agy" = ( @@ -4214,9 +4204,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 6 }, -/obj/machinery/vending/snack{ - dir = 8 - }, +/obj/structure/table/bench/steel, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "agz" = ( @@ -4301,9 +4289,6 @@ name = "Equipment Storage"; req_access = newlist() }, -/obj/structure/cable/green{ - icon_state = "4-8" - }, /obj/machinery/door/firedoor, /obj/structure/cable/green{ d1 = 4; @@ -5669,9 +5654,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 8 }, @@ -5681,6 +5663,9 @@ dir = 8 }, /obj/structure/sign/poster, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/centralhall) "aiO" = ( @@ -6723,7 +6708,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/vending/coffee, +/obj/machinery/vending/sol, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/uppersouthstairwell) "akB" = ( @@ -6739,7 +6724,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/vending/sol, +/obj/machinery/vending/wardrobe/virodrobe, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/uppersouthstairwell) "akC" = ( @@ -6749,6 +6734,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/vending/wardrobe/medidrobe, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 6 + }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/uppersouthstairwell) "akD" = ( @@ -6762,6 +6754,13 @@ dir = 1; pixel_y = 32 }, +/obj/machinery/vending/wardrobe/chemdrobe, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 6 + }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/uppersouthstairwell) "akE" = ( @@ -7387,11 +7386,6 @@ /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/armory) "alv" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/valve/digital{ dir = 4; name = "scrubber isolation valve" @@ -10036,9 +10030,6 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -10048,6 +10039,9 @@ /obj/effect/floor_decal/corner/red/bordercorner{ dir = 8 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "apI" = ( @@ -12639,6 +12633,10 @@ /obj/effect/floor_decal/corner/lime/border{ dir = 10 }, +/obj/structure/sink/kitchen{ + dir = 8; + pixel_x = -11 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) "auj" = ( @@ -13187,6 +13185,7 @@ /obj/machinery/recharger, /obj/item/weapon/storage/toolbox/mechanical, /obj/random/drinkbottle, +/obj/item/device/paicard, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) "avg" = ( @@ -20630,11 +20629,6 @@ /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence/upper) "aKk" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/door/airlock/engineering{ name = "Science Substation"; req_one_access = list(11,24,47) @@ -21339,11 +21333,6 @@ /turf/simulated/floor, /area/maintenance/substation/research) "aLE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/door/airlock/engineering{ name = "Science Substation"; req_one_access = list(11,24,47) @@ -21517,10 +21506,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -22087,10 +22072,10 @@ /area/rnd/lockers) "aMZ" = ( /obj/effect/floor_decal/industrial/outline, -/obj/structure/closet/wardrobe/science_white, /obj/machinery/light{ dir = 1 }, +/obj/machinery/vending/wardrobe/robodrobe, /turf/simulated/floor/tiled/dark, /area/rnd/lockers) "aNa" = ( @@ -24701,8 +24686,8 @@ /obj/effect/floor_decal/corner/yellow/border{ dir = 9 }, -/obj/structure/closet/secure_closet/atmos_personal, /obj/machinery/camera/network/engineering, +/obj/machinery/vending/wardrobe/atmosdrobe, /turf/simulated/floor/tiled, /area/engineering/lower/atmos_lockers) "aRV" = ( @@ -26101,9 +26086,6 @@ /obj/effect/floor_decal/corner/purple{ dir = 5 }, -/obj/structure/mopbucket, -/obj/item/weapon/mop, -/obj/item/weapon/reagent_containers/glass/bucket, /obj/effect/floor_decal/borderfloor/shifted{ dir = 1 }, @@ -26111,6 +26093,7 @@ dir = 1 }, /obj/machinery/camera/network/civilian, +/obj/structure/closet/jcloset, /turf/simulated/floor/tiled, /area/janitor) "aUM" = ( @@ -26126,9 +26109,7 @@ /obj/effect/floor_decal/corner/purple{ dir = 5 }, -/obj/structure/mopbucket, -/obj/item/weapon/mop, -/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/vending/wardrobe/janidrobe, /turf/simulated/floor/tiled, /area/janitor) "aUN" = ( @@ -26150,9 +26131,6 @@ /obj/effect/floor_decal/corner/purple{ dir = 5 }, -/obj/structure/mopbucket, -/obj/item/weapon/mop, -/obj/item/weapon/reagent_containers/glass/bucket, /turf/simulated/floor/tiled, /area/janitor) "aUO" = ( @@ -27824,6 +27802,9 @@ /obj/item/weapon/reagent_containers/spray/cleaner, /obj/item/weapon/reagent_containers/spray/cleaner, /obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/soap/nanotrasen, /turf/simulated/floor/tiled, /area/janitor) "aXT" = ( @@ -28129,23 +28110,26 @@ /obj/effect/floor_decal/corner/purple/bordercorner2{ dir = 8 }, -/obj/structure/closet/jcloset, -/obj/item/weapon/soap/nanotrasen, +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, /turf/simulated/floor/tiled, /area/janitor) "aYA" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/purple/border, -/obj/structure/closet/jcloset, -/obj/item/weapon/soap/nanotrasen, /obj/machinery/light, +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, /turf/simulated/floor/tiled, /area/janitor) "aYB" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/purple/border, -/obj/structure/closet/jcloset, -/obj/item/weapon/soap/nanotrasen, +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, /turf/simulated/floor/tiled, /area/janitor) "aYC" = ( @@ -29434,11 +29418,10 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/atmos) "bda" = ( -/obj/structure/catwalk, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "0-4" }, -/turf/simulated/floor/plating, +/turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "bdb" = ( /obj/structure/cable{ @@ -29649,11 +29632,6 @@ dir = 4 }, /obj/random/junk, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/plating, /area/maintenance/lower/south) "bdw" = ( @@ -29670,11 +29648,6 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/plating, /area/maintenance/lower/south) "bdx" = ( @@ -29688,11 +29661,6 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/plating, /area/maintenance/lower/south) "bdy" = ( @@ -29719,11 +29687,6 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /turf/simulated/floor/plating, /area/maintenance/lower/south) "bdA" = ( @@ -29932,8 +29895,7 @@ /area/rnd/outpost/xenobiology/outpost_slimepens) "bem" = ( /obj/structure/sink/kitchen{ - name = "sink"; - pixel_y = 32 + pixel_y = 20 }, /turf/simulated/floor/tiled/white, /area/rnd/outpost/xenobiology/outpost_slimepens) @@ -31016,6 +30978,7 @@ /obj/structure/sign/painting/public{ pixel_x = -30 }, +/obj/item/device/paicard, /turf/simulated/floor/wood, /area/tether/surfacebase/reading_room) "biK" = ( @@ -31586,6 +31549,7 @@ pixel_x = -23 }, /obj/random/junk, +/obj/item/device/paicard, /turf/simulated/floor/plating, /area/maintenance/lower/atmos) "bkE" = ( @@ -33925,10 +33889,6 @@ nightshift_setting = 2; pixel_y = 28 }, -/obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" - }, /obj/structure/cable/cyan{ d2 = 4; icon_state = "0-4" @@ -34082,6 +34042,11 @@ "qSJ" = ( /turf/simulated/floor/tiled/techmaint, /area/ai) +"qUf" = ( +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/vending/wardrobe/scidrobe, +/turf/simulated/floor/tiled/dark, +/area/rnd/lockers) "rbq" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/painting/chapel_secure{ @@ -34137,6 +34102,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_cyborg_station) +"rAv" = ( +/obj/machinery/vending/wardrobe/chapdrobe, +/turf/simulated/floor/lino, +/area/chapel/office) "rJc" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/effect/landmark/start{ @@ -35139,41 +35108,41 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -35282,40 +35251,40 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -35428,36 +35397,36 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -35572,35 +35541,35 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -35698,6 +35667,8 @@ aab aab aab aab +adt +adt aab aab aab @@ -35714,35 +35685,33 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -35837,6 +35806,14 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -35851,41 +35828,33 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -35979,6 +35948,15 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -35992,42 +35970,33 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36120,6 +36089,16 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36134,42 +36113,32 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36262,6 +36231,16 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36276,43 +36255,33 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36404,6 +36373,17 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36418,43 +36398,32 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36546,6 +36515,17 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36560,43 +36540,32 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36688,6 +36657,18 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36702,43 +36683,31 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36830,6 +36799,19 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36842,6 +36824,32 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36855,52 +36863,13 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36973,6 +36942,18 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36985,6 +36966,33 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -36995,56 +37003,17 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -37115,6 +37084,19 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -37125,69 +37107,56 @@ aab aab aab aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab aab aab +adt aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -37258,79 +37227,79 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +aab +aab +aab +aab +aab +aab +aab +aab +aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +aab +aab +aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -37401,78 +37370,78 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +aab +adt +adt +adt +adt +adt +adt +adt +aab +aab +aab +aab +aab +aab +aab +aab +aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -37549,73 +37518,73 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +aab +aab +aab +aab +aab +aab +aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -37692,37 +37661,10 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab adt adt -aab adt adt -aab -aab -aab -aab -aab adt adt aab @@ -37731,34 +37673,61 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -37834,21 +37803,12 @@ arj arj arj aab -aab -aab -aab -aab -aab adt -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt aab aab aab @@ -37869,38 +37829,47 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -37987,11 +37956,6 @@ adt adt adt adt -aab -aab -aab -aab -aab adt adt adt @@ -38013,36 +37977,41 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -38129,7 +38098,6 @@ adt adt adt adt -aab adt adt adt @@ -38155,8 +38123,6 @@ adt adt adt adt -aab -aab adt adt adt @@ -38164,27 +38130,30 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -38307,26 +38276,26 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -38452,21 +38421,21 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -38594,21 +38563,21 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -38736,20 +38705,20 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -38878,16 +38847,16 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -39021,14 +38990,14 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -39163,13 +39132,13 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -39234,7 +39203,7 @@ aab aab aab aab -aab +adt adt adt adt @@ -39305,12 +39274,12 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt aab aab aab @@ -39375,7 +39344,7 @@ aab aab aab aab -aab +adt adt adt adt @@ -39447,12 +39416,12 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt aab aab aab @@ -39516,8 +39485,8 @@ aab aab aab aab -aab -aab +adt +adt adt adt adt @@ -39589,11 +39558,11 @@ adt adt adt adt -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt aab aab aab @@ -39656,10 +39625,10 @@ aab aab aab aab -aab -aab -aab -aab +adt +adt +adt +adt adt adt adt @@ -39731,10 +39700,10 @@ adt adt adt adt -aab -aab -aab -aab +adt +adt +adt +adt aab aab aab @@ -39797,11 +39766,11 @@ aab aab aab aab -aab -aab -aab -aab -abn +adt +adt +adt +adt +adt adt adt adt @@ -39873,9 +39842,9 @@ adt adt adt adt -aab -aab -aab +adt +adt +adt aab aab aab @@ -39937,12 +39906,12 @@ aab aab aab aab -aab -aab -aab -aab -aab abn +abn +adt +adt +adt +adt adt adt adt @@ -40015,8 +39984,8 @@ adt adt adt adt -aab -aab +adt +adt aab aab aab @@ -40077,15 +40046,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab abn abn +abn +adt +adt +adt +adt +adt +adt adt adt adt @@ -40157,7 +40126,7 @@ adt adt adt adt -aab +adt aab aab aab @@ -40218,15 +40187,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab abn +abn +abn +adt +adt +adt +adt +adt +adt adt adt adt @@ -40358,17 +40327,17 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab abn +abn +abn +abn +adt +adt +adt +adt +adt +adt +adt adt adt adt @@ -40499,18 +40468,18 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab abn abn +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt adt adt adt @@ -40641,16 +40610,6 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab abn abn abn @@ -40663,6 +40622,16 @@ adt adt adt adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt akX akX aoi @@ -40783,16 +40752,6 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -abn -abn -abn abn abn abn @@ -40806,6 +40765,16 @@ adt adt adt adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt akX akX apu @@ -40924,18 +40893,6 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -abn -abn -abn -abn -abn abn abn adt @@ -40949,6 +40906,18 @@ adt adt adt adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt akX akX aqB @@ -41066,18 +41035,6 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -abn -abn -abn -abn -abn -abn abn abn adt @@ -41087,6 +41044,18 @@ adt adt adt adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt ajV ajV ajV @@ -41149,7 +41118,7 @@ adt adt adt adt -aab +adt aab aab aab @@ -41208,15 +41177,11 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -abn -abn -abn +abn +abn +abn +adt +adt abn abn abn @@ -41229,6 +41194,10 @@ adt adt adt adt +adt +adt +adt +adt ajV akZ ame @@ -41291,8 +41260,8 @@ adt adt adt adt -aab -aab +adt +adt aab aab aab @@ -41350,12 +41319,6 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab abn abn abn @@ -41363,6 +41326,12 @@ abn abn abn abn +abn +abn +abn +abn +adt +adt adt adt adt @@ -41433,10 +41402,10 @@ adt adt adt adt -aab -aab -aab -aab +adt +adt +adt +adt aab aab aab @@ -41492,12 +41461,6 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab abn abn abn @@ -41505,6 +41468,12 @@ abn abn abn abn +abn +abn +abn +abn +abn +adt adt adt adt @@ -41576,9 +41545,9 @@ adt adt adt adt -aab -aab -aab +adt +adt +adt aab aab aab @@ -41634,12 +41603,12 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn abn abn abn @@ -41719,9 +41688,9 @@ adt adt adt adt -aab -aab -aab +adt +adt +abn aab aab aab @@ -41777,11 +41746,11 @@ aab aab aab aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn abn abn abn @@ -41861,11 +41830,11 @@ adt adt adt adt -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn aab aab aab @@ -41920,10 +41889,10 @@ aab aab aab aab -aab -aab -aab -aab +abn +abn +abn +abn abn abn abn @@ -42003,28 +41972,28 @@ adt adt adt adt -adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn aab aab aab aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -42062,10 +42031,10 @@ aab aab aab aab -aab -aab -aab -aab +abn +abn +abn +abn abn abn abn @@ -42146,28 +42115,28 @@ aHE adt abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -42205,10 +42174,10 @@ aab aab aab aab +abn +abn aab -aab -aab -aab +abn abn abn abn @@ -42289,6 +42258,17 @@ adt abn abn abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -42296,21 +42276,10 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn aab aab aab @@ -42347,8 +42316,8 @@ aab aab aab aab -aab -aab +abn +abn aab aab aab @@ -42431,6 +42400,15 @@ adt abn abn abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -42441,18 +42419,9 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn aab aab aab @@ -42490,12 +42459,12 @@ aab aab aab aab +abn aab aab aab aab -aab -aab +abn abn acn acQ @@ -42573,6 +42542,13 @@ adt abn abn abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -42586,16 +42562,9 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn aab aab aab @@ -42637,8 +42606,8 @@ aab aab aab aab -aab -aab +abn +abn acn acR adA @@ -42721,10 +42690,6 @@ aHE adt adt adt -adt -aab -aab -aab aab aab aab @@ -42739,6 +42704,10 @@ aab aab aab aab +abn +abn +abn +abn aab aab aab @@ -42780,7 +42749,7 @@ aab aab aab aab -aab +abn acm acm acm @@ -42877,10 +42846,10 @@ aab aab aab aab -aab -aab -aab -aab +abn +abn +abn +abn aab aab aab @@ -42922,7 +42891,7 @@ aab aab aab aab -aab +abn aco acS adB @@ -43020,9 +42989,9 @@ aab aab aab aab -aab -aab -aab +abn +abn +abn aab aab aab @@ -43116,7 +43085,7 @@ aKi aKV aLC aMo -aMY +qUf aNx aOn aMo @@ -43162,9 +43131,9 @@ aab aab aab aab -aab -aab -aab +abn +abn +abn aab aab aab @@ -43303,19 +43272,19 @@ aab aab aab aab +abn +abn +abn +abn +abn aab aab aab aab aab aab -aab -aab -aab -aab -aab -aab -aab +abn +abn aab aab aab @@ -43444,21 +43413,21 @@ aab aab aab aab +abn +abn +abn +abn +abn +abn +abn aab aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn aab aab aab @@ -43589,20 +43558,20 @@ adt adt abn abn +abn +abn +abn +abn aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +adt +adt aab aab aab @@ -43731,21 +43700,21 @@ adt adt abn abn +abn +abn +abn +abn +abn aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +adt +adt +adt +adt aab aab aab @@ -43873,21 +43842,21 @@ adt adt adt abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +adt +adt +adt +adt aab aab aab @@ -44016,21 +43985,21 @@ adt adt abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt aab aab aab @@ -44161,18 +44130,18 @@ baz bkU bkU baz -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt aab aab aab @@ -44303,18 +44272,18 @@ aNp baW blu blR -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt aab aab aab @@ -44445,19 +44414,19 @@ baW baW blu blR +abn +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt +adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab aab aab aab @@ -44587,19 +44556,19 @@ baz baW aNq baz +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab aab aab aab @@ -44732,16 +44701,16 @@ baz adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -44874,15 +44843,15 @@ baz adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -45017,14 +44986,14 @@ adt adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -45158,14 +45127,14 @@ baz adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -45300,14 +45269,14 @@ baz adt adt adt -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +adt +adt +adt aab aab aab @@ -45336,8 +45305,8 @@ aab aab aab aab -aac -aac +ael +ael aab aab ael @@ -45441,8 +45410,8 @@ baW baz adt adt -aab -aab +adt +adt aab aab aab @@ -45478,8 +45447,8 @@ aab aab aab aab -aac -aac +ael +ael aab aab ael @@ -45583,7 +45552,7 @@ baW baz adt adt -adt +aab aab aab aab @@ -45724,8 +45693,8 @@ bgx bgx baz adt -adt -adt +aab +aab aab aab aab @@ -48401,7 +48370,7 @@ aLY adt adt aLY -bdy +awg aLY aLY adt @@ -48543,7 +48512,7 @@ aLY aLY aLY aLY -bdy +awg aLY adt adt @@ -48684,7 +48653,7 @@ aLY aLY bcy bcK -bda +aLX bdz aLY adt @@ -48826,7 +48795,7 @@ aLX baZ aLX aIl -bdb +bda bdA aLY adt @@ -48884,10 +48853,10 @@ aab aab aab aab +aab +aab aeG aeG -aeG -abn adf adN aev @@ -49027,9 +48996,9 @@ aab aab aab aab +aab +aeG aeG -abn -abn adf adO aew @@ -49169,9 +49138,9 @@ aab aab aab aab +aab +aeG aeG -abn -abn adf adP aex @@ -49311,9 +49280,9 @@ aab aab aab aab +aab aeG aeG -abn aeZ aeZ aeZ @@ -49453,9 +49422,9 @@ aab aab aab aab +aab aeG aeG -abn adg adQ aey @@ -49595,9 +49564,9 @@ aab aab aab aab +abn +aeG aeG -abn -abn adg adR aez @@ -49736,10 +49705,10 @@ aab aab aab aab -aab -aeG -aeG abn +abn +abn +aeG adg adS aeA @@ -49871,17 +49840,17 @@ aab aab aab aab +abn +abn aab aab aab aab -aab -aab -aab -aab +abn +abn +abn +abn aeG -abn -abn acC acC acC @@ -49927,7 +49896,7 @@ sVf aIA aGR aJw -aJU +rAv aJU aLo aLV @@ -49985,7 +49954,7 @@ kEg pBU adt adt -aab +adt aab aab aab @@ -50012,18 +49981,18 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aeG -aeG abn +abn +abn +abn +abn +aab +abn +abn +abn +abn +abn +aeG adm adp aec @@ -50127,8 +50096,8 @@ kAa pBU adt adt -aab -aab +adt +adt aab aab aab @@ -50154,17 +50123,17 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aeG +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aeG adm adq @@ -50269,10 +50238,10 @@ pBU pBU adt adt -aab -aab -aab -aab +adt +adt +adt +abn aab aab aab @@ -50296,17 +50265,17 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aeG adm adT @@ -50410,13 +50379,13 @@ blh blh blh blh +adt +adt +adt +abn +abn +abn abn -aab -aab -aab -aab -aab -aab aab aab aab @@ -50438,18 +50407,18 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn adi adi adi @@ -50552,14 +50521,14 @@ blh aBU aBU blh +adt +adt +abn +abn +abn +abn +abn abn -aab -aab -aab -aab -aab -aab -aab aab aab aab @@ -50580,18 +50549,18 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn ado adU aeC @@ -50695,14 +50664,14 @@ blG blG blh abn -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -50724,16 +50693,16 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn ado aav aeD @@ -50836,15 +50805,15 @@ bli blG blG bmb -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -50867,15 +50836,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn ado aaw aeE @@ -50978,15 +50947,15 @@ blj blH blS bmb -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51009,15 +50978,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn ado aak aaA @@ -51097,7 +51066,7 @@ adt adt adt adt -adt +abn abn abn abn @@ -51120,16 +51089,16 @@ blk blG blT bmb -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51151,15 +51120,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +aeG adi adi adi @@ -51226,9 +51195,8 @@ adt adt adt adt -adt -adt -adt +abn +abn adt adt adt @@ -51242,7 +51210,8 @@ adt abn abn abn -adt +abn +abn adt abn abn @@ -51262,15 +51231,15 @@ blh blI blh blh -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51291,22 +51260,22 @@ aab aab aab aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +aeG aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -adt -adt -adt -adt +aeG +abn ahN aiD ajA @@ -51369,6 +51338,8 @@ adt abn abn abn +abn +abn adt adt adt @@ -51378,10 +51349,8 @@ adt adt adt adt -adt -aab -aab -aab +abn +abn abn abn abn @@ -51403,16 +51372,16 @@ bgU abn abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51433,22 +51402,22 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -adt -adt -adt -adt +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +aeG +aeG +aeG +aeG +aeG +abn ahN aiD ajB @@ -51514,17 +51483,17 @@ abn abn abn abn -abn -abn -abn -aab adt adt adt -aab -aab -aab -aab +adt +adt +adt +adt +abn +abn +abn +abn aeG aeG aeG @@ -51544,16 +51513,16 @@ bil bgU abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51574,23 +51543,23 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +adt +adt +abn +abn adt adt adt adt +abn +abn +abn +abn +abn +adt ahN alH ajD @@ -51657,16 +51626,16 @@ aab aab abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +adt +adt +adt +adt +adt +abn +abn +abn +abn +abn aab aab aab @@ -51686,16 +51655,16 @@ bjj bgU abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51716,19 +51685,19 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt adt adt adt @@ -51751,8 +51720,8 @@ avg avP awv ard -aab -aab +abn +abn abn abn abn @@ -51797,17 +51766,17 @@ abn aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +adt +adt +abn +abn +abn +abn +abn aab aab aab @@ -51827,16 +51796,16 @@ abn abn abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51858,19 +51827,19 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt adt adt adt @@ -51893,9 +51862,9 @@ atq atq ard ard -aab -aab -aab +abn +abn +abn abn abn abn @@ -51939,16 +51908,16 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51965,17 +51934,17 @@ abn abn abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -51999,21 +51968,21 @@ aaa aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt adt adt adt @@ -52028,15 +51997,15 @@ ahN ahN ahN ahN -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52081,6 +52050,15 @@ aab aab aab aab +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52096,25 +52074,16 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52141,23 +52110,31 @@ aaa aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt adt adt adt @@ -52168,15 +52145,7 @@ abn abn abn abn -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn aab aab aab @@ -52224,6 +52193,14 @@ aab aab aab aab +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52239,23 +52216,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52283,54 +52252,56 @@ aaa aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -abn -abn -abn -abn -abn -abn -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab abn abn abn adt adt adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +abn +abn +abn +abn +abn +abn +abn +aab +aab +aab +aab +aab +aab +aab +abn +abn +abn +abn +abn +aeG +abn +abn abn abn abn @@ -52339,8 +52310,6 @@ abn abn abn abn -aac -aac abn abn abn @@ -52367,6 +52336,13 @@ aab aab aab aab +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52382,22 +52358,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52426,39 +52395,39 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52481,8 +52450,8 @@ abn abn abn abn -aac -aac +abn +abn abn abn abn @@ -52510,6 +52479,10 @@ aab aab aab aab +abn +abn +abn +abn aab aab aab @@ -52528,17 +52501,13 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -52568,37 +52537,37 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +abn +abn +abn +abn +abn aab aab aab @@ -52653,6 +52622,10 @@ aab aab aab aab +abn +abn +abn +abn aab aab aab @@ -52671,15 +52644,11 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn aab aab aab @@ -52712,34 +52681,34 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +abn +abn +abn +abn +abn aab aab aab @@ -52796,6 +52765,9 @@ aab aab aab aab +abn +abn +abn aab aab aab @@ -52816,10 +52788,7 @@ aab aab aab aab -aab -aab -aab -aab +abn aab aab aab @@ -52857,30 +52826,30 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +abn +abn +abn +abn +abn aab aab aab @@ -52939,8 +52908,8 @@ aab aab aab aab -aab -aab +abn +abn aab aab aab @@ -53000,28 +52969,28 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +adt +abn +abn +abn +abn +abn aab aab aab @@ -53143,26 +53112,26 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +adt +adt +adt +adt +adt +adt +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -53286,23 +53255,23 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +adt +adt +adt +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -53429,21 +53398,21 @@ aab aab aab aab +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn +abn aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn aab aab aab @@ -53573,15 +53542,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn +abn +abn +abn aab aab aab @@ -53716,12 +53685,12 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab +abn +abn +abn +abn +abn +abn aab aab aab diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index b5524c756a2..b6eab2fc168 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -726,15 +726,15 @@ /turf/simulated/floor/plating, /area/maintenance/lower/medsec_maintenance) "abf" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, /obj/structure/cable/green{ icon_state = "1-2" }, /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/triage) "abg" = ( @@ -2965,6 +2965,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 1 }, +/obj/machinery/vending/wardrobe/lawdrobe, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/iaa/officecommon) "aes" = ( @@ -8324,6 +8325,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/item/device/paicard, /turf/simulated/floor/wood, /area/crew_quarters/recreation_area) "anb" = ( @@ -9779,6 +9781,7 @@ /obj/random/maintenance/medical, /obj/random/maintenance/clean, /obj/random/maintenance/clean, +/obj/item/device/paicard, /turf/simulated/floor/plating, /area/tether/surfacebase/surface_three_hall) "apA" = ( @@ -19614,7 +19617,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/structure/closet/crate, +/obj/machinery/vending/wardrobe/bardrobe, /turf/simulated/floor/tiled, /area/tether/surfacebase/servicebackroom) "aGf" = ( @@ -22282,7 +22285,6 @@ req_one_access = list(5,47) }, /obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, /obj/structure/cable/green{ icon_state = "1-2" }, @@ -23213,14 +23215,6 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/button/remote/blast_door{ - id = "mechbay-inner"; - name = "Mech Bay"; - pixel_x = 26; - pixel_y = -26; - req_access = list(29,47); - req_one_access = list(47) - }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics) "aMv" = ( @@ -23232,6 +23226,24 @@ id = "mechbay-inner"; name = "Mech Bay" }, +/obj/machinery/button/remote/blast_door{ + dir = 4; + id = "mechbay"; + name = "Mech Bay"; + pixel_x = 5; + pixel_y = -29; + req_access = list(29,47); + req_one_access = list(47) + }, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "mechbay-inner"; + name = "Mech Bay"; + pixel_x = -5; + pixel_y = -28; + req_access = list(29,47); + req_one_access = list(47) + }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics/mechbay) "aMw" = ( @@ -23257,14 +23269,6 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/button/remote/blast_door{ - id = "mechbay-inner"; - name = "Mech Bay"; - pixel_x = -26; - pixel_y = -26; - req_access = list(29,47); - req_one_access = list(47) - }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics/mechbay) "aMy" = ( @@ -26724,7 +26728,7 @@ id = "hop_office" }, /obj/structure/cable/green{ - dir = 1 + icon_state = "0-2" }, /turf/simulated/floor/plating, /area/crew_quarters/heads/hop) @@ -26740,7 +26744,7 @@ }, /obj/structure/cable/green, /obj/structure/cable/green{ - dir = 1 + icon_state = "0-2" }, /turf/simulated/floor/plating, /area/crew_quarters/heads/hop) @@ -28783,9 +28787,6 @@ dir = 4; pixel_x = -30 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, @@ -28800,6 +28801,9 @@ id = "surfsurgery2"; pixel_x = -22 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/surgery2) "aXd" = ( @@ -30729,6 +30733,11 @@ d2 = 8; icon_state = "2-8" }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled, /area/crew_quarters/heads/hop) "bap" = ( @@ -31445,6 +31454,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, +/obj/machinery/vending/wardrobe/chefdrobe, /turf/simulated/floor/tiled, /area/tether/surfacebase/servicebackroom) "bbC" = ( @@ -38289,10 +38299,11 @@ req_one_access = list(47) }, /obj/machinery/button/remote/blast_door{ + dir = 1; id = "mechbay"; name = "Mech Bay"; - pixel_x = 27; - pixel_y = 6; + pixel_x = 28; + pixel_y = 5; req_access = list(29,47); req_one_access = list(47) }, @@ -38403,6 +38414,12 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/cafeteria) +"dAe" = ( +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "dDQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39047,6 +39064,12 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) +"gCV" = ( +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "gHh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 10 @@ -39311,6 +39334,17 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) +"hHL" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "hId" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, @@ -40219,6 +40253,16 @@ /obj/machinery/light/bigfloorlamp, /turf/simulated/floor/grass, /area/tether/surfacebase/public_garden_three) +"kPC" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/obj/machinery/vending/wardrobe/hydrobe, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/botanystorage) "kQb" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -40410,6 +40454,13 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/crew_quarters/recreation_area) +"ltu" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing, +/turf/simulated/floor/outdoors/grass/sif/virgo3b, +/area/tether/surfacebase/outside/outside3) "lvH" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/mauve/border, @@ -40490,6 +40541,11 @@ }, /turf/simulated/floor/carpet, /area/tether/surfacebase/security/hos) +"lHr" = ( +/obj/structure/table/woodentable, +/obj/item/device/paicard, +/turf/simulated/floor/wood, +/area/tether/surfacebase/entertainment) "lIe" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, @@ -41670,6 +41726,17 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/southhall) +"qcV" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "qda" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/structure/bed/chair{ @@ -41827,6 +41894,12 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/upperhall) +"qAB" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/sif/virgo3b, +/area/tether/surfacebase/outside/outside3) "qDF" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 2 @@ -44152,41 +44225,41 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -44295,40 +44368,40 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -44441,36 +44514,36 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -44585,35 +44658,35 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -44711,6 +44784,8 @@ aab aab aab aab +aac +aac aab aab aab @@ -44727,35 +44802,33 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -44850,6 +44923,14 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -44864,41 +44945,33 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -44992,6 +45065,15 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45005,42 +45087,33 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45133,6 +45206,16 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45147,42 +45230,32 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45275,6 +45348,16 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45289,43 +45372,33 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45417,6 +45490,17 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45431,43 +45515,32 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45559,6 +45632,17 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45573,43 +45657,32 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45701,6 +45774,18 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45715,43 +45800,31 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45843,6 +45916,19 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45855,6 +45941,32 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45868,52 +45980,13 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45986,6 +46059,18 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -45998,6 +46083,33 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -46008,56 +46120,17 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -46128,6 +46201,19 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -46138,69 +46224,56 @@ aab aab aab aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab aab aab +aac aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -46271,79 +46344,79 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aab +aab +aab +aab +aab +aab +aab +aab +aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aab +aab +aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -46414,78 +46487,78 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aab +aac +aac +aac +aac +aac +aac +aac +aab +aab +aab +aab +aab +aab +aab +aab +aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -46562,73 +46635,73 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aab +aab +aab +aab +aab +aab +aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -46705,37 +46778,10 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab aac aac -aab aac aac -aab -aab -aab -aab -aab aac aac aab @@ -46744,34 +46790,61 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -46847,21 +46920,12 @@ aab aab aab aab -aab -aab -aab -aab -aab aac -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac aab aab aab @@ -46882,38 +46946,47 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -47000,11 +47073,6 @@ aac aac aac aac -aab -aab -aab -aab -aab aac aac aac @@ -47026,36 +47094,41 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -47142,7 +47215,6 @@ aac aac aac aac -aab aac aac aac @@ -47168,8 +47240,6 @@ aac aac aac aac -aab -aab aac aac aac @@ -47177,27 +47247,30 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -47320,26 +47393,26 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -47465,21 +47538,21 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -47607,21 +47680,21 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -47749,20 +47822,20 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -47891,16 +47964,16 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -48034,14 +48107,14 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -48176,13 +48249,13 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac aab aab aMG @@ -48318,12 +48391,12 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac aab aab aOm @@ -48460,12 +48533,12 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac aab aab aOm @@ -48602,11 +48675,11 @@ aac aac aac aac -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac aab aab aab @@ -48669,7 +48742,7 @@ aab aab aab aab -aab +aac aac aac aac @@ -48744,10 +48817,10 @@ aac aac aac aac -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -48810,8 +48883,8 @@ aab aab aab aab -aab -aab +aac +aac aac aac aac @@ -48886,9 +48959,9 @@ aac aac aac aac -aab -aab -aab +aac +aac +aac aab aab aab @@ -48952,8 +49025,8 @@ aab aab aab aab -aab -aab +aac +aac aac aac aac @@ -49028,8 +49101,8 @@ aac aac aac aac -aMG -aMG +aac +aac aMG aMG aMG @@ -49093,9 +49166,9 @@ aab aab aab aab -aab -aab -aab +aac +aac +aac aac aac aac @@ -49170,8 +49243,8 @@ aac aac aac aaq -adG -adG +aac +aaq adG adG adG @@ -49234,10 +49307,10 @@ aab aab aab aab -aab -aab -aab -aab +aac +aac +aac +aac aac aac aac @@ -49375,11 +49448,11 @@ aab aab aab aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac aac aac aac @@ -49516,12 +49589,12 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac aac aac aac @@ -49657,13 +49730,13 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac aac aac aac @@ -49799,13 +49872,13 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac aac aac aac @@ -49939,15 +50012,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac aac aac aac @@ -50081,15 +50154,15 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac aac aac aac @@ -50224,14 +50297,14 @@ aab aab aab aab +aac +aac aab aab aab aab aab -aab -aab -aab +aac aac aac aac @@ -52614,8 +52687,8 @@ aab aab aab aab -aab -aab +aac +aac aab aab aab @@ -52755,10 +52828,10 @@ aab aab aab aab -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -52897,10 +52970,10 @@ aab aab aab aab -aab -aab -aab -aab +aac +aac +aac +aac aab aab aab @@ -53038,12 +53111,12 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac aab aab aab @@ -53180,12 +53253,12 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac aab aab aab @@ -53322,12 +53395,12 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac aab aab aab @@ -53458,19 +53531,19 @@ aac aac aac aac +aab +aab +aab +aab +aab +aac +aac +aac +aac +aac +aac +aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab aab aab aab @@ -53600,19 +53673,19 @@ aac aac aac aac +aab +aab +aab +aab +aac +aac +aac +aac +aac +aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab aab aab aab @@ -53745,16 +53818,16 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -53887,15 +53960,15 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -54030,14 +54103,14 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -54171,14 +54244,14 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -54313,14 +54386,14 @@ aac aac aac aac -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac aab aab aab @@ -54454,8 +54527,8 @@ aac aac aac aac -aab -aab +aac +aac aab aab aab @@ -54596,7 +54669,7 @@ aac aac aac aac -aac +aab aab aab aab @@ -54737,8 +54810,8 @@ aac aac aac aac -aac -aac +aab +aab aab aab aab @@ -55446,10 +55519,10 @@ bip biz bhE aac -aac aab aMG aMG +aMG aab aab aab @@ -56556,8 +56629,8 @@ aKj aKj aKj aKf -aKg -cdv +gCV +hHL aKf aNX aKj @@ -57124,8 +57197,8 @@ aKj aKj aNj aKf -cdv -aKg +qcV +dAe aKf aKj aKj @@ -57392,7 +57465,7 @@ bdq bbk bbk beS -beX +lHr beX bcM bco @@ -57614,7 +57687,7 @@ aab aab aab aaq -aaU +bow ajG ajG aar @@ -57756,8 +57829,8 @@ aab aab aab aaq -aac -aaU +aaq +bow ajG aaq uWw @@ -57896,10 +57969,10 @@ aab aab aab aab -aaq -aaq -aac -abn +aab +aab +aab +aOm ajG aaq acy @@ -58038,10 +58111,10 @@ aab aab aab aab -aaq -aaq -aaq -abn +aab +aab +aab +aOm ajG aaq acy @@ -58180,10 +58253,10 @@ aab aab aab aab -aaq -aac -aaq -abn +aab +aab +aab +aOm ajG aaq uWw @@ -58322,10 +58395,10 @@ aab aab aab aab -aaq -aac -aac -abn +aab +aab +aab +aOm ajG aaq uWw @@ -58464,10 +58537,10 @@ aab aab aab aab -aaq -aac -aac -bou +aab +aab +aab +aOm ajG oJw acy @@ -58606,10 +58679,10 @@ aab aab aab aab -aaq -aaq -aac -abn +aab +aab +aab +aOm ajG aaz aaB @@ -58750,8 +58823,8 @@ aab aab aab aab -aac -abn +aab +aOm ajG iUu aaC @@ -58893,7 +58966,7 @@ aab aab aab aab -abn +aOm ajG aaz aaD @@ -60590,14 +60663,14 @@ aab aab aab aab +aac +aac aab aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac aab aab aac @@ -60731,17 +60804,17 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aac aac aaq @@ -60873,17 +60946,17 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aac aac aac @@ -60936,7 +61009,7 @@ aUh aoJ aGe aGJ -aAb +aFM aJt aVC aXN @@ -61014,19 +61087,19 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aac aac aac @@ -61078,7 +61151,7 @@ aoJ aoJ bbv bcC -aAb +aFM aJt aJt aJt @@ -61156,21 +61229,21 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aac abn ajG @@ -61299,26 +61372,26 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aOm +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +abn +ajG +ajG +ajG ajG -adG -adG -adG ajG afS aje @@ -61442,25 +61515,25 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aNM -aNM -aNM -aNW +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +qAB +qAB +qAB +ltu ajG afS afS @@ -61587,22 +61660,22 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aOm +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +abn ajG ajG ajG @@ -61626,7 +61699,7 @@ aAH aBm aBM ayg -aAK +kPC aEm aEF aFg @@ -61730,24 +61803,24 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aNM -aNM -aNW +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +qAB +qAB +ltu amt anO aoR @@ -61874,21 +61947,21 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aOm ajG ajG @@ -62018,18 +62091,18 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac aab aab aNM @@ -62161,12 +62234,12 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab +aac +aac +aac +aac +aac +aac aab aab aab @@ -62304,9 +62377,9 @@ aab aab aab aab -aab -aab -aab +aac +aac +aac aab aab aab diff --git a/maps/tether/tether-04-transit.dmm b/maps/tether/tether-04-transit.dmm index fa271cb5deb..bb4701048be 100644 --- a/maps/tether/tether-04-transit.dmm +++ b/maps/tether/tether-04-transit.dmm @@ -1,9 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "ag" = ( -/obj/structure/bed/chair/wood{ - dir = 4 - }, -/turf/simulated/floor/wood, +/obj/structure/bed/chair/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "cB" = ( /obj/structure/disposalpipe/segment{ @@ -50,14 +48,15 @@ /turf/simulated/floor/tiled/dark, /area/tether/midpoint) "dc" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/wood, +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "dU" = ( -/obj/structure/bed/chair/wood{ - dir = 8 - }, -/turf/simulated/floor/wood, +/obj/structure/table/woodentable, +/obj/random/plushie, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "fI" = ( /obj/machinery/light{ @@ -89,15 +88,10 @@ }, /turf/simulated/floor/wood, /area/tether/midpoint) -"hk" = ( -/obj/structure/table/woodentable, -/obj/random/plushie, -/turf/simulated/floor/wood, -/area/tether/midpoint) "hp" = ( /obj/structure/table/woodentable, /obj/machinery/camera/network/civilian, -/turf/simulated/floor/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "it" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -151,13 +145,11 @@ /turf/simulated/floor/plating, /area/tether/midpoint) "kz" = ( -/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b, -/turf/simulated/sky/virgo3b, +/turf/space/v3b_midpoint, /area/tether/transit) "lL" = ( /obj/effect/blocker, -/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b, -/turf/simulated/sky/virgo3b, +/turf/space/v3b_midpoint, /area/tether/transit) "mz" = ( /obj/machinery/power/apc{ @@ -173,6 +165,9 @@ }, /turf/simulated/floor/plating, /area/maintenance/tether_midpoint) +"mT" = ( +/turf/simulated/floor/midpoint_glass/reinf, +/area/tether/midpoint) "no" = ( /obj/machinery/atmospherics/pipe/simple/visible, /obj/structure/cable{ @@ -297,10 +292,6 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/midpoint) -"tA" = ( -/obj/structure/table/bench/padded, -/turf/simulated/floor/wood, -/area/tether/midpoint) "tB" = ( /obj/structure/cable{ d1 = 1; @@ -312,6 +303,10 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/midpoint) +"tM" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/midpoint_glass/reinf, +/area/tether/midpoint) "uA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -326,21 +321,21 @@ /obj/machinery/holoposter{ pixel_y = 30 }, -/turf/simulated/floor/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "vh" = ( /obj/structure/table/woodentable, /obj/structure/flora/pottedplant/small{ pixel_y = 8 }, -/turf/simulated/floor/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "vt" = ( /obj/structure/table/woodentable, /obj/machinery/camera/network/civilian{ dir = 1 }, -/turf/simulated/floor/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "wM" = ( /obj/structure/disposalpipe/segment{ @@ -411,7 +406,7 @@ /obj/machinery/holoposter{ pixel_y = -30 }, -/turf/simulated/floor/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "Dz" = ( /turf/simulated/wall/r_wall, @@ -549,7 +544,10 @@ /obj/machinery/camera/network/civilian{ dir = 4 }, -/turf/simulated/floor/wood, +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "Ls" = ( /obj/structure/disposalpipe/down{ @@ -645,6 +643,13 @@ }, /turf/simulated/floor/wood, /area/tether/midpoint) +"Rl" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/midpoint_glass/reinf, +/area/tether/midpoint) "RZ" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -657,7 +662,7 @@ dir = 9 }, /obj/structure/table/bench/padded, -/turf/simulated/floor/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "Tz" = ( /obj/structure/cable{ @@ -668,6 +673,11 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/midpoint) +"Ud" = ( +/obj/structure/table/woodentable, +/obj/item/device/paicard, +/turf/simulated/floor/midpoint_glass/reinf, +/area/tether/midpoint) "Ui" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -701,12 +711,16 @@ }, /turf/simulated/floor/wood, /area/tether/midpoint) +"Wf" = ( +/obj/structure/table/bench/padded, +/turf/simulated/floor/midpoint_glass/reinf, +/area/tether/midpoint) "WU" = ( /obj/machinery/light{ dir = 4 }, /obj/structure/table/bench/padded, -/turf/simulated/floor/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) "WY" = ( /obj/structure/disposalpipe/segment{ @@ -746,7 +760,7 @@ /obj/structure/flora/pottedplant/smallcactus{ pixel_y = 8 }, -/turf/simulated/floor/wood, +/turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) (1,1,1) = {" @@ -6333,8 +6347,6 @@ kz kz kz kz -kz -kz lL lL lL @@ -6371,8 +6383,10 @@ lL lL lL lL -kz -kz +lL +lL +lL +lL kz kz kz @@ -6475,8 +6489,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -6512,6 +6524,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -6568,8 +6584,6 @@ kz kz kz kz -kz -kz "} (42,1,1) = {" kz @@ -6617,8 +6631,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -6654,6 +6666,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -6710,8 +6726,6 @@ kz kz kz kz -kz -kz "} (43,1,1) = {" kz @@ -6759,8 +6773,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -6796,6 +6808,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -6852,8 +6868,6 @@ kz kz kz kz -kz -kz "} (44,1,1) = {" kz @@ -6901,8 +6915,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -6938,6 +6950,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -6994,8 +7010,6 @@ kz kz kz kz -kz -kz "} (45,1,1) = {" kz @@ -7043,8 +7057,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -7080,6 +7092,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -7136,8 +7152,6 @@ kz kz kz kz -kz -kz "} (46,1,1) = {" kz @@ -7185,8 +7199,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -7222,6 +7234,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -7278,8 +7294,6 @@ kz kz kz kz -kz -kz "} (47,1,1) = {" kz @@ -7327,8 +7341,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -7364,6 +7376,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -7420,8 +7436,6 @@ kz kz kz kz -kz -kz "} (48,1,1) = {" kz @@ -7469,8 +7483,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -7506,6 +7518,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -7562,8 +7578,6 @@ kz kz kz kz -kz -kz "} (49,1,1) = {" kz @@ -7611,8 +7625,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -7648,6 +7660,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -7704,8 +7720,6 @@ kz kz kz kz -kz -kz "} (50,1,1) = {" kz @@ -7753,8 +7767,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -7790,6 +7802,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -7846,8 +7862,6 @@ kz kz kz kz -kz -kz "} (51,1,1) = {" kz @@ -7895,8 +7909,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -7932,6 +7944,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -7988,8 +8004,6 @@ kz kz kz kz -kz -kz "} (52,1,1) = {" kz @@ -8037,8 +8051,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -8074,6 +8086,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -8130,8 +8146,6 @@ kz kz kz kz -kz -kz "} (53,1,1) = {" kz @@ -8179,8 +8193,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -8216,6 +8228,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -8272,8 +8288,6 @@ kz kz kz kz -kz -kz "} (54,1,1) = {" kz @@ -8321,8 +8335,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -8335,6 +8347,8 @@ kz kz kz kz +kz +kz NJ Qc Qc @@ -8358,6 +8372,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -8414,8 +8430,6 @@ kz kz kz kz -kz -kz "} (55,1,1) = {" kz @@ -8463,8 +8477,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -8475,19 +8487,21 @@ kz kz kz kz +kz +kz NJ Qc cH -pK -pK -zi -pK -pK -pK -pK +mT +ag +Rl +dc +mT +ag +dU KN -pK -pK +mT +mT kn Qc zP @@ -8500,6 +8514,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -8556,8 +8572,6 @@ kz kz kz kz -kz -kz "} (56,1,1) = {" kz @@ -8605,8 +8619,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -8616,20 +8628,22 @@ kz kz kz kz +kz +kz PF PF fI pK -pK +mT ag +Ud +dc +mT ag -pK -ag -ag -pK -ag -ag -pK +tM +dc +mT +mT pK Iq PF @@ -8642,6 +8656,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -8698,8 +8714,6 @@ kz kz kz kz -kz -kz "} (57,1,1) = {" kz @@ -8747,8 +8761,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -8757,20 +8769,22 @@ kz kz kz kz +kz +kz NJ PF Jl pK pK pK -dc -dc pK -dc -hk pK -dc -dc +pK +pK +pK +pK +pK +pK pK Hy Nt @@ -8784,6 +8798,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -8840,8 +8856,6 @@ kz kz kz kz -kz -kz "} (58,1,1) = {" kz @@ -8889,8 +8903,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -8899,20 +8911,22 @@ kz kz kz kz +kz +kz Et zi pK pK pK pK -dU -dU pK -dU -dU pK -dU -dU +pK +pK +pK +pK +pK +pK pK Or pK @@ -8926,6 +8940,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -8982,8 +8998,6 @@ kz kz kz kz -kz -kz "} (59,1,1) = {" kz @@ -9031,8 +9045,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -9040,6 +9052,8 @@ kz kz kz kz +kz +kz NJ gq pK @@ -9068,6 +9082,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -9124,8 +9140,6 @@ kz kz kz kz -kz -kz "} (60,1,1) = {" kz @@ -9173,8 +9187,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -9182,9 +9194,11 @@ kz kz kz kz +kz +kz Et -pK -pK +mT +mT pK pK pK @@ -9201,8 +9215,8 @@ PF Or pK pK -pK -pK +mT +mT Et kz kz @@ -9210,6 +9224,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -9266,8 +9282,6 @@ kz kz kz kz -kz -kz "} (61,1,1) = {" kz @@ -9315,8 +9329,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -9324,10 +9336,12 @@ kz kz kz kz +kz +kz Et -tA -tA -tA +Wf +Wf +pK pK pK Dz @@ -9342,9 +9356,9 @@ ML PF uA pK -tA -tA -tA +pK +Wf +Wf Et kz kz @@ -9352,6 +9366,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -9408,8 +9424,6 @@ kz kz kz kz -kz -kz "} (62,1,1) = {" kz @@ -9457,8 +9471,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -9466,10 +9478,12 @@ kz kz kz kz +kz +kz PF uC vh -dc +pK pK Iq Dz @@ -9484,7 +9498,7 @@ pM PF wM pK -dc +pK YB vt PF @@ -9494,6 +9508,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -9550,8 +9566,6 @@ kz kz kz kz -kz -kz "} (63,1,1) = {" kz @@ -9599,8 +9613,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -9608,10 +9620,12 @@ kz kz kz kz +kz +kz Et -tA -tA -tA +Wf +Wf +pK pK QE Dz @@ -9626,9 +9640,9 @@ PF PF WY pK -tA -tA -tA +pK +Wf +Wf Et kz kz @@ -9636,6 +9650,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -9692,8 +9708,6 @@ kz kz kz kz -kz -kz "} (64,1,1) = {" kz @@ -9741,8 +9755,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -9750,9 +9762,11 @@ kz kz kz kz +kz +kz Et -pK -pK +mT +mT pK pK pK @@ -9769,8 +9783,8 @@ pO Or pK pK -pK -pK +mT +mT Et kz kz @@ -9778,6 +9792,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -9834,8 +9850,6 @@ kz kz kz kz -kz -kz "} (65,1,1) = {" kz @@ -9883,8 +9897,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -9892,9 +9904,11 @@ kz kz kz kz +kz +kz Et -pK -pK +mT +mT pK pK pK @@ -9911,8 +9925,8 @@ sw Or pK pK -pK -pK +mT +mT Et kz kz @@ -9920,6 +9934,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -9976,8 +9992,6 @@ kz kz kz kz -kz -kz "} (66,1,1) = {" kz @@ -10025,8 +10039,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -10034,10 +10046,12 @@ kz kz kz kz +kz +kz Et -tA -tA -tA +Wf +Wf +pK pK QE Dz @@ -10052,9 +10066,9 @@ PF Kh hi pK -tA -tA -tA +pK +Wf +Wf Et kz kz @@ -10062,6 +10076,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -10118,8 +10134,6 @@ kz kz kz kz -kz -kz "} (67,1,1) = {" kz @@ -10167,8 +10181,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -10176,10 +10188,12 @@ kz kz kz kz +kz +kz PF hp YB -dc +pK pK Iq Dz @@ -10194,7 +10208,7 @@ PF PF wM pK -dc +pK vh zZ PF @@ -10204,6 +10218,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -10260,8 +10276,6 @@ kz kz kz kz -kz -kz "} (68,1,1) = {" kz @@ -10309,8 +10323,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -10318,10 +10330,12 @@ kz kz kz kz +kz +kz Et -tA -tA -tA +Wf +Wf +pK pK VB Dz @@ -10336,9 +10350,9 @@ pM PF Xo pK -tA -tA -tA +pK +Wf +Wf Et kz kz @@ -10346,6 +10360,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -10402,8 +10418,6 @@ kz kz kz kz -kz -kz "} (69,1,1) = {" kz @@ -10451,8 +10465,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -10460,9 +10472,11 @@ kz kz kz kz +kz +kz Et -pK -pK +mT +mT pK pK pK @@ -10479,8 +10493,8 @@ PF Or pK pK -pK -pK +mT +mT Et kz kz @@ -10488,6 +10502,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -10544,8 +10560,6 @@ kz kz kz kz -kz -kz "} (70,1,1) = {" kz @@ -10593,8 +10607,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -10602,6 +10614,8 @@ kz kz kz kz +kz +kz nD zP pK @@ -10630,6 +10644,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -10686,8 +10702,6 @@ kz kz kz kz -kz -kz "} (71,1,1) = {" kz @@ -10735,8 +10749,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -10745,6 +10757,8 @@ kz kz kz kz +kz +kz Et Pz Or @@ -10772,6 +10786,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -10828,8 +10844,6 @@ kz kz kz kz -kz -kz "} (72,1,1) = {" kz @@ -10877,8 +10891,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -10887,6 +10899,8 @@ kz kz kz kz +kz +kz nD PF RZ @@ -10914,6 +10928,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -10970,8 +10986,6 @@ kz kz kz kz -kz -kz "} (73,1,1) = {" kz @@ -11019,8 +11033,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -11030,20 +11042,22 @@ kz kz kz kz +kz +kz PF PF fI pK -pK -pK -tA -tA -tA -tA -tA -tA -pK -pK +mT +mT +Wf +Wf +Wf +Wf +Wf +Wf +mT +mT pK Iq PF @@ -11056,6 +11070,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -11112,8 +11128,6 @@ kz kz kz kz -kz -kz "} (74,1,1) = {" kz @@ -11161,8 +11175,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -11173,19 +11185,21 @@ kz kz kz kz +kz +kz nD Qc zP -pK -pK +mT +mT Sm -dc -dc -dc -dc +tM +tM +tM +tM WU -pK -pK +mT +mT NJ Qc gq @@ -11198,6 +11212,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -11254,8 +11270,6 @@ kz kz kz kz -kz -kz "} (75,1,1) = {" kz @@ -11303,8 +11317,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -11317,6 +11329,8 @@ kz kz kz kz +kz +kz nD Qc Qc @@ -11340,6 +11354,8 @@ kz kz kz kz +kz +kz lL kz kz @@ -11396,8 +11412,6 @@ kz kz kz kz -kz -kz "} (76,1,1) = {" kz @@ -11445,8 +11459,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -11482,6 +11494,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -11538,8 +11554,6 @@ kz kz kz kz -kz -kz "} (77,1,1) = {" kz @@ -11587,8 +11601,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -11624,6 +11636,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -11680,8 +11696,6 @@ kz kz kz kz -kz -kz "} (78,1,1) = {" kz @@ -11729,8 +11743,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -11766,6 +11778,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -11822,8 +11838,6 @@ kz kz kz kz -kz -kz "} (79,1,1) = {" kz @@ -11871,8 +11885,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -11908,6 +11920,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -11964,8 +11980,6 @@ kz kz kz kz -kz -kz "} (80,1,1) = {" kz @@ -12013,8 +12027,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -12050,6 +12062,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -12106,8 +12122,6 @@ kz kz kz kz -kz -kz "} (81,1,1) = {" kz @@ -12155,8 +12169,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -12192,6 +12204,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -12248,8 +12264,6 @@ kz kz kz kz -kz -kz "} (82,1,1) = {" kz @@ -12297,8 +12311,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -12334,6 +12346,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -12390,8 +12406,6 @@ kz kz kz kz -kz -kz "} (83,1,1) = {" kz @@ -12439,8 +12453,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -12476,6 +12488,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -12532,8 +12548,6 @@ kz kz kz kz -kz -kz "} (84,1,1) = {" kz @@ -12581,8 +12595,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -12618,6 +12630,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -12674,8 +12690,6 @@ kz kz kz kz -kz -kz "} (85,1,1) = {" kz @@ -12723,8 +12737,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -12760,6 +12772,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -12816,8 +12832,6 @@ kz kz kz kz -kz -kz "} (86,1,1) = {" kz @@ -12865,8 +12879,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -12902,6 +12914,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -12958,8 +12974,6 @@ kz kz kz kz -kz -kz "} (87,1,1) = {" kz @@ -13007,8 +13021,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -13044,6 +13056,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -13100,8 +13116,6 @@ kz kz kz kz -kz -kz "} (88,1,1) = {" kz @@ -13149,8 +13163,6 @@ kz kz kz kz -kz -kz lL kz kz @@ -13186,6 +13198,10 @@ kz kz kz kz +kz +kz +kz +kz lL kz kz @@ -13242,8 +13258,6 @@ kz kz kz kz -kz -kz "} (89,1,1) = {" kz @@ -13291,46 +13305,46 @@ kz kz kz kz -kz -kz lL -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz lL -kz -kz +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL +lL kz kz kz @@ -13435,7 +13449,6 @@ kz kz kz kz -lL kz kz kz @@ -13470,7 +13483,8 @@ kz kz kz kz -lL +kz +kz kz kz kz @@ -13577,7 +13591,6 @@ kz kz kz kz -lL kz kz kz @@ -13612,7 +13625,8 @@ kz kz kz kz -lL +kz +kz kz kz kz @@ -13719,7 +13733,6 @@ kz kz kz kz -lL kz kz kz @@ -13754,7 +13767,8 @@ kz kz kz kz -lL +kz +kz kz kz kz @@ -13861,7 +13875,6 @@ kz kz kz kz -lL kz kz kz @@ -13896,7 +13909,8 @@ kz kz kz kz -lL +kz +kz kz kz kz @@ -14003,7 +14017,6 @@ kz kz kz kz -lL kz kz kz @@ -14038,7 +14051,8 @@ kz kz kz kz -lL +kz +kz kz kz kz @@ -14145,7 +14159,6 @@ kz kz kz kz -lL kz kz kz @@ -14180,7 +14193,8 @@ kz kz kz kz -lL +kz +kz kz kz kz @@ -14287,7 +14301,6 @@ kz kz kz kz -lL kz kz kz @@ -14322,7 +14335,8 @@ kz kz kz kz -lL +kz +kz kz kz kz @@ -14429,42 +14443,42 @@ kz kz kz kz -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL -lL +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz kz kz kz diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 8aeebf10bb4..8c92bb6cef6 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -42,7 +42,7 @@ dir = 1 }, /mob/living/simple_mob/animal/sif/fluffy, -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "aag" = ( /obj/structure/sign/securearea{ @@ -1111,6 +1111,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/item/device/paicard, /turf/simulated/floor/tiled, /area/teleporter/departing) "acc" = ( @@ -1119,12 +1120,12 @@ /obj/structure/window/reinforced/polarized/full{ id = "ce_office" }, -/obj/structure/cable/green{ - dir = 1 - }, /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/cable/green{ + icon_state = "0-2" + }, /turf/simulated/floor, /area/storage/tech) "acd" = ( @@ -1411,9 +1412,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/light/small{ - dir = 1 - }, /obj/machinery/firealarm{ pixel_y = 25 }, @@ -1621,7 +1619,6 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/light/small, /turf/simulated/floor/tiled, /area/tcomsat{ name = "\improper Telecomms Lobby" @@ -1890,6 +1887,9 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/light/no_nightshift{ + dir = 4 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -1904,9 +1904,6 @@ /obj/structure/cable/green{ icon_state = "0-4" }, -/obj/machinery/light/small{ - dir = 1 - }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -2094,9 +2091,6 @@ name = "\improper Telecomms Entrance" }) "ady" = ( -/obj/machinery/light/small{ - dir = 1 - }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, @@ -2243,9 +2237,6 @@ /area/maintenance/substation/engineering) "adJ" = ( /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/light/small{ - dir = 8 - }, /obj/machinery/atmospherics/portables_connector{ dir = 4 }, @@ -2729,11 +2720,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -6109,11 +6095,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled, /area/engineering/hallway) @@ -6128,11 +6109,6 @@ dir = 4 }, /obj/machinery/light, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -6148,11 +6124,6 @@ /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 10 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -8046,7 +8017,6 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/structure/closet/secure_closet/atmos_personal, /turf/simulated/floor/tiled, /area/engineering/workshop) "asn" = ( @@ -8445,6 +8415,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, +/obj/machinery/vending/wardrobe/engidrobe, /turf/simulated/floor/tiled, /area/engineering/workshop) "atB" = ( @@ -8761,7 +8732,7 @@ pixel_x = 24 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "auU" = ( /obj/item/weapon/stool, @@ -9121,7 +9092,7 @@ pressure_checks_default = 0; use_power = 1 }, -/obj/machinery/light{ +/obj/machinery/light/no_nightshift{ dir = 8 }, /turf/simulated/floor/tiled/dark{ @@ -9171,7 +9142,7 @@ /obj/machinery/light, /obj/structure/dogbed, /mob/living/simple_mob/animal/sif/fluffy/silky, -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "awh" = ( /obj/machinery/power/apc{ @@ -9186,7 +9157,7 @@ d2 = 8; icon_state = "0-8" }, -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "awj" = ( /obj/machinery/requests_console{ @@ -9261,7 +9232,6 @@ dir = 8; pixel_x = 30 }, -/obj/structure/closet/secure_closet/atmos_personal, /turf/simulated/floor/tiled, /area/engineering/workshop) "awC" = ( @@ -9271,7 +9241,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/machinery/light/small, +/obj/machinery/light/no_nightshift, /turf/simulated/floor/tiled, /area/tcommsat/computer) "awD" = ( @@ -9419,12 +9389,10 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/closet/secure_closet/cargotech, -/obj/item/weapon/stamp/cargo, -/obj/item/weapon/storage/backpack/dufflebag, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/vending/wardrobe/cargodrobe, /turf/simulated/floor/tiled, /area/quartermaster/storage) "awW" = ( @@ -9477,11 +9445,6 @@ dir = 2; icon_state = "pipe-c" }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, /obj/machinery/portable_atmospherics/powered/pump/filled, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor, @@ -9532,7 +9495,7 @@ pump_direction = 0; use_power = 1 }, -/obj/machinery/light{ +/obj/machinery/light/no_nightshift{ dir = 4 }, /turf/simulated/floor/tiled/dark{ @@ -9644,6 +9607,11 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor, /area/storage/emergency_storage/emergency4) "axD" = ( @@ -9813,8 +9781,8 @@ /turf/simulated/floor/tiled, /area/engineering/hallway) "ayg" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, /turf/simulated/floor/tiled, /area/tcommsat/computer) @@ -10191,7 +10159,6 @@ }, /obj/effect/floor_decal/industrial/warning, /obj/effect/floor_decal/rust, -/obj/structure/cable, /obj/machinery/light/small{ dir = 1 }, @@ -10655,12 +10622,18 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/machinery/light/no_nightshift{ + dir = 4 + }, /turf/simulated/floor/tiled/dark, /area/ai_server_room) "aBu" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/machinery/light/no_nightshift{ + dir = 4 + }, /turf/simulated/floor/tiled/dark, /area/bridge/secondary/teleporter) "aBw" = ( @@ -11168,11 +11141,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/cable/green{ d2 = 8; icon_state = "0-8" @@ -14333,17 +14301,17 @@ dir = 4 }, /obj/structure/disposalpipe/segment, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/catwalk, /obj/structure/cable/green{ d1 = 1; d2 = 4; icon_state = "1-4" }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor, /area/storage/emergency_storage/emergency4) "bhg" = ( @@ -14644,9 +14612,9 @@ "bqj" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d1 = 2; + d2 = 8; + icon_state = "2-8" }, /turf/simulated/floor, /area/storage/emergency_storage/emergency4) @@ -16106,15 +16074,14 @@ /turf/simulated/floor/tiled, /area/gateway/prep_room) "coR" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 }, /turf/simulated/floor/tiled, -/area/hallway/station/atrium) +/area/quartermaster/belterdock) "cpK" = ( /turf/simulated/wall/r_wall, /area/maintenance/substation/tcomms) @@ -16517,6 +16484,12 @@ "cHV" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) "cIa" = ( @@ -16786,6 +16759,8 @@ d2 = 4; icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) "cWq" = ( @@ -16996,6 +16971,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, +/obj/machinery/light/no_nightshift, /turf/simulated/floor/tiled/techmaint, /area/tcomfoyer{ name = "\improper Telecomms Storage" @@ -17466,8 +17442,12 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) "dzT" = ( @@ -17526,9 +17506,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/obj/machinery/light/small{ - dir = 1 - }, /turf/simulated/floor/tiled/dark, /area/ai_server_room) "dDR" = ( @@ -17721,12 +17698,6 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "dPx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -18081,7 +18052,7 @@ /obj/effect/floor_decal/spline/fancy/wood{ dir = 1 }, -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "ekj" = ( /obj/structure/table/reinforced, @@ -19164,7 +19135,7 @@ /turf/simulated/floor/carpet, /area/engineering/foyer) "fvZ" = ( -/obj/machinery/light{ +/obj/machinery/light/no_nightshift{ dir = 1 }, /turf/simulated/floor/bluegrid{ @@ -19428,9 +19399,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/light/small{ - dir = 1 - }, /turf/simulated/floor/tiled/dark, /area/bridge/secondary/teleporter) "fLT" = ( @@ -19867,12 +19835,6 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -20126,9 +20088,6 @@ /obj/item/weapon/stock_parts/subspace/amplifier, /obj/item/weapon/stock_parts/subspace/amplifier, /obj/item/weapon/stock_parts/subspace/amplifier, -/obj/machinery/light/small{ - dir = 8 - }, /turf/simulated/floor/tiled/techmaint, /area/tcomfoyer{ name = "\improper Telecomms Storage" @@ -20721,7 +20680,6 @@ dir = 8; pixel_x = -24 }, -/obj/machinery/light/small, /turf/simulated/floor/tiled/dark, /area/tcommsat/computer) "hjG" = ( @@ -21026,7 +20984,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9 }, -/obj/machinery/light/small, +/obj/machinery/light/no_nightshift, /turf/simulated/floor/tiled/techfloor, /area/tcommsat/chamber) "hwC" = ( @@ -21588,9 +21546,6 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/light/small{ - dir = 1 - }, /turf/simulated/floor/plating, /area/maintenance/substation/tcomms) "hQk" = ( @@ -22159,9 +22114,6 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"isj" = ( -/turf/simulated/wall/r_wall, -/area/engineering/locker_room) "isr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -22255,7 +22207,6 @@ /obj/item/weapon/stock_parts/micro_laser/high, /obj/item/weapon/stock_parts/micro_laser/high, /obj/item/weapon/stock_parts/micro_laser/high, -/obj/machinery/light/small, /turf/simulated/floor/tiled/techmaint, /area/tcomfoyer{ name = "\improper Telecomms Storage" @@ -22439,7 +22390,6 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/light/small, /obj/structure/cable{ d1 = 1; d2 = 4; @@ -22449,6 +22399,7 @@ dir = 4; pixel_x = -22 }, +/obj/machinery/light/no_nightshift, /turf/simulated/floor/plating, /area/maintenance/substation/tcomms) "iIr" = ( @@ -24235,7 +24186,7 @@ d2 = 4; icon_state = "1-4" }, -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "kCD" = ( /obj/machinery/mineral/stacking_machine, @@ -25412,11 +25363,6 @@ /area/tether/exploration/crew) "lzt" = ( /obj/machinery/door/firedoor/border_only, -/obj/structure/cable/blue{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -25953,6 +25899,7 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /obj/random/junk, +/obj/item/device/paicard, /turf/simulated/floor, /area/maintenance/station/exploration) "lVJ" = ( @@ -26030,7 +25977,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "mau" = ( /obj/item/weapon/storage/backpack/parachute{ @@ -26416,10 +26363,6 @@ /obj/random/tech_supply, /obj/random/tech_supply, /obj/random/tech_supply, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, /obj/random/tech_supply, /turf/simulated/floor/tiled, /area/storage/tools) @@ -27059,7 +27002,6 @@ /area/space) "mVE" = ( /obj/machinery/computer/teleporter, -/obj/machinery/light/small, /turf/simulated/floor/tiled/dark, /area/bridge/secondary/teleporter) "mVM" = ( @@ -27670,6 +27612,7 @@ layer = 2.9 }, /obj/random/junk, +/obj/item/device/paicard, /turf/simulated/floor/plating, /area/maintenance/station/cargo) "nCS" = ( @@ -28120,7 +28063,7 @@ /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) "nZQ" = ( -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "oaR" = ( /obj/structure/cable/green{ @@ -28609,9 +28552,6 @@ dir = 8; network = "tcommsat" }, -/obj/machinery/light/small{ - dir = 1 - }, /turf/simulated/floor/tiled/dark, /area/tcommsat/computer) "oEs" = ( @@ -28765,6 +28705,12 @@ "oTk" = ( /obj/effect/floor_decal/borderfloor/corner, /obj/effect/floor_decal/corner/brown/bordercorner, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) "oTn" = ( @@ -28805,9 +28751,6 @@ /turf/simulated/floor/tiled, /area/tether/exploration/pathfinder_office) "oUP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -28820,11 +28763,6 @@ req_one_access = list() }, /obj/machinery/door/firedoor/border_only, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/tiled/steel_grid, /area/quartermaster/delivery) "oWk" = ( @@ -29363,6 +29301,12 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/wood, /area/quartermaster/qm) +"pJT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) "pKC" = ( /turf/simulated/wall, /area/janitor) @@ -29392,6 +29336,9 @@ /obj/item/weapon/stock_parts/subspace/analyzer, /obj/item/weapon/stock_parts/subspace/analyzer, /obj/item/weapon/stock_parts/subspace/analyzer, +/obj/machinery/light/no_nightshift{ + dir = 1 + }, /turf/simulated/floor/tiled/techmaint, /area/tcomfoyer{ name = "\improper Telecomms Storage" @@ -29418,7 +29365,7 @@ /obj/effect/floor_decal/spline/fancy/wood{ dir = 1 }, -/turf/simulated/floor/outdoors/grass/forest, +/turf/simulated/floor/grass, /area/quartermaster/qm) "pOQ" = ( /obj/machinery/embedded_controller/radio/airlock/docking_port{ @@ -31209,28 +31156,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) -"rQf" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/quartermaster/foyer) "rQq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -31685,6 +31610,12 @@ pixel_x = -13; pixel_y = -30 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) "sqz" = ( @@ -32572,11 +32503,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -32886,6 +32812,12 @@ }, /turf/simulated/floor/tiled/eris/white, /area/shuttle/medivac/general) +"tIc" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/belterdock) "tIs" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start{ @@ -32977,6 +32909,9 @@ /turf/simulated/floor/tiled, /area/hallway/station/docks) "tNG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) "tOn" = ( @@ -33175,6 +33110,11 @@ /area/shuttle/medivac/engines) "ucJ" = ( /obj/effect/floor_decal/rust, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor, /area/storage/emergency_storage/emergency4) "ucL" = ( @@ -33334,8 +33274,8 @@ }, /obj/machinery/door/airlock/science{ name = "Pathfinder"; - req_access = list(62,43,67); - req_one_access = newlist() + req_access = null; + req_one_access = list(44) }, /turf/simulated/floor/tiled/steel_grid, /area/tether/exploration/pathfinder_office) @@ -33687,6 +33627,7 @@ /turf/simulated/floor, /area/maintenance/cargo) "uKQ" = ( +/obj/machinery/light/no_nightshift, /turf/simulated/floor/tiled/dark, /area/tcommsat/computer) "uKX" = ( @@ -34914,7 +34855,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/light/small{ +/obj/machinery/light/no_nightshift{ dir = 1 }, /turf/simulated/floor/tiled/dark, @@ -42495,9 +42436,9 @@ abq aiM aiM aac -isj -isj -isj +acz +acz +acz aoy alM amf @@ -46253,7 +46194,7 @@ xIp bYr hed tNG -tNG +tIc tts bGw usX @@ -46394,8 +46335,8 @@ cqk bYr bYr jEs -tNG -tNG +coR +pJT tts ofV seR @@ -46491,7 +46432,7 @@ wbY lhz gLU yje -coR +yje yje yje yje @@ -47922,7 +47863,7 @@ abS acj aaD kPM -rQf +kVK tne aBM sYe diff --git a/maps/tether/tether-07-solars.dmm b/maps/tether/tether-07-solars.dmm index 45d61b7c0d5..3a7361dc8fc 100644 --- a/maps/tether/tether-07-solars.dmm +++ b/maps/tether/tether-07-solars.dmm @@ -22433,9 +22433,9 @@ bF bF bF bF -ad -ad -ad +bF +bF +bF bF bF bF @@ -22570,14 +22570,6 @@ bF bF bF bF -ad -ad -ad -ad -ad -ad -ad -ad bF bF bF @@ -22591,8 +22583,16 @@ bF bF bF bF -ad -ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF bF bF bF @@ -22712,17 +22712,6 @@ bF bF bF bF -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad bF bF bF @@ -22733,11 +22722,22 @@ bF bF bF bF -ad -ad -ad -ad -ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF bF bF bF @@ -22854,17 +22854,6 @@ bF bF bF bF -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad bF bF bF @@ -22875,11 +22864,22 @@ bF bF bF bF -ad -ad -ad -ad -ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF bF bF bF @@ -22990,25 +22990,28 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF bF bF bF @@ -23019,10 +23022,7 @@ bF ad ad ad -ad -ad -ad -ad +bF bF bF bF @@ -23132,18 +23132,32 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF ad ad ad @@ -23167,20 +23181,6 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad cf cx cU @@ -23273,6 +23273,30 @@ ad ad ad ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF ad ad ad @@ -23285,35 +23309,11 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad +bF +bF +bF +bF +bF ad ad ad @@ -23415,6 +23415,29 @@ ad ad ad ad +bF +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF ad ad ad @@ -23430,32 +23453,9 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad +bF +bF +bF ad ad ad @@ -23574,11 +23574,11 @@ ad ad ad ad -ad -ad -ad -ad -ad +bF +bF +bF +bF +bF ad ad ad @@ -24405,6 +24405,7 @@ ad ad ad ad +bG ad ad ad @@ -24428,8 +24429,7 @@ ad ad ad ad -ad -ad +bG bQ bj ad @@ -24547,6 +24547,15 @@ ad ad ad ad +bG +bG +bG +bG +bG +bG +bG +bG +bG ad ad ad @@ -24555,23 +24564,14 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad +bG +bG +bG +bG +bG +bG +bG +bG bQ bj bj @@ -24687,33 +24687,33 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bU bR bS @@ -24829,33 +24829,33 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ad @@ -24970,34 +24970,34 @@ ad ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ab @@ -25111,35 +25111,35 @@ ab ad ad ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ab -ab -ab -ab -ab -ab -ad -ad -ad -ad -ad -ad -ad -ad -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ab @@ -25253,35 +25253,35 @@ ad ad ad ab -ab -ab -ab -ad -ad -ad -ad -ad -ad -ab -ab -ab -ab -ab -ab -ab -ad -ad -ad -ad -ad -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ab @@ -25393,37 +25393,37 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ab @@ -25534,38 +25534,38 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ ab bj @@ -25675,39 +25675,39 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aw -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ ab bj @@ -25815,41 +25815,41 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ab @@ -25956,42 +25956,42 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ab @@ -26096,44 +26096,44 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ ab bj @@ -26238,44 +26238,44 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ ab bj @@ -26380,44 +26380,44 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ ab bj @@ -26522,44 +26522,44 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ab @@ -26664,44 +26664,44 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj ab @@ -26806,44 +26806,44 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ bj bj @@ -26948,44 +26948,44 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ ab bj @@ -27090,44 +27090,44 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ ab ab @@ -27233,43 +27233,43 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ ab bj @@ -27376,42 +27376,42 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG bQ aa ab @@ -27518,42 +27518,42 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG cm aa bj @@ -27662,40 +27662,40 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG +bG dd aa bj diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index 41d8074005e..992a8c52675 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -167,8 +167,7 @@ list("Carp Farm"), list("Snow Field"), list("Listening Post"), - list("Honleth Highlands A"), - list("Honleth Highlands B"), + list(list("Honleth Highlands A", "Honleth Highlands B")), list("Arynthi Lake Underground A","Arynthi Lake A"), list("Arynthi Lake Underground B","Arynthi Lake B"), list("Eggnog Town Underground","Eggnog Town"), @@ -246,7 +245,15 @@ [i]Transponder[/i]: Transmitting (CIV), NanoTrasen IFF [b]Notice[/b]: NanoTrasen Base, authorized personnel only"} base = 1 - icon_state = "reddwarf" + + icon = 'icons/obj/overmap_vr.dmi' + icon_state = "virgo3b" + + skybox_icon = 'icons/skybox/virgo3b.dmi' + skybox_icon_state = "small" + skybox_pixel_x = 0 + skybox_pixel_y = 0 + initial_generic_waypoints = list( "tether_dockarm_d1a1", //Bottom left, "tether_dockarm_d1a2", //Top left, @@ -296,6 +303,15 @@ else if(istype(AM, /obj/effect/overmap/visitable/ship)) atc.msg(message) +/obj/effect/overmap/visitable/sector/virgo3b/generate_skybox(zlevel) + var/static/image/bigone = image(icon = 'icons/skybox/virgo3b.dmi', icon_state = "large") + var/static/image/smallone = image(icon = 'icons/skybox/virgo3b.dmi', icon_state = "small") + + if(zlevel == Z_LEVEL_TRANSIT) + return bigone + else + return smallone + // For making the 6-in-1 holomap, we calculate some offsets #define TETHER_MAP_SIZE 140 // Width and height of compiled in tether z levels. #define TETHER_HOLOMAP_CENTER_GUTTER 40 // 40px central gutter between columns @@ -336,6 +352,7 @@ z = Z_LEVEL_TRANSIT name = "Transit" flags = MAP_LEVEL_STATION|MAP_LEVEL_SEALED|MAP_LEVEL_PLAYER|MAP_LEVEL_CONTACT|MAP_LEVEL_XENOARCH_EXEMPT + base_turf = /turf/space/v3b_midpoint // Special type that spawns fall triggers /datum/map_z_level/tether/station/space_low z = Z_LEVEL_SPACE_LOW diff --git a/maps/tether/tether_shuttles.dm b/maps/tether/tether_shuttles.dm index 0481ba9741b..f8e126d0244 100644 --- a/maps/tether/tether_shuttles.dm +++ b/maps/tether/tether_shuttles.dm @@ -94,8 +94,7 @@ /datum/shuttle/ferry/tether_backup/process_longjump(var/area/origin, var/area/intended_destination) var/failures = engines.len - for(var/engine in engines) - var/obj/structure/shuttle/engine/E = engine + for(var/obj/structure/shuttle/engine/E as anything in engines) failures -= E.jump() #define MOVE_PER(x) move_time*(x/100) SECONDS diff --git a/maps/tether/tether_turfs.dm b/maps/tether/tether_turfs.dm index 9bd9d58e3a1..0bf0ef290f8 100644 --- a/maps/tether/tether_turfs.dm +++ b/maps/tether/tether_turfs.dm @@ -69,10 +69,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) "uranium" = 10, "platinum" = 10, "hematite" = 20, - "copper" = 8, -// "tin" = 4, - "bauxite" = 4, - "rutile" = 4, "carbon" = 20, "diamond" = 1, "gold" = 8, @@ -86,10 +82,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) "uranium" = 5, "platinum" = 5, "hematite" = 35, - "copper" = 15, -// "tin" = 10, - "bauxite" = 10, - "rutile" = 10, "carbon" = 35, "gold" = 3, "silver" = 3, @@ -215,3 +207,71 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) dir = EAST /turf/simulated/sky/virgo3b/moving/west dir = WEST + +/turf/simulated/floor/midpoint_glass + name = "glass floor" + desc = "Dont jump on it, or do, I'm not your mom." + icon = 'icons/turf/flooring/glass.dmi' + icon_state = "glass-0" + base_icon_state = "glass" + +/turf/simulated/floor/midpoint_glass/reinf + name = "reinforced glass floor" + desc = "Do jump on it, it can take it." + icon = 'icons/turf/flooring/reinf_glass.dmi' + icon_state = "reinf_glass-0" + base_icon_state = "reinf_glass" + +/turf/simulated/floor/midpoint_glass/Initialize() + . = ..() + return INITIALIZE_HINT_LATELOAD + +/turf/simulated/floor/midpoint_glass/LateInitialize() + do_icons() + +/turf/simulated/floor/midpoint_glass/proc/do_icons() + var/new_junction = NONE + + for(var/direction in cardinal) //Cardinal case first. + var/turf/T = get_step(src, direction) + if(istype(T, type)) + new_junction |= direction + + if(!(new_junction & (NORTH|SOUTH)) || !(new_junction & (EAST|WEST))) + icon_state = "[base_icon_state]-[new_junction]" + return + + if(new_junction & NORTH) + if(new_junction & WEST) + var/turf/T = get_step(src, NORTHWEST) + if(istype(T, type)) + new_junction |= (1<<7) + + if(new_junction & EAST) + var/turf/T = get_step(src, NORTHEAST) + if(istype(T, type)) + new_junction |= (1<<4) + + if(new_junction & SOUTH) + if(new_junction & WEST) + var/turf/T = get_step(src, SOUTHWEST) + if(istype(T, type)) + new_junction |= (1<<6) + + if(new_junction & EAST) + var/turf/T = get_step(src, SOUTHEAST) + if(istype(T, type)) + new_junction |= (1<<5) + + icon_state = "[base_icon_state]-[new_junction]" + + add_vis_overlay('icons/effects/effects.dmi', "white", plane = SPACE_PLANE, add_vis_flags = VIS_INHERIT_ID|VIS_UNDERLAY) + +/turf/space/v3b_midpoint/Initialize() + . = ..() + new /obj/effect/step_trigger/teleporter/planetary_fall/virgo3b(src) + +/turf/space/v3b_midpoint/ChangeTurf(turf/N, tell_universe, force_lighting_update, preserve_outdoors) + . = ..() + for(var/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b/F in src) + qdel(F) diff --git a/maps/virgo_minitest/virgo_minitest_defines.dm b/maps/virgo_minitest/virgo_minitest_defines.dm index abee28169dc..716815b7b34 100644 --- a/maps/virgo_minitest/virgo_minitest_defines.dm +++ b/maps/virgo_minitest/virgo_minitest_defines.dm @@ -60,6 +60,10 @@ allowed_spawns = list("Arrivals Shuttle","Gateway","Cryogenic Storage","Cyborg Storage") +/datum/map/virgo_minitest/New() + ..() + SSticker.start_immediately = TRUE + /datum/map_z_level/minitest/station z = Z_LEVEL_MAIN_VIRGO_TESTING name = "Station Level" diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index ace7243c1f5..7eb677df5ee 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -3,7 +3,7 @@ var/datum/map/using_map = new USING_MAP_DATUM var/list/all_maps = list() /hook/startup/proc/initialise_map_list() - for(var/type in typesof(/datum/map) - /datum/map) + for(var/type in subtypesof(/datum/map)) var/datum/map/M if(type == using_map.type) M = using_map @@ -35,6 +35,7 @@ var/list/all_maps = list() var/static/list/xenoarch_exempt_levels = list() //Z-levels exempt from xenoarch finds and digsites spawning. var/static/list/persist_levels = list() // Z-levels where SSpersistence should persist between rounds. Defaults to station_levels if unset. var/static/list/secret_levels = list() // Z-levels that (non-admin) ghosts can't get to + var/static/list/hidden_levels = list() // Z-levels who's contents are hidden, but not forbidden (gateways) var/static/list/empty_levels = list() // Empty Z-levels that may be used for various things var/static/list/mappable_levels = list()// List of levels where mapping or other similar devices might work fully // End Static Lists @@ -335,7 +336,7 @@ var/list/all_maps = list() custom_skybox = new custom_skybox() /datum/map_z_level/Destroy(var/force) - crash_with("Attempt to delete a map_z_level instance [log_info_line(src)]") + stack_trace("Attempt to delete a map_z_level instance [log_info_line(src)]") if(!force) return QDEL_HINT_LETMELIVE // No. if (using_map.zlevels["[z]"] == src) diff --git a/sound/machines/door/airlock_tear_apart.ogg b/sound/machines/door/airlock_tear_apart.ogg new file mode 100644 index 00000000000..aba517475f1 Binary files /dev/null and b/sound/machines/door/airlock_tear_apart.ogg differ diff --git a/sound/vore/death1.ogg b/sound/vore/death1.ogg index 34f4e189f54..f3e8af5de6f 100644 Binary files a/sound/vore/death1.ogg and b/sound/vore/death1.ogg differ diff --git a/sound/vore/death10.ogg b/sound/vore/death10.ogg index 92ce0fd9bda..57ba213f018 100644 Binary files a/sound/vore/death10.ogg and b/sound/vore/death10.ogg differ diff --git a/sound/vore/death2.ogg b/sound/vore/death2.ogg index 2476b0f08c9..f2a8d1d733f 100644 Binary files a/sound/vore/death2.ogg and b/sound/vore/death2.ogg differ diff --git a/sound/vore/death3.ogg b/sound/vore/death3.ogg index d8a666067da..f91c4d48532 100644 Binary files a/sound/vore/death3.ogg and b/sound/vore/death3.ogg differ diff --git a/sound/vore/death4.ogg b/sound/vore/death4.ogg index 4fce54da79b..cf6b6323fb3 100644 Binary files a/sound/vore/death4.ogg and b/sound/vore/death4.ogg differ diff --git a/sound/vore/death5.ogg b/sound/vore/death5.ogg index 371cf17155e..54bfd156874 100644 Binary files a/sound/vore/death5.ogg and b/sound/vore/death5.ogg differ diff --git a/sound/vore/death6.ogg b/sound/vore/death6.ogg index 78fc1b0637f..0634bfbe53a 100644 Binary files a/sound/vore/death6.ogg and b/sound/vore/death6.ogg differ diff --git a/sound/vore/death7.ogg b/sound/vore/death7.ogg index 419a5bedd55..e7ce8c3ab72 100644 Binary files a/sound/vore/death7.ogg and b/sound/vore/death7.ogg differ diff --git a/sound/vore/death8.ogg b/sound/vore/death8.ogg index b15ab6a7d24..fef1422590f 100644 Binary files a/sound/vore/death8.ogg and b/sound/vore/death8.ogg differ diff --git a/sound/vore/death9.ogg b/sound/vore/death9.ogg index 3709541d602..ec93107ff21 100644 Binary files a/sound/vore/death9.ogg and b/sound/vore/death9.ogg differ diff --git a/sound/vore/digest1.ogg b/sound/vore/digest1.ogg index 058ca78f7eb..93c9f087cfc 100644 Binary files a/sound/vore/digest1.ogg and b/sound/vore/digest1.ogg differ diff --git a/sound/vore/digest10.ogg b/sound/vore/digest10.ogg index 5db775ae29f..63b65555bfa 100644 Binary files a/sound/vore/digest10.ogg and b/sound/vore/digest10.ogg differ diff --git a/sound/vore/digest11.ogg b/sound/vore/digest11.ogg index d81ac72deaa..1dadd6d5b22 100644 Binary files a/sound/vore/digest11.ogg and b/sound/vore/digest11.ogg differ diff --git a/sound/vore/digest12.ogg b/sound/vore/digest12.ogg index 6b44127cd8b..11dec07c8bf 100644 Binary files a/sound/vore/digest12.ogg and b/sound/vore/digest12.ogg differ diff --git a/sound/vore/digest2.ogg b/sound/vore/digest2.ogg index 0e8bef1db85..379777f81a0 100644 Binary files a/sound/vore/digest2.ogg and b/sound/vore/digest2.ogg differ diff --git a/sound/vore/digest3.ogg b/sound/vore/digest3.ogg index 2077f31399c..5c776e00718 100644 Binary files a/sound/vore/digest3.ogg and b/sound/vore/digest3.ogg differ diff --git a/sound/vore/digest4.ogg b/sound/vore/digest4.ogg index 27a786bc401..5fd26500c4a 100644 Binary files a/sound/vore/digest4.ogg and b/sound/vore/digest4.ogg differ diff --git a/sound/vore/digest5.ogg b/sound/vore/digest5.ogg index 849c1335be1..0d24c1c44b5 100644 Binary files a/sound/vore/digest5.ogg and b/sound/vore/digest5.ogg differ diff --git a/sound/vore/digest6.ogg b/sound/vore/digest6.ogg index 5f0cc86eb16..4ab1e42a1e2 100644 Binary files a/sound/vore/digest6.ogg and b/sound/vore/digest6.ogg differ diff --git a/sound/vore/digest7.ogg b/sound/vore/digest7.ogg index f224cc3fa3a..66a50d4b1e0 100644 Binary files a/sound/vore/digest7.ogg and b/sound/vore/digest7.ogg differ diff --git a/sound/vore/digest8.ogg b/sound/vore/digest8.ogg index 04b742bd491..2c3894ebf7e 100644 Binary files a/sound/vore/digest8.ogg and b/sound/vore/digest8.ogg differ diff --git a/sound/vore/digest9.ogg b/sound/vore/digest9.ogg index 866c95b8742..e69dbd48110 100644 Binary files a/sound/vore/digest9.ogg and b/sound/vore/digest9.ogg differ diff --git a/sound/vore/growl1.ogg b/sound/vore/growl1.ogg index 6a9cef89884..82b2d3165f1 100644 Binary files a/sound/vore/growl1.ogg and b/sound/vore/growl1.ogg differ diff --git a/sound/vore/growl2.ogg b/sound/vore/growl2.ogg index 17a9a945599..59c6b169e60 100644 Binary files a/sound/vore/growl2.ogg and b/sound/vore/growl2.ogg differ diff --git a/sound/vore/growl3.ogg b/sound/vore/growl3.ogg index f5a2f75434b..09d24615854 100644 Binary files a/sound/vore/growl3.ogg and b/sound/vore/growl3.ogg differ diff --git a/sound/vore/growl4.ogg b/sound/vore/growl4.ogg index 5fb3c2db79a..a0215ab19e5 100644 Binary files a/sound/vore/growl4.ogg and b/sound/vore/growl4.ogg differ diff --git a/sound/vore/growl5.ogg b/sound/vore/growl5.ogg index 95ba675a751..fb7c982d6b9 100644 Binary files a/sound/vore/growl5.ogg and b/sound/vore/growl5.ogg differ diff --git a/sound/vore/gulp.ogg b/sound/vore/gulp.ogg index b463e7fb182..525e414e2e5 100644 Binary files a/sound/vore/gulp.ogg and b/sound/vore/gulp.ogg differ diff --git a/sound/vore/insert.ogg b/sound/vore/insert.ogg index 0574733d4df..ac6b813acdf 100644 Binary files a/sound/vore/insert.ogg and b/sound/vore/insert.ogg differ diff --git a/sound/vore/insertion1.ogg b/sound/vore/insertion1.ogg index a026591f074..ab66dba32d7 100644 Binary files a/sound/vore/insertion1.ogg and b/sound/vore/insertion1.ogg differ diff --git a/sound/vore/insertion2.ogg b/sound/vore/insertion2.ogg index b682e3aaf8e..ed9bc514eba 100644 Binary files a/sound/vore/insertion2.ogg and b/sound/vore/insertion2.ogg differ diff --git a/sound/vore/insertion3.ogg b/sound/vore/insertion3.ogg index 7dabf3f0776..33e78912031 100644 Binary files a/sound/vore/insertion3.ogg and b/sound/vore/insertion3.ogg differ diff --git a/sound/vore/schlorp.ogg b/sound/vore/schlorp.ogg index c9cd5a34132..fa7942a5c2e 100644 Binary files a/sound/vore/schlorp.ogg and b/sound/vore/schlorp.ogg differ diff --git a/sound/vore/squish1.ogg b/sound/vore/squish1.ogg index 8a87758048f..dce949b3759 100644 Binary files a/sound/vore/squish1.ogg and b/sound/vore/squish1.ogg differ diff --git a/sound/vore/squish2.ogg b/sound/vore/squish2.ogg index c8f96fc6e27..00d44f0dc84 100644 Binary files a/sound/vore/squish2.ogg and b/sound/vore/squish2.ogg differ diff --git a/sound/vore/squish3.ogg b/sound/vore/squish3.ogg index 60e364c80a3..86c4c9a1458 100644 Binary files a/sound/vore/squish3.ogg and b/sound/vore/squish3.ogg differ diff --git a/sound/vore/squish4.ogg b/sound/vore/squish4.ogg index e9bd8e7bf56..6e6e98b04ff 100644 Binary files a/sound/vore/squish4.ogg and b/sound/vore/squish4.ogg differ diff --git a/sound/vore/stomach_loop.ogg b/sound/vore/stomach_loop.ogg index b9983b2ab6f..4bf19edce98 100644 Binary files a/sound/vore/stomach_loop.ogg and b/sound/vore/stomach_loop.ogg differ diff --git a/sound/vore/sunesound/pred/death_01.ogg b/sound/vore/sunesound/pred/death_01.ogg index 231884ef54c..0a0b4b4a94d 100644 Binary files a/sound/vore/sunesound/pred/death_01.ogg and b/sound/vore/sunesound/pred/death_01.ogg differ diff --git a/sound/vore/sunesound/pred/death_02.ogg b/sound/vore/sunesound/pred/death_02.ogg index 5de3e4148cc..3936d7905fe 100644 Binary files a/sound/vore/sunesound/pred/death_02.ogg and b/sound/vore/sunesound/pred/death_02.ogg differ diff --git a/sound/vore/sunesound/pred/death_03.ogg b/sound/vore/sunesound/pred/death_03.ogg index 4ffa271af78..ee9dcae0c29 100644 Binary files a/sound/vore/sunesound/pred/death_03.ogg and b/sound/vore/sunesound/pred/death_03.ogg differ diff --git a/sound/vore/sunesound/pred/death_04.ogg b/sound/vore/sunesound/pred/death_04.ogg index a4c0e91be6d..8300a3fb2de 100644 Binary files a/sound/vore/sunesound/pred/death_04.ogg and b/sound/vore/sunesound/pred/death_04.ogg differ diff --git a/sound/vore/sunesound/pred/death_05.ogg b/sound/vore/sunesound/pred/death_05.ogg index aeec557758f..5f08e2d86d9 100644 Binary files a/sound/vore/sunesound/pred/death_05.ogg and b/sound/vore/sunesound/pred/death_05.ogg differ diff --git a/sound/vore/sunesound/pred/death_06.ogg b/sound/vore/sunesound/pred/death_06.ogg index f5b077ebd4c..cff66be4ab4 100644 Binary files a/sound/vore/sunesound/pred/death_06.ogg and b/sound/vore/sunesound/pred/death_06.ogg differ diff --git a/sound/vore/sunesound/pred/death_07.ogg b/sound/vore/sunesound/pred/death_07.ogg index afaaab65bbf..8396bdf9228 100644 Binary files a/sound/vore/sunesound/pred/death_07.ogg and b/sound/vore/sunesound/pred/death_07.ogg differ diff --git a/sound/vore/sunesound/pred/death_08.ogg b/sound/vore/sunesound/pred/death_08.ogg index b1b8479ea8a..3282e33ce80 100644 Binary files a/sound/vore/sunesound/pred/death_08.ogg and b/sound/vore/sunesound/pred/death_08.ogg differ diff --git a/sound/vore/sunesound/pred/death_09.ogg b/sound/vore/sunesound/pred/death_09.ogg index 1454deafad9..f126dfbc148 100644 Binary files a/sound/vore/sunesound/pred/death_09.ogg and b/sound/vore/sunesound/pred/death_09.ogg differ diff --git a/sound/vore/sunesound/pred/death_10.ogg b/sound/vore/sunesound/pred/death_10.ogg index f0e23e1d548..bc1e49b631a 100644 Binary files a/sound/vore/sunesound/pred/death_10.ogg and b/sound/vore/sunesound/pred/death_10.ogg differ diff --git a/sound/vore/sunesound/pred/death_11.ogg b/sound/vore/sunesound/pred/death_11.ogg index 43e80467e03..6918952ff9d 100644 Binary files a/sound/vore/sunesound/pred/death_11.ogg and b/sound/vore/sunesound/pred/death_11.ogg differ diff --git a/sound/vore/sunesound/pred/death_12.ogg b/sound/vore/sunesound/pred/death_12.ogg index 5ec60299989..3a473525626 100644 Binary files a/sound/vore/sunesound/pred/death_12.ogg and b/sound/vore/sunesound/pred/death_12.ogg differ diff --git a/sound/vore/sunesound/pred/death_13.ogg b/sound/vore/sunesound/pred/death_13.ogg index 9073bac4f21..832685b2bd0 100644 Binary files a/sound/vore/sunesound/pred/death_13.ogg and b/sound/vore/sunesound/pred/death_13.ogg differ diff --git a/sound/vore/sunesound/pred/digest_01.ogg b/sound/vore/sunesound/pred/digest_01.ogg index 20b6d1d43a0..7efcf251a50 100644 Binary files a/sound/vore/sunesound/pred/digest_01.ogg and b/sound/vore/sunesound/pred/digest_01.ogg differ diff --git a/sound/vore/sunesound/pred/digest_02.ogg b/sound/vore/sunesound/pred/digest_02.ogg index 7fc41e23056..8e161264dd7 100644 Binary files a/sound/vore/sunesound/pred/digest_02.ogg and b/sound/vore/sunesound/pred/digest_02.ogg differ diff --git a/sound/vore/sunesound/pred/digest_03.ogg b/sound/vore/sunesound/pred/digest_03.ogg index 98b032c7cb4..af08552ad46 100644 Binary files a/sound/vore/sunesound/pred/digest_03.ogg and b/sound/vore/sunesound/pred/digest_03.ogg differ diff --git a/sound/vore/sunesound/pred/digest_04.ogg b/sound/vore/sunesound/pred/digest_04.ogg index ed494e813c5..dc2b1d940b5 100644 Binary files a/sound/vore/sunesound/pred/digest_04.ogg and b/sound/vore/sunesound/pred/digest_04.ogg differ diff --git a/sound/vore/sunesound/pred/digest_05.ogg b/sound/vore/sunesound/pred/digest_05.ogg index 53bb4814f7c..39dc96b4705 100644 Binary files a/sound/vore/sunesound/pred/digest_05.ogg and b/sound/vore/sunesound/pred/digest_05.ogg differ diff --git a/sound/vore/sunesound/pred/digest_06.ogg b/sound/vore/sunesound/pred/digest_06.ogg index 787c3362828..23b664f10bc 100644 Binary files a/sound/vore/sunesound/pred/digest_06.ogg and b/sound/vore/sunesound/pred/digest_06.ogg differ diff --git a/sound/vore/sunesound/pred/digest_07.ogg b/sound/vore/sunesound/pred/digest_07.ogg index f63d4c633a7..ea5a5186bb1 100644 Binary files a/sound/vore/sunesound/pred/digest_07.ogg and b/sound/vore/sunesound/pred/digest_07.ogg differ diff --git a/sound/vore/sunesound/pred/digest_08.ogg b/sound/vore/sunesound/pred/digest_08.ogg index dbbda3b5174..cdf8584a8a7 100644 Binary files a/sound/vore/sunesound/pred/digest_08.ogg and b/sound/vore/sunesound/pred/digest_08.ogg differ diff --git a/sound/vore/sunesound/pred/digest_09.ogg b/sound/vore/sunesound/pred/digest_09.ogg index 1877f1ca05a..fce3c95a3a6 100644 Binary files a/sound/vore/sunesound/pred/digest_09.ogg and b/sound/vore/sunesound/pred/digest_09.ogg differ diff --git a/sound/vore/sunesound/pred/digest_10.ogg b/sound/vore/sunesound/pred/digest_10.ogg index 3e22b8b2fb2..cfc009b9371 100644 Binary files a/sound/vore/sunesound/pred/digest_10.ogg and b/sound/vore/sunesound/pred/digest_10.ogg differ diff --git a/sound/vore/sunesound/pred/digest_11.ogg b/sound/vore/sunesound/pred/digest_11.ogg index 089d4ee7e48..511c20eb676 100644 Binary files a/sound/vore/sunesound/pred/digest_11.ogg and b/sound/vore/sunesound/pred/digest_11.ogg differ diff --git a/sound/vore/sunesound/pred/digest_12.ogg b/sound/vore/sunesound/pred/digest_12.ogg index 76a9134646f..55c0d590147 100644 Binary files a/sound/vore/sunesound/pred/digest_12.ogg and b/sound/vore/sunesound/pred/digest_12.ogg differ diff --git a/sound/vore/sunesound/pred/digest_13.ogg b/sound/vore/sunesound/pred/digest_13.ogg index 12b1c6bb187..525b9fe7018 100644 Binary files a/sound/vore/sunesound/pred/digest_13.ogg and b/sound/vore/sunesound/pred/digest_13.ogg differ diff --git a/sound/vore/sunesound/pred/digest_14.ogg b/sound/vore/sunesound/pred/digest_14.ogg index c68231585c9..a7d908f7c0f 100644 Binary files a/sound/vore/sunesound/pred/digest_14.ogg and b/sound/vore/sunesound/pred/digest_14.ogg differ diff --git a/sound/vore/sunesound/pred/digest_15.ogg b/sound/vore/sunesound/pred/digest_15.ogg index 32aecca35b6..9fc0f2fda29 100644 Binary files a/sound/vore/sunesound/pred/digest_15.ogg and b/sound/vore/sunesound/pred/digest_15.ogg differ diff --git a/sound/vore/sunesound/pred/digest_16.ogg b/sound/vore/sunesound/pred/digest_16.ogg index d112913570e..3d94aea22d1 100644 Binary files a/sound/vore/sunesound/pred/digest_16.ogg and b/sound/vore/sunesound/pred/digest_16.ogg differ diff --git a/sound/vore/sunesound/pred/digest_17.ogg b/sound/vore/sunesound/pred/digest_17.ogg index d23c4c6ddc1..227130aa82d 100644 Binary files a/sound/vore/sunesound/pred/digest_17.ogg and b/sound/vore/sunesound/pred/digest_17.ogg differ diff --git a/sound/vore/sunesound/pred/digest_18.ogg b/sound/vore/sunesound/pred/digest_18.ogg index ae8ac9f74f3..b9a3ba3a66e 100644 Binary files a/sound/vore/sunesound/pred/digest_18.ogg and b/sound/vore/sunesound/pred/digest_18.ogg differ diff --git a/sound/vore/sunesound/pred/escape.ogg b/sound/vore/sunesound/pred/escape.ogg index fc093a5acfd..1b81e70879b 100644 Binary files a/sound/vore/sunesound/pred/escape.ogg and b/sound/vore/sunesound/pred/escape.ogg differ diff --git a/sound/vore/sunesound/pred/insertion_01.ogg b/sound/vore/sunesound/pred/insertion_01.ogg index 4ca8b6e4258..6b1322c25e6 100644 Binary files a/sound/vore/sunesound/pred/insertion_01.ogg and b/sound/vore/sunesound/pred/insertion_01.ogg differ diff --git a/sound/vore/sunesound/pred/insertion_02.ogg b/sound/vore/sunesound/pred/insertion_02.ogg index a23cfaf2013..a1c18321b44 100644 Binary files a/sound/vore/sunesound/pred/insertion_02.ogg and b/sound/vore/sunesound/pred/insertion_02.ogg differ diff --git a/sound/vore/sunesound/pred/loop.ogg b/sound/vore/sunesound/pred/loop.ogg index 5f0994251a4..6e019be5532 100644 Binary files a/sound/vore/sunesound/pred/loop.ogg and b/sound/vore/sunesound/pred/loop.ogg differ diff --git a/sound/vore/sunesound/pred/schlorp.ogg b/sound/vore/sunesound/pred/schlorp.ogg index eefb9dd71e9..25ceb45ae7c 100644 Binary files a/sound/vore/sunesound/pred/schlorp.ogg and b/sound/vore/sunesound/pred/schlorp.ogg differ diff --git a/sound/vore/sunesound/pred/squish _02.ogg b/sound/vore/sunesound/pred/squish _02.ogg index 846f0a2ecea..1585072df9b 100644 Binary files a/sound/vore/sunesound/pred/squish _02.ogg and b/sound/vore/sunesound/pred/squish _02.ogg differ diff --git a/sound/vore/sunesound/pred/squish _03.ogg b/sound/vore/sunesound/pred/squish _03.ogg index 568aa81a3d1..e54c1ffd637 100644 Binary files a/sound/vore/sunesound/pred/squish _03.ogg and b/sound/vore/sunesound/pred/squish _03.ogg differ diff --git a/sound/vore/sunesound/pred/squish_01.ogg b/sound/vore/sunesound/pred/squish_01.ogg index bc014b811df..48749ca32fc 100644 Binary files a/sound/vore/sunesound/pred/squish_01.ogg and b/sound/vore/sunesound/pred/squish_01.ogg differ diff --git a/sound/vore/sunesound/pred/squish_02.ogg b/sound/vore/sunesound/pred/squish_02.ogg index 8d92bfd19ef..b33e7bfc5f3 100644 Binary files a/sound/vore/sunesound/pred/squish_02.ogg and b/sound/vore/sunesound/pred/squish_02.ogg differ diff --git a/sound/vore/sunesound/pred/squish_03.ogg b/sound/vore/sunesound/pred/squish_03.ogg index f62bf7ff603..72a816e1c71 100644 Binary files a/sound/vore/sunesound/pred/squish_03.ogg and b/sound/vore/sunesound/pred/squish_03.ogg differ diff --git a/sound/vore/sunesound/pred/squish_04.ogg b/sound/vore/sunesound/pred/squish_04.ogg index 47037d9a3a9..e19b5de9c94 100644 Binary files a/sound/vore/sunesound/pred/squish_04.ogg and b/sound/vore/sunesound/pred/squish_04.ogg differ diff --git a/sound/vore/sunesound/pred/stomachmove.ogg b/sound/vore/sunesound/pred/stomachmove.ogg index 4e11cc03edd..225cf722673 100644 Binary files a/sound/vore/sunesound/pred/stomachmove.ogg and b/sound/vore/sunesound/pred/stomachmove.ogg differ diff --git a/sound/vore/sunesound/pred/struggle_01.ogg b/sound/vore/sunesound/pred/struggle_01.ogg index 96c569b0f97..5142e4d7d94 100644 Binary files a/sound/vore/sunesound/pred/struggle_01.ogg and b/sound/vore/sunesound/pred/struggle_01.ogg differ diff --git a/sound/vore/sunesound/pred/struggle_02.ogg b/sound/vore/sunesound/pred/struggle_02.ogg index 2f0d3324f13..7e26aeaf516 100644 Binary files a/sound/vore/sunesound/pred/struggle_02.ogg and b/sound/vore/sunesound/pred/struggle_02.ogg differ diff --git a/sound/vore/sunesound/pred/struggle_03.ogg b/sound/vore/sunesound/pred/struggle_03.ogg index 96328170105..baf21d62cda 100644 Binary files a/sound/vore/sunesound/pred/struggle_03.ogg and b/sound/vore/sunesound/pred/struggle_03.ogg differ diff --git a/sound/vore/sunesound/pred/struggle_04.ogg b/sound/vore/sunesound/pred/struggle_04.ogg index 7a30de3baf7..133fa8519fa 100644 Binary files a/sound/vore/sunesound/pred/struggle_04.ogg and b/sound/vore/sunesound/pred/struggle_04.ogg differ diff --git a/sound/vore/sunesound/pred/struggle_05.ogg b/sound/vore/sunesound/pred/struggle_05.ogg index 0bae93d50f3..b5fdfd62cca 100644 Binary files a/sound/vore/sunesound/pred/struggle_05.ogg and b/sound/vore/sunesound/pred/struggle_05.ogg differ diff --git a/sound/vore/sunesound/pred/swallow_01.ogg b/sound/vore/sunesound/pred/swallow_01.ogg index 45a00085867..6a7ba5befb5 100644 Binary files a/sound/vore/sunesound/pred/swallow_01.ogg and b/sound/vore/sunesound/pred/swallow_01.ogg differ diff --git a/sound/vore/sunesound/pred/swallow_02.ogg b/sound/vore/sunesound/pred/swallow_02.ogg index 8f9bcb2e84d..29433e9c292 100644 Binary files a/sound/vore/sunesound/pred/swallow_02.ogg and b/sound/vore/sunesound/pred/swallow_02.ogg differ diff --git a/sound/vore/sunesound/pred/taurswallow.ogg b/sound/vore/sunesound/pred/taurswallow.ogg index c700f718031..6fedf3867b1 100644 Binary files a/sound/vore/sunesound/pred/taurswallow.ogg and b/sound/vore/sunesound/pred/taurswallow.ogg differ diff --git a/sound/vore/sunesound/prey/death_01.ogg b/sound/vore/sunesound/prey/death_01.ogg index 539a873a7e0..48468797d06 100644 Binary files a/sound/vore/sunesound/prey/death_01.ogg and b/sound/vore/sunesound/prey/death_01.ogg differ diff --git a/sound/vore/sunesound/prey/death_02.ogg b/sound/vore/sunesound/prey/death_02.ogg index 4dd1a285ea8..35e62d0f37f 100644 Binary files a/sound/vore/sunesound/prey/death_02.ogg and b/sound/vore/sunesound/prey/death_02.ogg differ diff --git a/sound/vore/sunesound/prey/death_03.ogg b/sound/vore/sunesound/prey/death_03.ogg index 30a3622c86b..656ae478854 100644 Binary files a/sound/vore/sunesound/prey/death_03.ogg and b/sound/vore/sunesound/prey/death_03.ogg differ diff --git a/sound/vore/sunesound/prey/death_04.ogg b/sound/vore/sunesound/prey/death_04.ogg index ff983c2c31e..b0f2f73b687 100644 Binary files a/sound/vore/sunesound/prey/death_04.ogg and b/sound/vore/sunesound/prey/death_04.ogg differ diff --git a/sound/vore/sunesound/prey/death_05.ogg b/sound/vore/sunesound/prey/death_05.ogg index 44b86030488..e32a201662c 100644 Binary files a/sound/vore/sunesound/prey/death_05.ogg and b/sound/vore/sunesound/prey/death_05.ogg differ diff --git a/sound/vore/sunesound/prey/death_06.ogg b/sound/vore/sunesound/prey/death_06.ogg index 836a4fd18cb..d36c78075c9 100644 Binary files a/sound/vore/sunesound/prey/death_06.ogg and b/sound/vore/sunesound/prey/death_06.ogg differ diff --git a/sound/vore/sunesound/prey/death_07.ogg b/sound/vore/sunesound/prey/death_07.ogg index 2406fea7270..d62d2e97dd0 100644 Binary files a/sound/vore/sunesound/prey/death_07.ogg and b/sound/vore/sunesound/prey/death_07.ogg differ diff --git a/sound/vore/sunesound/prey/death_08.ogg b/sound/vore/sunesound/prey/death_08.ogg index 0d7627dfae7..3811c743f47 100644 Binary files a/sound/vore/sunesound/prey/death_08.ogg and b/sound/vore/sunesound/prey/death_08.ogg differ diff --git a/sound/vore/sunesound/prey/death_09.ogg b/sound/vore/sunesound/prey/death_09.ogg index fa00a29d314..4833c19a96e 100644 Binary files a/sound/vore/sunesound/prey/death_09.ogg and b/sound/vore/sunesound/prey/death_09.ogg differ diff --git a/sound/vore/sunesound/prey/death_10.ogg b/sound/vore/sunesound/prey/death_10.ogg index 738e7cf909b..b51ee3895d2 100644 Binary files a/sound/vore/sunesound/prey/death_10.ogg and b/sound/vore/sunesound/prey/death_10.ogg differ diff --git a/sound/vore/sunesound/prey/death_11.ogg b/sound/vore/sunesound/prey/death_11.ogg index bfd47945ae0..75c0cdb6647 100644 Binary files a/sound/vore/sunesound/prey/death_11.ogg and b/sound/vore/sunesound/prey/death_11.ogg differ diff --git a/sound/vore/sunesound/prey/death_12.ogg b/sound/vore/sunesound/prey/death_12.ogg index e6e800b2da5..60626b03655 100644 Binary files a/sound/vore/sunesound/prey/death_12.ogg and b/sound/vore/sunesound/prey/death_12.ogg differ diff --git a/sound/vore/sunesound/prey/death_13.ogg b/sound/vore/sunesound/prey/death_13.ogg index c9b79887d7b..7e414f34dc1 100644 Binary files a/sound/vore/sunesound/prey/death_13.ogg and b/sound/vore/sunesound/prey/death_13.ogg differ diff --git a/sound/vore/sunesound/prey/digest_01.ogg b/sound/vore/sunesound/prey/digest_01.ogg index a1d13f7fb71..71b310850ec 100644 Binary files a/sound/vore/sunesound/prey/digest_01.ogg and b/sound/vore/sunesound/prey/digest_01.ogg differ diff --git a/sound/vore/sunesound/prey/digest_02.ogg b/sound/vore/sunesound/prey/digest_02.ogg index 443d23c1943..9676330dac3 100644 Binary files a/sound/vore/sunesound/prey/digest_02.ogg and b/sound/vore/sunesound/prey/digest_02.ogg differ diff --git a/sound/vore/sunesound/prey/digest_03.ogg b/sound/vore/sunesound/prey/digest_03.ogg index eb798b66ff0..abde08c549c 100644 Binary files a/sound/vore/sunesound/prey/digest_03.ogg and b/sound/vore/sunesound/prey/digest_03.ogg differ diff --git a/sound/vore/sunesound/prey/digest_04.ogg b/sound/vore/sunesound/prey/digest_04.ogg index a2c2c3e1ace..746f5bc9b6e 100644 Binary files a/sound/vore/sunesound/prey/digest_04.ogg and b/sound/vore/sunesound/prey/digest_04.ogg differ diff --git a/sound/vore/sunesound/prey/digest_05.ogg b/sound/vore/sunesound/prey/digest_05.ogg index 752a6d48f33..8033a65a7cf 100644 Binary files a/sound/vore/sunesound/prey/digest_05.ogg and b/sound/vore/sunesound/prey/digest_05.ogg differ diff --git a/sound/vore/sunesound/prey/digest_06.ogg b/sound/vore/sunesound/prey/digest_06.ogg index f2e80b919fc..3173eeaf1e4 100644 Binary files a/sound/vore/sunesound/prey/digest_06.ogg and b/sound/vore/sunesound/prey/digest_06.ogg differ diff --git a/sound/vore/sunesound/prey/digest_07.ogg b/sound/vore/sunesound/prey/digest_07.ogg index 6a2ff70ff8c..39e66dfda87 100644 Binary files a/sound/vore/sunesound/prey/digest_07.ogg and b/sound/vore/sunesound/prey/digest_07.ogg differ diff --git a/sound/vore/sunesound/prey/digest_08.ogg b/sound/vore/sunesound/prey/digest_08.ogg index 4e55f4671da..2b4ba324aba 100644 Binary files a/sound/vore/sunesound/prey/digest_08.ogg and b/sound/vore/sunesound/prey/digest_08.ogg differ diff --git a/sound/vore/sunesound/prey/digest_09.ogg b/sound/vore/sunesound/prey/digest_09.ogg index 452e6b4a2e1..77ba32e548c 100644 Binary files a/sound/vore/sunesound/prey/digest_09.ogg and b/sound/vore/sunesound/prey/digest_09.ogg differ diff --git a/sound/vore/sunesound/prey/digest_10.ogg b/sound/vore/sunesound/prey/digest_10.ogg index 4c5dc2e3331..a7eca5daa89 100644 Binary files a/sound/vore/sunesound/prey/digest_10.ogg and b/sound/vore/sunesound/prey/digest_10.ogg differ diff --git a/sound/vore/sunesound/prey/digest_11.ogg b/sound/vore/sunesound/prey/digest_11.ogg index e94c0af6564..0dc8c0da1b5 100644 Binary files a/sound/vore/sunesound/prey/digest_11.ogg and b/sound/vore/sunesound/prey/digest_11.ogg differ diff --git a/sound/vore/sunesound/prey/digest_12.ogg b/sound/vore/sunesound/prey/digest_12.ogg index cb212fed1c6..55337c961cb 100644 Binary files a/sound/vore/sunesound/prey/digest_12.ogg and b/sound/vore/sunesound/prey/digest_12.ogg differ diff --git a/sound/vore/sunesound/prey/digest_13.ogg b/sound/vore/sunesound/prey/digest_13.ogg index 9fd292184e5..17e7efc9008 100644 Binary files a/sound/vore/sunesound/prey/digest_13.ogg and b/sound/vore/sunesound/prey/digest_13.ogg differ diff --git a/sound/vore/sunesound/prey/digest_14.ogg b/sound/vore/sunesound/prey/digest_14.ogg index 24279d4712b..2412907f815 100644 Binary files a/sound/vore/sunesound/prey/digest_14.ogg and b/sound/vore/sunesound/prey/digest_14.ogg differ diff --git a/sound/vore/sunesound/prey/digest_15.ogg b/sound/vore/sunesound/prey/digest_15.ogg index 2bf555ba413..1815ef44ce3 100644 Binary files a/sound/vore/sunesound/prey/digest_15.ogg and b/sound/vore/sunesound/prey/digest_15.ogg differ diff --git a/sound/vore/sunesound/prey/digest_16.ogg b/sound/vore/sunesound/prey/digest_16.ogg index 98edd6fb610..dbede86c5bd 100644 Binary files a/sound/vore/sunesound/prey/digest_16.ogg and b/sound/vore/sunesound/prey/digest_16.ogg differ diff --git a/sound/vore/sunesound/prey/digest_17.ogg b/sound/vore/sunesound/prey/digest_17.ogg index 2ff5c173e18..9636ff9ed1f 100644 Binary files a/sound/vore/sunesound/prey/digest_17.ogg and b/sound/vore/sunesound/prey/digest_17.ogg differ diff --git a/sound/vore/sunesound/prey/digest_18.ogg b/sound/vore/sunesound/prey/digest_18.ogg index 6a1ae78fb8b..0fcd50a591b 100644 Binary files a/sound/vore/sunesound/prey/digest_18.ogg and b/sound/vore/sunesound/prey/digest_18.ogg differ diff --git a/sound/vore/sunesound/prey/escape.ogg b/sound/vore/sunesound/prey/escape.ogg index 621997a56d0..5a9ce779ab2 100644 Binary files a/sound/vore/sunesound/prey/escape.ogg and b/sound/vore/sunesound/prey/escape.ogg differ diff --git a/sound/vore/sunesound/prey/insertion_01.ogg b/sound/vore/sunesound/prey/insertion_01.ogg index 5a3b942bb3c..ec349f7e7b1 100644 Binary files a/sound/vore/sunesound/prey/insertion_01.ogg and b/sound/vore/sunesound/prey/insertion_01.ogg differ diff --git a/sound/vore/sunesound/prey/insertion_02.ogg b/sound/vore/sunesound/prey/insertion_02.ogg index 2d35094522e..852f3238f5c 100644 Binary files a/sound/vore/sunesound/prey/insertion_02.ogg and b/sound/vore/sunesound/prey/insertion_02.ogg differ diff --git a/sound/vore/sunesound/prey/loop.ogg b/sound/vore/sunesound/prey/loop.ogg index 1584482d922..cd9141f3404 100644 Binary files a/sound/vore/sunesound/prey/loop.ogg and b/sound/vore/sunesound/prey/loop.ogg differ diff --git a/sound/vore/sunesound/prey/schlorp.ogg b/sound/vore/sunesound/prey/schlorp.ogg index d1895ee26a9..3741da63f7f 100644 Binary files a/sound/vore/sunesound/prey/schlorp.ogg and b/sound/vore/sunesound/prey/schlorp.ogg differ diff --git a/sound/vore/sunesound/prey/squish_01.ogg b/sound/vore/sunesound/prey/squish_01.ogg index 2785a4a0805..b8b99aa672d 100644 Binary files a/sound/vore/sunesound/prey/squish_01.ogg and b/sound/vore/sunesound/prey/squish_01.ogg differ diff --git a/sound/vore/sunesound/prey/squish_02.ogg b/sound/vore/sunesound/prey/squish_02.ogg index f5671f71653..9aeffeaf901 100644 Binary files a/sound/vore/sunesound/prey/squish_02.ogg and b/sound/vore/sunesound/prey/squish_02.ogg differ diff --git a/sound/vore/sunesound/prey/squish_03.ogg b/sound/vore/sunesound/prey/squish_03.ogg index 1e8f2bb896f..9f9162b1f41 100644 Binary files a/sound/vore/sunesound/prey/squish_03.ogg and b/sound/vore/sunesound/prey/squish_03.ogg differ diff --git a/sound/vore/sunesound/prey/squish_04.ogg b/sound/vore/sunesound/prey/squish_04.ogg index 2e618890a9d..3a576239939 100644 Binary files a/sound/vore/sunesound/prey/squish_04.ogg and b/sound/vore/sunesound/prey/squish_04.ogg differ diff --git a/sound/vore/sunesound/prey/stomachmove.ogg b/sound/vore/sunesound/prey/stomachmove.ogg index e4e004b072e..a120ee17126 100644 Binary files a/sound/vore/sunesound/prey/stomachmove.ogg and b/sound/vore/sunesound/prey/stomachmove.ogg differ diff --git a/sound/vore/sunesound/prey/struggle_01.ogg b/sound/vore/sunesound/prey/struggle_01.ogg index de0f3ad8bde..9b99214bea3 100644 Binary files a/sound/vore/sunesound/prey/struggle_01.ogg and b/sound/vore/sunesound/prey/struggle_01.ogg differ diff --git a/sound/vore/sunesound/prey/struggle_02.ogg b/sound/vore/sunesound/prey/struggle_02.ogg index 2695ab0adf2..549f2726419 100644 Binary files a/sound/vore/sunesound/prey/struggle_02.ogg and b/sound/vore/sunesound/prey/struggle_02.ogg differ diff --git a/sound/vore/sunesound/prey/struggle_03.ogg b/sound/vore/sunesound/prey/struggle_03.ogg index 17dd8bec8a8..a5fac4fb5d6 100644 Binary files a/sound/vore/sunesound/prey/struggle_03.ogg and b/sound/vore/sunesound/prey/struggle_03.ogg differ diff --git a/sound/vore/sunesound/prey/struggle_04.ogg b/sound/vore/sunesound/prey/struggle_04.ogg index 86318535097..d037b80b1bf 100644 Binary files a/sound/vore/sunesound/prey/struggle_04.ogg and b/sound/vore/sunesound/prey/struggle_04.ogg differ diff --git a/sound/vore/sunesound/prey/struggle_05.ogg b/sound/vore/sunesound/prey/struggle_05.ogg index 233addec0b8..80a611a4f22 100644 Binary files a/sound/vore/sunesound/prey/struggle_05.ogg and b/sound/vore/sunesound/prey/struggle_05.ogg differ diff --git a/sound/vore/sunesound/prey/swallow_01.ogg b/sound/vore/sunesound/prey/swallow_01.ogg index 3da3fef66a3..9453ad1100e 100644 Binary files a/sound/vore/sunesound/prey/swallow_01.ogg and b/sound/vore/sunesound/prey/swallow_01.ogg differ diff --git a/sound/vore/sunesound/prey/swallow_02.ogg b/sound/vore/sunesound/prey/swallow_02.ogg index 30d9a4e44da..47b888ef4c1 100644 Binary files a/sound/vore/sunesound/prey/swallow_02.ogg and b/sound/vore/sunesound/prey/swallow_02.ogg differ diff --git a/sound/vore/sunesound/prey/taurswallow.ogg b/sound/vore/sunesound/prey/taurswallow.ogg index f5b5706b366..f1ab123c1d6 100644 Binary files a/sound/vore/sunesound/prey/taurswallow.ogg and b/sound/vore/sunesound/prey/taurswallow.ogg differ diff --git a/sound/weapons/alien_spitacid.ogg b/sound/weapons/alien_spitacid.ogg new file mode 100644 index 00000000000..db630d0e8cc Binary files /dev/null and b/sound/weapons/alien_spitacid.ogg differ diff --git a/sound/weapons/effects/alien_spit_wall.ogg b/sound/weapons/effects/alien_spit_wall.ogg new file mode 100644 index 00000000000..3d4fc90d273 Binary files /dev/null and b/sound/weapons/effects/alien_spit_wall.ogg differ diff --git a/tgui/packages/common/string.js b/tgui/packages/common/string.js index 461f975b3a0..4278a1fb3e0 100644 --- a/tgui/packages/common/string.js +++ b/tgui/packages/common/string.js @@ -78,13 +78,21 @@ export const createSearch = (searchText, stringifier) => { }; }; +export const isUppercase = chr => { + return chr.toUpperCase() === chr; +}; + export const capitalize = str => { // Handle array if (Array.isArray(str)) { return str.map(capitalize); } // Handle string - return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase(); + let chr = str.charAt(0); + if (isUppercase(chr)) { + return str; // Already caps, might be an acronym, so don't mess it up by lowercasing the rest + } + return chr.toUpperCase() + str.slice(1).toLowerCase(); }; export const toTitleCase = str => { diff --git a/tgui/public/tgui-common.bundle.js b/tgui/public/tgui-common.bundle.js index 013a168d315..d363cbd6bb5 100644 --- a/tgui/public/tgui-common.bundle.js +++ b/tgui/public/tgui-common.bundle.js @@ -1 +1 @@ -(self.webpackChunktgui_workspace=self.webpackChunktgui_workspace||[]).push([[962],{33407:function(e,t,n){"use strict";t.__esModule=!0,t.popperGenerator=v,t.createPopper=void 0;var r=d(n(98825)),o=d(n(52089)),i=d(n(66469)),a=d(n(54484)),u=(d(n(82020)),d(n(7183))),c=d(n(16936)),s=(d(n(11026)),d(n(20675)),d(n(78044)),d(n(5495))),l=d(n(45073));t.detectOverflow=l["default"];var f=n(31966);n(54945);function d(e){return e&&e.__esModule?e:{"default":e}}var p={placement:"bottom",modifiers:[],strategy:"absolute"};function h(){for(var e=arguments.length,t=new Array(e),n=0;n=0&&(0,l.isHTMLElement)(e)?(0,u["default"])(e):e;if(!(0,l.isElement)(n))return[];return t.filter((function(e){return(0,l.isElement)(e)&&(0,p["default"])(e,n)&&"body"!==(0,h["default"])(e)}))}(e):[].concat(t),o=[].concat(r,[n]),i=o[0],c=o.reduce((function(t,n){var r=y(e,n);return t.top=(0,m.max)(r.top,t.top),t.right=(0,m.min)(r.right,t.right),t.bottom=(0,m.min)(r.bottom,t.bottom),t.left=(0,m.max)(r.left,t.left),t}),y(e,i));return c.width=c.right-c.left,c.height=c.bottom-c.top,c.x=c.left,c.y=c.top,c};var r=n(54945),o=g(n(17488)),i=g(n(27175)),a=g(n(66469)),u=g(n(54484)),c=g(n(36e3)),s=g(n(82020)),l=n(31966),f=g(n(87916)),d=g(n(23470)),p=g(n(41858)),h=g(n(38012)),v=g(n(77276)),m=n(52209);function g(e){return e&&e.__esModule?e:{"default":e}}function y(e,t){return t===r.viewport?(0,v["default"])((0,o["default"])(e)):(0,l.isHTMLElement)(t)?function(e){var t=(0,f["default"])(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):(0,v["default"])((0,i["default"])((0,c["default"])(e)))}},98825:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){void 0===n&&(n=!1);var l=(0,c["default"])(t),f=(0,r["default"])(e),d=(0,a.isHTMLElement)(t),p={scrollLeft:0,scrollTop:0},h={x:0,y:0};(d||!d&&!n)&&(("body"!==(0,i["default"])(t)||(0,s["default"])(l))&&(p=(0,o["default"])(t)),(0,a.isHTMLElement)(t)?((h=(0,r["default"])(t)).x+=t.clientLeft,h.y+=t.clientTop):l&&(h.x=(0,u["default"])(l)));return{x:f.left+p.scrollLeft-h.x,y:f.top+p.scrollTop-h.y,width:f.width,height:f.height}};var r=l(n(87916)),o=l(n(38015)),i=l(n(38012)),a=n(31966),u=l(n(25880)),c=l(n(36e3)),s=l(n(42156));function l(e){return e&&e.__esModule?e:{"default":e}}},82020:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,o["default"])(e).getComputedStyle(e)};var r,o=(r=n(89778))&&r.__esModule?r:{"default":r}},36e3:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(((0,r.isElement)(e)?e.ownerDocument:e.document)||window.document).documentElement};var r=n(31966)},27175:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=(0,r["default"])(e),c=(0,a["default"])(e),s=null==(t=e.ownerDocument)?void 0:t.body,l=(0,u.max)(n.scrollWidth,n.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),f=(0,u.max)(n.scrollHeight,n.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),d=-c.scrollLeft+(0,i["default"])(e),p=-c.scrollTop;"rtl"===(0,o["default"])(s||n).direction&&(d+=(0,u.max)(n.clientWidth,s?s.clientWidth:0)-l);return{width:l,height:f,x:d,y:p}};var r=c(n(36e3)),o=c(n(82020)),i=c(n(25880)),a=c(n(31348)),u=n(52209);function c(e){return e&&e.__esModule?e:{"default":e}}},13339:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},52089:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=e.offsetWidth,r=e.offsetHeight;Math.abs(t.width-n)<=1&&(n=t.width);Math.abs(t.height-r)<=1&&(r=t.height);return{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}};var r,o=(r=n(87916))&&r.__esModule?r:{"default":r}},38012:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e?(e.nodeName||"").toLowerCase():null}},38015:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return e!==(0,o["default"])(e)&&(0,i.isHTMLElement)(e)?(0,a["default"])(e):(0,r["default"])(e)};var r=u(n(31348)),o=u(n(89778)),i=n(31966),a=u(n(13339));function u(e){return e&&e.__esModule?e:{"default":e}}},54484:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=l(e);for(;n&&(0,u["default"])(n)&&"static"===(0,i["default"])(n).position;)n=l(n);if(n&&("html"===(0,o["default"])(n)||"body"===(0,o["default"])(n)&&"static"===(0,i["default"])(n).position))return t;return n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&(0,a.isHTMLElement)(e)){if("fixed"===(0,i["default"])(e).position)return null}var n=(0,c["default"])(e);for(;(0,a.isHTMLElement)(n)&&["html","body"].indexOf((0,o["default"])(n))<0;){var r=(0,i["default"])(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t};var r=s(n(89778)),o=s(n(38012)),i=s(n(82020)),a=n(31966),u=s(n(69183)),c=s(n(23470));function s(e){return e&&e.__esModule?e:{"default":e}}function l(e){return(0,a.isHTMLElement)(e)&&"fixed"!==(0,i["default"])(e).position?e.offsetParent:null}},23470:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){if("html"===(0,r["default"])(e))return e;return e.assignedSlot||e.parentNode||((0,i.isShadowRoot)(e)?e.host:null)||(0,o["default"])(e)};var r=a(n(38012)),o=a(n(36e3)),i=n(31966);function a(e){return e&&e.__esModule?e:{"default":e}}},92098:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function c(e){if(["html","body","#document"].indexOf((0,i["default"])(e))>=0)return e.ownerDocument.body;if((0,a.isHTMLElement)(e)&&(0,o["default"])(e))return e;return c((0,r["default"])(e))};var r=u(n(23470)),o=u(n(42156)),i=u(n(38012)),a=n(31966);function u(e){return e&&e.__esModule?e:{"default":e}}},17488:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=(0,o["default"])(e),a=t.visualViewport,u=n.clientWidth,c=n.clientHeight,s=0,l=0;a&&(u=a.width,c=a.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=a.offsetLeft,l=a.offsetTop));return{width:u,height:c,x:s+(0,i["default"])(e),y:l}};var r=a(n(89778)),o=a(n(36e3)),i=a(n(25880));function a(e){return e&&e.__esModule?e:{"default":e}}},89778:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}},31348:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}};var r,o=(r=n(89778))&&r.__esModule?r:{"default":r}},25880:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,r["default"])((0,o["default"])(e)).left+(0,i["default"])(e).scrollLeft};var r=a(n(87916)),o=a(n(36e3)),i=a(n(31348));function a(e){return e&&e.__esModule?e:{"default":e}}},31966:function(e,t,n){"use strict";t.__esModule=!0,t.isElement=function(e){var t=(0,o["default"])(e).Element;return e instanceof t||e instanceof Element},t.isHTMLElement=function(e){var t=(0,o["default"])(e).HTMLElement;return e instanceof t||e instanceof HTMLElement},t.isShadowRoot=function(e){if("undefined"==typeof ShadowRoot)return!1;var t=(0,o["default"])(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot};var r,o=(r=n(89778))&&r.__esModule?r:{"default":r}},42156:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)};var r,o=(r=n(82020))&&r.__esModule?r:{"default":r}},69183:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return["table","td","th"].indexOf((0,o["default"])(e))>=0};var r,o=(r=n(38012))&&r.__esModule?r:{"default":r}},66469:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function c(e,t){var n;void 0===t&&(t=[]);var u=(0,r["default"])(e),s=u===(null==(n=e.ownerDocument)?void 0:n.body),l=(0,i["default"])(u),f=s?[l].concat(l.visualViewport||[],(0,a["default"])(u)?u:[]):u,d=t.concat(f);return s?d:d.concat(c((0,o["default"])(f)))};var r=u(n(92098)),o=u(n(23470)),i=u(n(89778)),a=u(n(42156));function u(e){return e&&e.__esModule?e:{"default":e}}},54945:function(e,t){"use strict";t.__esModule=!0,t.modifierPhases=t.afterWrite=t.write=t.beforeWrite=t.afterMain=t.main=t.beforeMain=t.afterRead=t.read=t.beforeRead=t.placements=t.variationPlacements=t.reference=t.popper=t.viewport=t.clippingParents=t.end=t.start=t.basePlacements=t.auto=t.left=t.right=t.bottom=t.top=void 0;t.top="top";var n="bottom";t.bottom=n;var r="right";t.right=r;var o="left";t.left=o;var i="auto";t.auto=i;var a=["top",n,r,o];t.basePlacements=a;var u="start";t.start=u;var c="end";t.end=c;t.clippingParents="clippingParents";t.viewport="viewport";t.popper="popper";t.reference="reference";var s=a.reduce((function(e,t){return e.concat([t+"-"+u,t+"-"+c])}),[]);t.variationPlacements=s;var l=[].concat(a,[i]).reduce((function(e,t){return e.concat([t,t+"-"+u,t+"-"+c])}),[]);t.placements=l;var f="beforeRead";t.beforeRead=f;var d="read";t.read=d;var p="afterRead";t.afterRead=p;var h="beforeMain";t.beforeMain=h;var v="main";t.main=v;var m="afterMain";t.afterMain=m;var g="beforeWrite";t.beforeWrite=g;var y="write";t.write=y;var b="afterWrite";t.afterWrite=b;var _=[f,d,p,h,v,m,g,y,b];t.modifierPhases=_},11613:function(e,t,n){"use strict";t.__esModule=!0;var r={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};t.createPopperLite=t.createPopper=t.createPopperBase=t.detectOverflow=t.popperGenerator=void 0;var o=n(54945);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===o[e]||(t[e]=o[e]))}));var i=n(15461);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===i[e]||(t[e]=i[e]))}));var a=n(33407);t.popperGenerator=a.popperGenerator,t.detectOverflow=a.detectOverflow,t.createPopperBase=a.createPopper;var u=n(15172);t.createPopper=u.createPopper;var c=n(15327);t.createPopperLite=c.createPopper},1803:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(38012))&&r.__esModule?r:{"default":r},i=n(31966);var a={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},a=t.elements[e];(0,i.isHTMLElement)(a)&&(0,o["default"])(a)&&(Object.assign(a.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?a.removeAttribute(e):a.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],a=t.attributes[e]||{},u=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});(0,i.isHTMLElement)(r)&&(0,o["default"])(r)&&(Object.assign(r.style,u),Object.keys(a).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]};t["default"]=a},35838:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=d(n(78044)),o=d(n(52089)),i=d(n(41858)),a=d(n(54484)),u=d(n(99840)),c=d(n(51520)),s=d(n(72882)),l=d(n(8415)),f=n(54945);n(31966);function d(e){return e&&e.__esModule?e:{"default":e}}var p=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,(0,s["default"])("number"!=typeof e?e:(0,l["default"])(e,f.basePlacements))};var h={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,s=e.options,l=n.elements.arrow,d=n.modifiersData.popperOffsets,h=(0,r["default"])(n.placement),v=(0,u["default"])(h),m=[f.left,f.right].indexOf(h)>=0?"height":"width";if(l&&d){var g=p(s.padding,n),y=(0,o["default"])(l),b="y"===v?f.top:f.left,_="y"===v?f.bottom:f.right,w=n.rects.reference[m]+n.rects.reference[v]-d[v]-n.rects.popper[m],x=d[v]-n.rects.reference[v],E=(0,a["default"])(l),S=E?"y"===v?E.clientHeight||0:E.clientWidth||0:0,C=w/2-x/2,N=g[b],O=S-y[m]-g[_],k=S/2-y[m]/2+C,M=(0,c["default"])(N,k,O),A=v;n.modifiersData[i]=((t={})[A]=M,t.centerOffset=M-k,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&(0,i["default"])(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};t["default"]=h},42569:function(e,t,n){"use strict";t.__esModule=!0,t.mapToStyles=d,t["default"]=void 0;var r=n(54945),o=l(n(54484)),i=l(n(89778)),a=l(n(36e3)),u=l(n(82020)),c=l(n(78044)),s=n(52209);function l(e){return e&&e.__esModule?e:{"default":e}}var f={top:"auto",right:"auto",bottom:"auto",left:"auto"};function d(e){var t,n=e.popper,c=e.popperRect,l=e.placement,d=e.offsets,p=e.position,h=e.gpuAcceleration,v=e.adaptive,m=e.roundOffsets,g=!0===m?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:(0,s.round)((0,s.round)(t*r)/r)||0,y:(0,s.round)((0,s.round)(n*r)/r)||0}}(d):"function"==typeof m?m(d):d,y=g.x,b=void 0===y?0:y,_=g.y,w=void 0===_?0:_,x=d.hasOwnProperty("x"),E=d.hasOwnProperty("y"),S=r.left,C=r.top,N=window;if(v){var O=(0,o["default"])(n),k="clientHeight",M="clientWidth";O===(0,i["default"])(n)&&(O=(0,a["default"])(n),"static"!==(0,u["default"])(O).position&&(k="scrollHeight",M="scrollWidth")),O=O,l===r.top&&(C=r.bottom,w-=O[k]-c.height,w*=h?1:-1),l===r.left&&(S=r.right,b-=O[M]-c.width,b*=h?1:-1)}var A,T=Object.assign({position:p},v&&f);return h?Object.assign({},T,((A={})[C]=E?"0":"",A[S]=x?"0":"",A.transform=(N.devicePixelRatio||1)<2?"translate("+b+"px, "+w+"px)":"translate3d("+b+"px, "+w+"px, 0)",A)):Object.assign({},T,((t={})[C]=E?w+"px":"",t[S]=x?b+"px":"",t.transform="",t))}var p={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,u=n.roundOffsets,s=void 0===u||u,l={placement:(0,c["default"])(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,d(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,d(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};t["default"]=p},84886:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(89778))&&r.__esModule?r:{"default":r};var i={passive:!0};var a={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,a=r.scroll,u=void 0===a||a,c=r.resize,s=void 0===c||c,l=(0,o["default"])(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return u&&f.forEach((function(e){e.addEventListener("scroll",n.update,i)})),s&&l.addEventListener("resize",n.update,i),function(){u&&f.forEach((function(e){e.removeEventListener("scroll",n.update,i)})),s&&l.removeEventListener("resize",n.update,i)}},data:{}};t["default"]=a},75306:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=l(n(21784)),o=l(n(78044)),i=l(n(10333)),a=l(n(45073)),u=l(n(9118)),c=n(54945),s=l(n(7938));function l(e){return e&&e.__esModule?e:{"default":e}}var f={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,l=e.name;if(!t.modifiersData[l]._skip){for(var f=n.mainAxis,d=void 0===f||f,p=n.altAxis,h=void 0===p||p,v=n.fallbackPlacements,m=n.padding,g=n.boundary,y=n.rootBoundary,b=n.altBoundary,_=n.flipVariations,w=void 0===_||_,x=n.allowedAutoPlacements,E=t.options.placement,S=(0,o["default"])(E),C=v||(S===E||!w?[(0,r["default"])(E)]:function(e){if((0,o["default"])(e)===c.auto)return[];var t=(0,r["default"])(e);return[(0,i["default"])(e),t,(0,i["default"])(t)]}(E)),N=[E].concat(C).reduce((function(e,n){return e.concat((0,o["default"])(n)===c.auto?(0,u["default"])(t,{placement:n,boundary:g,rootBoundary:y,padding:m,flipVariations:w,allowedAutoPlacements:x}):n)}),[]),O=t.rects.reference,k=t.rects.popper,M=new Map,A=!0,T=N[0],I=0;I=0,j=B?"width":"height",R=(0,a["default"])(t,{placement:P,boundary:g,rootBoundary:y,altBoundary:b,padding:m}),D=B?L?c.right:c.left:L?c.bottom:c.top;O[j]>k[j]&&(D=(0,r["default"])(D));var F=(0,r["default"])(D),K=[];if(d&&K.push(R[V]<=0),h&&K.push(R[D]<=0,R[F]<=0),K.every((function(e){return e}))){T=P,A=!1;break}M.set(P,K)}if(A)for(var z=function(e){var t=N.find((function(t){var n=M.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return T=t,"break"},Y=w?3:1;Y>0;Y--){if("break"===z(Y))break}t.placement!==T&&(t.modifiersData[l]._skip=!0,t.placement=T,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};t["default"]=f},91263:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=n(54945),i=(r=n(45073))&&r.__esModule?r:{"default":r};function a(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function u(e){return[o.top,o.right,o.bottom,o.left].some((function(t){return e[t]>=0}))}var c={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,c=t.modifiersData.preventOverflow,s=(0,i["default"])(t,{elementContext:"reference"}),l=(0,i["default"])(t,{altBoundary:!0}),f=a(s,r),d=a(l,o,c),p=u(f),h=u(d);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:d,isReferenceHidden:p,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":h})}};t["default"]=c},15461:function(e,t,n){"use strict";t.__esModule=!0,t.preventOverflow=t.popperOffsets=t.offset=t.hide=t.flip=t.eventListeners=t.computeStyles=t.arrow=t.applyStyles=void 0;var r=d(n(1803));t.applyStyles=r["default"];var o=d(n(35838));t.arrow=o["default"];var i=d(n(42569));t.computeStyles=i["default"];var a=d(n(84886));t.eventListeners=a["default"];var u=d(n(75306));t.flip=u["default"];var c=d(n(91263));t.hide=c["default"];var s=d(n(36777));t.offset=s["default"];var l=d(n(19860));t.popperOffsets=l["default"];var f=d(n(90992));function d(e){return e&&e.__esModule?e:{"default":e}}t.preventOverflow=f["default"]},36777:function(e,t,n){"use strict";t.__esModule=!0,t.distanceAndSkiddingToXY=a,t["default"]=void 0;var r,o=(r=n(78044))&&r.__esModule?r:{"default":r},i=n(54945);function a(e,t,n){var r=(0,o["default"])(e),a=[i.left,i.top].indexOf(r)>=0?-1:1,u="function"==typeof n?n(Object.assign({},t,{placement:e})):n,c=u[0],s=u[1];return c=c||0,s=(s||0)*a,[i.left,i.right].indexOf(r)>=0?{x:s,y:c}:{x:c,y:s}}var u={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,u=void 0===o?[0,0]:o,c=i.placements.reduce((function(e,n){return e[n]=a(n,t.rects,u),e}),{}),s=c[t.placement],l=s.x,f=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=f),t.modifiersData[r]=c}};t["default"]=u},19860:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(89731))&&r.__esModule?r:{"default":r};var i={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=(0,o["default"])({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};t["default"]=i},90992:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=n(54945),o=h(n(78044)),i=h(n(99840)),a=h(n(80776)),u=h(n(51520)),c=h(n(52089)),s=h(n(54484)),l=h(n(45073)),f=h(n(7938)),d=h(n(9775)),p=n(52209);function h(e){return e&&e.__esModule?e:{"default":e}}var v={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,h=e.name,v=n.mainAxis,m=void 0===v||v,g=n.altAxis,y=void 0!==g&&g,b=n.boundary,_=n.rootBoundary,w=n.altBoundary,x=n.padding,E=n.tether,S=void 0===E||E,C=n.tetherOffset,N=void 0===C?0:C,O=(0,l["default"])(t,{boundary:b,rootBoundary:_,padding:x,altBoundary:w}),k=(0,o["default"])(t.placement),M=(0,f["default"])(t.placement),A=!M,T=(0,i["default"])(k),I=(0,a["default"])(T),P=t.modifiersData.popperOffsets,V=t.rects.reference,L=t.rects.popper,B="function"==typeof N?N(Object.assign({},t.rects,{placement:t.placement})):N,j={x:0,y:0};if(P){if(m||y){var R="y"===T?r.top:r.left,D="y"===T?r.bottom:r.right,F="y"===T?"height":"width",K=P[T],z=P[T]+O[R],Y=P[T]-O[D],U=S?-L[F]/2:0,H=M===r.start?V[F]:L[F],W=M===r.start?-L[F]:-V[F],$=t.elements.arrow,G=S&&$?(0,c["default"])($):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:(0,d["default"])(),X=q[R],Q=q[D],Z=(0,u["default"])(0,V[F],G[F]),J=A?V[F]/2-U-Z-X-B:H-Z-X-B,ee=A?-V[F]/2+U+Z+Q+B:W+Z+Q+B,te=t.elements.arrow&&(0,s["default"])(t.elements.arrow),ne=te?"y"===T?te.clientTop||0:te.clientLeft||0:0,re=t.modifiersData.offset?t.modifiersData.offset[t.placement][T]:0,oe=P[T]+J-re-ne,ie=P[T]+ee-re;if(m){var ae=(0,u["default"])(S?(0,p.min)(z,oe):z,K,S?(0,p.max)(Y,ie):Y);P[T]=ae,j[T]=ae-K}if(y){var ue="x"===T?r.top:r.left,ce="x"===T?r.bottom:r.right,se=P[I],le=se+O[ue],fe=se-O[ce],de=(0,u["default"])(S?(0,p.min)(le,oe):le,se,S?(0,p.max)(fe,ie):fe);P[I]=de,j[I]=de-se}}t.modifiersData[h]=j}},requiresIfExists:["offset"]};t["default"]=v},15327:function(e,t,n){"use strict";t.__esModule=!0,t.defaultModifiers=t.createPopper=void 0;var r=n(33407);t.popperGenerator=r.popperGenerator,t.detectOverflow=r.detectOverflow;var o=c(n(84886)),i=c(n(19860)),a=c(n(42569)),u=c(n(1803));function c(e){return e&&e.__esModule?e:{"default":e}}var s=[o["default"],i["default"],a["default"],u["default"]];t.defaultModifiers=s;var l=(0,r.popperGenerator)({defaultModifiers:s});t.createPopper=l},15172:function(e,t,n){"use strict";t.__esModule=!0;var r={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};t.defaultModifiers=t.createPopperLite=t.createPopper=void 0;var o=n(33407);t.popperGenerator=o.popperGenerator,t.detectOverflow=o.detectOverflow;var i=m(n(84886)),a=m(n(19860)),u=m(n(42569)),c=m(n(1803)),s=m(n(36777)),l=m(n(75306)),f=m(n(90992)),d=m(n(35838)),p=m(n(91263)),h=n(15327);t.createPopperLite=h.createPopper;var v=n(15461);function m(e){return e&&e.__esModule?e:{"default":e}}Object.keys(v).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===v[e]||(t[e]=v[e]))}));var g=[i["default"],a["default"],u["default"],c["default"],s["default"],l["default"],f["default"],d["default"],p["default"]];t.defaultModifiers=g;var y=(0,o.popperGenerator)({defaultModifiers:g});t.createPopperLite=t.createPopper=y},9118:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,u=n.placement,c=n.boundary,s=n.rootBoundary,l=n.padding,f=n.flipVariations,d=n.allowedAutoPlacements,p=void 0===d?o.placements:d,h=(0,r["default"])(u),v=h?f?o.variationPlacements:o.variationPlacements.filter((function(e){return(0,r["default"])(e)===h})):o.basePlacements,m=v.filter((function(e){return p.indexOf(e)>=0}));0===m.length&&(m=v);var g=m.reduce((function(t,n){return t[n]=(0,i["default"])(e,{placement:n,boundary:c,rootBoundary:s,padding:l})[(0,a["default"])(n)],t}),{});return Object.keys(g).sort((function(e,t){return g[e]-g[t]}))};var r=u(n(7938)),o=n(54945),i=u(n(45073)),a=u(n(78044));function u(e){return e&&e.__esModule?e:{"default":e}}},89731:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.reference,u=e.element,c=e.placement,s=c?(0,r["default"])(c):null,l=c?(0,o["default"])(c):null,f=n.x+n.width/2-u.width/2,d=n.y+n.height/2-u.height/2;switch(s){case a.top:t={x:f,y:n.y-u.height};break;case a.bottom:t={x:f,y:n.y+n.height};break;case a.right:t={x:n.x+n.width,y:d};break;case a.left:t={x:n.x-u.width,y:d};break;default:t={x:n.x,y:n.y}}var p=s?(0,i["default"])(s):null;if(null!=p){var h="y"===p?"height":"width";switch(l){case a.start:t[p]=t[p]-(n[h]/2-u[h]/2);break;case a.end:t[p]=t[p]+(n[h]/2-u[h]/2)}}return t};var r=u(n(78044)),o=u(n(7938)),i=u(n(99840)),a=n(54945);function u(e){return e&&e.__esModule?e:{"default":e}}},16936:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=undefined,n(e())}))}))),t}}},45073:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,d=n.placement,p=void 0===d?e.placement:d,h=n.boundary,v=void 0===h?c.clippingParents:h,m=n.rootBoundary,g=void 0===m?c.viewport:m,y=n.elementContext,b=void 0===y?c.popper:y,_=n.altBoundary,w=void 0!==_&&_,x=n.padding,E=void 0===x?0:x,S=(0,l["default"])("number"!=typeof E?E:(0,f["default"])(E,c.basePlacements)),C=b===c.popper?c.reference:c.popper,N=e.elements.reference,O=e.rects.popper,k=e.elements[w?C:b],M=(0,o["default"])((0,s.isElement)(k)?k:k.contextElement||(0,i["default"])(e.elements.popper),v,g),A=(0,r["default"])(N),T=(0,a["default"])({reference:A,element:O,strategy:"absolute",placement:p}),I=(0,u["default"])(Object.assign({},O,T)),P=b===c.popper?I:A,V={top:M.top-P.top+S.top,bottom:P.bottom-M.bottom+S.bottom,left:M.left-P.left+S.left,right:P.right-M.right+S.right},L=e.modifiersData.offset;if(b===c.popper&&L){var B=L[p];Object.keys(V).forEach((function(e){var t=[c.right,c.bottom].indexOf(e)>=0?1:-1,n=[c.top,c.bottom].indexOf(e)>=0?"y":"x";V[e]+=B[n]*t}))}return V};var r=d(n(87916)),o=d(n(70846)),i=d(n(36e3)),a=d(n(89731)),u=d(n(77276)),c=n(54945),s=n(31966),l=d(n(72882)),f=d(n(8415));function d(e){return e&&e.__esModule?e:{"default":e}}},8415:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}},50121:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0?"x":"y"}},21784:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/left|right|bottom|top/g,(function(e){return n[e]}))};var n={left:"right",right:"left",bottom:"top",top:"bottom"}},10333:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/start|end/g,(function(e){return n[e]}))};var n={start:"end",end:"start"}},7938:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.split("-")[1]}},52209:function(e,t){"use strict";t.__esModule=!0,t.round=t.min=t.max=void 0;var n=Math.max;t.max=n;var r=Math.min;t.min=r;var o=Math.round;t.round=o},5495:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}},72882:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},(0,o["default"])(),e)};var r,o=(r=n(9775))&&r.__esModule?r:{"default":r}},7183:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=function(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}(e);return r.modifierPhases.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])};var r=n(54945)},77276:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}},20675:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=new Set;return e.filter((function(e){var r=t(e);if(!n.has(r))return n.add(r),!0}))}},11026:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){e.forEach((function(t){Object.keys(t).forEach((function(n){switch(n){case"name":t.name;break;case"enabled":t.enabled;case"phase":o.modifierPhases.indexOf(t.phase);break;case"fn":t.fn;break;case"effect":t.effect;break;case"requires":Array.isArray(t.requires);break;case"requiresIfExists":Array.isArray(t.requiresIfExists)}t.requires&&t.requires.forEach((function(t){e.find((function(e){return e.name===t}))}))}))}))};(r=n(50121))&&r.__esModule;var r,o=n(54945)},51520:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){return(0,r.max)(e,(0,r.min)(t,n))};var r=n(52209)},13686:function(e){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},85369:function(e,t,n){"use strict";var r=n(88711);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},14281:function(e,t,n){"use strict";var r=n(53414),o=n(96093),i=n(96452),a=r("unscopables"),u=Array.prototype;u[a]==undefined&&i.f(u,a,{configurable:!0,value:o(null)}),e.exports=function(e){u[a][e]=!0}},47103:function(e,t,n){"use strict";var r=n(34444).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},2273:function(e){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},14860:function(e,t,n){"use strict";var r=n(88711);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},17811:function(e){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},73203:function(e,t,n){"use strict";var r,o=n(17811),i=n(67738),a=n(179),u=n(88711),c=n(18632),s=n(54781),l=n(21413),f=n(77219),d=n(96452).f,p=n(92608),h=n(77715),v=n(53414),m=n(88340),g=a.Int8Array,y=g&&g.prototype,b=a.Uint8ClampedArray,_=b&&b.prototype,w=g&&p(g),x=y&&p(y),E=Object.prototype,S=E.isPrototypeOf,C=v("toStringTag"),N=m("TYPED_ARRAY_TAG"),O=o&&!!h&&"Opera"!==s(a.opera),k=!1,M={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},A={BigInt64Array:8,BigUint64Array:8},T=function(e){if(!u(e))return!1;var t=s(e);return"DataView"===t||c(M,t)||c(A,t)},I=function(e){if(!u(e))return!1;var t=s(e);return c(M,t)||c(A,t)};for(r in M)a[r]||(O=!1);if((!O||"function"!=typeof w||w===Function.prototype)&&(w=function(){throw TypeError("Incorrect invocation")},O))for(r in M)a[r]&&h(a[r],w);if((!O||!x||x===E)&&(x=w.prototype,O))for(r in M)a[r]&&h(a[r].prototype,x);if(O&&p(_)!==x&&h(_,x),i&&!c(x,C))for(r in k=!0,d(x,C,{get:function(){return u(this)?this[N]:undefined}}),M)a[r]&&l(a[r],N,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:O,TYPED_ARRAY_TAG:k&&N,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(S.call(w,e))return e}else for(var t in M)if(c(M,r)){var n=a[t];if(n&&(e===n||S.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(i){if(n)for(var r in M){var o=a[r];o&&c(o.prototype,e)&&delete o.prototype[e]}x[e]&&!n||f(x,e,n?t:O&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(i){if(h){if(n)for(r in M)(o=a[r])&&c(o,e)&&delete o[e];if(w[e]&&!n)return;try{return f(w,e,n?t:O&&g[e]||t)}catch(u){}}for(r in M)!(o=a[r])||o[e]&&!n||f(o,e,t)}},isView:T,isTypedArray:I,TypedArray:w,TypedArrayPrototype:x}},93071:function(e,t,n){"use strict";var r=n(179),o=n(67738),i=n(17811),a=n(21413),u=n(5289),c=n(84921),s=n(2273),l=n(44028),f=n(27842),d=n(66659),p=n(63408),h=n(92608),v=n(77715),m=n(75604).f,g=n(96452).f,y=n(24115),b=n(81978),_=n(28076),w=_.get,x=_.set,E="ArrayBuffer",S="DataView",C="Wrong index",N=r.ArrayBuffer,O=N,k=r.DataView,M=k&&k.prototype,A=Object.prototype,T=r.RangeError,I=p.pack,P=p.unpack,V=function(e){return[255&e]},L=function(e){return[255&e,e>>8&255]},B=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},j=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},R=function(e){return I(e,23,4)},D=function(e){return I(e,52,8)},F=function(e,t){g(e.prototype,t,{get:function(){return w(this)[t]}})},K=function(e,t,n,r){var o=d(n),i=w(e);if(o+t>i.byteLength)throw T(C);var a=w(i.buffer).bytes,u=o+i.byteOffset,c=a.slice(u,u+t);return r?c:c.reverse()},z=function(e,t,n,r,o,i){var a=d(n),u=w(e);if(a+t>u.byteLength)throw T(C);for(var c=w(u.buffer).bytes,s=a+u.byteOffset,l=r(+o),f=0;fW;)(Y=H[W++])in O||a(O,Y,N[Y]);U.constructor=O}v&&h(M)!==A&&v(M,A);var $=new k(new O(2)),G=M.setInt8;$.setInt8(0,2147483648),$.setInt8(1,2147483649),!$.getInt8(0)&&$.getInt8(1)||u(M,{setInt8:function(e,t){G.call(this,e,t<<24>>24)},setUint8:function(e,t){G.call(this,e,t<<24>>24)}},{unsafe:!0})}else O=function(e){s(this,O,E);var t=d(e);x(this,{bytes:y.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},k=function(e,t,n){s(this,k,S),s(e,O,S);var r=w(e).byteLength,i=l(t);if(i<0||i>r)throw T("Wrong offset");if(i+(n=n===undefined?r-i:f(n))>r)throw T("Wrong length");x(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&(F(O,"byteLength"),F(k,"buffer"),F(k,"byteLength"),F(k,"byteOffset")),u(k.prototype,{getInt8:function(e){return K(this,1,e)[0]<<24>>24},getUint8:function(e){return K(this,1,e)[0]},getInt16:function(e){var t=K(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=K(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return j(K(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return j(K(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return P(K(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return P(K(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){z(this,1,e,V,t)},setUint8:function(e,t){z(this,1,e,V,t)},setInt16:function(e,t){z(this,2,e,L,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){z(this,2,e,L,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){z(this,4,e,B,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){z(this,4,e,B,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){z(this,4,e,R,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){z(this,8,e,D,t,arguments.length>2?arguments[2]:undefined)}});b(O,E),b(k,S),e.exports={ArrayBuffer:O,DataView:k}},92475:function(e,t,n){"use strict";var r=n(6289),o=n(13292),i=n(27842),a=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),u=i(n.length),c=o(e,u),s=o(t,u),l=arguments.length>2?arguments[2]:undefined,f=a((l===undefined?u:o(l,u))-s,u-c),d=1;for(s0;)s in n?n[c]=n[s]:delete n[c],c+=d,s+=d;return n}},24115:function(e,t,n){"use strict";var r=n(6289),o=n(13292),i=n(27842);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,u=o(a>1?arguments[1]:undefined,n),c=a>2?arguments[2]:undefined,s=c===undefined?n:o(c,n);s>u;)t[u++]=e;return t}},70091:function(e,t,n){"use strict";var r=n(77118).forEach,o=n(45944)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},75372:function(e,t,n){"use strict";var r=n(57386),o=n(6289),i=n(36288),a=n(76774),u=n(27842),c=n(79651),s=n(29863);e.exports=function(e){var t,n,l,f,d,p,h=o(e),v="function"==typeof this?this:Array,m=arguments.length,g=m>1?arguments[1]:undefined,y=g!==undefined,b=s(h),_=0;if(y&&(g=r(g,m>2?arguments[2]:undefined,2)),b==undefined||v==Array&&a(b))for(n=new v(t=u(h.length));t>_;_++)p=y?g(h[_],_):h[_],c(n,_,p);else for(d=(f=b.call(h)).next,n=new v;!(l=d.call(f)).done;_++)p=y?i(f,g,[l.value,_],!0):l.value,c(n,_,p);return n.length=_,n}},53454:function(e,t,n){"use strict";var r=n(94789),o=n(27842),i=n(13292),a=function(e){return function(t,n,a){var u,c=r(t),s=o(c.length),l=i(a,s);if(e&&n!=n){for(;s>l;)if((u=c[l++])!=u)return!0}else for(;s>l;l++)if((e||l in c)&&c[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},77118:function(e,t,n){"use strict";var r=n(57386),o=n(46317),i=n(6289),a=n(27842),u=n(12384),c=[].push,s=function(e){var t=1==e,n=2==e,s=3==e,l=4==e,f=6==e,d=7==e,p=5==e||f;return function(h,v,m,g){for(var y,b,_=i(h),w=o(_),x=r(v,m,3),E=a(w.length),S=0,C=g||u,N=t?C(h,E):n||d?C(h,0):undefined;E>S;S++)if((p||S in w)&&(b=x(y=w[S],S,_),e))if(t)N[S]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:c.call(N,y)}else switch(e){case 4:return!1;case 7:c.call(N,y)}return f?-1:s||l?l:N}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},9819:function(e,t,n){"use strict";var r=n(94789),o=n(44028),i=n(27842),a=n(45944),u=Math.min,c=[].lastIndexOf,s=!!c&&1/[1].lastIndexOf(1,-0)<0,l=a("lastIndexOf"),f=s||!l;e.exports=f?function(e){if(s)return c.apply(this,arguments)||0;var t=r(this),n=i(t.length),a=n-1;for(arguments.length>1&&(a=u(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:c},16684:function(e,t,n){"use strict";var r=n(84921),o=n(53414),i=n(32728),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},45944:function(e,t,n){"use strict";var r=n(84921);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},59878:function(e,t,n){"use strict";var r=n(13686),o=n(6289),i=n(46317),a=n(27842),u=function(e){return function(t,n,u,c){r(n);var s=o(t),l=i(s),f=a(s.length),d=e?f-1:0,p=e?-1:1;if(u<2)for(;;){if(d in l){c=l[d],d+=p;break}if(d+=p,e?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;e?d>=0:f>d;d+=p)d in l&&(c=n(c,l[d],d,s));return c}};e.exports={left:u(!1),right:u(!0)}},12384:function(e,t,n){"use strict";var r=n(88711),o=n(1897),i=n(53414)("species");e.exports=function(e,t){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},36288:function(e,t,n){"use strict";var r=n(14860),o=n(16284);e.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(a){throw o(e),a}}},33652:function(e,t,n){"use strict";var r=n(53414)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},"return":function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(u){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(u){}return n}},90726:function(e){"use strict";var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},54781:function(e,t,n){"use strict";var r=n(97099),o=n(90726),i=n(53414)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),i))?n:a?o(t):"Object"==(r=o(t))&&"function"==typeof t.callee?"Arguments":r}},4721:function(e,t,n){"use strict";var r=n(96452).f,o=n(96093),i=n(5289),a=n(57386),u=n(2273),c=n(8362),s=n(54981),l=n(40548),f=n(67738),d=n(21419).fastKey,p=n(28076),h=p.set,v=p.getterFor;e.exports={getConstructor:function(e,t,n,s){var l=e((function(e,r){u(e,l,t),h(e,{type:t,index:o(null),first:undefined,last:undefined,size:0}),f||(e.size=0),r!=undefined&&c(r,e[s],{that:e,AS_ENTRIES:n})})),p=v(t),m=function(e,t,n){var r,o,i=p(e),a=g(e,t);return a?a.value=n:(i.last=a={index:o=d(t,!0),key:t,value:n,previous:r=i.last,next:undefined,removed:!1},i.first||(i.first=a),r&&(r.next=a),f?i.size++:e.size++,"F"!==o&&(i.index[o]=a)),e},g=function(e,t){var n,r=p(e),o=d(t);if("F"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==t)return n};return i(l.prototype,{clear:function(){for(var e=p(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=undefined),delete t[n.index],n=n.next;e.first=e.last=undefined,f?e.size=0:this.size=0},"delete":function(e){var t=this,n=p(t),r=g(t,e);if(r){var o=r.next,i=r.previous;delete n.index[r.index],r.removed=!0,i&&(i.next=o),o&&(o.previous=i),n.first==r&&(n.first=o),n.last==r&&(n.last=i),f?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=p(this),r=a(e,arguments.length>1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!g(this,e)}}),i(l.prototype,n?{get:function(e){var t=g(this,e);return t&&t.value},set:function(e,t){return m(this,0===e?0:e,t)}}:{add:function(e){return m(this,e=0===e?0:e,e)}}),f&&r(l.prototype,"size",{get:function(){return p(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=v(t),i=v(r);s(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),l(t)}}},76568:function(e,t,n){"use strict";var r=n(5289),o=n(21419).getWeakData,i=n(14860),a=n(88711),u=n(2273),c=n(8362),s=n(77118),l=n(18632),f=n(28076),d=f.set,p=f.getterFor,h=s.find,v=s.findIndex,m=0,g=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=v(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,s){var f=e((function(e,r){u(e,f,t),d(e,{type:t,id:m++,frozen:undefined}),r!=undefined&&c(r,e[s],{that:e,AS_ENTRIES:n})})),h=p(t),v=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?g(r).set(t,n):a[r.id]=n,e};return r(f.prototype,{"delete":function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?g(t)["delete"](e):n&&l(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?g(t).has(e):n&&l(n,t.id)}}),r(f.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?g(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return v(this,e,t)}}:{add:function(e){return v(this,e,!0)}}),f}}},20991:function(e,t,n){"use strict";var r=n(99592),o=n(179),i=n(61287),a=n(77219),u=n(21419),c=n(8362),s=n(2273),l=n(88711),f=n(84921),d=n(33652),p=n(81978),h=n(69262);e.exports=function(e,t,n){var v=-1!==e.indexOf("Map"),m=-1!==e.indexOf("Weak"),g=v?"set":"add",y=o[e],b=y&&y.prototype,_=y,w={},x=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(m&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return m&&!l(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(m&&!l(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(m||b.forEach&&!f((function(){(new y).entries().next()})))))_=n.getConstructor(t,e,v,g),u.REQUIRED=!0;else if(i(e,!0)){var E=new _,S=E[g](m?{}:-0,1)!=E,C=f((function(){E.has(1)})),N=d((function(e){new y(e)})),O=!m&&f((function(){for(var e=new y,t=5;t--;)e[g](t,t);return!e.has(-0)}));N||((_=t((function(t,n){s(t,_,e);var r=h(new y,t,_);return n!=undefined&&c(n,r[g],{that:r,AS_ENTRIES:v}),r}))).prototype=b,b.constructor=_),(C||O)&&(x("delete"),x("has"),v&&x("get")),(O||S)&&x(g),m&&b.clear&&delete b.clear}return w[e]=_,r({global:!0,forced:_!=y},w),p(_,e),m||n.setStrong(_,e,v),_}},44121:function(e,t,n){"use strict";var r=n(18632),o=n(1051),i=n(8740),a=n(96452);e.exports=function(e,t){for(var n=o(t),u=a.f,c=i.f,s=0;s"+a+""}},97993:function(e,t,n){"use strict";var r=n(9392).IteratorPrototype,o=n(96093),i=n(28804),a=n(81978),u=n(36617),c=function(){return this};e.exports=function(e,t,n){var s=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,s,!1,!0),u[s]=c,e}},21413:function(e,t,n){"use strict";var r=n(67738),o=n(96452),i=n(28804);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},28804:function(e){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},79651:function(e,t,n){"use strict";var r=n(79165),o=n(96452),i=n(28804);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},27051:function(e,t,n){"use strict";var r=n(84921),o=n(61514).start,i=Math.abs,a=Date.prototype,u=a.getTime,c=a.toISOString;e.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=c.call(new Date(-50000000000001))}))||!r((function(){c.call(new Date(NaN))}))?function(){if(!isFinite(u.call(this)))throw RangeError("Invalid time value");var e=this,t=e.getUTCFullYear(),n=e.getUTCMilliseconds(),r=t<0?"-":t>9999?"+":"";return r+o(i(t),r?6:4,0)+"-"+o(e.getUTCMonth()+1,2,0)+"-"+o(e.getUTCDate(),2,0)+"T"+o(e.getUTCHours(),2,0)+":"+o(e.getUTCMinutes(),2,0)+":"+o(e.getUTCSeconds(),2,0)+"."+o(n,3,0)+"Z"}:c},92880:function(e,t,n){"use strict";var r=n(14860),o=n(79165);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!==e)}},54981:function(e,t,n){"use strict";var r=n(99592),o=n(97993),i=n(92608),a=n(77715),u=n(81978),c=n(21413),s=n(77219),l=n(53414),f=n(51684),d=n(36617),p=n(9392),h=p.IteratorPrototype,v=p.BUGGY_SAFARI_ITERATORS,m=l("iterator"),g="keys",y="values",b="entries",_=function(){return this};e.exports=function(e,t,n,l,p,w,x){o(n,t,l);var E,S,C,N=function(e){if(e===p&&T)return T;if(!v&&e in M)return M[e];switch(e){case g:case y:case b:return function(){return new n(this,e)}}return function(){return new n(this)}},O=t+" Iterator",k=!1,M=e.prototype,A=M[m]||M["@@iterator"]||p&&M[p],T=!v&&A||N(p),I="Array"==t&&M.entries||A;if(I&&(E=i(I.call(new e)),h!==Object.prototype&&E.next&&(f||i(E)===h||(a?a(E,h):"function"!=typeof E[m]&&c(E,m,_)),u(E,O,!0,!0),f&&(d[O]=_))),p==y&&A&&A.name!==y&&(k=!0,T=function(){return A.call(this)}),f&&!x||M[m]===T||c(M,m,T),d[t]=T,p)if(S={values:N(y),keys:w?T:N(g),entries:N(b)},x)for(C in S)(v||k||!(C in M))&&s(M,C,S[C]);else r({target:t,proto:!0,forced:v||k},S);return S}},90209:function(e,t,n){"use strict";var r=n(91996),o=n(18632),i=n(42571),a=n(96452).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||a(t,e,{value:i.f(e)})}},67738:function(e,t,n){"use strict";var r=n(84921);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},27383:function(e,t,n){"use strict";var r=n(179),o=n(88711),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},13745:function(e,t,n){"use strict";var r=n(97285);e.exports=/(?:iphone|ipod|ipad).*applewebkit/i.test(r)},23043:function(e,t,n){"use strict";var r=n(90726),o=n(179);e.exports="process"==r(o.process)},59137:function(e,t,n){"use strict";var r=n(97285);e.exports=/web0s(?!.*chrome)/i.test(r)},97285:function(e,t,n){"use strict";var r=n(44417);e.exports=r("navigator","userAgent")||""},32728:function(e,t,n){"use strict";var r,o,i=n(179),a=n(97285),u=i.process,c=u&&u.versions,s=c&&c.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},89807:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},99592:function(e,t,n){"use strict";var r=n(179),o=n(8740).f,i=n(21413),a=n(77219),u=n(53753),c=n(44121),s=n(61287);e.exports=function(e,t){var n,l,f,d,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||u(h,{}):(r[h]||{}).prototype)for(l in t){if(d=t[l],f=e.noTargetGet?(p=o(n,l))&&p.value:n[l],!s(v?l:h+(m?".":"#")+l,e.forced)&&f!==undefined){if(typeof d==typeof f)continue;c(d,f)}(e.sham||f&&f.sham)&&i(d,"sham",!0),a(n,l,d,e)}}},84921:function(e){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},27167:function(e,t,n){"use strict";n(30660);var r=n(77219),o=n(84921),i=n(53414),a=n(21413),u=i("species"),c=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),s="$0"==="a".replace(/./,"$0"),l=i("replace"),f=!!/./[l]&&""===/./[l]("a","$0"),d=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,l){var p=i(e),h=!o((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),v=h&&!o((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return t=!0,null},n[p](""),!t}));if(!h||!v||"replace"===e&&(!c||!s||f)||"split"===e&&!d){var m=/./[p],g=n(p,""[e],(function(e,t,n,r,o){return t.exec===RegExp.prototype.exec?h&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:s,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),y=g[0],b=g[1];r(String.prototype,e,y),r(RegExp.prototype,p,2==t?function(e,t){return b.call(e,this,t)}:function(e){return b.call(e,this)})}l&&a(RegExp.prototype[p],"sham",!0)}},83632:function(e,t,n){"use strict";var r=n(1897),o=n(27842),i=n(57386);e.exports=function a(e,t,n,u,c,s,l,f){for(var d,p=c,h=0,v=!!l&&i(l,f,3);h0&&r(d))p=a(e,t,d,o(d.length),p,s-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[p]=d}p++}h++}return p}},41e3:function(e,t,n){"use strict";var r=n(84921);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},57386:function(e,t,n){"use strict";var r=n(13686);e.exports=function(e,t,n){if(r(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},27314:function(e,t,n){"use strict";var r=n(13686),o=n(88711),i=[].slice,a={},u=function(e,t,n){if(!(t in a)){for(var r=[],o=0;o]*>)/g,u=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,c,s,l){var f=n+e.length,d=c.length,p=u;return s!==undefined&&(s=r(s),p=a),i.call(l,p,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(f);case"<":a=s[i.slice(1,-1)];break;default:var u=+i;if(0===u)return r;if(u>d){var l=o(u/10);return 0===l?r:l<=d?c[l-1]===undefined?i.charAt(1):c[l-1]+i.charAt(1):r}a=c[u-1]}return a===undefined?"":a}))}},179:function(e,t,n){"use strict";var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},18632:function(e){"use strict";var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},58825:function(e){"use strict";e.exports={}},63380:function(e,t,n){"use strict";var r=n(179);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},55780:function(e,t,n){"use strict";var r=n(44417);e.exports=r("document","documentElement")},59807:function(e,t,n){"use strict";var r=n(67738),o=n(84921),i=n(27383);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},63408:function(e){"use strict";var t=Math.abs,n=Math.pow,r=Math.floor,o=Math.log,i=Math.LN2;e.exports={pack:function(e,a,u){var c,s,l,f=new Array(u),d=8*u-a-1,p=(1<>1,v=23===a?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===Infinity?(s=e!=e?1:0,c=p):(c=r(o(e)/i),e*(l=n(2,-c))<1&&(c--,l*=2),(e+=c+h>=1?v/l:v*n(2,1-h))*l>=2&&(c++,l/=2),c+h>=p?(s=0,c=p):c+h>=1?(s=(e*l-1)*n(2,a),c+=h):(s=e*n(2,h-1)*n(2,a),c=0));a>=8;f[g++]=255&s,s/=256,a-=8);for(c=c<0;f[g++]=255&c,c/=256,d-=8);return f[--g]|=128*m,f},unpack:function(e,t){var r,o=e.length,i=8*o-t-1,a=(1<>1,c=i-7,s=o-1,l=e[s--],f=127&l;for(l>>=7;c>0;f=256*f+e[s],s--,c-=8);for(r=f&(1<<-c)-1,f>>=-c,c+=t;c>0;r=256*r+e[s],s--,c-=8);if(0===f)f=1-u;else{if(f===a)return r?NaN:l?-Infinity:Infinity;r+=n(2,t),f-=u}return(l?-1:1)*r*n(2,f-t)}}},46317:function(e,t,n){"use strict";var r=n(84921),o=n(90726),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?i.call(e,""):Object(e)}:Object},69262:function(e,t,n){"use strict";var r=n(88711),o=n(77715);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},1306:function(e,t,n){"use strict";var r=n(53252),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},21419:function(e,t,n){"use strict";var r=n(58825),o=n(88711),i=n(18632),a=n(96452).f,u=n(88340),c=n(41e3),s=u("meta"),l=0,f=Object.isExtensible||function(){return!0},d=function(e){a(e,s,{value:{objectID:"O"+ ++l,weakData:{}}})},p=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,s)){if(!f(e))return"F";if(!t)return"E";d(e)}return e[s].objectID},getWeakData:function(e,t){if(!i(e,s)){if(!f(e))return!0;if(!t)return!1;d(e)}return e[s].weakData},onFreeze:function(e){return c&&p.REQUIRED&&f(e)&&!i(e,s)&&d(e),e}};r[s]=!0},28076:function(e,t,n){"use strict";var r,o,i,a=n(2900),u=n(179),c=n(88711),s=n(21413),l=n(18632),f=n(53252),d=n(6839),p=n(58825),h=u.WeakMap;if(a){var v=f.state||(f.state=new h),m=v.get,g=v.has,y=v.set;r=function(e,t){return t.facade=e,y.call(v,e,t),t},o=function(e){return m.call(v,e)||{}},i=function(e){return g.call(v,e)}}else{var b=d("state");p[b]=!0,r=function(e,t){return t.facade=e,s(e,b,t),t},o=function(e){return l(e,b)?e[b]:{}},i=function(e){return l(e,b)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!c(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},76774:function(e,t,n){"use strict";var r=n(53414),o=n(36617),i=r("iterator"),a=Array.prototype;e.exports=function(e){return e!==undefined&&(o.Array===e||a[i]===e)}},1897:function(e,t,n){"use strict";var r=n(90726);e.exports=Array.isArray||function(e){return"Array"==r(e)}},61287:function(e,t,n){"use strict";var r=n(84921),o=/#|\.prototype\./,i=function(e,t){var n=u[a(e)];return n==s||n!=c&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},u=i.data={},c=i.NATIVE="N",s=i.POLYFILL="P";e.exports=i},44616:function(e,t,n){"use strict";var r=n(88711),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},88711:function(e){"use strict";e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},51684:function(e){"use strict";e.exports=!1},45025:function(e,t,n){"use strict";var r=n(88711),o=n(90726),i=n(53414)("match");e.exports=function(e){var t;return r(e)&&((t=e[i])!==undefined?!!t:"RegExp"==o(e))}},8362:function(e,t,n){"use strict";var r=n(14860),o=n(76774),i=n(27842),a=n(57386),u=n(29863),c=n(16284),s=function(e,t){this.stopped=e,this.result=t};e.exports=function(e,t,n){var l,f,d,p,h,v,m,g=n&&n.that,y=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),_=!(!n||!n.INTERRUPTED),w=a(t,g,1+y+_),x=function(e){return l&&c(l),new s(!0,e)},E=function(e){return y?(r(e),_?w(e[0],e[1],x):w(e[0],e[1])):_?w(e,x):w(e)};if(b)l=e;else{if("function"!=typeof(f=u(e)))throw TypeError("Target is not iterable");if(o(f)){for(d=0,p=i(e.length);p>d;d++)if((h=E(e[d]))&&h instanceof s)return h;return new s(!1)}l=f.call(e)}for(v=l.next;!(m=v.call(l)).done;){try{h=E(m.value)}catch(S){throw c(l),S}if("object"==typeof h&&h&&h instanceof s)return h}return new s(!1)}},16284:function(e,t,n){"use strict";var r=n(14860);e.exports=function(e){var t=e["return"];if(t!==undefined)return r(t.call(e)).value}},9392:function(e,t,n){"use strict";var r,o,i,a=n(84921),u=n(92608),c=n(21413),s=n(18632),l=n(53414),f=n(51684),d=l("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(o=u(u(i)))!==Object.prototype&&(r=o):p=!0);var h=r==undefined||a((function(){var e={};return r[d].call(e)!==e}));h&&(r={}),f&&!h||s(r,d)||c(r,d,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},36617:function(e){"use strict";e.exports={}},64674:function(e){"use strict";var t=Math.expm1,n=Math.exp;e.exports=!t||t(10)>22025.465794806718||t(10)<22025.465794806718||-2e-17!=t(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:n(e)-1}:t},90702:function(e,t,n){"use strict";var r=n(53188),o=Math.abs,i=Math.pow,a=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),s=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=o(e),l=r(e);return ic||n!=n?l*Infinity:l*n}},36535:function(e){"use strict";var t=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:t(1+e)}},53188:function(e){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},63785:function(e,t,n){"use strict";var r,o,i,a,u,c,s,l,f=n(179),d=n(8740).f,p=n(3350).set,h=n(13745),v=n(59137),m=n(23043),g=f.MutationObserver||f.WebKitMutationObserver,y=f.document,b=f.process,_=f.Promise,w=d(f,"queueMicrotask"),x=w&&w.value;x||(r=function(){var e,t;for(m&&(e=b.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},h||m||v||!g||!y?_&&_.resolve?(s=_.resolve(undefined),l=s.then,a=function(){l.call(s,r)}):a=m?function(){b.nextTick(r)}:function(){p.call(f,r)}:(u=!0,c=y.createTextNode(""),new g(r).observe(c,{characterData:!0}),a=function(){c.data=u=!u})),e.exports=x||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},23287:function(e,t,n){"use strict";var r=n(179);e.exports=r.Promise},72974:function(e,t,n){"use strict";var r=n(23043),o=n(32728),i=n(84921);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!Symbol.sham&&(r?38===o:o>37&&o<41)}))},2900:function(e,t,n){"use strict";var r=n(179),o=n(1306),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},15115:function(e,t,n){"use strict";var r=n(13686),o=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},42386:function(e,t,n){"use strict";var r=n(45025);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},87419:function(e,t,n){"use strict";var r=n(179).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},86710:function(e,t,n){"use strict";var r=n(179),o=n(20017).trim,i=n(65094),a=r.parseFloat,u=1/a(i+"-0")!=-Infinity;e.exports=u?function(e){var t=o(String(e)),n=a(t);return 0===n&&"-"==t.charAt(0)?-0:n}:a},42619:function(e,t,n){"use strict";var r=n(179),o=n(20017).trim,i=n(65094),a=r.parseInt,u=/^[+-]?0[Xx]/,c=8!==a(i+"08")||22!==a(i+"0x16");e.exports=c?function(e,t){var n=o(String(e));return a(n,t>>>0||(u.test(n)?16:10))}:a},18174:function(e,t,n){"use strict";var r=n(67738),o=n(84921),i=n(75224),a=n(32645),u=n(32163),c=n(6289),s=n(46317),l=Object.assign,f=Object.defineProperty;e.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||i(l({},t)).join("")!=o}))?function(e,t){for(var n=c(e),o=arguments.length,l=1,f=a.f,d=u.f;o>l;)for(var p,h=s(arguments[l++]),v=f?i(h).concat(f(h)):i(h),m=v.length,g=0;m>g;)p=v[g++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:l},96093:function(e,t,n){"use strict";var r,o=n(14860),i=n(79227),a=n(89807),u=n(58825),c=n(55780),s=n(27383),l=n(6839),f=l("IE_PROTO"),d=function(){},p=function(e){return"