diff --git a/aurora.dme.bak b/aurora.dme.bak deleted file mode 100644 index 9f82c22e..00000000 --- a/aurora.dme.bak +++ /dev/null @@ -1,1414 +0,0 @@ -// DM Environment file for baystation12.dme. -// All manual changes should be made outside the BEGIN_ and END_ blocks. - // New source code should be placed in .dm files: choose File/New --> Code File. -// BEGIN_INTERNALS -// END_INTERNALS -// BEGIN_FILE_DIR -#define FILE_DIR . -#define FILE_DIR "code" -#define FILE_DIR "code/TriDimension" -#define FILE_DIR "code/WorkInProgress" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter" -#define FILE_DIR "code/WorkInProgress/Susan" -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/48x48" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/mob/human_races" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "Sammacs Folder" -#define FILE_DIR "Sammacs Folder/Aurora Map" -#define FILE_DIR "Sammacs Folder/Aurora Map/flora" -#define FILE_DIR "Sammacs Folder/Engie Uniform" -#define FILE_DIR "Sammacs Folder/ERT Revamp" -#define FILE_DIR "Sammacs Folder/ERT Revamp/Equipment" -#define FILE_DIR "Sammacs Folder/ERT Revamp/Uniform" -#define FILE_DIR "Sammacs Folder/ERT Revamp/Uniform/Worn" -#define FILE_DIR "Sammacs Folder/Gifs" -#define FILE_DIR "Sammacs Folder/L7 Gun" -#define FILE_DIR "Sammacs Folder/L7 Gun/AussecL7" -#define FILE_DIR "Sammacs Folder/L7 Gun/AussecL7A1" -#define FILE_DIR "Sammacs Folder/L7 Gun/AussecL7Attachments" -#define FILE_DIR "Sammacs Folder/Medical Uniforms" -#define FILE_DIR "Sammacs Folder/TG Download" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/effects/turret" -#define FILE_DIR "sound/effects/wind" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/music" -#define FILE_DIR "sound/music/halloween" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/Serithi" -#define FILE_DIR "sound/vox" -#define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/AddToChangelog" -#define FILE_DIR "tools/AddToChangelog/AddToChangelog" -// END_FILE_DIR -// BEGIN_PREFERENCES -#define DEBUG -// END_PREFERENCES -// BEGIN_INCLUDE -#include "code\global.dm" -#include "code\hub.dm" -#include "code\names.dm" -#include "code\setup.dm" -#include "code\stylesheet.dm" -#include "code\world.dm" -#include "code\__HELPERS\files.dm" -#include "code\__HELPERS\game.dm" -#include "code\__HELPERS\global_lists.dm" -#include "code\__HELPERS\icons.dm" -#include "code\__HELPERS\lists.dm" -#include "code\__HELPERS\logging.dm" -#include "code\__HELPERS\maths.dm" -#include "code\__HELPERS\mobs.dm" -#include "code\__HELPERS\names.dm" -#include "code\__HELPERS\sanitize_values.dm" -#include "code\__HELPERS\text.dm" -#include "code\__HELPERS\time.dm" -#include "code\__HELPERS\type2type.dm" -#include "code\__HELPERS\unsorted.dm" -#include "code\_onclick\adjacent.dm" -#include "code\_onclick\ai.dm" -#include "code\_onclick\click.dm" -#include "code\_onclick\cyborg.dm" -#include "code\_onclick\drag_drop.dm" -#include "code\_onclick\item_attack.dm" -#include "code\_onclick\observer.dm" -#include "code\_onclick\other_mobs.dm" -#include "code\_onclick\telekinesis.dm" -#include "code\_onclick\hud\_defines.dm" -#include "code\_onclick\hud\alien.dm" -#include "code\_onclick\hud\alien_larva.dm" -#include "code\_onclick\hud\hud.dm" -#include "code\_onclick\hud\human.dm" -#include "code\_onclick\hud\monkey.dm" -#include "code\_onclick\hud\other_mobs.dm" -#include "code\_onclick\hud\robot.dm" -#include "code\_onclick\hud\screen_objects.dm" -#include "code\ATMOSPHERICS\atmospherics.dm" -#include "code\ATMOSPHERICS\datum_pipe_network.dm" -#include "code\ATMOSPHERICS\datum_pipeline.dm" -#include "code\ATMOSPHERICS\he_pipes.dm" -#include "code\ATMOSPHERICS\pipes.dm" -#include "code\ATMOSPHERICS\components\portables_connector.dm" -#include "code\ATMOSPHERICS\components\tvalve.dm" -#include "code\ATMOSPHERICS\components\valve.dm" -#include "code\ATMOSPHERICS\components\binary_devices\binary_atmos_base.dm" -#include "code\ATMOSPHERICS\components\binary_devices\circulator.dm" -#include "code\ATMOSPHERICS\components\binary_devices\dp_vent_pump.dm" -#include "code\ATMOSPHERICS\components\binary_devices\passive_gate.dm" -#include "code\ATMOSPHERICS\components\binary_devices\pump.dm" -#include "code\ATMOSPHERICS\components\binary_devices\volume_pump.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\filter.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\mixer.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\trinary_base.dm" -#include "code\ATMOSPHERICS\components\unary\cold_sink.dm" -#include "code\ATMOSPHERICS\components\unary\generator_input.dm" -#include "code\ATMOSPHERICS\components\unary\heat_exchanger.dm" -#include "code\ATMOSPHERICS\components\unary\heat_source.dm" -#include "code\ATMOSPHERICS\components\unary\outlet_injector.dm" -#include "code\ATMOSPHERICS\components\unary\oxygen_generator.dm" -#include "code\ATMOSPHERICS\components\unary\unary_base.dm" -#include "code\ATMOSPHERICS\components\unary\vent_pump.dm" -#include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm" -#include "code\controllers\_DynamicAreaLighting_TG.dm" -#include "code\controllers\autotransfer.dm" -#include "code\controllers\configuration.dm" -#include "code\controllers\failsafe.dm" -#include "code\controllers\hooks-defs.dm" -#include "code\controllers\hooks.dm" -#include "code\controllers\lighting_controller.dm" -#include "code\controllers\master_controller.dm" -#include "code\controllers\shuttle_controller.dm" -#include "code\controllers\verbs.dm" -#include "code\controllers\voting.dm" -#include "code\datums\ai_laws.dm" -#include "code\datums\browser.dm" -#include "code\datums\computerfiles.dm" -#include "code\datums\datacore.dm" -#include "code\datums\datumvars.dm" -#include "code\datums\disease.dm" -#include "code\datums\mind.dm" -#include "code\datums\mixed.dm" -#include "code\datums\modules.dm" -#include "code\datums\organs.dm" -#include "code\datums\recipe.dm" -#include "code\datums\spell.dm" -#include "code\datums\sun.dm" -#include "code\datums\supplypacks.dm" -#include "code\datums\diseases\appendicitis.dm" -#include "code\datums\diseases\beesease.dm" -#include "code\datums\diseases\brainrot.dm" -#include "code\datums\diseases\cold.dm" -#include "code\datums\diseases\cold9.dm" -#include "code\datums\diseases\dna_spread.dm" -#include "code\datums\diseases\fake_gbs.dm" -#include "code\datums\diseases\flu.dm" -#include "code\datums\diseases\fluspanish.dm" -#include "code\datums\diseases\gbs.dm" -#include "code\datums\diseases\jungle_fever.dm" -#include "code\datums\diseases\magnitis.dm" -#include "code\datums\diseases\pierrot_throat.dm" -#include "code\datums\diseases\plasmatoid.dm" -#include "code\datums\diseases\retrovirus.dm" -#include "code\datums\diseases\rhumba_beat.dm" -#include "code\datums\diseases\robotic_transformation.dm" -#include "code\datums\diseases\wizarditis.dm" -#include "code\datums\diseases\xeno_transformation.dm" -#include "code\datums\diseases\advance\advance.dm" -#include "code\datums\diseases\advance\presets.dm" -#include "code\datums\diseases\advance\symptoms\confusion.dm" -#include "code\datums\diseases\advance\symptoms\cough.dm" -#include "code\datums\diseases\advance\symptoms\damage_converter.dm" -#include "code\datums\diseases\advance\symptoms\dizzy.dm" -#include "code\datums\diseases\advance\symptoms\fever.dm" -#include "code\datums\diseases\advance\symptoms\hallucigen.dm" -#include "code\datums\diseases\advance\symptoms\headache.dm" -#include "code\datums\diseases\advance\symptoms\heal.dm" -#include "code\datums\diseases\advance\symptoms\itching.dm" -#include "code\datums\diseases\advance\symptoms\shivering.dm" -#include "code\datums\diseases\advance\symptoms\sneeze.dm" -#include "code\datums\diseases\advance\symptoms\symptoms.dm" -#include "code\datums\diseases\advance\symptoms\voice_change.dm" -#include "code\datums\diseases\advance\symptoms\vomit.dm" -#include "code\datums\diseases\advance\symptoms\weight.dm" -#include "code\datums\helper_datums\construction_datum.dm" -#include "code\datums\helper_datums\events.dm" -#include "code\datums\helper_datums\getrev.dm" -#include "code\datums\helper_datums\global_iterator.dm" -#include "code\datums\helper_datums\teleport.dm" -#include "code\datums\helper_datums\topic_input.dm" -#include "code\datums\spells\area_teleport.dm" -#include "code\datums\spells\conjure.dm" -#include "code\datums\spells\dumbfire.dm" -#include "code\datums\spells\emplosion.dm" -#include "code\datums\spells\ethereal_jaunt.dm" -#include "code\datums\spells\explosion.dm" -#include "code\datums\spells\genetic.dm" -#include "code\datums\spells\horsemask.dm" -#include "code\datums\spells\inflict_handler.dm" -#include "code\datums\spells\knock.dm" -#include "code\datums\spells\mind_transfer.dm" -#include "code\datums\spells\projectile.dm" -#include "code\datums\spells\trigger.dm" -#include "code\datums\spells\turf_teleport.dm" -#include "code\datums\spells\wizard.dm" -#include "code\defines\obj.dm" -#include "code\defines\obj\hydro.dm" -#include "code\defines\obj\weapon.dm" -#include "code\defines\procs\AStar.dm" -#include "code\defines\procs\captain_announce.dm" -#include "code\defines\procs\command_alert.dm" -#include "code\defines\procs\dbcore.dm" -#include "code\defines\procs\sd_Alert.dm" -#include "code\defines\procs\statistics.dm" -#include "code\game\asteroid.dm" -#include "code\game\atoms.dm" -#include "code\game\atoms_movable.dm" -#include "code\game\communications.dm" -#include "code\game\response_team.dm" -#include "code\game\shuttle_engines.dm" -#include "code\game\skincmd.dm" -#include "code\game\smoothwall.dm" -#include "code\game\sound.dm" -#include "code\game\supplyshuttle.dm" -#include "code\game\area\ai_monitored.dm" -#include "code\game\area\areas.dm" -#include "code\game\area\Space Station 13 areas.dm" -#include "code\game\dna\dna2.dm" -#include "code\game\dna\dna2_domutcheck.dm" -#include "code\game\dna\dna2_helpers.dm" -#include "code\game\dna\dna_modifier.dm" -#include "code\game\dna\genes\disabilities.dm" -#include "code\game\dna\genes\gene.dm" -#include "code\game\dna\genes\monkey.dm" -#include "code\game\dna\genes\powers.dm" -#include "code\game\gamemodes\events.dm" -#include "code\game\gamemodes\factions.dm" -#include "code\game\gamemodes\game_mode.dm" -#include "code\game\gamemodes\gameticker.dm" -#include "code\game\gamemodes\intercept_report.dm" -#include "code\game\gamemodes\objective.dm" -#include "code\game\gamemodes\setupgame.dm" -#include "code\game\gamemodes\autotraitor\autotraitor.dm" -#include "code\game\gamemodes\blob\blob.dm" -#include "code\game\gamemodes\blob\theblob.dm" -#include "code\game\gamemodes\blob\blobs\core.dm" -#include "code\game\gamemodes\blob\blobs\factory.dm" -#include "code\game\gamemodes\blob\blobs\node.dm" -#include "code\game\gamemodes\blob\blobs\shield.dm" -#include "code\game\gamemodes\changeling\changeling.dm" -#include "code\game\gamemodes\changeling\changeling_powers.dm" -#include "code\game\gamemodes\changeling\modularchangling.dm" -#include "code\game\gamemodes\changeling\traitor_chan.dm" -#include "code\game\gamemodes\cult\cult.dm" -#include "code\game\gamemodes\cult\cult_items.dm" -#include "code\game\gamemodes\cult\cult_structures.dm" -#include "code\game\gamemodes\cult\ritual.dm" -#include "code\game\gamemodes\cult\runes.dm" -#include "code\game\gamemodes\cult\talisman.dm" -#include "code\game\gamemodes\events\biomass.dm" -#include "code\game\gamemodes\events\black_hole.dm" -#include "code\game\gamemodes\events\clang.dm" -#include "code\game\gamemodes\events\dust.dm" -#include "code\game\gamemodes\events\miniblob.dm" -#include "code\game\gamemodes\events\ninja_abilities.dm" -#include "code\game\gamemodes\events\ninja_equipment.dm" -#include "code\game\gamemodes\events\power_failure.dm" -#include "code\game\gamemodes\events\space_ninja.dm" -#include "code\game\gamemodes\events\spacevines.dm" -#include "code\game\gamemodes\events\wormholes.dm" -#include "code\game\gamemodes\events\holidays\Christmas.dm" -#include "code\game\gamemodes\events\holidays\Holidays.dm" -#include "code\game\gamemodes\events\holidays\Other.dm" -#include "code\game\gamemodes\extended\extended.dm" -#include "code\game\gamemodes\heist\heist.dm" -#include "code\game\gamemodes\malfunction\Malf_Modules.dm" -#include "code\game\gamemodes\malfunction\malfunction.dm" -#include "code\game\gamemodes\meteor\meteor.dm" -#include "code\game\gamemodes\meteor\meteors.dm" -#include "code\game\gamemodes\ninja\ninja.dm" -#include "code\game\gamemodes\nuclear\nuclear.dm" -#include "code\game\gamemodes\nuclear\nuclearbomb.dm" -#include "code\game\gamemodes\nuclear\pinpointer.dm" -#include "code\game\gamemodes\revolution\revolution.dm" -#include "code\game\gamemodes\revolution\rp_revolution.dm" -#include "code\game\gamemodes\traitor\traitor.dm" -#include "code\game\gamemodes\wizard\rightandwrong.dm" -#include "code\game\gamemodes\wizard\soulstone.dm" -#include "code\game\gamemodes\wizard\spellbook.dm" -#include "code\game\gamemodes\wizard\veilrender.dm" -#include "code\game\gamemodes\wizard\wizard.dm" -#include "code\game\jobs\access.dm" -#include "code\game\jobs\job_controller.dm" -#include "code\game\jobs\jobprocs.dm" -#include "code\game\jobs\jobs.dm" -#include "code\game\jobs\whitelist.dm" -#include "code\game\jobs\job\assistant.dm" -#include "code\game\jobs\job\captain.dm" -#include "code\game\jobs\job\civilian.dm" -#include "code\game\jobs\job\civilian_chaplain.dm" -#include "code\game\jobs\job\engineering.dm" -#include "code\game\jobs\job\job.dm" -#include "code\game\jobs\job\medical.dm" -#include "code\game\jobs\job\science.dm" -#include "code\game\jobs\job\security.dm" -#include "code\game\jobs\job\silicon.dm" -#include "code\game\machinery\adv_med.dm" -#include "code\game\machinery\ai_slipper.dm" -#include "code\game\machinery\airlock_control.dm" -#include "code\game\machinery\alarm.dm" -#include "code\game\machinery\atmo_control.dm" -#include "code\game\machinery\autolathe.dm" -#include "code\game\machinery\Beacon.dm" -#include "code\game\machinery\bees_apiary.dm" -#include "code\game\machinery\bees_items.dm" -#include "code\game\machinery\biogenerator.dm" -#include "code\game\machinery\buttons.dm" -#include "code\game\machinery\cell_charger.dm" -#include "code\game\machinery\cloning.dm" -#include "code\game\machinery\constructable_frame.dm" -#include "code\game\machinery\cryo.dm" -#include "code\game\machinery\cryopod.dm" -#include "code\game\machinery\deployable.dm" -#include "code\game\machinery\door_control.dm" -#include "code\game\machinery\doppler_array.dm" -#include "code\game\machinery\flasher.dm" -#include "code\game\machinery\floodlight.dm" -#include "code\game\machinery\Freezer.dm" -#include "code\game\machinery\hologram.dm" -#include "code\game\machinery\holosign.dm" -#include "code\game\machinery\hydroponics.dm" -#include "code\game\machinery\igniter.dm" -#include "code\game\machinery\iv_drip.dm" -#include "code\game\machinery\lightswitch.dm" -#include "code\game\machinery\machinery.dm" -#include "code\game\machinery\magnet.dm" -#include "code\game\machinery\mass_driver.dm" -#include "code\game\machinery\navbeacon.dm" -#include "code\game\machinery\newscaster.dm" -#include "code\game\machinery\OpTable.dm" -#include "code\game\machinery\overview.dm" -#include "code\game\machinery\podmen.dm" -#include "code\game\machinery\portable_turret.dm" -#include "code\game\machinery\recharger.dm" -#include "code\game\machinery\rechargestation.dm" -#include "code\game\machinery\requests_console.dm" -#include "code\game\machinery\robot_fabricator.dm" -#include "code\game\machinery\seed_extractor.dm" -#include "code\game\machinery\shieldgen.dm" -#include "code\game\machinery\Sleeper.dm" -#include "code\game\machinery\spaceheater.dm" -#include "code\game\machinery\status_display.dm" -#include "code\game\machinery\suit_storage_unit.dm" -#include "code\game\machinery\syndicatebeacon.dm" -#include "code\game\machinery\teleporter.dm" -#include "code\game\machinery\turrets.dm" -#include "code\game\machinery\vending.dm" -#include "code\game\machinery\washing_machine.dm" -#include "code\game\machinery\wishgranter.dm" -#include "code\game\machinery\atmoalter\area_atmos_computer.dm" -#include "code\game\machinery\atmoalter\canister.dm" -#include "code\game\machinery\atmoalter\meter.dm" -#include "code\game\machinery\atmoalter\portable_atmospherics.dm" -#include "code\game\machinery\atmoalter\pump.dm" -#include "code\game\machinery\atmoalter\scrubber.dm" -#include "code\game\machinery\atmoalter\zvent.dm" -#include "code\game\machinery\bots\bots.dm" -#include "code\game\machinery\bots\cleanbot.dm" -#include "code\game\machinery\bots\ed209bot.dm" -#include "code\game\machinery\bots\floorbot.dm" -#include "code\game\machinery\bots\medbot.dm" -#include "code\game\machinery\bots\mulebot.dm" -#include "code\game\machinery\bots\secbot.dm" -#include "code\game\machinery\camera\camera.dm" -#include "code\game\machinery\camera\camera_assembly.dm" -#include "code\game\machinery\camera\motion.dm" -#include "code\game\machinery\camera\presets.dm" -#include "code\game\machinery\camera\tracking.dm" -#include "code\game\machinery\camera\wires.dm" -#include "code\game\machinery\computer\ai_core.dm" -#include "code\game\machinery\computer\aifixer.dm" -#include "code\game\machinery\computer\arcade.dm" -#include "code\game\machinery\computer\atmos_alert.dm" -#include "code\game\machinery\computer\buildandrepair.dm" -#include "code\game\machinery\computer\camera.dm" -#include "code\game\machinery\computer\card.dm" -#include "code\game\machinery\computer\cloning.dm" -#include "code\game\machinery\computer\communications.dm" -#include "code\game\machinery\computer\computer.dm" -#include "code\game\machinery\computer\crew.dm" -#include "code\game\machinery\computer\HolodeckControl.dm" -#include "code\game\machinery\computer\hologram.dm" -#include "code\game\machinery\computer\law.dm" -#include "code\game\machinery\computer\medical.dm" -#include "code\game\machinery\computer\message.dm" -#include "code\game\machinery\computer\Operating.dm" -#include "code\game\machinery\computer\pod.dm" -#include "code\game\machinery\computer\power.dm" -#include "code\game\machinery\computer\prisoner.dm" -#include "code\game\machinery\computer\prisonshuttle.dm" -#include "code\game\machinery\computer\robot.dm" -#include "code\game\machinery\computer\security.dm" -#include "code\game\machinery\computer\shuttle.dm" -#include "code\game\machinery\computer\skills.dm" -#include "code\game\machinery\computer\specops_shuttle.dm" -#include "code\game\machinery\computer\station_alert.dm" -#include "code\game\machinery\computer\syndicate_shuttle.dm" -#include "code\game\machinery\computer\syndicate_specops_shuttle.dm" -#include "code\game\machinery\computer\vox_shuttle.dm" -#include "code\game\machinery\doors\airlock.dm" -#include "code\game\machinery\doors\airlock_electronics.dm" -#include "code\game\machinery\doors\alarmlock.dm" -#include "code\game\machinery\doors\brigdoors.dm" -#include "code\game\machinery\doors\checkForMultipleDoors.dm" -#include "code\game\machinery\doors\door.dm" -#include "code\game\machinery\doors\firedoor.dm" -#include "code\game\machinery\doors\multi_tile.dm" -#include "code\game\machinery\doors\poddoor.dm" -#include "code\game\machinery\doors\shutters.dm" -#include "code\game\machinery\doors\unpowered.dm" -#include "code\game\machinery\doors\windowdoor.dm" -#include "code\game\machinery\embedded_controller\access_controller.dm" -#include "code\game\machinery\embedded_controller\airlock_controller.dm" -#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" -#include "code\game\machinery\embedded_controller\simple_vent_controller.dm" -#include "code\game\machinery\embedded_controller\smart_airlock_controller.dm" -#include "code\game\machinery\kitchen\gibber.dm" -#include "code\game\machinery\kitchen\juicer.dm" -#include "code\game\machinery\kitchen\microwave.dm" -#include "code\game\machinery\kitchen\processor.dm" -#include "code\game\machinery\kitchen\smartfridge.dm" -#include "code\game\machinery\pipe\construction.dm" -#include "code\game\machinery\pipe\pipe_dispenser.dm" -#include "code\game\machinery\telecomms\broadcaster.dm" -#include "code\game\machinery\telecomms\logbrowser.dm" -#include "code\game\machinery\telecomms\machine_interactions.dm" -#include "code\game\machinery\telecomms\presets.dm" -#include "code\game\machinery\telecomms\telecomunications.dm" -#include "code\game\machinery\telecomms\telemonitor.dm" -#include "code\game\machinery\telecomms\traffic_control.dm" -#include "code\game\magic\Uristrunes.dm" -#include "code\game\mecha\mech_bay.dm" -#include "code\game\mecha\mech_fabricator.dm" -#include "code\game\mecha\mecha.dm" -#include "code\game\mecha\mecha_construction_paths.dm" -#include "code\game\mecha\mecha_control_console.dm" -#include "code\game\mecha\mecha_parts.dm" -#include "code\game\mecha\mecha_wreckage.dm" -#include "code\game\mecha\combat\combat.dm" -#include "code\game\mecha\combat\durand.dm" -#include "code\game\mecha\combat\gygax.dm" -#include "code\game\mecha\combat\honker.dm" -#include "code\game\mecha\combat\marauder.dm" -#include "code\game\mecha\combat\phazon.dm" -#include "code\game\mecha\equipment\mecha_equipment.dm" -#include "code\game\mecha\equipment\tools\medical_tools.dm" -#include "code\game\mecha\equipment\tools\tools.dm" -#include "code\game\mecha\equipment\weapons\weapons.dm" -#include "code\game\mecha\exo\exo.dm" -#include "code\game\mecha\exo\exobase.dm" -#include "code\game\mecha\exo\exoert.dm" -#include "code\game\mecha\medical\medical.dm" -#include "code\game\mecha\medical\odysseus.dm" -#include "code\game\mecha\working\ripley.dm" -#include "code\game\mecha\working\working.dm" -#include "code\game\objects\empulse.dm" -#include "code\game\objects\explosion.dm" -#include "code\game\objects\explosion_recursive.dm" -#include "code\game\objects\items.dm" -#include "code\game\objects\objs.dm" -#include "code\game\objects\structures.dm" -#include "code\game\objects\weapons.dm" -#include "code\game\objects\closets\walllocker.dm" -#include "code\game\objects\effects\aliens.dm" -#include "code\game\objects\effects\bump_teleporter.dm" -#include "code\game\objects\effects\effect_system.dm" -#include "code\game\objects\effects\gibs.dm" -#include "code\game\objects\effects\glowshroom.dm" -#include "code\game\objects\effects\landmarks.dm" -#include "code\game\objects\effects\manifest.dm" -#include "code\game\objects\effects\mines.dm" -#include "code\game\objects\effects\misc.dm" -#include "code\game\objects\effects\overlays.dm" -#include "code\game\objects\effects\portals.dm" -#include "code\game\objects\effects\spiders.dm" -#include "code\game\objects\effects\step_triggers.dm" -#include "code\game\objects\effects\decals\cleanable.dm" -#include "code\game\objects\effects\decals\contraband.dm" -#include "code\game\objects\effects\decals\crayon.dm" -#include "code\game\objects\effects\decals\misc.dm" -#include "code\game\objects\effects\decals\remains.dm" -#include "code\game\objects\effects\decals\warning_stripes.dm" -#include "code\game\objects\effects\decals\Cleanable\aliens.dm" -#include "code\game\objects\effects\decals\Cleanable\fuel.dm" -#include "code\game\objects\effects\decals\Cleanable\humans.dm" -#include "code\game\objects\effects\decals\Cleanable\misc.dm" -#include "code\game\objects\effects\decals\Cleanable\robots.dm" -#include "code\game\objects\effects\decals\Cleanable\tracks.dm" -#include "code\game\objects\effects\spawners\bombspawner.dm" -#include "code\game\objects\effects\spawners\gibspawner.dm" -#include "code\game\objects\effects\spawners\vaultspawner.dm" -#include "code\game\objects\items\apc_frame.dm" -#include "code\game\objects\items\blueprints.dm" -#include "code\game\objects\items\bodybag.dm" -#include "code\game\objects\items\candle.dm" -#include "code\game\objects\items\contraband.dm" -#include "code\game\objects\items\crayons.dm" -#include "code\game\objects\items\latexballoon.dm" -#include "code\game\objects\items\shooting_range.dm" -#include "code\game\objects\items\toys.dm" -#include "code\game\objects\items\trash.dm" -#include "code\game\objects\items\devices\aicard.dm" -#include "code\game\objects\items\devices\chameleonproj.dm" -#include "code\game\objects\items\devices\debugger.dm" -#include "code\game\objects\items\devices\flash.dm" -#include "code\game\objects\items\devices\flashlight.dm" -#include "code\game\objects\items\devices\lightreplacer.dm" -#include "code\game\objects\items\devices\megaphone.dm" -#include "code\game\objects\items\devices\modkit.dm" -#include "code\game\objects\items\devices\multitool.dm" -#include "code\game\objects\items\devices\paicard.dm" -#include "code\game\objects\items\devices\pipe_painter.dm" -#include "code\game\objects\items\devices\powersink.dm" -#include "code\game\objects\items\devices\scanners.dm" -#include "code\game\objects\items\devices\taperecorder.dm" -#include "code\game\objects\items\devices\traitordevices.dm" -#include "code\game\objects\items\devices\transfer_valve.dm" -#include "code\game\objects\items\devices\uplinks.dm" -#include "code\game\objects\items\devices\violin.dm" -#include "code\game\objects\items\devices\whistle.dm" -#include "code\game\objects\items\devices\PDA\cart.dm" -#include "code\game\objects\items\devices\PDA\chatroom.dm" -#include "code\game\objects\items\devices\PDA\PDA.dm" -#include "code\game\objects\items\devices\PDA\radio.dm" -#include "code\game\objects\items\devices\radio\beacon.dm" -#include "code\game\objects\items\devices\radio\electropack.dm" -#include "code\game\objects\items\devices\radio\encryptionkey.dm" -#include "code\game\objects\items\devices\radio\headset.dm" -#include "code\game\objects\items\devices\radio\intercom.dm" -#include "code\game\objects\items\devices\radio\radio.dm" -#include "code\game\objects\items\robot\robot_items.dm" -#include "code\game\objects\items\robot\robot_parts.dm" -#include "code\game\objects\items\robot\robot_upgrades.dm" -#include "code\game\objects\items\stacks\medical.dm" -#include "code\game\objects\items\stacks\nanopaste.dm" -#include "code\game\objects\items\stacks\rods.dm" -#include "code\game\objects\items\stacks\stack.dm" -#include "code\game\objects\items\stacks\sheets\glass.dm" -#include "code\game\objects\items\stacks\sheets\leather.dm" -#include "code\game\objects\items\stacks\sheets\light.dm" -#include "code\game\objects\items\stacks\sheets\mineral.dm" -#include "code\game\objects\items\stacks\sheets\sheet_types.dm" -#include "code\game\objects\items\stacks\sheets\sheets.dm" -#include "code\game\objects\items\stacks\tiles\light.dm" -#include "code\game\objects\items\stacks\tiles\plasteel.dm" -#include "code\game\objects\items\stacks\tiles\tile_types.dm" -#include "code\game\objects\items\weapons\AI_modules.dm" -#include "code\game\objects\items\weapons\cards_ids.dm" -#include "code\game\objects\items\weapons\cigs_lighters.dm" -#include "code\game\objects\items\weapons\clown_items.dm" -#include "code\game\objects\items\weapons\cosmetics.dm" -#include "code\game\objects\items\weapons\dice.dm" -#include "code\game\objects\items\weapons\dna_injector.dm" -#include "code\game\objects\items\weapons\explosives.dm" -#include "code\game\objects\items\weapons\extinguisher.dm" -#include "code\game\objects\items\weapons\flamethrower.dm" -#include "code\game\objects\items\weapons\gift_wrappaper.dm" -#include "code\game\objects\items\weapons\handcuffs.dm" -#include "code\game\objects\items\weapons\hydroponics.dm" -#include "code\game\objects\items\weapons\kitchen.dm" -#include "code\game\objects\items\weapons\manuals.dm" -#include "code\game\objects\items\weapons\mop.dm" -#include "code\game\objects\items\weapons\paint.dm" -#include "code\game\objects\items\weapons\paiwire.dm" -#include "code\game\objects\items\weapons\power_cells.dm" -#include "code\game\objects\items\weapons\RCD.dm" -#include "code\game\objects\items\weapons\RSF.dm" -#include "code\game\objects\items\weapons\scrolls.dm" -#include "code\game\objects\items\weapons\shields.dm" -#include "code\game\objects\items\weapons\stunbaton.dm" -#include "code\game\objects\items\weapons\surgery_tools.dm" -#include "code\game\objects\items\weapons\swords_axes_etc.dm" -#include "code\game\objects\items\weapons\table_rack_parts.dm" -#include "code\game\objects\items\weapons\teleportation.dm" -#include "code\game\objects\items\weapons\tools.dm" -#include "code\game\objects\items\weapons\twohanded.dm" -#include "code\game\objects\items\weapons\weaponry.dm" -#include "code\game\objects\items\weapons\wires.dm" -#include "code\game\objects\items\weapons\grenades\chem_grenade.dm" -#include "code\game\objects\items\weapons\grenades\emgrenade.dm" -#include "code\game\objects\items\weapons\grenades\flashbang.dm" -#include "code\game\objects\items\weapons\grenades\grenade.dm" -#include "code\game\objects\items\weapons\grenades\smokebomb.dm" -#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" -#include "code\game\objects\items\weapons\implants\implant.dm" -#include "code\game\objects\items\weapons\implants\implantcase.dm" -#include "code\game\objects\items\weapons\implants\implantchair.dm" -#include "code\game\objects\items\weapons\implants\implanter.dm" -#include "code\game\objects\items\weapons\implants\implantfreedom.dm" -#include "code\game\objects\items\weapons\implants\implantpad.dm" -#include "code\game\objects\items\weapons\implants\implantuplink.dm" -#include "code\game\objects\items\weapons\melee\energy.dm" -#include "code\game\objects\items\weapons\melee\misc.dm" -#include "code\game\objects\items\weapons\storage\backpack.dm" -#include "code\game\objects\items\weapons\storage\bags.dm" -#include "code\game\objects\items\weapons\storage\belt.dm" -#include "code\game\objects\items\weapons\storage\bible.dm" -#include "code\game\objects\items\weapons\storage\boxes.dm" -#include "code\game\objects\items\weapons\storage\briefcase.dm" -#include "code\game\objects\items\weapons\storage\fancy.dm" -#include "code\game\objects\items\weapons\storage\firstaid.dm" -#include "code\game\objects\items\weapons\storage\lockbox.dm" -#include "code\game\objects\items\weapons\storage\secure.dm" -#include "code\game\objects\items\weapons\storage\storage.dm" -#include "code\game\objects\items\weapons\storage\toolbox.dm" -#include "code\game\objects\items\weapons\storage\uplink_kits.dm" -#include "code\game\objects\items\weapons\storage\wallets.dm" -#include "code\game\objects\items\weapons\tanks\jetpack.dm" -#include "code\game\objects\items\weapons\tanks\tank_types.dm" -#include "code\game\objects\items\weapons\tanks\tanks.dm" -#include "code\game\objects\random\random.dm" -#include "code\game\objects\storage\coat.dm" -#include "code\game\objects\structures\barsign.dm" -#include "code\game\objects\structures\bedsheet_bin.dm" -#include "code\game\objects\structures\coathanger.dm" -#include "code\game\objects\structures\displaycase.dm" -#include "code\game\objects\structures\door_assembly.dm" -#include "code\game\objects\structures\electricchair.dm" -#include "code\game\objects\structures\extinguisher.dm" -#include "code\game\objects\structures\false_walls.dm" -#include "code\game\objects\structures\flora.dm" -#include "code\game\objects\structures\girders.dm" -#include "code\game\objects\structures\grille.dm" -#include "code\game\objects\structures\janicart.dm" -#include "code\game\objects\structures\kitchen_spike.dm" -#include "code\game\objects\structures\ladders.dm" -#include "code\game\objects\structures\lamarr_cage.dm" -#include "code\game\objects\structures\lattice.dm" -#include "code\game\objects\structures\mineral_doors.dm" -#include "code\game\objects\structures\mirror.dm" -#include "code\game\objects\structures\mop_bucket.dm" -#include "code\game\objects\structures\morgue.dm" -#include "code\game\objects\structures\musician.dm" -#include "code\game\objects\structures\noticeboard.dm" -#include "code\game\objects\structures\safe.dm" -#include "code\game\objects\structures\signs.dm" -#include "code\game\objects\structures\tables_racks.dm" -#include "code\game\objects\structures\tank_dispenser.dm" -#include "code\game\objects\structures\target_stake.dm" -#include "code\game\objects\structures\transit_tubes.dm" -#include "code\game\objects\structures\watercloset.dm" -#include "code\game\objects\structures\windoor_assembly.dm" -#include "code\game\objects\structures\window.dm" -#include "code\game\objects\structures\crates_lockers\closets.dm" -#include "code\game\objects\structures\crates_lockers\crates.dm" -#include "code\game\objects\structures\crates_lockers\largecrate.dm" -#include "code\game\objects\structures\crates_lockers\closets\coffin.dm" -#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" -#include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm" -#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" -#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" -#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" -#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" -#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" -#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\stools.dm" -#include "code\game\turfs\simulated.dm" -#include "code\game\turfs\turf.dm" -#include "code\game\turfs\unsimulated.dm" -#include "code\game\turfs\simulated\floor.dm" -#include "code\game\turfs\simulated\floor_types.dm" -#include "code\game\turfs\simulated\walls.dm" -#include "code\game\turfs\simulated\walls_mineral.dm" -#include "code\game\turfs\simulated\walls_misc.dm" -#include "code\game\turfs\simulated\walls_reinforced.dm" -#include "code\game\turfs\space\space.dm" -#include "code\game\turfs\space\transit.dm" -#include "code\game\turfs\unsimulated\beach.dm" -#include "code\game\turfs\unsimulated\floor.dm" -#include "code\game\turfs\unsimulated\walls.dm" -#include "code\game\verbs\atom_verbs.dm" -#include "code\game\verbs\ooc.dm" -#include "code\game\verbs\suicide.dm" -#include "code\game\verbs\who.dm" -#include "code\js\byjax.dm" -#include "code\js\menus.dm" -#include "code\modules\admin\admin.dm" -#include "code\modules\admin\admin_investigate.dm" -#include "code\modules\admin\admin_memo.dm" -#include "code\modules\admin\admin_ranks.dm" -#include "code\modules\admin\admin_verbs.dm" -#include "code\modules\admin\banjob.dm" -#include "code\modules\admin\create_mob.dm" -#include "code\modules\admin\create_object.dm" -#include "code\modules\admin\create_turf.dm" -#include "code\modules\admin\holder2.dm" -#include "code\modules\admin\IsBanned.dm" -#include "code\modules\admin\NewBan.dm" -#include "code\modules\admin\player_notes.dm" -#include "code\modules\admin\player_panel.dm" -#include "code\modules\admin\topic.dm" -#include "code\modules\admin\ToRban.dm" -#include "code\modules\admin\DB ban\functions.dm" -#include "code\modules\admin\permissionverbs\permissionedit.dm" -#include "code\modules\admin\verbs\adminhelp.dm" -#include "code\modules\admin\verbs\adminjump.dm" -#include "code\modules\admin\verbs\adminpm.dm" -#include "code\modules\admin\verbs\adminsay.dm" -#include "code\modules\admin\verbs\atmosdebug.dm" -#include "code\modules\admin\verbs\BrokenInhands.dm" -#include "code\modules\admin\verbs\check_customitem_activity.dm" -#include "code\modules\admin\verbs\cinematic.dm" -#include "code\modules\admin\verbs\custom_event.dm" -#include "code\modules\admin\verbs\deadsay.dm" -#include "code\modules\admin\verbs\debug.dm" -#include "code\modules\admin\verbs\diagnostics.dm" -#include "code\modules\admin\verbs\getlogs.dm" -#include "code\modules\admin\verbs\mapping.dm" -#include "code\modules\admin\verbs\massmodvar.dm" -#include "code\modules\admin\verbs\modifyvariables.dm" -#include "code\modules\admin\verbs\one_click_antag.dm" -#include "code\modules\admin\verbs\onlyone.dm" -#include "code\modules\admin\verbs\playsound.dm" -#include "code\modules\admin\verbs\possess.dm" -#include "code\modules\admin\verbs\pray.dm" -#include "code\modules\admin\verbs\randomverbs.dm" -#include "code\modules\admin\verbs\SDQL.dm" -#include "code\modules\admin\verbs\SDQL_2.dm" -#include "code\modules\admin\verbs\SDQL_2_parser.dm" -#include "code\modules\admin\verbs\striketeam.dm" -#include "code\modules\admin\verbs\striketeam_syndicate.dm" -#include "code\modules\admin\verbs\ticklag.dm" -#include "code\modules\admin\verbs\tripAI.dm" -#include "code\modules\admin\verbs\vox_raiders.dm" -#include "code\modules\assembly\assembly.dm" -#include "code\modules\assembly\bomb.dm" -#include "code\modules\assembly\helpers.dm" -#include "code\modules\assembly\holder.dm" -#include "code\modules\assembly\igniter.dm" -#include "code\modules\assembly\infrared.dm" -#include "code\modules\assembly\mousetrap.dm" -#include "code\modules\assembly\proximity.dm" -#include "code\modules\assembly\shock_kit.dm" -#include "code\modules\assembly\signaler.dm" -#include "code\modules\assembly\timer.dm" -#include "code\modules\aur-engie\engineering_areas.dm" -#include "code\modules\aur-engie\engineering_shuttle.dm" -#include "code\modules\awaymissions\bluespaceartillery.dm" -#include "code\modules\awaymissions\corpse.dm" -#include "code\modules\awaymissions\exile.dm" -#include "code\modules\awaymissions\gateway.dm" -#include "code\modules\awaymissions\loot.dm" -#include "code\modules\awaymissions\pamphlet.dm" -#include "code\modules\awaymissions\trigger.dm" -#include "code\modules\awaymissions\zlevel.dm" -#include "code\modules\client\client defines.dm" -#include "code\modules\client\client procs.dm" -#include "code\modules\client\preferences.dm" -#include "code\modules\client\preferences_savefile.dm" -#include "code\modules\client\preferences_toggles.dm" -#include "code\modules\clothing\clothing.dm" -#include "code\modules\clothing\glasses\glasses.dm" -#include "code\modules\clothing\glasses\hud.dm" -#include "code\modules\clothing\gloves\boxing.dm" -#include "code\modules\clothing\gloves\color.dm" -#include "code\modules\clothing\gloves\miscellaneous.dm" -#include "code\modules\clothing\gloves\ninja.dm" -#include "code\modules\clothing\gloves\stungloves.dm" -#include "code\modules\clothing\head\collectable.dm" -#include "code\modules\clothing\head\hardhat.dm" -#include "code\modules\clothing\head\helmet.dm" -#include "code\modules\clothing\head\jobs.dm" -#include "code\modules\clothing\head\misc.dm" -#include "code\modules\clothing\head\misc_special.dm" -#include "code\modules\clothing\head\soft_caps.dm" -#include "code\modules\clothing\masks\boxing.dm" -#include "code\modules\clothing\masks\breath.dm" -#include "code\modules\clothing\masks\gasmask.dm" -#include "code\modules\clothing\masks\miscellaneous.dm" -#include "code\modules\clothing\shoes\colour.dm" -#include "code\modules\clothing\shoes\magboots.dm" -#include "code\modules\clothing\shoes\miscellaneous.dm" -#include "code\modules\clothing\spacesuits\alien.dm" -#include "code\modules\clothing\spacesuits\captain.dm" -#include "code\modules\clothing\spacesuits\ert.dm" -#include "code\modules\clothing\spacesuits\miscellaneous.dm" -#include "code\modules\clothing\spacesuits\ninja.dm" -#include "code\modules\clothing\spacesuits\rig.dm" -#include "code\modules\clothing\spacesuits\syndi.dm" -#include "code\modules\clothing\spacesuits\void.dm" -#include "code\modules\clothing\suits\alien.dm" -#include "code\modules\clothing\suits\armor.dm" -#include "code\modules\clothing\suits\bio.dm" -#include "code\modules\clothing\suits\jobs.dm" -#include "code\modules\clothing\suits\labcoat.dm" -#include "code\modules\clothing\suits\miscellaneous.dm" -#include "code\modules\clothing\suits\utility.dm" -#include "code\modules\clothing\suits\wiz_robe.dm" -#include "code\modules\clothing\under\chameleon.dm" -#include "code\modules\clothing\under\color.dm" -#include "code\modules\clothing\under\miscellaneous.dm" -#include "code\modules\clothing\under\shorts.dm" -#include "code\modules\clothing\under\syndicate.dm" -#include "code\modules\clothing\under\ties.dm" -#include "code\modules\clothing\under\jobs\civilian.dm" -#include "code\modules\clothing\under\jobs\engineering.dm" -#include "code\modules\clothing\under\jobs\ert.dm" -#include "code\modules\clothing\under\jobs\medsci.dm" -#include "code\modules\clothing\under\jobs\security.dm" -#include "code\modules\customitems\item_defines.dm" -#include "code\modules\customitems\item_spawning.dm" -#include "code\modules\destilery\main.dm" -#include "code\modules\detectivework\detective_work.dm" -#include "code\modules\detectivework\evidence.dm" -#include "code\modules\detectivework\footprints_and_rag.dm" -#include "code\modules\detectivework\scanner.dm" -#include "code\modules\economy\Accounts.dm" -#include "code\modules\economy\Accounts_DB.dm" -#include "code\modules\economy\ATM.dm" -#include "code\modules\economy\cash.dm" -#include "code\modules\economy\economy_misc.dm" -#include "code\modules\economy\EFTPOS.dm" -#include "code\modules\economy\Events.dm" -#include "code\modules\economy\Events_Mundane.dm" -#include "code\modules\economy\Job_Departments.dm" -#include "code\modules\economy\TradeDestinations.dm" -#include "code\modules\events\alien_infestation.dm" -#include "code\modules\events\blob.dm" -#include "code\modules\events\borers.dm" -#include "code\modules\events\brand_intelligence.dm" -#include "code\modules\events\carp_migration.dm" -#include "code\modules\events\comms_blackout.dm" -#include "code\modules\events\communications_blackout.dm" -#include "code\modules\events\disease_outbreak.dm" -#include "code\modules\events\electrical_storm.dm" -#include "code\modules\events\event.dm" -#include "code\modules\events\event_dynamic.dm" -#include "code\modules\events\event_manager.dm" -#include "code\modules\events\grid_check.dm" -#include "code\modules\events\infestation.dm" -#include "code\modules\events\ion_storm.dm" -#include "code\modules\events\meteors.dm" -#include "code\modules\events\money_hacker.dm" -#include "code\modules\events\money_lotto.dm" -#include "code\modules\events\money_spam.dm" -#include "code\modules\events\organ_failure.dm" -#include "code\modules\events\prison_break.dm" -#include "code\modules\events\radiation_storm.dm" -#include "code\modules\events\rogue_drones.dm" -#include "code\modules\events\space_ninja.dm" -#include "code\modules\events\spacevine.dm" -#include "code\modules\events\spider_infestation.dm" -#include "code\modules\events\spontaneous_appendicitis.dm" -#include "code\modules\events\viral_infection.dm" -#include "code\modules\events\wallrot.dm" -#include "code\modules\ext_scripts\irc.dm" -#include "code\modules\ext_scripts\python.dm" -#include "code\modules\flufftext\Dreaming.dm" -#include "code\modules\flufftext\Hallucination.dm" -#include "code\modules\flufftext\TextFilters.dm" -#include "code\modules\food\recipes_microwave.dm" -#include "code\modules\genetics\side_effects.dm" -#include "code\modules\library\lib_items.dm" -#include "code\modules\library\lib_machines.dm" -#include "code\modules\library\lib_readme.dm" -#include "code\modules\liquid\splash_simulation.dm" -#include "code\modules\maps\dmm_suite.dm" -#include "code\modules\maps\reader.dm" -#include "code\modules\maps\swapmaps.dm" -#include "code\modules\maps\writer.dm" -#include "code\modules\mining\abandonedcrates.dm" -#include "code\modules\mining\machine_input_output_plates.dm" -#include "code\modules\mining\machine_processing.dm" -#include "code\modules\mining\machine_stacking.dm" -#include "code\modules\mining\machine_unloading.dm" -#include "code\modules\mining\mine_areas.dm" -#include "code\modules\mining\mine_items.dm" -#include "code\modules\mining\mine_turfs.dm" -#include "code\modules\mining\minerals.dm" -#include "code\modules\mining\mint.dm" -#include "code\modules\mining\money_bag.dm" -#include "code\modules\mining\ores_coins.dm" -#include "code\modules\mining\satchel_ore_boxdm.dm" -#include "code\modules\mob\abilities.dm" -#include "code\modules\mob\death.dm" -#include "code\modules\mob\emote.dm" -#include "code\modules\mob\inventory.dm" -#include "code\modules\mob\language.dm" -#include "code\modules\mob\login.dm" -#include "code\modules\mob\logout.dm" -#include "code\modules\mob\mob.dm" -#include "code\modules\mob\mob_cleanup.dm" -#include "code\modules\mob\mob_defines.dm" -#include "code\modules\mob\mob_grab.dm" -#include "code\modules\mob\mob_helpers.dm" -#include "code\modules\mob\mob_movement.dm" -#include "code\modules\mob\mob_transformation_simple.dm" -#include "code\modules\mob\say.dm" -#include "code\modules\mob\transform_procs.dm" -#include "code\modules\mob\update_icons.dm" -#include "code\modules\mob\dead\death.dm" -#include "code\modules\mob\dead\observer\logout.dm" -#include "code\modules\mob\dead\observer\observer.dm" -#include "code\modules\mob\dead\observer\say.dm" -#include "code\modules\mob\living\damage_procs.dm" -#include "code\modules\mob\living\living.dm" -#include "code\modules\mob\living\living_defense.dm" -#include "code\modules\mob\living\living_defines.dm" -#include "code\modules\mob\living\login.dm" -#include "code\modules\mob\living\logout.dm" -#include "code\modules\mob\living\say.dm" -#include "code\modules\mob\living\blob\blob.dm" -#include "code\modules\mob\living\carbon\carbon.dm" -#include "code\modules\mob\living\carbon\carbon_defines.dm" -#include "code\modules\mob\living\carbon\give.dm" -#include "code\modules\mob\living\carbon\shock.dm" -#include "code\modules\mob\living\carbon\species.dm" -#include "code\modules\mob\living\carbon\alien\alien.dm" -#include "code\modules\mob\living\carbon\alien\death.dm" -#include "code\modules\mob\living\carbon\alien\login.dm" -#include "code\modules\mob\living\carbon\alien\logout.dm" -#include "code\modules\mob\living\carbon\alien\powers.dm" -#include "code\modules\mob\living\carbon\alien\say.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\death.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\emote.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\life.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\login.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\queen.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\update_icons.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\drone.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\hunter.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\sentinel.dm" -#include "code\modules\mob\living\carbon\alien\larva\death.dm" -#include "code\modules\mob\living\carbon\alien\larva\emote.dm" -#include "code\modules\mob\living\carbon\alien\larva\inventory.dm" -#include "code\modules\mob\living\carbon\alien\larva\larva.dm" -#include "code\modules\mob\living\carbon\alien\larva\life.dm" -#include "code\modules\mob\living\carbon\alien\larva\powers.dm" -#include "code\modules\mob\living\carbon\alien\larva\update_icons.dm" -#include "code\modules\mob\living\carbon\alien\special\alien_embryo.dm" -#include "code\modules\mob\living\carbon\alien\special\facehugger.dm" -#include "code\modules\mob\living\carbon\brain\brain.dm" -#include "code\modules\mob\living\carbon\brain\brain_item.dm" -#include "code\modules\mob\living\carbon\brain\death.dm" -#include "code\modules\mob\living\carbon\brain\emote.dm" -#include "code\modules\mob\living\carbon\brain\life.dm" -#include "code\modules\mob\living\carbon\brain\MMI.dm" -#include "code\modules\mob\living\carbon\brain\posibrain.dm" -#include "code\modules\mob\living\carbon\brain\say.dm" -#include "code\modules\mob\living\carbon\human\death.dm" -#include "code\modules\mob\living\carbon\human\emote.dm" -#include "code\modules\mob\living\carbon\human\examine.dm" -#include "code\modules\mob\living\carbon\human\human.dm" -#include "code\modules\mob\living\carbon\human\human_attackalien.dm" -#include "code\modules\mob\living\carbon\human\human_attackhand.dm" -#include "code\modules\mob\living\carbon\human\human_attackpaw.dm" -#include "code\modules\mob\living\carbon\human\human_damage.dm" -#include "code\modules\mob\living\carbon\human\human_defense.dm" -#include "code\modules\mob\living\carbon\human\human_defines.dm" -#include "code\modules\mob\living\carbon\human\human_movement.dm" -#include "code\modules\mob\living\carbon\human\inventory.dm" -#include "code\modules\mob\living\carbon\human\life.dm" -#include "code\modules\mob\living\carbon\human\login.dm" -#include "code\modules\mob\living\carbon\human\say.dm" -#include "code\modules\mob\living\carbon\human\update_icons.dm" -#include "code\modules\mob\living\carbon\human\whisper.dm" -#include "code\modules\mob\living\carbon\metroid\death.dm" -#include "code\modules\mob\living\carbon\metroid\emote.dm" -#include "code\modules\mob\living\carbon\metroid\examine.dm" -#include "code\modules\mob\living\carbon\metroid\hud.dm" -#include "code\modules\mob\living\carbon\metroid\life.dm" -#include "code\modules\mob\living\carbon\metroid\login.dm" -#include "code\modules\mob\living\carbon\metroid\metroid.dm" -#include "code\modules\mob\living\carbon\metroid\powers.dm" -#include "code\modules\mob\living\carbon\metroid\subtypes.dm" -#include "code\modules\mob\living\carbon\metroid\update_icons.dm" -#include "code\modules\mob\living\carbon\monkey\death.dm" -#include "code\modules\mob\living\carbon\monkey\diona.dm" -#include "code\modules\mob\living\carbon\monkey\emote.dm" -#include "code\modules\mob\living\carbon\monkey\examine.dm" -#include "code\modules\mob\living\carbon\monkey\inventory.dm" -#include "code\modules\mob\living\carbon\monkey\life.dm" -#include "code\modules\mob\living\carbon\monkey\login.dm" -#include "code\modules\mob\living\carbon\monkey\monkey.dm" -#include "code\modules\mob\living\carbon\monkey\powers.dm" -#include "code\modules\mob\living\carbon\monkey\update_icons.dm" -#include "code\modules\mob\living\silicon\death.dm" -#include "code\modules\mob\living\silicon\login.dm" -#include "code\modules\mob\living\silicon\say.dm" -#include "code\modules\mob\living\silicon\silicon.dm" -#include "code\modules\mob\living\silicon\ai\ai.dm" -#include "code\modules\mob\living\silicon\ai\death.dm" -#include "code\modules\mob\living\silicon\ai\examine.dm" -#include "code\modules\mob\living\silicon\ai\laws.dm" -#include "code\modules\mob\living\silicon\ai\life.dm" -#include "code\modules\mob\living\silicon\ai\login.dm" -#include "code\modules\mob\living\silicon\ai\logout.dm" -#include "code\modules\mob\living\silicon\ai\say.dm" -#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" -#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" -#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" -#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" -#include "code\modules\mob\living\silicon\ai\freelook\update_triggers.dm" -#include "code\modules\mob\living\silicon\decoy\death.dm" -#include "code\modules\mob\living\silicon\decoy\decoy.dm" -#include "code\modules\mob\living\silicon\decoy\life.dm" -#include "code\modules\mob\living\silicon\pai\death.dm" -#include "code\modules\mob\living\silicon\pai\examine.dm" -#include "code\modules\mob\living\silicon\pai\hud.dm" -#include "code\modules\mob\living\silicon\pai\life.dm" -#include "code\modules\mob\living\silicon\pai\pai.dm" -#include "code\modules\mob\living\silicon\pai\personality.dm" -#include "code\modules\mob\living\silicon\pai\recruit.dm" -#include "code\modules\mob\living\silicon\pai\say.dm" -#include "code\modules\mob\living\silicon\pai\software.dm" -#include "code\modules\mob\living\silicon\robot\component.dm" -#include "code\modules\mob\living\silicon\robot\death.dm" -#include "code\modules\mob\living\silicon\robot\emote.dm" -#include "code\modules\mob\living\silicon\robot\examine.dm" -#include "code\modules\mob\living\silicon\robot\inventory.dm" -#include "code\modules\mob\living\silicon\robot\laws.dm" -#include "code\modules\mob\living\silicon\robot\life.dm" -#include "code\modules\mob\living\silicon\robot\login.dm" -#include "code\modules\mob\living\silicon\robot\robot.dm" -#include "code\modules\mob\living\silicon\robot\robot_damage.dm" -#include "code\modules\mob\living\silicon\robot\robot_items.dm" -#include "code\modules\mob\living\silicon\robot\robot_modules.dm" -#include "code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "code\modules\mob\living\silicon\robot\wires.dm" -#include "code\modules\mob\living\simple_animal\bees.dm" -#include "code\modules\mob\living\simple_animal\borer.dm" -#include "code\modules\mob\living\simple_animal\constructs.dm" -#include "code\modules\mob\living\simple_animal\corpse.dm" -#include "code\modules\mob\living\simple_animal\parrot.dm" -#include "code\modules\mob\living\simple_animal\shade.dm" -#include "code\modules\mob\living\simple_animal\simple_animal.dm" -#include "code\modules\mob\living\simple_animal\vox.dm" -#include "code\modules\mob\living\simple_animal\worm.dm" -#include "code\modules\mob\living\simple_animal\friendly\cat.dm" -#include "code\modules\mob\living\simple_animal\friendly\corgi.dm" -#include "code\modules\mob\living\simple_animal\friendly\crab.dm" -#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" -#include "code\modules\mob\living\simple_animal\friendly\lizard.dm" -#include "code\modules\mob\living\simple_animal\friendly\mouse.dm" -#include "code\modules\mob\living\simple_animal\friendly\mushroom.dm" -#include "code\modules\mob\living\simple_animal\friendly\slime.dm" -#include "code\modules\mob\living\simple_animal\friendly\spiderbot.dm" -#include "code\modules\mob\living\simple_animal\friendly\tomato.dm" -#include "code\modules\mob\living\simple_animal\hostile\alien.dm" -#include "code\modules\mob\living\simple_animal\hostile\bear.dm" -#include "code\modules\mob\living\simple_animal\hostile\carp.dm" -#include "code\modules\mob\living\simple_animal\hostile\creature.dm" -#include "code\modules\mob\living\simple_animal\hostile\faithless.dm" -#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" -#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm" -#include "code\modules\mob\living\simple_animal\hostile\hostile.dm" -#include "code\modules\mob\living\simple_animal\hostile\mimic.dm" -#include "code\modules\mob\living\simple_animal\hostile\pirate.dm" -#include "code\modules\mob\living\simple_animal\hostile\russian.dm" -#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm" -#include "code\modules\mob\living\simple_animal\hostile\tree.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" -#include "code\modules\mob\new_player\login.dm" -#include "code\modules\mob\new_player\logout.dm" -#include "code\modules\mob\new_player\new_player.dm" -#include "code\modules\mob\new_player\poll.dm" -#include "code\modules\mob\new_player\preferences_setup.dm" -#include "code\modules\mob\new_player\skill.dm" -#include "code\modules\mob\new_player\sprite_accessories.dm" -#include "code\modules\nano\_JSON.dm" -#include "code\modules\nano\JSON Reader.dm" -#include "code\modules\nano\JSON Writer.dm" -#include "code\modules\nano\nanoexternal.dm" -#include "code\modules\nano\nanomanager.dm" -#include "code\modules\nano\nanoui.dm" -#include "code\modules\organs\blood.dm" -#include "code\modules\organs\organ.dm" -#include "code\modules\organs\organ_external.dm" -#include "code\modules\organs\organ_internal.dm" -#include "code\modules\organs\pain.dm" -#include "code\modules\organs\wound.dm" -#include "code\modules\paperwork\clipboard.dm" -#include "code\modules\paperwork\filingcabinet.dm" -#include "code\modules\paperwork\folders.dm" -#include "code\modules\paperwork\handlabeler.dm" -#include "code\modules\paperwork\paper.dm" -#include "code\modules\paperwork\paperbin.dm" -#include "code\modules\paperwork\pen.dm" -#include "code\modules\paperwork\photocopier.dm" -#include "code\modules\paperwork\photography.dm" -#include "code\modules\paperwork\stamps.dm" -#include "code\modules\power\apc.dm" -#include "code\modules\power\cable.dm" -#include "code\modules\power\cable_heavyduty.dm" -#include "code\modules\power\cable_logic.dm" -#include "code\modules\power\cell.dm" -#include "code\modules\power\engine.dm" -#include "code\modules\power\generator.dm" -#include "code\modules\power\generator_type2.dm" -#include "code\modules\power\gravitygenerator.dm" -#include "code\modules\power\lighting.dm" -#include "code\modules\power\port_gen.dm" -#include "code\modules\power\power.dm" -#include "code\modules\power\smes.dm" -#include "code\modules\power\solar.dm" -#include "code\modules\power\switch.dm" -#include "code\modules\power\terminal.dm" -#include "code\modules\power\tracker.dm" -#include "code\modules\power\turbine.dm" -#include "code\modules\power\antimatter\containment_jar.dm" -#include "code\modules\power\antimatter\control.dm" -#include "code\modules\power\antimatter\shielding.dm" -#include "code\modules\power\singularity\collector.dm" -#include "code\modules\power\singularity\containment_field.dm" -#include "code\modules\power\singularity\emitter.dm" -#include "code\modules\power\singularity\field_generator.dm" -#include "code\modules\power\singularity\generator.dm" -#include "code\modules\power\singularity\investigate.dm" -#include "code\modules\power\singularity\singularity.dm" -#include "code\modules\power\singularity\particle_accelerator\particle.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_chamber.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_control.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_power.dm" -#include "code\modules\projectiles\ammunition.dm" -#include "code\modules\projectiles\gun.dm" -#include "code\modules\projectiles\projectile.dm" -#include "code\modules\projectiles\targeting.dm" -#include "code\modules\projectiles\ammunition\boxes.dm" -#include "code\modules\projectiles\ammunition\bullets.dm" -#include "code\modules\projectiles\guns\energy.dm" -#include "code\modules\projectiles\guns\projectile.dm" -#include "code\modules\projectiles\guns\energy\erifles.dm" -#include "code\modules\projectiles\guns\energy\laser.dm" -#include "code\modules\projectiles\guns\energy\nuclear.dm" -#include "code\modules\projectiles\guns\energy\pulse.dm" -#include "code\modules\projectiles\guns\energy\special.dm" -#include "code\modules\projectiles\guns\energy\stun.dm" -#include "code\modules\projectiles\guns\energy\temperature.dm" -#include "code\modules\projectiles\guns\projectile\automatic.dm" -#include "code\modules\projectiles\guns\projectile\bow.dm" -#include "code\modules\projectiles\guns\projectile\pistol.dm" -#include "code\modules\projectiles\guns\projectile\pneumatic.dm" -#include "code\modules\projectiles\guns\projectile\revolver.dm" -#include "code\modules\projectiles\guns\projectile\rocket.dm" -#include "code\modules\projectiles\guns\projectile\shotgun.dm" -#include "code\modules\projectiles\projectile\animate.dm" -#include "code\modules\projectiles\projectile\beams.dm" -#include "code\modules\projectiles\projectile\bullets.dm" -#include "code\modules\projectiles\projectile\change.dm" -#include "code\modules\projectiles\projectile\energy.dm" -#include "code\modules\projectiles\projectile\force.dm" -#include "code\modules\projectiles\projectile\special.dm" -#include "code\modules\reagents\Chemistry-Colours.dm" -#include "code\modules\reagents\Chemistry-Holder.dm" -#include "code\modules\reagents\Chemistry-Machinery.dm" -#include "code\modules\reagents\Chemistry-Readme.dm" -#include "code\modules\reagents\Chemistry-Reagents-Antidepressants.dm" -#include "code\modules\reagents\Chemistry-Reagents.dm" -#include "code\modules\reagents\Chemistry-Recipes.dm" -#include "code\modules\reagents\dartgun.dm" -#include "code\modules\reagents\grenade_launcher.dm" -#include "code\modules\reagents\reagent_containers.dm" -#include "code\modules\reagents\reagent_dispenser.dm" -#include "code\modules\reagents\syringe_gun.dm" -#include "code\modules\reagents\reagent_containers\blood_pack.dm" -#include "code\modules\reagents\reagent_containers\borghydro.dm" -#include "code\modules\reagents\reagent_containers\dropper.dm" -#include "code\modules\reagents\reagent_containers\food.dm" -#include "code\modules\reagents\reagent_containers\glass.dm" -#include "code\modules\reagents\reagent_containers\hypospray.dm" -#include "code\modules\reagents\reagent_containers\pill.dm" -#include "code\modules\reagents\reagent_containers\robodropper.dm" -#include "code\modules\reagents\reagent_containers\spray.dm" -#include "code\modules\reagents\reagent_containers\syringes.dm" -#include "code\modules\reagents\reagent_containers\food\cans.dm" -#include "code\modules\reagents\reagent_containers\food\condiment.dm" -#include "code\modules\reagents\reagent_containers\food\drinks.dm" -#include "code\modules\reagents\reagent_containers\food\sandwich.dm" -#include "code\modules\reagents\reagent_containers\food\snacks.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\bottle.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\drinkingglass.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\jar.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\bottle\robot.dm" -#include "code\modules\reagents\reagent_containers\food\snacks\grown.dm" -#include "code\modules\reagents\reagent_containers\food\snacks\meat.dm" -#include "code\modules\reagents\reagent_containers\glass\bottle.dm" -#include "code\modules\reagents\reagent_containers\glass\bottle\robot.dm" -#include "code\modules\recycling\conveyor2.dm" -#include "code\modules\recycling\disposal-construction.dm" -#include "code\modules\recycling\disposal.dm" -#include "code\modules\recycling\sortingmachinery.dm" -#include "code\modules\research\circuitprinter.dm" -#include "code\modules\research\designs.dm" -#include "code\modules\research\destructive_analyzer.dm" -#include "code\modules\research\message_server.dm" -#include "code\modules\research\protolathe.dm" -#include "code\modules\research\rd-readme.dm" -#include "code\modules\research\rdconsole.dm" -#include "code\modules\research\rdmachines.dm" -#include "code\modules\research\research.dm" -#include "code\modules\research\research_shuttle.dm" -#include "code\modules\research\server.dm" -#include "code\modules\research\xenoarchaeology\areas.dm" -#include "code\modules\research\xenoarchaeology\chemistry.dm" -#include "code\modules\research\xenoarchaeology\geosample.dm" -#include "code\modules\research\xenoarchaeology\manuals.dm" -#include "code\modules\research\xenoarchaeology\misc.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_autocloner.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_crystal.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_gigadrill.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_hoverpod.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_replicator.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_unknown.dm" -#include "code\modules\research\xenoarchaeology\artifact\effect.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_affect_cold.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_badfeeling.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_cellcharge.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_celldrain.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_dnaswitch.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_emp.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_forcefield.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasco2.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasnitro.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasoxy.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasplasma.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gassleeping.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_goodfeeling.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heal.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heat.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_hurt.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_radiate.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_roboheal.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_robohurt.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_sleepy.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_stun.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_teleport.dm" -#include "code\modules\research\xenoarchaeology\finds\finds.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_defines.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_fossils.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_misc.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_analyser.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_harvester.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_scanner.dm" -#include "code\modules\research\xenoarchaeology\machinery\coolant.dm" -#include "code\modules\research\xenoarchaeology\machinery\geosample_scanner.dm" -#include "code\modules\research\xenoarchaeology\tools\ano_device_battery.dm" -#include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" -#include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" -#include "code\modules\research\xenoarchaeology\tools\gearbelt.dm" -#include "code\modules\research\xenoarchaeology\tools\suspension_generator.dm" -#include "code\modules\research\xenoarchaeology\tools\tools.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_anoscanner.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_coresampler.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_locater.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_pickaxe.dm" -#include "code\modules\scripting\Errors.dm" -#include "code\modules\scripting\IDE.dm" -#include "code\modules\scripting\Options.dm" -#include "code\modules\scripting\stack.dm" -#include "code\modules\scripting\AST\AST Nodes.dm" -#include "code\modules\scripting\AST\Blocks.dm" -#include "code\modules\scripting\AST\Statements.dm" -#include "code\modules\scripting\AST\Operators\Binary Operators.dm" -#include "code\modules\scripting\AST\Operators\Unary Operators.dm" -#include "code\modules\scripting\Implementations\_Logic.dm" -#include "code\modules\scripting\Implementations\Telecomms.dm" -#include "code\modules\scripting\Interpreter\Evaluation.dm" -#include "code\modules\scripting\Interpreter\Interaction.dm" -#include "code\modules\scripting\Interpreter\Interpreter.dm" -#include "code\modules\scripting\Interpreter\Scope.dm" -#include "code\modules\scripting\Parser\Expressions.dm" -#include "code\modules\scripting\Parser\Keywords.dm" -#include "code\modules\scripting\Parser\Parser.dm" -#include "code\modules\scripting\Scanner\Scanner.dm" -#include "code\modules\scripting\Scanner\Tokens.dm" -#include "code\modules\security levels\keycard authentication.dm" -#include "code\modules\security levels\security levels.dm" -#include "code\modules\surgery\appendix.dm" -#include "code\modules\surgery\bones.dm" -#include "code\modules\surgery\braincore.dm" -#include "code\modules\surgery\eye.dm" -#include "code\modules\surgery\face.dm" -#include "code\modules\surgery\generic.dm" -#include "code\modules\surgery\headreattach.dm" -#include "code\modules\surgery\implant.dm" -#include "code\modules\surgery\other.dm" -#include "code\modules\surgery\ribcage.dm" -#include "code\modules\surgery\robolimbs.dm" -#include "code\modules\surgery\surgery.dm" -#include "code\modules\telesci\bscrystal.dm" -#include "code\modules\telesci\gps.dm" -#include "code\modules\telesci\telepad.dm" -#include "code\modules\telesci\telesci_computer.dm" -#include "code\modules\virus2\analyser.dm" -#include "code\modules\virus2\antibodies.dm" -#include "code\modules\virus2\centrifuge.dm" -#include "code\modules\virus2\curer.dm" -#include "code\modules\virus2\disease2.dm" -#include "code\modules\virus2\diseasesplicer.dm" -#include "code\modules\virus2\dishincubator.dm" -#include "code\modules\virus2\effect.dm" -#include "code\modules\virus2\helpers.dm" -#include "code\modules\virus2\isolator.dm" -#include "code\modules\virus2\items_devices.dm" -#include "code\WorkInProgress\autopsy.dm" -#include "code\WorkInProgress\buildmode.dm" -#include "code\WorkInProgress\explosion_particles.dm" -#include "code\WorkInProgress\periodic_news.dm" -#include "code\WorkInProgress\Apples\artifacts.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\falsewall.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_animals.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_plants.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_temple.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_tribe.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_turfs.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\misc_helpers.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\areas.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\circuits_and_design.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\core_control.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\core_field.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\core_gen.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\core_monitor.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_assembly.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_assembly_port.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_assembly_port_construction.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_compressor.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_compressor_construction.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_control.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\fuel_injector.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\fusion_reactions.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\gyrotron.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\gyrotron_controller.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\radiation.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\virtual_particle_catcher.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\circuits_and_designs.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\energy_field.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_capacitor.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen_external.dm" -#include "code\WorkInProgress\Cael_Aislinn\Supermatter\LaserComputer.dm" -#include "code\WorkInProgress\Cael_Aislinn\Supermatter\ZeroPointLaser.dm" -#include "code\WorkInProgress\Chinsky\ashtray.dm" -#include "code\WorkInProgress\Chinsky\guestpass.dm" -#include "code\WorkInProgress\Cib\MedicalSideEffects.dm" -#include "code\WorkInProgress\kilakk\fax.dm" -#include "code\WorkInProgress\Mini\atmos_control.dm" -#include "code\WorkInProgress\Ported\policetape.dm" -#include "code\WorkInProgress\SkyMarshal\officer_stuff.dm" -#include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm" -#include "code\WorkInProgress\Yinadele\Supermatter.dm" -#include "code\ZAS\Airflow.dm" -#include "code\ZAS\Connection.dm" -#include "code\ZAS\Debug.dm" -#include "code\ZAS\FEA_gas_mixture.dm" -#include "code\ZAS\FEA_system.dm" -#include "code\ZAS\Fire.dm" -#include "code\ZAS\Functions.dm" -#include "code\ZAS\Plasma.dm" -#include "code\ZAS\Variable Settings.dm" -#include "code\ZAS\ZAS_Turfs.dm" -#include "code\ZAS\ZAS_Zones.dm" -#include "interface\interface.dm" -#include "interface\skin.dmf" -#include "maps\tgstation2.dmm" -// END_INCLUDE diff --git a/code/__HELPERS/global_lists.dm.bak b/code/__HELPERS/global_lists.dm.bak deleted file mode 100644 index 15c988c0..00000000 --- a/code/__HELPERS/global_lists.dm.bak +++ /dev/null @@ -1,121 +0,0 @@ -var/list/clients = list() //list of all clients -var/list/admins = list() //list of all clients whom are admins -var/list/directory = list() //list of all ckeys with associated client - -//Since it didn't really belong in any other category, I'm putting this here -//This is for procs to replace all the goddamn 'in world's that are chilling around the code - -var/global/list/player_list = list() //List of all mobs **with clients attached**. Excludes /mob/new_player -var/global/list/mob_list = list() //List of all mobs, including clientless -var/global/list/living_mob_list = list() //List of all alive mobs, including clientless. Excludes /mob/new_player -var/global/list/dead_mob_list = list() //List of all dead mobs, including clientless. Excludes /mob/new_player - -var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time -var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions -var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff -var/global/list/landmarks_list = list() //list of all landmarks created -var/global/list/surgery_steps = list() //list of all surgery steps |BS12 -var/global/list/side_effects = list() //list of all medical sideeffects types by thier names |BS12 -var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking. -var/global/list/joblist = list() //list of all jobstypes, minus borg and AI - -//Languages/species/whitelist. -var/global/list/all_species[0] -var/global/list/all_languages[0] -var/global/list/whitelisted_species = list("Human") - -// Posters -var/global/list/datum/poster/poster_designs = typesof(/datum/poster) - /datum/poster - -//Preferences stuff - //Hairstyles -var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name -var/global/list/hair_styles_male_list = list() -var/global/list/hair_styles_female_list = list() -var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name -var/global/list/facial_hair_styles_male_list = list() -var/global/list/facial_hair_styles_female_list = list() -var/global/list/skin_styles_female_list = list() //unused - //Underwear -var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "None") //Curse whoever made male/female underwear diffrent colours -var/global/list/underwear_f = list("Red", "White", "Yellow", "Blue", "Black", "Thong", "None") - //Backpacks -var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt") - -////////////////////////// -/////Initial Building///// -////////////////////////// - -/hook/startup/proc/makeDatumRefLists() - var/list/paths - - //Hair - Initialise all /datum/sprite_accessory/hair into an list indexed by hair-style name - paths = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair - for(var/path in paths) - var/datum/sprite_accessory/hair/H = new path() - hair_styles_list[H.name] = H - switch(H.gender) - if(MALE) hair_styles_male_list += H.name - if(FEMALE) hair_styles_female_list += H.name - else - hair_styles_male_list += H.name - hair_styles_female_list += H.name - - //Facial Hair - Initialise all /datum/sprite_accessory/facial_hair into an list indexed by facialhair-style name - paths = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair - for(var/path in paths) - var/datum/sprite_accessory/facial_hair/H = new path() - facial_hair_styles_list[H.name] = H - switch(H.gender) - if(MALE) facial_hair_styles_male_list += H.name - if(FEMALE) facial_hair_styles_female_list += H.name - else - facial_hair_styles_male_list += H.name - facial_hair_styles_female_list += H.name - - //Surgery Steps - Initialize all /datum/surgery_step into a list - paths = typesof(/datum/surgery_step)-/datum/surgery_step - for(var/T in paths) - var/datum/surgery_step/S = new T - surgery_steps += S - sort_surgeries() - - //Medical side effects. List all effects by their names - paths = typesof(/datum/medical_effect)-/datum/medical_effect - for(var/T in paths) - var/datum/medical_effect/M = new T - side_effects[M.name] = T - - //List of job. I can't believe this was calculated multiple times per tick! - paths = typesof(/datum/job) -list(/datum/job,/datum/job/ai,/datum/job/cyborg) - for(var/T in paths) - var/datum/job/J = new T - joblist[J.title] = J - - //Languages and species. - paths = typesof(/datum/language)-/datum/language - for(var/T in paths) - var/datum/language/L = new T - all_languages[L.name] = L - - paths = typesof(/datum/species)-/datum/species - for(var/T in paths) - var/datum/species/S = new T - all_species[S.name] = S - - if(S.flags & IS_WHITELISTED) - whitelisted_species += S.name - - return 1 - -/* // Uncomment to debug chemical reaction list. -/client/verb/debug_chemical_list() - - for (var/reaction in chemical_reactions_list) - . += "chemical_reactions_list\[\"[reaction]\"\] = \"[chemical_reactions_list[reaction]]\"\n" - if(islist(chemical_reactions_list[reaction])) - var/list/L = chemical_reactions_list[reaction] - for(var/t in L) - . += " has: [t]\n" - world << . -*/ \ No newline at end of file diff --git a/code/controllers/configuration.dm.bak b/code/controllers/configuration.dm.bak deleted file mode 100644 index 75065630..00000000 --- a/code/controllers/configuration.dm.bak +++ /dev/null @@ -1,646 +0,0 @@ -/datum/configuration - var/server_name = null // server name (for world name / status) - var/server_suffix = 0 // generate numeric suffix based on server port - - var/nudge_script_path = "nudge.py" // where the nudge.py script is located - - var/log_ooc = 0 // log OOC channel - var/log_access = 0 // log login/logout - var/log_say = 0 // log client say - var/log_admin = 0 // log admin actions - var/log_debug = 1 // log debug output - var/log_game = 0 // log game events - var/log_vote = 0 // log voting - var/log_whisper = 0 // log client whisper - var/log_emote = 0 // log emotes - var/log_attack = 0 // log attack messages - var/log_adminchat = 0 // log admin chat messages - var/log_adminwarn = 0 // log warnings admins get about bomb construction and such - var/log_pda = 0 // log pda messages - var/log_hrefs = 0 // logs all links clicked in-game. Could be used for debugging and tracking down exploits - var/log_runtime = 0 // logs world.log to a file - var/sql_enabled = 1 // for sql switching - var/allow_admin_ooccolor = 0 // Allows admins with relevant permissions to have their own ooc colour - var/allow_vote_restart = 0 // allow votes to restart - var/ert_admin_call_only = 0 - var/allow_vote_mode = 0 // allow votes to change mode - var/allow_admin_jump = 1 // allows admin jumping - var/allow_admin_spawning = 1 // allows admin item spawning - var/allow_admin_rev = 1 // allows admin revives - var/vote_delay = 6000 // minimum time between voting sessions (deciseconds, 10 minute default) - var/vote_period = 600 // length of voting period (deciseconds, default 1 minute) - var/vote_autotransfer_initial = 108000 // Length of time before the first autotransfer vote is called - var/vote_autotransfer_interval = 36000 // length of time before next sequential autotransfer vote - var/vote_autogamemode_timeleft = 100 //Length of time before round start when autogamemode vote is called (in seconds, default 100). - var/vote_no_default = 0 // vote does not default to nochange/norestart (tbi) - var/vote_no_dead = 0 // dead people can't vote (tbi) -// var/enable_authentication = 0 // goon authentication - var/del_new_on_log = 1 // del's new players if they log before they spawn in - var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard - var/traitor_scaling = 0 //if amount of traitors scales based on amount of players - var/objectives_disabled = 0 //if objectives are disabled or not - var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other - var/continous_rounds = 1 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke. - var/allow_Metadata = 0 // Metadata is supported. - var/popup_admin_pm = 0 //adminPMs to non-admins show in a pop-up 'reply' window when set to 1. - var/Ticklag = 0.9 - var/Tickcomp = 0 - var/socket_talk = 0 // use socket_talk to communicate with other processes - var/list/resource_urls = null - var/antag_hud_allowed = 0 // Ghosts can turn on Antagovision to see a HUD of who is the bad guys this round. - var/antag_hud_restricted = 0 // Ghosts that turn on Antagovision cannot rejoin the round. - var/list/mode_names = list() - var/list/modes = list() // allowed modes - var/list/votable_modes = list() // votable modes - var/list/probabilities = list() // relative probability of each mode - var/humans_need_surnames = 0 - var/allow_random_events = 0 // enables random events mid-round when set to 1 - var/allow_ai = 1 // allow ai job - var/hostedby = null - var/respawn = 1 - var/guest_jobban = 1 - var/usewhitelist = 0 - var/kick_inactive = 0 //force disconnect for inactive players - var/load_jobs_from_txt = 0 - var/ToRban = 0 - var/automute_on = 0 //enables automuting/spam prevention - var/jobs_have_minimal_access = 0 //determines whether jobs use minimal access or expanded access. - - var/cult_ghostwriter = 1 //Allows ghosts to write in blood in cult rounds... - var/cult_ghostwriter_req_cultists = 10 //...so long as this many cultists are active. - - var/disable_player_mice = 0 - var/uneducated_mice = 0 //Set to 1 to prevent newly-spawned mice from understanding human speech - - var/usealienwhitelist = 0 - var/limitalienplayers = 0 - var/alien_to_human_ratio = 0.5 - - var/server - var/banappeals - var/wikiurl - var/forumurl - - //Alert level description - var/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." - var/alert_desc_blue_upto = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted." - var/alert_desc_blue_downto = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed." - var/alert_desc_red_upto = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." - var/alert_desc_red_downto = "The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised." - var/alert_desc_delta = "The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." - - var/forbid_singulo_possession = 0 - - //game_options.txt configs - - var/health_threshold_softcrit = 0 - var/health_threshold_crit = 0 - var/health_threshold_dead = -100 - - var/organ_health_multiplier = 1 - var/organ_regeneration_multiplier = 1 - - var/bones_can_break = 0 - var/limbs_can_break = 0 - - var/revival_pod_plants = 1 - var/revival_cloning = 1 - var/revival_brain_life = -1 - - //Used for modifying movement speed for mobs. - //Unversal modifiers - var/run_speed = 0 - var/walk_speed = 0 - - //Mob specific modifiers. NOTE: These will affect different mob types in different ways - var/human_delay = 0 - var/robot_delay = 0 - var/monkey_delay = 0 - var/alien_delay = 0 - var/slime_delay = 0 - var/animal_delay = 0 - - var/admin_legacy_system = 0 //Defines whether the server uses the legacy admin system with admins.txt or the SQL system. Config option in config.txt - var/ban_legacy_system = 0 //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. Config option in config.txt - var/use_age_restriction_for_jobs = 0 //Do jobs use account age restrictions? --requires database - - var/simultaneous_pm_warning_timeout = 100 - - var/use_recursive_explosions //Defines whether the server uses recursive or circular explosions. - - var/assistant_maint = 0 //Do assistants get maint access? - var/gateway_delay = 18000 //How long the gateway takes before it activates. Default is half an hour. - var/ghost_interaction = 0 - - var/comms_password = "" - - var/use_irc_bot = 0 - var/irc_bot_host = "" - var/main_irc = "" - var/admin_irc = "" - var/python_path = "" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix - var/use_lib_nudge = 0 //Use the C library nudge instead of the python nudge. - -/datum/configuration/New() - var/list/L = typesof(/datum/game_mode) - /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). - var/datum/game_mode/M = new T() - - if (M.config_tag) - if(!(M.config_tag in modes)) // ensure each mode is added only once - log_misc("Adding game mode [M.name] ([M.config_tag]) to configuration.") - src.modes += M.config_tag - src.mode_names[M.config_tag] = M.name - src.probabilities[M.config_tag] = M.probability - if (M.votable) - src.votable_modes += M.config_tag - del(M) - src.votable_modes += "secret" - -/datum/configuration/proc/load(filename, type = "config") //the type can also be game_options, in which case it uses a different switch. not making it separate to not copypaste code - Urist - var/list/Lines = file2list(filename) - - for(var/t in Lines) - if(!t) continue - - t = trim(t) - if (length(t) == 0) - continue - else if (copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - var/value = null - - if (pos) - name = lowertext(copytext(t, 1, pos)) - value = copytext(t, pos + 1) - else - name = lowertext(t) - - if (!name) - continue - - if(type == "config") - switch (name) - if ("resource_urls") - config.resource_urls = text2list(value, " ") - - if ("admin_legacy_system") - config.admin_legacy_system = 1 - - if ("ban_legacy_system") - config.ban_legacy_system = 1 - - if ("use_age_restriction_for_jobs") - config.use_age_restriction_for_jobs = 1 - - if ("jobs_have_minimal_access") - config.jobs_have_minimal_access = 1 - - if ("use_recursive_explosions") - use_recursive_explosions = 1 - - if ("log_ooc") - config.log_ooc = 1 - - if ("log_access") - config.log_access = 1 - - if ("sql_enabled") - config.sql_enabled = text2num(value) - - if ("log_say") - config.log_say = 1 - - if ("log_admin") - config.log_admin = 1 - - if ("log_debug") - config.log_debug = text2num(value) - - if ("log_game") - config.log_game = 1 - - if ("log_vote") - config.log_vote = 1 - - if ("log_whisper") - config.log_whisper = 1 - - if ("log_attack") - config.log_attack = 1 - - if ("log_emote") - config.log_emote = 1 - - if ("log_adminchat") - config.log_adminchat = 1 - - if ("log_adminwarn") - config.log_adminwarn = 1 - - if ("log_pda") - config.log_pda = 1 - - if ("log_hrefs") - config.log_hrefs = 1 - - if ("log_runtime") - config.log_runtime = 1 - - if("allow_admin_ooccolor") - config.allow_admin_ooccolor = 1 - - if ("allow_vote_restart") - config.allow_vote_restart = 1 - - if ("allow_vote_mode") - config.allow_vote_mode = 1 - - if ("allow_admin_jump") - config.allow_admin_jump = 1 - - if("allow_admin_rev") - config.allow_admin_rev = 1 - - if ("allow_admin_spawning") - config.allow_admin_spawning = 1 - - if ("no_dead_vote") - config.vote_no_dead = 1 - - if ("default_no_vote") - config.vote_no_default = 1 - - if ("vote_delay") - config.vote_delay = text2num(value) - - if ("vote_period") - config.vote_period = text2num(value) - - if ("vote_autotransfer_initial") - config.vote_autotransfer_initial = text2num(value) - - if ("vote_autotransfer_interval") - config.vote_autotransfer_interval = text2num(value) - - if ("vote_autogamemode_timeleft") - config.vote_autogamemode_timeleft = text2num(value) - - if("ert_admin_only") - config.ert_admin_call_only = 1 - - if ("allow_ai") - config.allow_ai = 1 - -// if ("authentication") -// config.enable_authentication = 1 - - if ("norespawn") - config.respawn = 0 - - if ("servername") - config.server_name = value - - if ("serversuffix") - config.server_suffix = 1 - - if ("nudge_script_path") - config.nudge_script_path = value - - if ("hostedby") - config.hostedby = value - - if ("server") - config.server = value - - if ("banappeals") - config.banappeals = value - - if ("wikiurl") - config.wikiurl = value - - if ("forumurl") - config.forumurl = value - - if ("guest_jobban") - config.guest_jobban = 1 - - if ("guest_ban") - guests_allowed = 0 - - if ("usewhitelist") - config.usewhitelist = 1 - - if ("feature_object_spell_system") - config.feature_object_spell_system = 1 - - if ("allow_metadata") - config.allow_Metadata = 1 - - if ("traitor_scaling") - config.traitor_scaling = 1 - - if ("objectives_disabled") - config.objectives_disabled = 1 - - if("protect_roles_from_antagonist") - config.protect_roles_from_antagonist = 1 - - if ("probability") - var/prob_pos = findtext(value, " ") - var/prob_name = null - var/prob_value = null - - if (prob_pos) - prob_name = lowertext(copytext(value, 1, prob_pos)) - prob_value = copytext(value, prob_pos + 1) - if (prob_name in config.modes) - config.probabilities[prob_name] = text2num(prob_value) - else - log_misc("Unknown game mode probability configuration definition: [prob_name].") - else - log_misc("Incorrect probability configuration definition: [prob_name] [prob_value].") - - if("allow_random_events") - config.allow_random_events = 1 - - if("kick_inactive") - config.kick_inactive = 1 - - if("load_jobs_from_txt") - load_jobs_from_txt = 1 - - if("alert_red_upto") - config.alert_desc_red_upto = value - - if("alert_red_downto") - config.alert_desc_red_downto = value - - if("alert_blue_downto") - config.alert_desc_blue_downto = value - - if("alert_blue_upto") - config.alert_desc_blue_upto = value - - if("alert_green") - config.alert_desc_green = value - - if("alert_delta") - config.alert_desc_delta = value - - if("forbid_singulo_possession") - forbid_singulo_possession = 1 - - if("popup_admin_pm") - config.popup_admin_pm = 1 - - if("allow_holidays") - Holiday = 1 - - if("use_irc_bot") - use_irc_bot = 1 - - if("ticklag") - Ticklag = text2num(value) - - if("allow_antag_hud") - config.antag_hud_allowed = 1 - if("antag_hud_restricted") - config.antag_hud_restricted = 1 - - if("socket_talk") - socket_talk = text2num(value) - - if("tickcomp") - Tickcomp = 1 - - if("humans_need_surnames") - humans_need_surnames = 1 - - if("tor_ban") - ToRban = 1 - - if("automute_on") - automute_on = 1 - - if("usealienwhitelist") - usealienwhitelist = 1 - - if("alien_player_ratio") - limitalienplayers = 1 - alien_to_human_ratio = text2num(value) - - if("assistant_maint") - config.assistant_maint = 1 - - if("gateway_delay") - config.gateway_delay = text2num(value) - - if("continuous_rounds") - config.continous_rounds = 1 - - if("ghost_interaction") - config.ghost_interaction = 1 - - if("disable_player_mice") - config.disable_player_mice = 1 - - if("uneducated_mice") - config.uneducated_mice = 1 - - if("comms_password") - config.comms_password = value - - if("irc_bot_host") - config.irc_bot_host = value - - if("main_irc") - config.main_irc = value - - if("admin_irc") - config.admin_irc = value - - if("python_path") - if(value) - config.python_path = value - else - if(world.system_type == UNIX) - config.python_path = "/usr/bin/env python2" - else //probably windows, if not this should work anyway - config.python_path = "python" - - if("use_lib_nudge") - config.use_lib_nudge = 1 - - if("allow_cult_ghostwriter") - config.cult_ghostwriter = 1 - - if("req_cult_ghostwriter") - config.cult_ghostwriter_req_cultists = value - - else - log_misc("Unknown setting in configuration: '[name]'") - - else if(type == "game_options") - if(!value) - log_misc("Unknown value for setting [name] in [filename].") - value = text2num(value) - - switch(name) - if("health_threshold_crit") - config.health_threshold_crit = value - if("health_threshold_softcrit") - config.health_threshold_softcrit = value - if("health_threshold_dead") - config.health_threshold_dead = value - if("revival_pod_plants") - config.revival_pod_plants = value - if("revival_cloning") - config.revival_cloning = value - if("revival_brain_life") - config.revival_brain_life = value - if("run_speed") - config.run_speed = value - if("walk_speed") - config.walk_speed = value - if("human_delay") - config.human_delay = value - if("robot_delay") - config.robot_delay = value - if("monkey_delay") - config.monkey_delay = value - if("alien_delay") - config.alien_delay = value - if("slime_delay") - config.slime_delay = value - if("animal_delay") - config.animal_delay = value - if("organ_health_multiplier") - config.organ_health_multiplier = value / 100 - if("organ_regeneration_multiplier") - config.organ_regeneration_multiplier = value / 100 - if("bones_can_break") - config.bones_can_break = value - if("limbs_can_break") - config.limbs_can_break = value - else - log_misc("Unknown setting in configuration: '[name]'") - -/datum/configuration/proc/loadsql(filename) // -- TLE - var/list/Lines = file2list(filename) - for(var/t in Lines) - if(!t) continue - - t = trim(t) - if (length(t) == 0) - continue - else if (copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - var/value = null - - if (pos) - name = lowertext(copytext(t, 1, pos)) - value = copytext(t, pos + 1) - else - name = lowertext(t) - - if (!name) - continue - - switch (name) - if ("address") - sqladdress = value - if ("port") - sqlport = value - if ("database") - sqldb = value - if ("login") - sqllogin = value - if ("password") - sqlpass = value - if ("feedback_database") - sqlfdbkdb = value - if ("feedback_login") - sqlfdbklogin = value - if ("feedback_password") - sqlfdbkpass = value - if ("enable_stat_tracking") - sqllogging = 1 - else - log_misc("Unknown setting in configuration: '[name]'") - -/datum/configuration/proc/loadforumsql(filename) // -- TLE - var/list/Lines = file2list(filename) - for(var/t in Lines) - if(!t) continue - - t = trim(t) - if (length(t) == 0) - continue - else if (copytext(t, 1, 2) == "#") - continue - - var/pos = findtext(t, " ") - var/name = null - var/value = null - - if (pos) - name = lowertext(copytext(t, 1, pos)) - value = copytext(t, pos + 1) - else - name = lowertext(t) - - if (!name) - continue - - switch (name) - if ("address") - forumsqladdress = value - if ("port") - forumsqlport = value - if ("database") - forumsqldb = value - if ("login") - forumsqllogin = value - if ("password") - forumsqlpass = value - if ("activatedgroup") - forum_activated_group = value - if ("authenticatedgroup") - forum_authenticated_group = value - else - log_misc("Unknown setting in configuration: '[name]'") - -/datum/configuration/proc/pick_mode(mode_name) - // 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). - for (var/T in (typesof(/datum/game_mode) - /datum/game_mode)) - var/datum/game_mode/M = new T() - if (M.config_tag && M.config_tag == mode_name) - return M - del(M) - return new /datum/game_mode/extended() - -/datum/configuration/proc/get_runnable_modes() - var/list/datum/game_mode/runnable_modes = new - for (var/T in (typesof(/datum/game_mode) - /datum/game_mode)) - var/datum/game_mode/M = new T() - //world << "DEBUG: [T], tag=[M.config_tag], prob=[probabilities[M.config_tag]]" - if (!(M.config_tag in modes)) - del(M) - continue - if (probabilities[M.config_tag]<=0) - del(M) - continue - if (M.can_start()) - runnable_modes[M] = probabilities[M.config_tag] - //world << "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]" - return runnable_modes diff --git a/code/datums/datumvars.dm.bak b/code/datums/datumvars.dm.bak deleted file mode 100644 index bf230a23..00000000 --- a/code/datums/datumvars.dm.bak +++ /dev/null @@ -1,930 +0,0 @@ - -// reference: /client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) - -client - proc/debug_variables(datum/D in world) - set category = "Debug" - set name = "View Variables" - //set src in world - - - if(!usr.client || !usr.client.holder) - usr << "\red You need to be an administrator to access this." - return - - - var/title = "" - var/body = "" - - if(!D) return - if(istype(D, /atom)) - var/atom/A = D - title = "[A.name] (\ref[A]) = [A.type]" - - #ifdef VARSICON - if (A.icon) - body += debug_variable("icon", new/icon(A.icon, A.icon_state, A.dir), 0) - #endif - - var/icon/sprite - - if(istype(D,/atom)) - var/atom/AT = D - if(AT.icon && AT.icon_state) - sprite = new /icon(AT.icon, AT.icon_state) - usr << browse_rsc(sprite, "view_vars_sprite.png") - - title = "[D] (\ref[D]) = [D.type]" - - body += {" "} - - body += "" - - body += "
" - - if(sprite) - body += "" - - body += "
" - else - body += "
" - - body += "
" - - if(istype(D,/atom)) - var/atom/A = D - if(isliving(A)) - body += "[D]" - if(A.dir) - body += "
<< [dir2text(A.dir)] >>" - var/mob/living/M = A - body += "
[M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" - body += {" -
- BRUTE:[M.getBruteLoss()] - FIRE:[M.getFireLoss()] - TOXIN:[M.getToxLoss()] - OXY:[M.getOxyLoss()] - CLONE:[M.getCloneLoss()] - BRAIN:[M.getBrainLoss()] - - - - "} - else - body += "[D]" - if(A.dir) - body += "
<< [dir2text(A.dir)] >>" - else - body += "[D]" - - body += "
" - - body += "
" - - var/formatted_type = text("[D.type]") - if(length(formatted_type) > 25) - var/middle_point = length(formatted_type) / 2 - var/splitpoint = findtext(formatted_type,"/",middle_point) - if(splitpoint) - formatted_type = "[copytext(formatted_type,1,splitpoint)]
[copytext(formatted_type,splitpoint)]" - else - formatted_type = "Type too long" //No suitable splitpoint (/) found. - - body += "
[formatted_type]" - - if(src.holder && src.holder.marked_datum && src.holder.marked_datum == D) - body += "
Marked Object" - - body += "
" - - body += "
Refresh" - - //if(ismob(D)) - // body += "
Show player panel

" - - body += {"
-
" - - body += "

" - - body += "E - Edit, tries to determine the variable type by itself.
" - body += "C - Change, asks you for the var type first.
" - body += "M - Mass modify: changes this variable for all objects of this type.

" - - body += "
Search:

" - - body += "
    " - - var/list/names = list() - for (var/V in D.vars) - names += V - - names = sortList(names) - - for (var/V in names) - body += debug_variable(V, D.vars[V], 0, D) - - body += "
" - - var/html = "" - if (title) - html += "[title]" - html += {""} - html += "" - html += body - - html += {" - - "} - - html += "" - - usr << browse(html, "window=variables\ref[D];size=475x650") - - return - - proc/debug_variable(name, value, level, var/datum/DA = null) - var/html = "" - - if(DA) - html += "
  • (E) (C) (M) " - else - html += "
  • " - - if (isnull(value)) - html += "[name] = null" - - else if (istext(value)) - html += "[name] = \"[value]\"" - - else if (isicon(value)) - #ifdef VARSICON - var/icon/I = new/icon(value) - var/rnd = rand(1,10000) - var/rname = "tmp\ref[I][rnd].png" - usr << browse_rsc(I, rname) - html += "[name] = ([value]) " - #else - html += "[name] = /icon ([value])" - #endif - -/* else if (istype(value, /image)) - #ifdef VARSICON - var/rnd = rand(1, 10000) - var/image/I = value - - src << browse_rsc(I.icon, "tmp\ref[value][rnd].png") - html += "[name] = " - #else - html += "[name] = /image ([value])" - #endif -*/ - else if (isfile(value)) - html += "[name] = '[value]'" - - else if (istype(value, /datum)) - var/datum/D = value - html += "[name] \ref[value] = [D.type]" - - else if (istype(value, /client)) - var/client/C = value - html += "[name] \ref[value] = [C] [C.type]" - // - else if (istype(value, /list)) - var/list/L = value - html += "[name] = /list ([L.len])" - - if (L.len > 0 && !(name == "underlays" || name == "overlays" || name == "vars" || L.len > 500)) - // not sure if this is completely right... - if(0) //(L.vars.len > 0) - html += "
      " - html += "
    " - else - html += "" - - else - html += "[name] = [value]" - - html += "
  • " - - return html - -/client/proc/view_var_Topic(href, href_list, hsrc) - //This should all be moved over to datum/admins/Topic() or something ~Carn - if( (usr.client != src) || !src.holder ) - return - if(href_list["Vars"]) - debug_variables(locate(href_list["Vars"])) - - //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). - else if(href_list["rename"]) - if(!check_rights(R_VAREDIT|R_DEV)) return - - var/mob/M = locate(href_list["rename"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - var/new_name = copytext(sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null),1,MAX_NAME_LEN) - if( !new_name || !M ) return - - message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].") - M.fully_replace_character_name(M.real_name,new_name) - href_list["datumrefresh"] = href_list["rename"] - - else if(href_list["varnameedit"] && href_list["datumedit"]) - if(!check_rights(R_VAREDIT|R_DEV)) return - - var/D = locate(href_list["datumedit"]) - if(!istype(D,/datum) && !istype(D,/client)) - usr << "This can only be used on instances of types /client or /datum" - return - - modify_variables(D, href_list["varnameedit"], 1) - - else if(href_list["varnamechange"] && href_list["datumchange"]) - if(!check_rights(R_VAREDIT|R_DEV)) return - - var/D = locate(href_list["datumchange"]) - if(!istype(D,/datum) && !istype(D,/client)) - usr << "This can only be used on instances of types /client or /datum" - return - - modify_variables(D, href_list["varnamechange"], 0) - - else if(href_list["varnamemass"] && href_list["datummass"]) - if(!check_rights(R_VAREDIT|R_DEV)) return - - var/atom/A = locate(href_list["datummass"]) - if(!istype(A)) - usr << "This can only be used on instances of type /atom" - return - - cmd_mass_modify_object_variables(A, href_list["varnamemass"]) - - else if(href_list["mob_player_panel"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["mob_player_panel"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.holder.show_player_panel(M) - href_list["datumrefresh"] = href_list["mob_player_panel"] - - else if(href_list["give_spell"]) - if(!check_rights(R_ADMIN|R_FUN)) return - - var/mob/M = locate(href_list["give_spell"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_spell(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["give_disease"]) - if(!check_rights(R_ADMIN|R_FUN)) return - - var/mob/M = locate(href_list["give_disease"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_disease(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["ninja"]) - if(!check_rights(R_SPAWN)) return - - var/mob/M = locate(href_list["ninja"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_ninjafy(M) - href_list["datumrefresh"] = href_list["ninja"] - - else if(href_list["godmode"]) - if(!check_rights(R_REJUVINATE)) return - - var/mob/M = locate(href_list["godmode"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_godmode(M) - href_list["datumrefresh"] = href_list["godmode"] - - else if(href_list["gib"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["gib"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_gib(M) - - else if(href_list["build_mode"]) - if(!check_rights(R_BUILDMODE)) return - - var/mob/M = locate(href_list["build_mode"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - togglebuildmode(M) - href_list["datumrefresh"] = href_list["build_mode"] - - else if(href_list["drop_everything"]) - if(!check_rights(R_DEBUG|R_ADMIN)) return - - var/mob/M = locate(href_list["drop_everything"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - if(usr.client) - usr.client.cmd_admin_drop_everything(M) - - else if(href_list["direct_control"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["direct_control"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - if(usr.client) - usr.client.cmd_assume_direct_control(M) - - else if(href_list["make_skeleton"]) - if(!check_rights(R_FUN)) return - - var/mob/living/carbon/human/H = locate(href_list["make_skeleton"]) - if(!istype(H)) - usr << "This can only be used on instances of type /mob/living/carbon/human" - return - - H.makeSkeleton() - href_list["datumrefresh"] = href_list["make_skeleton"] - - else if(href_list["delall"]) - if(!check_rights(R_DEBUG|R_SERVER)) return - - var/obj/O = locate(href_list["delall"]) - if(!isobj(O)) - usr << "This can only be used on instances of type /obj" - return - - var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") - if(action_type == "Cancel" || !action_type) - return - - if(alert("Are you really sure you want to delete all objects of type [O.type]?",,"Yes","No") != "Yes") - return - - if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes") - return - - var/O_type = O.type - switch(action_type) - if("Strict type") - var/i = 0 - for(var/obj/Obj in world) - if(Obj.type == O_type) - i++ - del(Obj) - if(!i) - usr << "No objects of this type exist" - return - log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - message_admins("\blue [key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - if("Type and subtypes") - var/i = 0 - for(var/obj/Obj in world) - if(istype(Obj,O_type)) - i++ - del(Obj) - if(!i) - usr << "No objects of this type exist" - return - log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - - else if(href_list["explode"]) - if(!check_rights(R_DEBUG|R_FUN)) return - - var/atom/A = locate(href_list["explode"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_explosion(A) - href_list["datumrefresh"] = href_list["explode"] - - else if(href_list["emp"]) - if(!check_rights(R_DEBUG|R_FUN)) return - - var/atom/A = locate(href_list["emp"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_emp(A) - href_list["datumrefresh"] = href_list["emp"] - - else if(href_list["mark_object"]) - if(!check_rights(0)) return - - var/datum/D = locate(href_list["mark_object"]) - if(!istype(D)) - usr << "This can only be done to instances of type /datum" - return - - src.holder.marked_datum = D - href_list["datumrefresh"] = href_list["mark_object"] - - else if(href_list["rotatedatum"]) - if(!check_rights(0)) return - - var/atom/A = locate(href_list["rotatedatum"]) - if(!istype(A)) - usr << "This can only be done to instances of type /atom" - return - - switch(href_list["rotatedir"]) - if("right") A.dir = turn(A.dir, -45) - if("left") A.dir = turn(A.dir, 45) - href_list["datumrefresh"] = href_list["rotatedatum"] - - else if(href_list["makemonkey"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makemonkey"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("monkeyone"=href_list["makemonkey"])) - - else if(href_list["makerobot"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makerobot"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makerobot"=href_list["makerobot"])) - - else if(href_list["makealien"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makealien"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makealien"=href_list["makealien"])) - - else if(href_list["makeslime"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeslime"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeslime"=href_list["makeslime"])) - - else if(href_list["makeai"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeai"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeai"=href_list["makeai"])) - - else if(href_list["setmutantrace"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["setmutantrace"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow","tajaran","skrell","vox") - switch(new_mutantrace) - if(null) - return - if("NONE") - new_mutantrace = "" - if(!H) - usr << "Mob doesn't exist anymore" - return - if(H.dna) - H.dna.mutantrace = new_mutantrace - H.update_mutantrace() - - else if(href_list["setspecies"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["setspecies"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - var/new_species = input("Please choose a new species.","Species",null) as null|anything in all_species - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.set_species(new_species)) - usr << "Set species of [H] to [H.species]." - H.regenerate_icons() - else - usr << "Failed! Something went wrong." - - else if(href_list["addlanguage"]) - if(!check_rights(R_SPAWN)) return - - var/mob/H = locate(href_list["addlanguage"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - - var/new_language = input("Please choose a language to add.","Language",null) as null|anything in all_languages - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.add_language(new_language)) - usr << "Added [new_language] to [H]." - else - usr << "Mob already knows that language." - - else if(href_list["remlanguage"]) - if(!check_rights(R_SPAWN)) return - - var/mob/H = locate(href_list["remlanguage"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - - if(!H.languages.len) - usr << "This mob knows no languages." - return - - var/datum/language/rem_language = input("Please choose a language to remove.","Language",null) as null|anything in H.languages - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.remove_language(rem_language.name)) - usr << "Removed [rem_language] from [H]." - else - usr << "Mob doesn't know that language." - - else if(href_list["addverb"]) - if(!check_rights(R_DEBUG|R_DEV)) return - - var/mob/living/H = locate(href_list["addverb"]) - - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living" - return - var/list/possibleverbs = list() - possibleverbs += "Cancel" // One for the top... - possibleverbs += typesof(/mob/proc,/mob/verb,/mob/living/proc,/mob/living/verb) - switch(H.type) - if(/mob/living/carbon/human) - possibleverbs += typesof(/mob/living/carbon/proc,/mob/living/carbon/verb,/mob/living/carbon/human/verb,/mob/living/carbon/human/proc) - if(/mob/living/silicon/robot) - possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/robot/proc,/mob/living/silicon/robot/verb) - if(/mob/living/silicon/ai) - possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/ai/proc,/mob/living/silicon/ai/verb) - possibleverbs -= H.verbs - possibleverbs += "Cancel" // ...And one for the bottom - - var/verb = input("Select a verb!", "Verbs",null) as anything in possibleverbs - if(!H) - usr << "Mob doesn't exist anymore" - return - if(!verb || verb == "Cancel") - return - else - H.verbs += verb - - else if(href_list["remverb"]) - if(!check_rights(R_DEBUG|R_DEV)) return - - var/mob/H = locate(href_list["remverb"]) - - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - var/verb = input("Please choose a verb to remove.","Verbs",null) as null|anything in H.verbs - if(!H) - usr << "Mob doesn't exist anymore" - return - if(!verb) - return - else - H.verbs -= verb - - - else if(href_list["fix_nano"]) - if(!check_rights(R_DEBUG)) return - - var/mob/H = locate(href_list["fix_nano"]) - - if(!istype(H) || !H.client) - usr << "This can only be done on mobs with clients" - return - - - - nanomanager.send_resources(H.client) - - usr << "Resource files sent" - H << "Your NanoUI Resource files have been refreshed" - - log_admin("[key_name(usr)] resent the NanoUI resource files to [key_name(H)] ") - - - - else if(href_list["regenerateicons"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["regenerateicons"]) - if(!ismob(M)) - usr << "This can only be done to instances of type /mob" - return - M.regenerate_icons() - - else if(href_list["adjustDamage"] && href_list["mobToDamage"]) - if(!check_rights(R_DEBUG|R_ADMIN|R_FUN)) return - - var/mob/living/L = locate(href_list["mobToDamage"]) - if(!istype(L)) return - - var/Text = href_list["adjustDamage"] - - var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num - - if(!L) - usr << "Mob doesn't exist anymore" - return - - switch(Text) - if("brute") L.adjustBruteLoss(amount) - if("fire") L.adjustFireLoss(amount) - if("toxin") L.adjustToxLoss(amount) - if("oxygen")L.adjustOxyLoss(amount) - if("brain") L.adjustBrainLoss(amount) - if("clone") L.adjustCloneLoss(amount) - else - usr << "You caused an error. DEBUG: Text:[Text] Mob:[L]" - return - - if(amount != 0) - log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") - message_admins("\blue [key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") - href_list["datumrefresh"] = href_list["mobToDamage"] - - if(href_list["datumrefresh"]) - var/datum/DAT = locate(href_list["datumrefresh"]) - if(!istype(DAT, /datum)) - return - src.debug_variables(DAT) - - return - diff --git a/code/datums/datumvars.dm.bak.bak b/code/datums/datumvars.dm.bak.bak deleted file mode 100644 index 9af503b5..00000000 --- a/code/datums/datumvars.dm.bak.bak +++ /dev/null @@ -1,909 +0,0 @@ - -// reference: /client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) - -client - proc/debug_variables(datum/D in world) - set category = "Debug" - set name = "View Variables" - //set src in world - - - if(!usr.client || !usr.client.holder) - usr << "\red You need to be an administrator to access this." - return - - - var/title = "" - var/body = "" - - if(!D) return - if(istype(D, /atom)) - var/atom/A = D - title = "[A.name] (\ref[A]) = [A.type]" - - #ifdef VARSICON - if (A.icon) - body += debug_variable("icon", new/icon(A.icon, A.icon_state, A.dir), 0) - #endif - - var/icon/sprite - - if(istype(D,/atom)) - var/atom/AT = D - if(AT.icon && AT.icon_state) - sprite = new /icon(AT.icon, AT.icon_state) - usr << browse_rsc(sprite, "view_vars_sprite.png") - - title = "[D] (\ref[D]) = [D.type]" - - body += {" "} - - body += "" - - body += "
    " - - if(sprite) - body += "" - - body += "
    " - else - body += "
    " - - body += "
    " - - if(istype(D,/atom)) - var/atom/A = D - if(isliving(A)) - body += "[D]" - if(A.dir) - body += "
    << [dir2text(A.dir)] >>" - var/mob/living/M = A - body += "
    [M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]" - body += {" -
    - BRUTE:[M.getBruteLoss()] - FIRE:[M.getFireLoss()] - TOXIN:[M.getToxLoss()] - OXY:[M.getOxyLoss()] - CLONE:[M.getCloneLoss()] - BRAIN:[M.getBrainLoss()] - - - - "} - else - body += "[D]" - if(A.dir) - body += "
    << [dir2text(A.dir)] >>" - else - body += "[D]" - - body += "
    " - - body += "
    " - - var/formatted_type = text("[D.type]") - if(length(formatted_type) > 25) - var/middle_point = length(formatted_type) / 2 - var/splitpoint = findtext(formatted_type,"/",middle_point) - if(splitpoint) - formatted_type = "[copytext(formatted_type,1,splitpoint)]
    [copytext(formatted_type,splitpoint)]" - else - formatted_type = "Type too long" //No suitable splitpoint (/) found. - - body += "
    [formatted_type]" - - if(src.holder && src.holder.marked_datum && src.holder.marked_datum == D) - body += "
    Marked Object" - - body += "
    " - - body += "
    Refresh" - - //if(ismob(D)) - // body += "
    Show player panel

    " - - body += {"
    -
    " - - body += "

    " - - body += "E - Edit, tries to determine the variable type by itself.
    " - body += "C - Change, asks you for the var type first.
    " - body += "M - Mass modify: changes this variable for all objects of this type.

    " - - body += "
    Search:

    " - - body += "
      " - - var/list/names = list() - for (var/V in D.vars) - names += V - - names = sortList(names) - - for (var/V in names) - body += debug_variable(V, D.vars[V], 0, D) - - body += "
    " - - var/html = "" - if (title) - html += "[title]" - html += {""} - html += "" - html += body - - html += {" - - "} - - html += "" - - usr << browse(html, "window=variables\ref[D];size=475x650") - - return - - proc/debug_variable(name, value, level, var/datum/DA = null) - var/html = "" - - if(DA) - html += "
  • (E) (C) (M) " - else - html += "
  • " - - if (isnull(value)) - html += "[name] = null" - - else if (istext(value)) - html += "[name] = \"[value]\"" - - else if (isicon(value)) - #ifdef VARSICON - var/icon/I = new/icon(value) - var/rnd = rand(1,10000) - var/rname = "tmp\ref[I][rnd].png" - usr << browse_rsc(I, rname) - html += "[name] = ([value]) " - #else - html += "[name] = /icon ([value])" - #endif - -/* else if (istype(value, /image)) - #ifdef VARSICON - var/rnd = rand(1, 10000) - var/image/I = value - - src << browse_rsc(I.icon, "tmp\ref[value][rnd].png") - html += "[name] = " - #else - html += "[name] = /image ([value])" - #endif -*/ - else if (isfile(value)) - html += "[name] = '[value]'" - - else if (istype(value, /datum)) - var/datum/D = value - html += "[name] \ref[value] = [D.type]" - - else if (istype(value, /client)) - var/client/C = value - html += "[name] \ref[value] = [C] [C.type]" - // - else if (istype(value, /list)) - var/list/L = value - html += "[name] = /list ([L.len])" - - if (L.len > 0 && !(name == "underlays" || name == "overlays" || name == "vars" || L.len > 500)) - // not sure if this is completely right... - if(0) //(L.vars.len > 0) - html += "
      " - html += "
    " - else - html += "" - - else - html += "[name] = [value]" - - html += "
  • " - - return html - -/client/proc/view_var_Topic(href, href_list, hsrc) - //This should all be moved over to datum/admins/Topic() or something ~Carn - if( (usr.client != src) || !src.holder ) - return - if(href_list["Vars"]) - debug_variables(locate(href_list["Vars"])) - - //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). - else if(href_list["rename"]) - if(!check_rights(R_VAREDIT|R_DEV)) return - - var/mob/M = locate(href_list["rename"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - var/new_name = copytext(sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null),1,MAX_NAME_LEN) - if( !new_name || !M ) return - - message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].") - M.fully_replace_character_name(M.real_name,new_name) - href_list["datumrefresh"] = href_list["rename"] - - else if(href_list["varnameedit"] && href_list["datumedit"]) - if(!check_rights(R_VAREDIT|R_DEV)) return - - var/D = locate(href_list["datumedit"]) - if(!istype(D,/datum) && !istype(D,/client)) - usr << "This can only be used on instances of types /client or /datum" - return - - modify_variables(D, href_list["varnameedit"], 1) - - else if(href_list["varnamechange"] && href_list["datumchange"]) - if(!check_rights(R_VAREDIT|R_DEV)) return - - var/D = locate(href_list["datumchange"]) - if(!istype(D,/datum) && !istype(D,/client)) - usr << "This can only be used on instances of types /client or /datum" - return - - modify_variables(D, href_list["varnamechange"], 0) - - else if(href_list["varnamemass"] && href_list["datummass"]) - if(!check_rights(R_VAREDIT|R_DEV)) return - - var/atom/A = locate(href_list["datummass"]) - if(!istype(A)) - usr << "This can only be used on instances of type /atom" - return - - cmd_mass_modify_object_variables(A, href_list["varnamemass"]) - - else if(href_list["mob_player_panel"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["mob_player_panel"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.holder.show_player_panel(M) - href_list["datumrefresh"] = href_list["mob_player_panel"] - - else if(href_list["give_spell"]) - if(!check_rights(R_ADMIN|R_FUN)) return - - var/mob/M = locate(href_list["give_spell"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_spell(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["give_disease"]) - if(!check_rights(R_ADMIN|R_FUN)) return - - var/mob/M = locate(href_list["give_disease"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.give_disease(M) - href_list["datumrefresh"] = href_list["give_spell"] - - else if(href_list["ninja"]) - if(!check_rights(R_SPAWN)) return - - var/mob/M = locate(href_list["ninja"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_ninjafy(M) - href_list["datumrefresh"] = href_list["ninja"] - - else if(href_list["godmode"]) - if(!check_rights(R_REJUVINATE)) return - - var/mob/M = locate(href_list["godmode"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_godmode(M) - href_list["datumrefresh"] = href_list["godmode"] - - else if(href_list["gib"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["gib"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - src.cmd_admin_gib(M) - - else if(href_list["build_mode"]) - if(!check_rights(R_BUILDMODE)) return - - var/mob/M = locate(href_list["build_mode"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - togglebuildmode(M) - href_list["datumrefresh"] = href_list["build_mode"] - - else if(href_list["drop_everything"]) - if(!check_rights(R_DEBUG|R_ADMIN)) return - - var/mob/M = locate(href_list["drop_everything"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - if(usr.client) - usr.client.cmd_admin_drop_everything(M) - - else if(href_list["direct_control"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["direct_control"]) - if(!istype(M)) - usr << "This can only be used on instances of type /mob" - return - - if(usr.client) - usr.client.cmd_assume_direct_control(M) - - else if(href_list["make_skeleton"]) - if(!check_rights(R_FUN)) return - - var/mob/living/carbon/human/H = locate(href_list["make_skeleton"]) - if(!istype(H)) - usr << "This can only be used on instances of type /mob/living/carbon/human" - return - - H.makeSkeleton() - href_list["datumrefresh"] = href_list["make_skeleton"] - - else if(href_list["delall"]) - if(!check_rights(R_DEBUG|R_SERVER)) return - - var/obj/O = locate(href_list["delall"]) - if(!isobj(O)) - usr << "This can only be used on instances of type /obj" - return - - var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") - if(action_type == "Cancel" || !action_type) - return - - if(alert("Are you really sure you want to delete all objects of type [O.type]?",,"Yes","No") != "Yes") - return - - if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes") - return - - var/O_type = O.type - switch(action_type) - if("Strict type") - var/i = 0 - for(var/obj/Obj in world) - if(Obj.type == O_type) - i++ - del(Obj) - if(!i) - usr << "No objects of this type exist" - return - log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - message_admins("\blue [key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - if("Type and subtypes") - var/i = 0 - for(var/obj/Obj in world) - if(istype(Obj,O_type)) - i++ - del(Obj) - if(!i) - usr << "No objects of this type exist" - return - log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - - else if(href_list["explode"]) - if(!check_rights(R_DEBUG|R_FUN)) return - - var/atom/A = locate(href_list["explode"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_explosion(A) - href_list["datumrefresh"] = href_list["explode"] - - else if(href_list["emp"]) - if(!check_rights(R_DEBUG|R_FUN)) return - - var/atom/A = locate(href_list["emp"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_emp(A) - href_list["datumrefresh"] = href_list["emp"] - - else if(href_list["mark_object"]) - if(!check_rights(0)) return - - var/datum/D = locate(href_list["mark_object"]) - if(!istype(D)) - usr << "This can only be done to instances of type /datum" - return - - src.holder.marked_datum = D - href_list["datumrefresh"] = href_list["mark_object"] - - else if(href_list["rotatedatum"]) - if(!check_rights(0)) return - - var/atom/A = locate(href_list["rotatedatum"]) - if(!istype(A)) - usr << "This can only be done to instances of type /atom" - return - - switch(href_list["rotatedir"]) - if("right") A.dir = turn(A.dir, -45) - if("left") A.dir = turn(A.dir, 45) - href_list["datumrefresh"] = href_list["rotatedatum"] - - else if(href_list["makemonkey"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makemonkey"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("monkeyone"=href_list["makemonkey"])) - - else if(href_list["makerobot"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makerobot"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makerobot"=href_list["makerobot"])) - - else if(href_list["makealien"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makealien"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makealien"=href_list["makealien"])) - - else if(href_list["makeslime"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeslime"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeslime"=href_list["makeslime"])) - - else if(href_list["makeai"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["makeai"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return - if(!H) - usr << "Mob doesn't exist anymore" - return - holder.Topic(href, list("makeai"=href_list["makeai"])) - - else if(href_list["setmutantrace"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["setmutantrace"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow","tajaran","skrell","vox") - switch(new_mutantrace) - if(null) - return - if("NONE") - new_mutantrace = "" - if(!H) - usr << "Mob doesn't exist anymore" - return - if(H.dna) - H.dna.mutantrace = new_mutantrace - H.update_mutantrace() - - else if(href_list["setspecies"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["setspecies"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living/carbon/human" - return - - var/new_species = input("Please choose a new species.","Species",null) as null|anything in all_species - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.set_species(new_species)) - usr << "Set species of [H] to [H.species]." - H.regenerate_icons() - else - usr << "Failed! Something went wrong." - - else if(href_list["addlanguage"]) - if(!check_rights(R_SPAWN)) return - - var/mob/H = locate(href_list["addlanguage"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - - var/new_language = input("Please choose a language to add.","Language",null) as null|anything in all_languages - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.add_language(new_language)) - usr << "Added [new_language] to [H]." - else - usr << "Mob already knows that language." - - else if(href_list["remlanguage"]) - if(!check_rights(R_SPAWN)) return - - var/mob/H = locate(href_list["remlanguage"]) - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - - if(!H.languages.len) - usr << "This mob knows no languages." - return - - var/datum/language/rem_language = input("Please choose a language to remove.","Language",null) as null|anything in H.languages - - if(!H) - usr << "Mob doesn't exist anymore" - return - - if(H.remove_language(rem_language.name)) - usr << "Removed [rem_language] from [H]." - else - usr << "Mob doesn't know that language." - - else if(href_list["addverb"]) - if(!check_rights(R_DEBUG|R_DEV)) return - - var/mob/living/H = locate(href_list["addverb"]) - - if(!istype(H)) - usr << "This can only be done to instances of type /mob/living" - return - var/list/possibleverbs = list() - possibleverbs += "Cancel" // One for the top... - possibleverbs += typesof(/mob/proc,/mob/verb,/mob/living/proc,/mob/living/verb) - switch(H.type) - if(/mob/living/carbon/human) - possibleverbs += typesof(/mob/living/carbon/proc,/mob/living/carbon/verb,/mob/living/carbon/human/verb,/mob/living/carbon/human/proc) - if(/mob/living/silicon/robot) - possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/robot/proc,/mob/living/silicon/robot/verb) - if(/mob/living/silicon/ai) - possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/ai/proc,/mob/living/silicon/ai/verb) - possibleverbs -= H.verbs - possibleverbs += "Cancel" // ...And one for the bottom - - var/verb = input("Select a verb!", "Verbs",null) as anything in possibleverbs - if(!H) - usr << "Mob doesn't exist anymore" - return - if(!verb || verb == "Cancel") - return - else - H.verbs += verb - - else if(href_list["remverb"]) - if(!check_rights(R_DEBUG|R_DEV)) return - - var/mob/H = locate(href_list["remverb"]) - - if(!istype(H)) - usr << "This can only be done to instances of type /mob" - return - var/verb = input("Please choose a verb to remove.","Verbs",null) as null|anything in H.verbs - if(!H) - usr << "Mob doesn't exist anymore" - return - if(!verb) - return - else - H.verbs -= verb - - - - else if(href_list["regenerateicons"]) - if(!check_rights(0)) return - - var/mob/M = locate(href_list["regenerateicons"]) - if(!ismob(M)) - usr << "This can only be done to instances of type /mob" - return - M.regenerate_icons() - - else if(href_list["adjustDamage"] && href_list["mobToDamage"]) - if(!check_rights(R_DEBUG|R_ADMIN|R_FUN)) return - - var/mob/living/L = locate(href_list["mobToDamage"]) - if(!istype(L)) return - - var/Text = href_list["adjustDamage"] - - var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num - - if(!L) - usr << "Mob doesn't exist anymore" - return - - switch(Text) - if("brute") L.adjustBruteLoss(amount) - if("fire") L.adjustFireLoss(amount) - if("toxin") L.adjustToxLoss(amount) - if("oxygen")L.adjustOxyLoss(amount) - if("brain") L.adjustBrainLoss(amount) - if("clone") L.adjustCloneLoss(amount) - else - usr << "You caused an error. DEBUG: Text:[Text] Mob:[L]" - return - - if(amount != 0) - log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") - message_admins("\blue [key_name(usr)] dealt [amount] amount of [Text] damage to [L] ") - href_list["datumrefresh"] = href_list["mobToDamage"] - - if(href_list["datumrefresh"]) - var/datum/DAT = locate(href_list["datumrefresh"]) - if(!istype(DAT, /datum)) - return - src.debug_variables(DAT) - - return - diff --git a/code/game/jobs/access.dm.bak b/code/game/jobs/access.dm.bak deleted file mode 100644 index ce7dd821..00000000 --- a/code/game/jobs/access.dm.bak +++ /dev/null @@ -1,511 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -/var/const/access_security = 1 // Security equipment -/var/const/access_brig = 2 // Brig timers and permabrig -/var/const/access_armory = 3 -/var/const/access_forensics_lockers= 4 -/var/const/access_medical = 5 -/var/const/access_morgue = 6 -/var/const/access_tox = 7 -/var/const/access_tox_storage = 8 -/var/const/access_genetics = 9 -/var/const/access_engine = 10 -/var/const/access_engine_equip= 11 -/var/const/access_maint_tunnels = 12 -/var/const/access_external_airlocks = 13 -/var/const/access_emergency_storage = 14 -/var/const/access_change_ids = 15 -/var/const/access_ai_upload = 16 -/var/const/access_teleporter = 17 -/var/const/access_eva = 18 -/var/const/access_heads = 19 -/var/const/access_captain = 20 -/var/const/access_all_personal_lockers = 21 -/var/const/access_chapel_office = 22 -/var/const/access_tech_storage = 23 -/var/const/access_atmospherics = 24 -/var/const/access_bar = 25 -/var/const/access_janitor = 26 -/var/const/access_crematorium = 27 -/var/const/access_kitchen = 28 -/var/const/access_robotics = 29 -/var/const/access_rd = 30 -/var/const/access_cargo = 31 -/var/const/access_construction = 32 -/var/const/access_chemistry = 33 -/var/const/access_cargo_bot = 34 -/var/const/access_hydroponics = 35 -/var/const/access_manufacturing = 36 -/var/const/access_library = 37 -/var/const/access_lawyer = 38 -/var/const/access_virology = 39 -/var/const/access_cmo = 40 -/var/const/access_qm = 41 -/var/const/access_court = 42 -/var/const/access_clown = 43 -/var/const/access_mime = 44 -/var/const/access_surgery = 45 -/var/const/access_theatre = 46 -/var/const/access_research = 47 -/var/const/access_mining = 48 -/var/const/access_mining_office = 49 //not in use -/var/const/access_mailsorting = 50 -/var/const/access_mint = 51 -/var/const/access_mint_vault = 52 -/var/const/access_heads_vault = 53 -/var/const/access_mining_station = 54 -/var/const/access_xenobiology = 55 -/var/const/access_ce = 56 -/var/const/access_hop = 57 -/var/const/access_hos = 58 -/var/const/access_RC_announce = 59 //Request console announcements -/var/const/access_keycard_auth = 60 //Used for events which require at least two people to confirm them -/var/const/access_tcomsat = 61 // has access to the entire telecomms satellite / machinery -/var/const/access_gateway = 62 -/var/const/access_sec_doors = 63 // Security front doors -/var/const/access_psychiatrist = 64 // Psychiatrist's office -/var/const/access_xenoarch = 65 - - //BEGIN CENTCOM ACCESS - /*Should leave plenty of room if we need to add more access levels. -/var/const/Mostly for admin fun times.*/ -/var/const/access_cent_general = 101//General facilities. -/var/const/access_cent_thunder = 102//Thunderdome. -/var/const/access_cent_specops = 103//Special Ops. -/var/const/access_cent_medical = 104//Medical/Research -/var/const/access_cent_living = 105//Living quarters. -/var/const/access_cent_storage = 106//Generic storage areas. -/var/const/access_cent_teleporter = 107//Teleporter. -/var/const/access_cent_creed = 108//Creed's office. -/var/const/access_cent_captain = 109//Captain's office/ID comp/AI. - - //The Syndicate -/var/const/access_syndicate = 150//General Syndicate Access - - //MONEY -/var/const/access_crate_cash = 200 - -/obj/var/list/req_access = null -/obj/var/req_access_txt = "0" -/obj/var/list/req_one_access = null -/obj/var/req_one_access_txt = "0" - -//returns 1 if this mob has sufficient access to use this object -/obj/proc/allowed(mob/M) - //check if it doesn't require any access at all - if(src.check_access(null)) - return 1 - if(istype(M, /mob/living/silicon)) - //AI can do whatever he wants - return 1 - else if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - //if they are holding or wearing a card that has access, that works - if(src.check_access(H.get_active_hand()) || src.check_access(H.wear_id)) - return 1 - else if(istype(M, /mob/living/carbon/monkey) || istype(M, /mob/living/carbon/alien/humanoid)) - var/mob/living/carbon/george = M - //they can only hold things :( - if(src.check_access(george.get_active_hand())) - return 1 - return 0 - -/obj/item/proc/GetAccess() - return list() - -/obj/item/proc/GetID() - return null - -/obj/proc/check_access(obj/item/I) - //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. - if(!src.req_access) - src.req_access = list() - if(src.req_access_txt) - var/list/req_access_str = text2list(req_access_txt,";") - for(var/x in req_access_str) - var/n = text2num(x) - if(n) - req_access += n - - if(!src.req_one_access) - src.req_one_access = list() - if(src.req_one_access_txt) - var/list/req_one_access_str = text2list(req_one_access_txt,";") - for(var/x in req_one_access_str) - var/n = text2num(x) - if(n) - req_one_access += n - - if(!istype(src.req_access, /list)) //something's very wrong - return 1 - - var/list/L = src.req_access - if(!L.len && (!src.req_one_access || !src.req_one_access.len)) //no requirements - return 1 - if(!I) - return 0 - for(var/req in src.req_access) - if(!(req in I.GetAccess())) //doesn't have this access - return 0 - if(src.req_one_access && src.req_one_access.len) - for(var/req in src.req_one_access) - if(req in I.GetAccess()) //has an access from the single access list - return 1 - return 0 - return 1 - - -/obj/proc/check_access_list(var/list/L) - if(!src.req_access && !src.req_one_access) return 1 - if(!istype(src.req_access, /list)) return 1 - if(!src.req_access.len && (!src.req_one_access || !src.req_one_access.len)) return 1 - if(!L) return 0 - if(!istype(L, /list)) return 0 - for(var/req in src.req_access) - if(!(req in L)) //doesn't have this access - return 0 - if(src.req_one_access && src.req_one_access.len) - for(var/req in src.req_one_access) - if(req in L) //has an access from the single access list - return 1 - return 0 - return 1 - -/proc/get_centcom_access(job) - switch(job) - if("VIP Guest") - return list(access_cent_general) - if("Custodian") - return list(access_cent_general, access_cent_living, access_cent_storage) - if("Thunderdome Overseer") - return list(access_cent_general, access_cent_thunder) - if("Intel Officer") - return list(access_cent_general, access_cent_living) - if("Medical Officer") - return list(access_cent_general, access_cent_living, access_cent_medical) - if("Death Commando") - return list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage) - if("Research Officer") - return list(access_cent_general, access_cent_specops, access_cent_medical, access_cent_teleporter, access_cent_storage) - if("BlackOps Commander") - return list(access_cent_general, access_cent_thunder, access_cent_specops, access_cent_living, access_cent_storage, access_cent_creed) - if("Supreme Commander") - return get_all_centcom_access() - -/proc/get_all_accesses() - return list(access_security, access_sec_doors, access_brig, access_armory, access_forensics_lockers, access_court, - access_medical, access_genetics, access_morgue, access_rd, - access_tox, access_tox_storage, access_chemistry, access_engine, access_engine_equip, access_maint_tunnels, - access_external_airlocks, access_change_ids, access_ai_upload, - access_teleporter, access_eva, access_heads, access_captain, access_all_personal_lockers, - access_tech_storage, access_chapel_office, access_atmospherics, access_kitchen, - access_bar, access_janitor, access_crematorium, access_robotics, access_cargo, access_construction, - access_hydroponics, access_library, access_lawyer, access_virology, access_psychiatrist, access_cmo, access_qm, access_clown, access_mime, access_surgery, - access_theatre, access_research, access_mining, access_mailsorting, - access_heads_vault, access_mining_station, access_xenobiology, access_ce, access_hop, access_hos, access_RC_announce, - access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch) - -/proc/get_all_centcom_access() - return list(access_cent_general, access_cent_thunder, access_cent_specops, access_cent_medical, access_cent_living, access_cent_storage, access_cent_teleporter, access_cent_creed, access_cent_captain) - -/proc/get_all_syndicate_access() - return list(access_syndicate) - -/proc/get_region_accesses(var/code) - switch(code) - if(0) - return get_all_accesses() - if(1) //security - return list(access_sec_doors, access_security, access_brig, access_armory, access_forensics_lockers, access_court, access_hos) - if(2) //medbay - return list(access_medical, access_genetics, access_morgue, access_chemistry, access_psychiatrist, access_virology, access_surgery, access_cmo) - if(3) //research - return list(access_research, access_tox, access_tox_storage, access_robotics, access_xenobiology, access_xenoarch, access_rd) - if(4) //engineering and maintenance - return list(access_construction, access_maint_tunnels, access_engine, access_engine_equip, access_external_airlocks, access_tech_storage, access_atmospherics, access_ce) - if(5) //command - return list(access_heads, access_RC_announce, access_keycard_auth, access_change_ids, access_ai_upload, access_teleporter, access_eva, access_tcomsat, access_gateway, access_all_personal_lockers, access_heads_vault, access_hop, access_captain) - if(6) //station general - return list(access_kitchen,access_bar, access_hydroponics, access_janitor, access_chapel_office, access_crematorium, access_library, access_theatre, access_lawyer, access_clown, access_mime) - if(7) //supply - return list(access_mailsorting, access_mining, access_mining_station, access_cargo, access_qm) - -/proc/get_region_accesses_name(var/code) - switch(code) - if(0) - return "All" - if(1) //security - return "Security" - if(2) //medbay - return "Medbay" - if(3) //research - return "Research" - if(4) //engineering and maintenance - return "Engineering" - if(5) //command - return "Command" - if(6) //station general - return "Station General" - if(7) //supply - return "Supply" - - -/proc/get_access_desc(A) - switch(A) - if(access_cargo) - return "Cargo Bay" - if(access_cargo_bot) - return "Cargo Bot Delivery" - if(access_security) - return "Security" - if(access_brig) - return "Holding Cells" - if(access_court) - return "Courtroom" - if(access_forensics_lockers) - return "Forensics" - if(access_medical) - return "Medical" - if(access_genetics) - return "Genetics Lab" - if(access_morgue) - return "Morgue" - if(access_tox) - return "R&D Lab" - if(access_tox_storage) - return "Toxins Lab" - if(access_chemistry) - return "Chemistry Lab" - if(access_rd) - return "Research Director" - if(access_bar) - return "Bar" - if(access_janitor) - return "Custodial Closet" - if(access_engine) - return "Engineering" - if(access_engine_equip) - return "Power Equipment" - if(access_maint_tunnels) - return "Maintenance" - if(access_external_airlocks) - return "External Airlocks" - if(access_emergency_storage) - return "Emergency Storage" - if(access_change_ids) - return "ID Computer" - if(access_ai_upload) - return "AI Upload" - if(access_teleporter) - return "Teleporter" - if(access_eva) - return "EVA" - if(access_heads) - return "Bridge" - if(access_captain) - return "Captain" - if(access_all_personal_lockers) - return "Personal Lockers" - if(access_chapel_office) - return "Chapel Office" - if(access_tech_storage) - return "Technical Storage" - if(access_atmospherics) - return "Atmospherics" - if(access_crematorium) - return "Crematorium" - if(access_armory) - return "Armory" - if(access_construction) - return "Construction Areas" - if(access_kitchen) - return "Kitchen" - if(access_hydroponics) - return "Hydroponics" - if(access_library) - return "Library" - if(access_lawyer) - return "Law Office" - if(access_robotics) - return "Robotics" - if(access_virology) - return "Virology" - if(access_psychiatrist) - return "Psychiatrist's Office" - if(access_cmo) - return "Chief Medical Officer" - if(access_qm) - return "Quartermaster" -/* if(access_clown) - return "HONK! Access" - if(access_mime) - return "Silent Access"*/ - if(access_surgery) - return "Surgery" - if(access_theatre) - return "Theatre" - if(access_manufacturing) - return "Manufacturing" - if(access_research) - return "Science" - if(access_mining) - return "Mining" - if(access_mining_office) - return "Mining Office" - if(access_mailsorting) - return "Cargo Office" - if(access_mint) - return "Mint" - if(access_mint_vault) - return "Mint Vault" - if(access_heads_vault) - return "Main Vault" - if(access_mining_station) - return "Mining EVA" - if(access_xenobiology) - return "Xenobiology Lab" - if(access_xenoarch) - return "Xenoarchaeology" - if(access_hop) - return "Head of Personnel" - if(access_hos) - return "Head of Security" - if(access_ce) - return "Chief Engineer" - if(access_RC_announce) - return "RC Announcements" - if(access_keycard_auth) - return "Keycode Auth. Device" - if(access_tcomsat) - return "Telecommunications" - if(access_gateway) - return "Gateway" - if(access_sec_doors) - return "Brig" - -/proc/get_centcom_access_desc(A) - switch(A) - if(access_cent_general) - return "Code Grey" - if(access_cent_thunder) - return "Code Yellow" - if(access_cent_storage) - return "Code Orange" - if(access_cent_living) - return "Code Green" - if(access_cent_medical) - return "Code White" - if(access_cent_teleporter) - return "Code Blue" - if(access_cent_specops) - return "Code Black" - if(access_cent_creed) - return "Code Silver" - if(access_cent_captain) - return "Code Gold" - -/proc/get_all_jobs() - var/list/all_jobs = list() - var/list/all_datums = typesof(/datum/job) - all_datums.Remove(list(/datum/job,/datum/job/ai,/datum/job/cyborg)) - var/datum/job/jobdatum - for(var/jobtype in all_datums) - jobdatum = new jobtype - all_jobs.Add(jobdatum.title) - return all_jobs - -/proc/get_all_centcom_jobs() - return list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer","BlackOps Commander","Supreme Commander") - -//gets the actual job rank (ignoring alt titles) -//this is used solely for sechuds -/obj/proc/GetJobRealName() - if (!istype(src, /obj/item/device/pda) && !istype(src,/obj/item/weapon/card/id)) - return - - var/rank - var/assignment - if(istype(src, /obj/item/device/pda)) - if(src:id) - rank = src:id:rank - assignment = src:id:assignment - else if(istype(src, /obj/item/weapon/card/id)) - rank = src:rank - assignment = src:assignment - - if( rank in joblist ) - return rank - - if( assignment in joblist ) - return assignment - - return "Unknown" - -//gets the alt title, failing that the actual job rank -//this is unused -/obj/proc/sdsdsd() //GetJobDisplayName - if (!istype(src, /obj/item/device/pda) && !istype(src,/obj/item/weapon/card/id)) - return - - var/assignment - if(istype(src, /obj/item/device/pda)) - if(src:id) - assignment = src:id:assignment - else if(istype(src, /obj/item/weapon/card/id)) - assignment = src:assignment - - if(assignment) - return assignment - - return "Unknown" - -proc/FindNameFromID(var/mob/living/carbon/human/H) - ASSERT(istype(H)) - var/obj/item/weapon/card/id/C = H.get_active_hand() - if( istype(C) || istype(C, /obj/item/device/pda) ) - var/obj/item/weapon/card/id/ID = C - - if( istype(C, /obj/item/device/pda) ) - var/obj/item/device/pda/pda = C - ID = pda.id - if(!istype(ID)) - ID = null - - if(ID) - return ID.registered_name - - C = H.wear_id - - if( istype(C) || istype(C, /obj/item/device/pda) ) - var/obj/item/weapon/card/id/ID = C - - if( istype(C, /obj/item/device/pda) ) - var/obj/item/device/pda/pda = C - ID = pda.id - if(!istype(ID)) - ID = null - - if(ID) - return ID.registered_name - -proc/get_all_job_icons() //For all existing HUD icons - return joblist + list("Prisoner") - -/obj/proc/GetJobName() //Used in secHUD icon generation - if (!istype(src, /obj/item/device/pda) && !istype(src,/obj/item/weapon/card/id)) - return - - var/jobName - - if(istype(src, /obj/item/device/pda)) - if(src:id) - jobName = src:id:assignment - if(istype(src, /obj/item/weapon/card/id)) - jobName = src:assignment - - if(jobName in get_all_job_icons()) //Check if the job has a hud icon - return jobName - if(jobName in get_all_centcom_jobs()) //Return with the NT logo if it is a Centcom job - return "Centcom" - return "Unknown" //Return unknown if none of the above apply - diff --git a/code/game/mecha/mech_fabricator.dm.bak b/code/game/mecha/mech_fabricator.dm.bak deleted file mode 100644 index cfbb4feb..00000000 --- a/code/game/mecha/mech_fabricator.dm.bak +++ /dev/null @@ -1,809 +0,0 @@ -///////////////////////////// -///// Part Fabricator /////// -///////////////////////////// - -/obj/machinery/mecha_part_fabricator - icon = 'icons/obj/robotics.dmi' - icon_state = "fab-idle" - name = "Exosuit Fabricator" - desc = "Nothing is being built." - density = 1 - anchored = 1 - use_power = 1 - idle_power_usage = 20 - active_power_usage = 5000 - req_access = list(access_robotics) - var/time_coeff = 1.5 //can be upgraded with research - var/resource_coeff = 1.5 //can be upgraded with research - var/list/resources = list( - "metal"=0, - "glass"=0, - "gold"=0, - "silver"=0, - "diamond"=0, - "plasma"=0, - "uranium"=0, -// "bananium"=0 - ) - var/res_max_amount = 200000 - var/datum/research/files - var/id - var/sync = 0 - var/part_set - var/obj/being_built - var/list/queue = list() - var/processing_queue = 0 - var/screen = "main" - var/opened = 0 - var/temp - var/list/part_sets = list( //set names must be unique - "Robot"=list( - /obj/item/robot_parts/robot_suit, - /obj/item/robot_parts/chest, - /obj/item/robot_parts/head, - /obj/item/robot_parts/l_arm, - /obj/item/robot_parts/r_arm, - /obj/item/robot_parts/l_leg, - /obj/item/robot_parts/r_leg, - /obj/item/robot_parts/robot_component/binary_communication_device, - /obj/item/robot_parts/robot_component/radio, - /obj/item/robot_parts/robot_component/actuator, - /obj/item/robot_parts/robot_component/diagnosis_unit, - /obj/item/robot_parts/robot_component/camera, - /obj/item/robot_parts/robot_component/armour - ), - "Ripley"=list( - /obj/item/mecha_parts/chassis/ripley, - /obj/item/mecha_parts/part/ripley_torso, - /obj/item/mecha_parts/part/ripley_left_arm, - /obj/item/mecha_parts/part/ripley_right_arm, - /obj/item/mecha_parts/part/ripley_left_leg, - /obj/item/mecha_parts/part/ripley_right_leg - ), - "Odysseus"=list( - /obj/item/mecha_parts/chassis/odysseus, - /obj/item/mecha_parts/part/odysseus_torso, - /obj/item/mecha_parts/part/odysseus_head, - /obj/item/mecha_parts/part/odysseus_left_arm, - /obj/item/mecha_parts/part/odysseus_right_arm, - /obj/item/mecha_parts/part/odysseus_left_leg, - /obj/item/mecha_parts/part/odysseus_right_leg - ), - - "Gygax"=list( - /obj/item/mecha_parts/chassis/gygax, - /obj/item/mecha_parts/part/gygax_torso, - /obj/item/mecha_parts/part/gygax_head, - /obj/item/mecha_parts/part/gygax_left_arm, - /obj/item/mecha_parts/part/gygax_right_arm, - /obj/item/mecha_parts/part/gygax_left_leg, - /obj/item/mecha_parts/part/gygax_right_leg, - /obj/item/mecha_parts/part/gygax_armour - ), - "Durand"=list( - /obj/item/mecha_parts/chassis/durand, - /obj/item/mecha_parts/part/durand_torso, - /obj/item/mecha_parts/part/durand_head, - /obj/item/mecha_parts/part/durand_left_arm, - /obj/item/mecha_parts/part/durand_right_arm, - /obj/item/mecha_parts/part/durand_left_leg, - /obj/item/mecha_parts/part/durand_right_leg, - /obj/item/mecha_parts/part/durand_armour - ), - - "Exoskeleton"=list( - /obj/item/mecha_parts/chassis/exoskeleton, - /obj/item/mecha_parts/part/hydraulicspack, - /obj/item/mecha_parts/part/electricalpack - - - - - ), - -/* "H.O.N.K"=list( - /obj/item/mecha_parts/chassis/honker, - /obj/item/mecha_parts/part/honker_torso, - /obj/item/mecha_parts/part/honker_head, - /obj/item/mecha_parts/part/honker_left_arm, - /obj/item/mecha_parts/part/honker_right_arm, - /obj/item/mecha_parts/part/honker_left_leg, - /obj/item/mecha_parts/part/honker_right_leg - ), */ - "Exosuit Equipment"=list( - /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp, - /obj/item/mecha_parts/mecha_equipment/tool/drill, - /obj/item/mecha_parts/mecha_equipment/tool/extinguisher, - /obj/item/mecha_parts/mecha_equipment/tool/cable_layer, - /obj/item/mecha_parts/mecha_equipment/tool/sleeper, - /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun, - /obj/item/mecha_parts/chassis/firefighter, - ///obj/item/mecha_parts/mecha_equipment/repair_droid, - /obj/item/mecha_parts/mecha_equipment/generator, - ///obj/item/mecha_parts/mecha_equipment/jetpack, //TODO MECHA JETPACK SPRITE MISSING - /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser, - /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg, -// /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar/mousetrap_mortar -// /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar -// /obj/item/mecha_parts/mecha_equipment/weapon/honker - /obj/item/mecha_parts/mecha_equipment/weapon/energy/laserexo, - /obj/item/mecha_parts/mecha_equipment/weapon/energy/taserexo, - ), - - "Robotic Upgrade Modules" = list( - /obj/item/borg/upgrade/reset, - /obj/item/borg/upgrade/rename, - /obj/item/borg/upgrade/restart, - /obj/item/borg/upgrade/vtec, - /obj/item/borg/upgrade/tasercooler, - /obj/item/borg/upgrade/jetpack - ), - - - - - - - "Misc"=list(/obj/item/mecha_parts/mecha_tracking) - ) - - - - -/obj/machinery/mecha_part_fabricator/New() - ..() - component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/mechfab(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/manipulator(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) - RefreshParts() - - // part_sets["Cyborg Upgrade Modules"] = typesof(/obj/item/borg/upgrade/) - /obj/item/borg/upgrade/ // Eh. This does it dymaically, but to support having the items referenced otherwhere in the code but not being constructable, going to do it manaully. - - for(var/part_set in part_sets) - convert_part_set(part_set) - files = new /datum/research(src) //Setup the research data holder. - /* - if(!id) - for(var/obj/machinery/r_n_d/server/centcom/S in world) - S.initialize() - break - */ - return - -/obj/machinery/mecha_part_fabricator/RefreshParts() - var/T = 0 - for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) - T += M.rating - res_max_amount = (187500+(T * 37500)) - T = 0 - for(var/obj/item/weapon/stock_parts/micro_laser/Ma in component_parts) - T += Ma.rating - if(T >= 1) - T -= 1 - var/diff - diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/25,0.01) - if(resource_coeff!=diff) - resource_coeff = diff - T = 0 - for(var/obj/item/weapon/stock_parts/manipulator/Ml in component_parts) - T += Ml.rating - if(T>= 1) - T -= 1 - diff = round(initial(time_coeff) - (initial(time_coeff)*(T))/25,0.01) - if(time_coeff!=diff) - time_coeff = diff - -/obj/machinery/mecha_part_fabricator/Del() - for(var/atom/A in src) - del A - ..() - return - -/obj/machinery/mecha_part_fabricator/proc/operation_allowed(mob/M) - if(isrobot(M) || isAI(M)) - return 1 - if(!istype(req_access) || !req_access.len) - return 1 - else if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - for(var/ID in list(H.get_active_hand(), H.wear_id, H.belt)) - if(src.check_access(ID)) - return 1 - M << "You don't have required permissions to use [src]" - return 0 - -/obj/machinery/mecha_part_fabricator/check_access(obj/item/weapon/card/id/I) - if(istype(I, /obj/item/device/pda)) - var/obj/item/device/pda/pda = I - I = pda.id - if(!istype(I) || !I.access) //not ID or no access - return 0 - for(var/req in req_access) - if(!(req in I.access)) //doesn't have this access - return 0 - return 1 - -/obj/machinery/mecha_part_fabricator/proc/emag() - sleep() - switch(emagged) - if(0) - emagged = 0.5 - src.visible_message("\icon[src] [src] beeps: \"DB error \[Code 0x00F1\]\"") - sleep(10) - src.visible_message("\icon[src] [src] beeps: \"Attempting auto-repair\"") - sleep(15) - src.visible_message("\icon[src] [src] beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"") - sleep(30) - src.visible_message("\icon[src] [src] beeps: \"User DB truncated. Please contact your Nanotrasen system operator for future assistance.\"") - req_access = null - emagged = 1 - if(0.5) - src.visible_message("\icon[src] [src] beeps: \"DB not responding \[Code 0x0003\]...\"") - if(1) - src.visible_message("\icon[src] [src] beeps: \"No records in User DB\"") - return - -/obj/machinery/mecha_part_fabricator/proc/convert_part_set(set_name as text) - var/list/parts = part_sets[set_name] - if(istype(parts, /list)) - for(var/i=1;i<=parts.len;i++) - var/path = parts[i] - var/part = new path(src) - if(part) - parts[i] = part - //debug below - if(!istype(parts[i],/obj/item)) return 0 - return - - -/obj/machinery/mecha_part_fabricator/proc/add_part_set(set_name as text,parts=null) - if(set_name in part_sets)//attempt to create duplicate set - return 0 - if(isnull(parts)) - part_sets[set_name] = list() - else - part_sets[set_name] = parts - convert_part_set(set_name) - return 1 - -/obj/machinery/mecha_part_fabricator/proc/add_part_to_set(set_name as text,part) - if(!part) return 0 - src.add_part_set(set_name)//if no "set_name" set exists, create - var/list/part_set = part_sets[set_name] - var/atom/apart - if(ispath(part)) - apart = new part(src) - else - apart = part - if(!istype(apart)) return 0 - for(var/obj/O in part_set) - if(O.type == apart.type) - del apart - return 0 - part_set[++part_set.len] = apart - return 1 - -/obj/machinery/mecha_part_fabricator/proc/remove_part_set(set_name as text) - for(var/i=1,i<=part_sets.len,i++) - if(part_sets[i]==set_name) - part_sets.Cut(i,++i) - return -/* - proc/sanity_check() - for(var/p in resources) - var/index = resources.Find(p) - index = resources.Find(p, ++index) - if(index) //duplicate resource - world << "Duplicate resource definition for [src](\ref[src])" - return 0 - for(var/set_name in part_sets) - var/index = part_sets.Find(set_name) - index = part_sets.Find(set_name, ++index) - if(index) //duplicate part set - world << "Duplicate part set definition for [src](\ref[src])" - return 0 - return 1 -*/ -/* - New() - ..() - src.add_part_to_set("Test",list("result"="/obj/item/mecha_parts/part/gygax_armour","time"=600,"metal"=75000,"diamond"=10000)) - src.add_part_to_set("Test",list("result"="/obj/item/mecha_parts/part/ripley_left_arm","time"=200,"metal"=25000)) - src.remove_part_set("Gygax") - return -*/ - -/obj/machinery/mecha_part_fabricator/proc/output_parts_list(set_name) - var/output = "" - var/list/part_set = listgetindex(part_sets, set_name) - if(istype(part_set)) - for(var/obj/item/part in part_set) - var/resources_available = check_resources(part) - output += "
    [output_part_info(part)]
    \[[resources_available?"Build | ":null]Add to queue\]\[?\]
    " - return output - -/obj/machinery/mecha_part_fabricator/proc/output_part_info(var/obj/item/part) - var/output = "[part.name] (Cost: [output_part_cost(part)]) [get_construction_time_w_coeff(part)/10]sec" - return output - -/obj/machinery/mecha_part_fabricator/proc/output_part_cost(var/obj/item/part) - var/i = 0 - var/output - if(part.vars.Find("construction_time") && part.vars.Find("construction_cost"))//The most efficient way to go about this. Not all objects have these vars, but if they don't then they CANNOT be made by the mech fab. Doing it this way reduces a major amount of typecasting and switches, while cutting down maintenece for them as well -Sieve - for(var/c in part:construction_cost)//The check should ensure that anything without the var doesn't make it to this point - if(c in resources) - output += "[i?" | ":null][get_resource_cost_w_coeff(part,c)] [c]" - i++ - return output - else - return 0 - -/obj/machinery/mecha_part_fabricator/proc/output_available_resources() - var/output - for(var/resource in resources) - var/amount = min(res_max_amount, resources[resource]) - output += "[resource]: [amount] cm³" - if(amount>0) - output += " - Remove \[1\] | \[10\] | \[All\]" - output += "
    " - return output - -/obj/machinery/mecha_part_fabricator/proc/remove_resources(var/obj/item/part) -//Be SURE to add any new equipment to this switch, but don't be suprised if it spits out children objects - if(part.vars.Find("construction_time") && part.vars.Find("construction_cost")) - for(var/resource in part:construction_cost) - if(resource in src.resources) - src.resources[resource] -= get_resource_cost_w_coeff(part,resource) - else - return - -/obj/machinery/mecha_part_fabricator/proc/check_resources(var/obj/item/part) -// if(istype(part, /obj/item/robot_parts) || istype(part, /obj/item/mecha_parts) || istype(part,/obj/item/borg/upgrade)) -//Be SURE to add any new equipment to this switch, but don't be suprised if it spits out children objects - if(part.vars.Find("construction_time") && part.vars.Find("construction_cost")) - for(var/resource in part:construction_cost) - if(resource in src.resources) - if(src.resources[resource] < get_resource_cost_w_coeff(part,resource)) - return 0 - return 1 - else - return 0 - -/obj/machinery/mecha_part_fabricator/proc/build_part(var/obj/item/part) - if(!part) return - src.being_built = new part.type(src) - src.desc = "It's building [src.being_built]." - src.remove_resources(part) - src.overlays += "fab-active" - src.use_power = 2 - src.updateUsrDialog() - sleep(get_construction_time_w_coeff(part)) - src.use_power = 1 - src.overlays -= "fab-active" - src.desc = initial(src.desc) - if(being_built) - src.being_built.Move(get_step(src,SOUTH)) - src.visible_message("\icon[src] [src] beeps, \"The following has been completed: [src.being_built] is built\".") - src.being_built = null - src.updateUsrDialog() - return 1 - -/obj/machinery/mecha_part_fabricator/proc/update_queue_on_page() - send_byjax(usr,"mecha_fabricator.browser","queue",src.list_queue()) - return - -/obj/machinery/mecha_part_fabricator/proc/add_part_set_to_queue(set_name) - if(set_name in part_sets) - var/list/part_set = part_sets[set_name] - if(islist(part_set)) - for(var/obj/item/part in part_set) - add_to_queue(part) - return - -/obj/machinery/mecha_part_fabricator/proc/add_to_queue(part) - if(!istype(queue)) - queue = list() - if(part) - queue[++queue.len] = part - return queue.len - -/obj/machinery/mecha_part_fabricator/proc/remove_from_queue(index) - if(!isnum(index) || !istype(queue) || (index<1 || index>queue.len)) - return 0 - queue.Cut(index,++index) - return 1 - -/obj/machinery/mecha_part_fabricator/proc/process_queue() - var/obj/item/part = listgetindex(src.queue, 1) - if(!part) - remove_from_queue(1) - if(src.queue.len) - return process_queue() - else - return - if(!(part.vars.Find("construction_time")) || !(part.vars.Find("construction_cost")))//If it shouldn't be printed - remove_from_queue(1)//Take it out of the quene - return process_queue()//Then reprocess it - temp = null - while(part) - if(stat&(NOPOWER|BROKEN)) - return 0 - if(!check_resources(part)) - src.visible_message("\icon[src] [src] beeps, \"Not enough resources. Queue processing stopped\".") - temp = {"Not enough resources to build next part.
    - Try again | Return"} - return 0 - remove_from_queue(1) - build_part(part) - part = listgetindex(src.queue, 1) - src.visible_message("\icon[src] [src] beeps, \"Queue processing finished successfully\".") - return 1 - -/obj/machinery/mecha_part_fabricator/proc/list_queue() - var/output = "Queue contains:" - if(!istype(queue) || !queue.len) - output += "
    Nothing" - else - output += "
      " - for(var/i=1;i<=queue.len;i++) - var/obj/item/part = listgetindex(src.queue, i) - if(istype(part)) - if(part.vars.Find("construction_time") && part.vars.Find("construction_cost")) - output += "[part.name] - [i>1?"":null] [i↓":null] Remove" - else//Prevents junk items from even appearing in the list, and they will be silently removed when the fab processes - remove_from_queue(i)//Trash it - return list_queue()//Rebuild it - output += "
    " - output += "\[Process queue | Clear queue\]" - return output - -/obj/machinery/mecha_part_fabricator/proc/convert_designs() - if(!files) return - var/i = 0 - for(var/datum/design/D in files.known_designs) - if(D.build_type&16) - if(D.category in part_sets)//Checks if it's a valid category - if(add_part_to_set(D.category, text2path(D.build_path)))//Adds it to said category - i++ - else - if(add_part_to_set("Misc", text2path(D.build_path)))//If in doubt, chunk it into the Misc - i++ - return i - -/obj/machinery/mecha_part_fabricator/proc/update_tech() - if(!files) return - var/output - for(var/datum/tech/T in files.known_tech) - if(T && T.level > 1) - var/diff - switch(T.id) //bad, bad formulas - if("materials") - var/pmat = 0//Calculations to make up for the fact that these parts and tech modify the same thing - for(var/obj/item/weapon/stock_parts/micro_laser/Ml in component_parts) - pmat += Ml.rating - if(pmat >= 1) - pmat -= 1//So the equations don't have to be reworked, upgrading a single part from T1 to T2 is == to 1 tech level - diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T.level+pmat))/25,0.01) - if(resource_coeff!=diff) - resource_coeff = diff - output+="Production efficiency increased.
    " - if("programming") - var/ptime = 0 - for(var/obj/item/weapon/stock_parts/manipulator/Ma in component_parts) - ptime += Ma.rating - if(ptime >= 2) - ptime -= 2 - diff = round(initial(time_coeff) - (initial(time_coeff)*(T.level+ptime))/25,0.1) - if(time_coeff!=diff) - time_coeff = diff - output+="Production routines updated.
    " - return output - - -/obj/machinery/mecha_part_fabricator/proc/sync(silent=null) -/* if(queue.len) - if(!silent) - temp = "Error. Please clear processing queue before updating!" - src.updateUsrDialog() - return -*/ - if(!silent) - temp = "Updating local R&D database..." - src.updateUsrDialog() - sleep(30) //only sleep if called by user - for(var/obj/machinery/computer/rdconsole/RDC in get_area(src)) - if(!RDC.sync) - continue - for(var/datum/tech/T in RDC.files.known_tech) - files.AddTech2Known(T) - for(var/datum/design/D in RDC.files.known_designs) - files.AddDesign2Known(D) - files.RefreshResearch() - var/i = src.convert_designs() - var/tech_output = update_tech() - if(!silent) - temp = "Processed [i] equipment designs.
    " - temp += tech_output - temp += "Return" - src.updateUsrDialog() - if(i || tech_output) - src.visible_message("\icon[src] [src] beeps, \"Successfully synchronized with R&D server. New data processed.\"") - return - -/obj/machinery/mecha_part_fabricator/proc/get_resource_cost_w_coeff(var/obj/item/part as obj,var/resource as text, var/roundto=1) -//Be SURE to add any new equipment to this switch, but don't be suprised if it spits out children objects - if(part.vars.Find("construction_time") && part.vars.Find("construction_cost")) - return round(part:construction_cost[resource]*resource_coeff, roundto) - else - return 0 - -/obj/machinery/mecha_part_fabricator/proc/get_construction_time_w_coeff(var/obj/item/part as obj, var/roundto=1) -//Be SURE to add any new equipment to this switch, but don't be suprised if it spits out children objects - if(part.vars.Find("construction_time") && part.vars.Find("construction_cost")) - return round(part:construction_time*time_coeff, roundto) - else - return 0 - - -/obj/machinery/mecha_part_fabricator/attack_hand(mob/user as mob) - var/dat, left_part - if (..()) - return - if(!operation_allowed(user)) - return - user.set_machine(src) - var/turf/exit = get_step(src,SOUTH) - if(exit.density) - src.visible_message("\icon[src] [src] beeps, \"Error! Part outlet is obstructed\".") - return - if(temp) - left_part = temp - else if(src.being_built) - left_part = {"Building [src.being_built.name].
    - Please wait until completion...
    "} - else - switch(screen) - if("main") - left_part = output_available_resources()+"
    " - left_part += "Sync with R&D servers
    " - for(var/part_set in part_sets) - left_part += "[part_set] - \[Add all parts to queue\]
    " - if("parts") - left_part += output_parts_list(part_set) - left_part += "
    Return" - dat = {" - - [src.name] - - - - - - - - - -
    - [left_part] - - [list_queue()] -
    - - "} - user << browse(dat, "window=mecha_fabricator;size=1000x400") - onclose(user, "mecha_fabricator") - return - - -/obj/machinery/mecha_part_fabricator/Topic(href, href_list) - ..() - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) - if(href_list["part_set"]) - var/tpart_set = filter.getStr("part_set") - if(tpart_set) - if(tpart_set=="clear") - src.part_set = null - else - src.part_set = tpart_set - screen = "parts" - if(href_list["part"]) - var/list/part = filter.getObj("part") - if(!processing_queue) - build_part(part) - else - add_to_queue(part) - if(href_list["add_to_queue"]) - add_to_queue(filter.getObj("add_to_queue")) - return update_queue_on_page() - if(href_list["remove_from_queue"]) - remove_from_queue(filter.getNum("remove_from_queue")) - return update_queue_on_page() - if(href_list["partset_to_queue"]) - add_part_set_to_queue(filter.get("partset_to_queue")) - return update_queue_on_page() - if(href_list["process_queue"]) - spawn(-1) - if(processing_queue || being_built) - return 0 - processing_queue = 1 - process_queue() - processing_queue = 0 -/* - if(href_list["list_queue"]) - list_queue() -*/ - if(href_list["clear_temp"]) - temp = null - if(href_list["screen"]) - src.screen = href_list["screen"] - if(href_list["queue_move"] && href_list["index"]) - var/index = filter.getNum("index") - var/new_index = index + filter.getNum("queue_move") - if(isnum(index) && isnum(new_index)) - if(InRange(new_index,1,queue.len)) - queue.Swap(index,new_index) - return update_queue_on_page() - if(href_list["clear_queue"]) - queue = list() - return update_queue_on_page() - if(href_list["sync"]) - queue = list() - src.sync() - return update_queue_on_page() - if(href_list["part_desc"]) - var/obj/part = filter.getObj("part_desc") - if(part) - temp = {"

    [part] description:

    - [part.desc]
    - Return - "} - if(href_list["remove_mat"] && href_list["material"]) - temp = "Ejected [remove_material(href_list["material"],text2num(href_list["remove_mat"]))] of [href_list["material"]]
    Return" - src.updateUsrDialog() - return - -/obj/machinery/mecha_part_fabricator/proc/remove_material(var/mat_string, var/amount) - var/type - switch(mat_string) - if("metal") - type = /obj/item/stack/sheet/metal - if("glass") - type = /obj/item/stack/sheet/glass - if("gold") - type = /obj/item/stack/sheet/mineral/gold - if("silver") - type = /obj/item/stack/sheet/mineral/silver - if("diamond") - type = /obj/item/stack/sheet/mineral/diamond - if("plasma") - type = /obj/item/stack/sheet/mineral/plasma - if("uranium") - type = /obj/item/stack/sheet/mineral/uranium -/* if("bananium") - type = /obj/item/stack/sheet/mineral/clown*/ - else - return 0 - var/result = 0 - var/obj/item/stack/sheet/res = new type(src) - var/total_amount = round(resources[mat_string]/res.perunit) - res.amount = min(total_amount,amount) - if(res.amount>0) - resources[mat_string] -= res.amount*res.perunit - res.Move(src.loc) - result = res.amount - else - del res - return result - - -/obj/machinery/mecha_part_fabricator/attackby(obj/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - icon_state = "fab-o" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "fab-idle" - user << "You close the maintenance hatch of [src]." - return - if (opened) - if(istype(W, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc - if(src.resources["metal"] >= 3750) - var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) - G.amount = round(src.resources["metal"] / G.perunit) - if(src.resources["glass"] >= 3750) - var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) - G.amount = round(src.resources["glass"] / G.perunit) - if(src.resources["plasma"] >= 2000) - var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma(src.loc) - G.amount = round(src.resources["plasma"] / G.perunit) - if(src.resources["silver"] >= 2000) - var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver(src.loc) - G.amount = round(src.resources["silver"] / G.perunit) - if(src.resources["gold"] >= 2000) - var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc) - G.amount = round(src.resources["gold"] / G.perunit) - if(src.resources["uranium"] >= 2000) - var/obj/item/stack/sheet/mineral/uranium/G = new /obj/item/stack/sheet/mineral/uranium(src.loc) - G.amount = round(src.resources["uranium"] / G.perunit) - if(src.resources["diamond"] >= 2000) - var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc) - G.amount = round(src.resources["diamond"] / G.perunit) -/* if(src.resources["bananium"] >= 2000) - var/obj/item/stack/sheet/mineral/clown/G = new /obj/item/stack/sheet/mineral/clown(src.loc) - G.amount = round(src.resources["bananium"] / G.perunit)*/ - del(src) - return 1 - else - user << "\red You can't load the [src.name] while it's opened." - return 1 - - if(istype(W, /obj/item/weapon/card/emag)) - emag() - return - var/material - switch(W.type) - if(/obj/item/stack/sheet/mineral/gold) - material = "gold" - if(/obj/item/stack/sheet/mineral/silver) - material = "silver" - if(/obj/item/stack/sheet/mineral/diamond) - material = "diamond" - if(/obj/item/stack/sheet/mineral/plasma) - material = "plasma" - if(/obj/item/stack/sheet/metal) - material = "metal" - if(/obj/item/stack/sheet/glass) - material = "glass" -/* if(/obj/item/stack/sheet/mineral/clown) - material = "bananium"*/ - if(/obj/item/stack/sheet/mineral/uranium) - material = "uranium" - else - return ..() - - if(src.being_built) - user << "The fabricator is currently processing. Please wait until completion." - return - var/obj/item/stack/sheet/stack = W - var/sname = "[stack.name]" - var/amnt = stack.perunit - if(src.resources[material] < res_max_amount) - var/count = 0 - src.overlays += "fab-load-[material]"//loading animation is now an overlay based on material type. No more spontaneous conversion of all ores to metal. -vey - sleep(10) - if(stack && stack.amount) - while(src.resources[material] < res_max_amount && stack) - src.resources[material] += amnt - stack.use(1) - count++ - src.overlays -= "fab-load-[material]" - user << "You insert [count] [sname] into the fabricator." - src.updateUsrDialog() - else - user << "The fabricator cannot hold more [sname]." - return diff --git a/code/game/objects/items/weapons/storage/belt.dm.bak b/code/game/objects/items/weapons/storage/belt.dm.bak deleted file mode 100644 index 8400ce08..00000000 --- a/code/game/objects/items/weapons/storage/belt.dm.bak +++ /dev/null @@ -1,171 +0,0 @@ -/obj/item/weapon/storage/belt - name = "belt" - desc = "Can hold various things." - icon = 'icons/obj/clothing/belts.dmi' - icon_state = "utilitybelt" - item_state = "utility" - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT - attack_verb = list("whipped", "lashed", "disciplined") - - -/obj/item/weapon/storage/belt/proc/can_use() - if(!ismob(loc)) return 0 - var/mob/M = loc - if(src in M.get_equipped_items()) - return 1 - else - return 0 - - -/obj/item/weapon/storage/belt/MouseDrop(obj/over_object as obj, src_location, over_location) - var/mob/M = usr - if(!istype(over_object, /obj/screen)) - return ..() - playsound(src.loc, "rustle", 50, 1, -5) - if (!M.restrained() && !M.stat && can_use()) - switch(over_object.name) - if("r_hand") - M.u_equip(src) - M.put_in_r_hand(src) - if("l_hand") - M.u_equip(src) - M.put_in_l_hand(src) - src.add_fingerprint(usr) - return - - - -/obj/item/weapon/storage/belt/utility - name = "tool-belt" //Carn: utility belt is nicer, but it bamboozles the text parsing. - desc = "Can hold various tools." - icon_state = "utilitybelt" - item_state = "utility" - can_hold = list( - "/obj/item/weapon/crowbar", - "/obj/item/weapon/screwdriver", - "/obj/item/weapon/weldingtool", - "/obj/item/weapon/wirecutters", - "/obj/item/weapon/wrench", - "/obj/item/device/multitool", - "/obj/item/device/flashlight", - "/obj/item/weapon/cable_coil", - "/obj/item/device/t_scanner", - "/obj/item/device/analyzer", - "/obj/item/taperoll/engineering") - - -/obj/item/weapon/storage/belt/utility/full/New() - ..() - new /obj/item/weapon/screwdriver(src) - new /obj/item/weapon/wrench(src) - new /obj/item/weapon/weldingtool(src) - new /obj/item/weapon/crowbar(src) - new /obj/item/weapon/wirecutters(src) - new /obj/item/weapon/cable_coil(src,30,pick("red","yellow","orange")) - - -/obj/item/weapon/storage/belt/utility/atmostech/New() - ..() - new /obj/item/weapon/screwdriver(src) - new /obj/item/weapon/wrench(src) - new /obj/item/weapon/weldingtool(src) - new /obj/item/weapon/crowbar(src) - new /obj/item/weapon/wirecutters(src) - new /obj/item/device/t_scanner(src) - - - -/obj/item/weapon/storage/belt/medical - name = "medical belt" - desc = "Can hold various medical equipment." - icon_state = "medicalbelt" - item_state = "medical" - can_hold = list( - "/obj/item/device/healthanalyzer", - "/obj/item/weapon/dnainjector", - "/obj/item/weapon/reagent_containers/dropper", - "/obj/item/weapon/reagent_containers/glass/beaker", - "/obj/item/weapon/reagent_containers/glass/bottle", - "/obj/item/weapon/reagent_containers/pill", - "/obj/item/weapon/reagent_containers/syringe", - "/obj/item/weapon/reagent_containers/glass/dispenser", - "/obj/item/weapon/lighter/zippo", - "/obj/item/weapon/storage/fancy/cigarettes", - "/obj/item/weapon/storage/pill_bottle", - "/obj/item/stack/medical", - "/obj/item/device/flashlight/pen", - "/obj/item/clothing/mask/surgical", - "/obj/item/clothing/gloves/latex", - "/obj/item/weapon/reagent_containers/hypospray" - ) - - -/obj/item/weapon/storage/belt/security - name = "security belt" - desc = "Can hold security gear like handcuffs and flashes." - icon_state = "securitybelt" - item_state = "security"//Could likely use a better one. - storage_slots = 7 - max_w_class = 3 - max_combined_w_class = 21 - can_hold = list( - "/obj/item/weapon/grenade/flashbang", - "/obj/item/weapon/reagent_containers/spray/pepper", - "/obj/item/weapon/handcuffs", - "/obj/item/device/flash", - "/obj/item/clothing/glasses", - "/obj/item/ammo_casing/shotgun", - "/obj/item/ammo_magazine", - "/obj/item/weapon/reagent_containers/food/snacks/donut/normal", - "/obj/item/weapon/reagent_containers/food/snacks/donut/jelly", - "/obj/item/weapon/melee/baton", - "/obj/item/weapon/gun/energy/taser", - "/obj/item/weapon/lighter/zippo", - "/obj/item/weapon/cigpacket", - "/obj/item/clothing/glasses/hud/security", - "/obj/item/device/flashlight", - "/obj/item/device/pda", - "/obj/item/device/radio/headset", - "/obj/item/weapon/melee", - "/obj/item/taperoll/police", - "/obj/item/weapon/gun/energy/taser", - "/obj/item/weapon/grenade/chem_grenade", - "/obj/item/weapon/grenade/empgrenade" - ) - -/obj/item/weapon/storage/belt/soulstone - name = "soul stone belt" - desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away" - icon_state = "soulstonebelt" - item_state = "soulstonebelt" - storage_slots = 6 - can_hold = list( - "/obj/item/device/soulstone" - ) - -/obj/item/weapon/storage/belt/soulstone/full/New() - ..() - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - - -/obj/item/weapon/storage/belt/champion - name = "championship belt" - desc = "Proves to the world that you are the strongest!" - icon_state = "championbelt" - item_state = "champion" - storage_slots = 1 - can_hold = list( - "/obj/item/clothing/mask/luchador" - ) - -/obj/item/weapon/storage/belt/inflatable - name = "inflatable duck" - desc = "No bother to sink or swim when you can just float!" - icon_state = "inflatable" - item_state = "inflatable" diff --git a/code/game/objects/items/weapons/storage/boxes.dm.bak b/code/game/objects/items/weapons/storage/boxes.dm.bak deleted file mode 100644 index a266f98d..00000000 --- a/code/game/objects/items/weapons/storage/boxes.dm.bak +++ /dev/null @@ -1,502 +0,0 @@ -/* - * Everything derived from the common cardboard box. - * Basically everything except the original is a kit (starts full). - * - * Contains: - * Empty box, starter boxes (survival/engineer), - * Latex glove and sterile mask boxes, - * Syringe, beaker, dna injector boxes, - * Blanks, flashbangs, and EMP grenade boxes, - * Tracking and chemical implant boxes, - * Prescription glasses and drinking glass boxes, - * Condiment bottle and silly cup boxes, - * Donkpocket and monkeycube boxes, - * ID and security PDA cart boxes, - * Handcuff, mousetrap, and pillbottle boxes, - * Snap-pops and matchboxes, - * Replacement light boxes. - * - * For syndicate call-ins see uplink_kits.dm - */ - -/obj/item/weapon/storage/box - name = "box" - desc = "It's just an ordinary box." - icon_state = "box" - item_state = "syringe_kit" - foldable = /obj/item/stack/sheet/cardboard //BubbleWrap - -/obj/item/weapon/storage/box/survival/ - New() - ..() - contents = list() - sleep(1) - new /obj/item/clothing/mask/breath( src ) - new /obj/item/weapon/tank/emergency_oxygen( src ) - return - -/obj/item/weapon/storage/box/engineer/ - New() - ..() - contents = list() - sleep(1) - new /obj/item/clothing/mask/breath( src ) - new /obj/item/weapon/tank/emergency_oxygen/engi( src ) - return - - -/obj/item/weapon/storage/box/gloves - name = "box of latex gloves" - desc = "Contains white gloves." - New() - ..() - new /obj/item/clothing/gloves/latex(src) - new /obj/item/clothing/gloves/latex(src) - new /obj/item/clothing/gloves/latex(src) - new /obj/item/clothing/gloves/latex(src) - new /obj/item/clothing/gloves/latex(src) - new /obj/item/clothing/gloves/latex(src) - new /obj/item/clothing/gloves/latex(src) - -/obj/item/weapon/storage/box/masks - name = "box of sterile masks" - desc = "This box contains masks of sterility." - icon_state = "sterile" - - New() - ..() - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - - -/obj/item/weapon/storage/box/syringes - name = "box of syringes" - desc = "A box full of syringes." - desc = "A biohazard alert warning is printed on the box" - icon_state = "syringe" - - New() - ..() - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - -/obj/item/weapon/storage/box/beakers - name = "box of beakers" - icon_state = "beaker" - - New() - ..() - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - -/obj/item/weapon/storage/box/injectors - name = "box of DNA injectors" - desc = "This box contains injectors it seems." - - New() - ..() - new /obj/item/weapon/dnainjector/h2m(src) - new /obj/item/weapon/dnainjector/h2m(src) - new /obj/item/weapon/dnainjector/h2m(src) - new /obj/item/weapon/dnainjector/m2h(src) - new /obj/item/weapon/dnainjector/m2h(src) - new /obj/item/weapon/dnainjector/m2h(src) - - -/obj/item/weapon/storage/box/blanks - name = "box of blank shells" - desc = "It has a picture of a gun and several warning symbols on the front." - - New() - ..() - new /obj/item/ammo_casing/shotgun/blank(src) - new /obj/item/ammo_casing/shotgun/blank(src) - new /obj/item/ammo_casing/shotgun/blank(src) - new /obj/item/ammo_casing/shotgun/blank(src) - new /obj/item/ammo_casing/shotgun/blank(src) - new /obj/item/ammo_casing/shotgun/blank(src) - new /obj/item/ammo_casing/shotgun/blank(src) - - - -/obj/item/weapon/storage/box/flashbangs - name = "box of flashbangs (WARNING)" - desc = "WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use." - icon_state = "flashbang" - - New() - ..() - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - -/obj/item/weapon/storage/box/emps - name = "box of emp grenades" - desc = "A box with 5 emp grenades." - icon_state = "flashbang" - - New() - ..() - new /obj/item/weapon/grenade/empgrenade(src) - new /obj/item/weapon/grenade/empgrenade(src) - new /obj/item/weapon/grenade/empgrenade(src) - new /obj/item/weapon/grenade/empgrenade(src) - new /obj/item/weapon/grenade/empgrenade(src) -// new /obj/item/device/flashlight/emp/(src)(src) Waiting on fix of the EMP Flashlight - - -/obj/item/weapon/storage/box/trackimp - name = "boxed tracking implant kit" - desc = "Box full of scum-bag tracking utensils." - icon_state = "implant" - - New() - ..() - new /obj/item/weapon/implantcase/tracking(src) - new /obj/item/weapon/implantcase/tracking(src) - new /obj/item/weapon/implantcase/tracking(src) - new /obj/item/weapon/implantcase/tracking(src) - new /obj/item/weapon/implanter(src) - new /obj/item/weapon/implantpad(src) - new /obj/item/weapon/locator(src) - -/obj/item/weapon/storage/box/chemimp - name = "boxed chemical implant kit" - desc = "Box of stuff used to implant chemicals." - icon_state = "implant" - - New() - ..() - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implanter(src) - new /obj/item/weapon/implantpad(src) - - - -/obj/item/weapon/storage/box/rxglasses - name = "box of prescription glasses" - desc = "This box contains nerd glasses." - icon_state = "glasses" - - New() - ..() - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - -/obj/item/weapon/storage/box/drinkingglasses - name = "box of drinking glasses" - desc = "It has a picture of drinking glasses on it." - - New() - ..() - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - -/obj/item/weapon/storage/box/cdeathalarm_kit - name = "Death Alarm Kit" - desc = "Box of stuff used to implant death alarms." - icon_state = "implant" - item_state = "syringe_kit" - - New() - ..() - new /obj/item/weapon/implanter(src) - new /obj/item/weapon/implantcase/death_alarm(src) - new /obj/item/weapon/implantcase/death_alarm(src) - new /obj/item/weapon/implantcase/death_alarm(src) - new /obj/item/weapon/implantcase/death_alarm(src) - new /obj/item/weapon/implantcase/death_alarm(src) - new /obj/item/weapon/implantcase/death_alarm(src) - -/obj/item/weapon/storage/box/condimentbottles - name = "box of condiment bottles" - desc = "It has a large ketchup smear on it." - - New() - ..() - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - - - -/obj/item/weapon/storage/box/cups - name = "box of paper cups" - desc = "It has pictures of paper cups on the front." - New() - ..() - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - - -/obj/item/weapon/storage/box/donkpockets - name = "box of donk-pockets" - desc = "Instructions: Heat in microwave. Product will cool if not eaten within seven minutes." - icon_state = "donk_kit" - - New() - ..() - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - -/obj/item/weapon/storage/box/monkeycubes - name = "monkey cube box" - desc = "Drymate brand monkey cubes. Just add water!" - icon = 'icons/obj/food.dmi' - icon_state = "monkeycubebox" - storage_slots = 7 - can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/monkeycube") - New() - ..() - if(src.type == /obj/item/weapon/storage/box/monkeycubes) - for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src) - -/obj/item/weapon/storage/box/monkeycubes/farwacubes - name = "farwa cube box" - desc = "Drymate brand farwa cubes, shipped from Ahdomai. Just add water!" - New() - ..() - for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube(src) - -/obj/item/weapon/storage/box/monkeycubes/stokcubes - name = "stok cube box" - desc = "Drymate brand stok cubes, shipped from Moghes. Just add water!" - New() - ..() - for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube(src) - -/obj/item/weapon/storage/box/monkeycubes/neaeracubes - name = "neaera cube box" - desc = "Drymate brand neaera cubes, shipped from Jargon 4. Just add water!" - New() - ..() - for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube(src) - -/obj/item/weapon/storage/box/ids - name = "box of spare IDs" - desc = "Has so many empty IDs." - icon_state = "id" - - New() - ..() - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - - -/obj/item/weapon/storage/box/seccarts - name = "box of spare R.O.B.U.S.T. Cartridges" - desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security." - icon_state = "pda" - - New() - ..() - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - - -/obj/item/weapon/storage/box/handcuffs - name = "box of spare handcuffs" - desc = "A box full of handcuffs." - icon_state = "handcuff" - - New() - ..() - new /obj/item/weapon/handcuffs(src) - new /obj/item/weapon/handcuffs(src) - new /obj/item/weapon/handcuffs(src) - new /obj/item/weapon/handcuffs(src) - new /obj/item/weapon/handcuffs(src) - new /obj/item/weapon/handcuffs(src) - new /obj/item/weapon/handcuffs(src) - - -/obj/item/weapon/storage/box/mousetraps - name = "box of Pest-B-Gon mousetraps" - desc = "WARNING: Keep out of reach of children." - icon_state = "mousetraps" - - New() - ..() - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - -/obj/item/weapon/storage/box/pillbottles - name = "box of pill bottles" - desc = "It has pictures of pill bottles on its front." - - New() - ..() - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - - -/obj/item/weapon/storage/box/snappops - name = "snap pop box" - desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children." - icon = 'icons/obj/toy.dmi' - icon_state = "spbox" - storage_slots = 8 - can_hold = list("/obj/item/toy/snappop") - New() - ..() - for(var/i=1; i <= storage_slots; i++) - new /obj/item/toy/snappop(src) - -/obj/item/weapon/storage/box/matches - name = "matchbox" - desc = "A small box of Almost But Not Quite Plasma Premium Matches." - icon = 'icons/obj/cigarettes.dmi' - icon_state = "matchbox" - item_state = "zippo" - storage_slots = 10 - w_class = 1 - flags = TABLEPASS - slot_flags = SLOT_BELT - - New() - ..() - for(var/i=1; i <= storage_slots; i++) - new /obj/item/weapon/match(src) - - attackby(obj/item/weapon/match/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/match) && W.lit == 0) - W.lit = 1 - W.icon_state = "match_lit" - processing_objects.Add(W) - W.update_icon() - return - -/obj/item/weapon/storage/box/autoinjectors - name = "box of injectors" - desc = "Contains autoinjectors." - icon_state = "syringe" - New() - ..() - for (var/i; i < storage_slots; i++) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src) - -/obj/item/weapon/storage/box/lights - name = "box of replacement bulbs" - icon = 'icons/obj/storage.dmi' - icon_state = "light" - desc = "This box is shaped on the inside so that only light tubes and bulbs fit." - item_state = "syringe_kit" - foldable = /obj/item/stack/sheet/cardboard //BubbleWrap - storage_slots=21 - can_hold = list("/obj/item/weapon/light/tube", "/obj/item/weapon/light/bulb") - max_combined_w_class = 21 - use_to_pickup = 1 // for picking up broken bulbs, not that most people will try - -/obj/item/weapon/storage/box/lights/bulbs/New() - ..() - for(var/i = 0; i < 21; i++) - new /obj/item/weapon/light/bulb(src) - -/obj/item/weapon/storage/box/lights/tubes - name = "box of replacement tubes" - icon_state = "lighttube" - -/obj/item/weapon/storage/box/lights/tubes/New() - ..() - for(var/i = 0; i < 21; i++) - new /obj/item/weapon/light/tube(src) - -/obj/item/weapon/storage/box/lights/mixed - name = "box of replacement lights" - icon_state = "lightmixed" - -/obj/item/weapon/storage/box/lights/mixed/New() - ..() - for(var/i = 0; i < 14; i++) - new /obj/item/weapon/light/tube(src) - for(var/i = 0; i < 7; i++) - new /obj/item/weapon/light/bulb(src) - -/obj/item/weapon/storage/box/walkingcane - name = "cane" - desc = "A cane used by a true gentlemen. Or a clown." - icon = 'icons/obj/weapons.dmi' - icon_state = "cane" - item_state = "stick" - flags = FPRINT | TABLEPASS| CONDUCT - force = 5.0 - throwforce = 7.0 - w_class = 2.0 - m_amt = 50 - attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") - can_hold = list( - "/obj/item/weapon/canesword") - storage_slots = 1 - max_w_class = 4 - max_combined_w_class = 4 - - New() - ..() - new /obj/item/weapon/canesword(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/stunbaton.dm.bak b/code/game/objects/items/weapons/stunbaton.dm.bak deleted file mode 100644 index b08484ff..00000000 --- a/code/game/objects/items/weapons/stunbaton.dm.bak +++ /dev/null @@ -1,269 +0,0 @@ -/obj/item/weapon/melee/baton - name = "stun baton" - desc = "A stun baton for incapacitating people with." - icon_state = "stunbaton" - item_state = "baton" - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT - force = 10 - throwforce = 7 - w_class = 3 - var/charges = 10 - var/status = 0 - var/mob/foundmob = "" //Used in throwing proc. - - origin_tech = "combat=2" - - suicide_act(mob/user) - viewers(user) << "\red [user] is putting the live [src.name] in \his mouth! It looks like \he's trying to commit suicide." - return (FIRELOSS) - -/obj/item/weapon/melee/baton/update_icon() - if(status) - icon_state = "stunbaton_active" - else - icon_state = "stunbaton" - -/obj/item/weapon/melee/baton/attack_self(mob/user as mob) - if(status && (CLUMSY in user.mutations) && prob(50)) - user << "\red You grab the [src] on the wrong side." - user.Weaken(30) - charges-- - if(charges < 1) - status = 0 - update_icon() - return - if(charges > 0) - status = !status - user << "\The [src] is now [status ? "on" : "off"]." - playsound(src.loc, "sparks", 75, 1, -1) - update_icon() - else - status = 0 - user << "\The [src] is out of charge." - add_fingerprint(user) - -/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob) - if(status && (CLUMSY in user.mutations) && prob(50)) - user << "You accidentally hit yourself with the [src]!" - user.Weaken(30) - charges-- - if(charges < 1) - status = 0 - update_icon() - return - - var/mob/living/carbon/human/H = M - if(isrobot(M)) - ..() - return - - if(user.a_intent == "hurt") - if(!..()) return - //H.apply_effect(5, WEAKEN, 0) - H.visible_message("[M] has been beaten with the [src] by [user]!") - - user.attack_log += "\[[time_stamp()]\] Beat [H.name] ([H.ckey]) with [src.name]" - H.attack_log += "\[[time_stamp()]\] Beaten by [user.name] ([user.ckey]) with [src.name]" - msg_admin_attack("[user.name] ([user.ckey]) beat [H.name] ([H.ckey]) with [src.name] (JMP)") - - playsound(src.loc, "swing_hit", 50, 1, -1) - else if(!status) - H.visible_message("[M] has been prodded with the [src] by [user]. Luckily it was off.") - return - - if(status) - H.apply_effect(10, STUN, 0) - H.apply_effect(10, WEAKEN, 0) - H.apply_effect(10, STUTTER, 0) - user.lastattacked = M - H.lastattacker = user - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(50) - else - charges-- - H.visible_message("[M] has been stunned with the [src] by [user]!") - - user.attack_log += "\[[time_stamp()]\] Stunned [H.name] ([H.ckey]) with [src.name]" - H.attack_log += "\[[time_stamp()]\] Stunned by [user.name] ([user.ckey]) with [src.name]" - log_attack("[user.name] ([user.ckey]) stunned [H.name] ([H.ckey]) with [src.name]") - - playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) - if(charges < 1) - status = 0 - update_icon() - - add_fingerprint(user) - -/obj/item/weapon/melee/baton/throw_impact(atom/hit_atom) - . = ..() - if (prob(50)) - if(istype(hit_atom, /mob/living)) - var/mob/living/carbon/human/H = hit_atom - if(status) - H.apply_effect(10, STUN, 0) - H.apply_effect(10, WEAKEN, 0) - H.apply_effect(10, STUTTER, 0) - charges-- - - for(var/mob/M in player_list) if(M.key == src.fingerprintslast) - foundmob = M - break - - H.visible_message("[src], thrown by [foundmob.name], strikes [H] and stuns them!") - - H.attack_log += "\[[time_stamp()]\] Stunned by thrown [src.name] last touched by ([src.fingerprintslast])" - log_attack("Flying [src.name], last touched by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])" ) - -/obj/item/weapon/melee/baton/emp_act(severity) - switch(severity) - if(1) - charges = 0 - if(2) - charges = max(0, charges - 5) - if(charges < 1) - status = 0 - update_icon() - - -/* - * - * - *Stun Rod, WALL OF TEXT! - * - * - */ - -/obj/item/weapon/melee/baton/stunrod - name = "stun rod" - desc = "A more-than-lethal weapon used to deal with high threat situations." - icon_state = "stunrod" - item_state = "stunrod" - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT - force = 12 - throwforce = 8 - w_class = 3 - - origin_tech = "combat=4,illegal=2" - - suicide_act(mob/user) - viewers(user) << "\red [user] is putting the live [src.name] in \his mouth! It looks like \he's trying to commit suicide." - return (FIRELOSS) - -/obj/item/weapon/melee/baton/stunrod/update_icon() - if(status) - icon_state = "stunrod_active" - item_state = "stunrod_active" - else - icon_state = "stunrod" - item_state = "stunrod" - -/obj/item/weapon/melee/baton/stunrod/attack_self(mob/user as mob) - if(status && (CLUMSY in user.mutations) && prob(50)) - user << "\red You grab the [src] on the wrong side and burn yourself." - user.Weaken(40) - charges-- - if(charges < 1) - status = 0 - update_icon() - return - if(charges > 0) - status = !status - user << "\The [src] is now [status ? "on" : "off"]." - playsound(src.loc, "sparks", 75, 1, -1) - update_icon() - else - status = 0 - user << "\The [src] is out of charge." - add_fingerprint(user) - -/obj/item/weapon/melee/baton/stunrod/attack(mob/M as mob, mob/user as mob) - if(status && (CLUMSY in user.mutations) && prob(50)) - user << "You accidentally hit yourself with the [src]!" - user.Weaken(20) -// user.apply_damage(10,BURN) - charges-- - if(charges < 1) - status = 0 - update_icon() - return - - var/mob/living/carbon/human/H = M - if(isrobot(M)) - ..() - return - - if(user.a_intent == "hurt") - if(!..()) return - H.apply_effect(5, WEAKEN, 0) - H.apply_damage(15, BURN) - H.visible_message("[M] has been beaten with the [src] by [user]!") - - user.attack_log += "\[[time_stamp()]\] Beat [H.name] ([H.ckey]) with [src.name]" - H.attack_log += "\[[time_stamp()]\] Beaten by [user.name] ([user.ckey]) with [src.name]" - msg_admin_attack("[user.name] ([user.ckey]) beat [H.name] ([H.ckey]) with [src.name] (JMP)") - - playsound(src.loc, "swing_hit", 50, 1, -1) - else if(!status) - H.visible_message("[M] has been prodded with the [src] by [user]. Luckily it was off.") - return - - if(status) - H.apply_effect(5, STUN, 0) - H.apply_effect(5, WEAKEN, 0) - H.apply_effect(5, STUTTER, 0) - H.apply_damage(15, BURN) - user.lastattacked = M - H.lastattacker = user - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(75) - else - charges-- - H.visible_message("[M] has been stunned with the [src] by [user]!") - - user.attack_log += "\[[time_stamp()]\] Stunned [H.name] ([H.ckey]) with [src.name]" - H.attack_log += "\[[time_stamp()]\] Stunned by [user.name] ([user.ckey]) with [src.name]" - log_attack("[user.name] ([user.ckey]) stunned [H.name] ([H.ckey]) with [src.name]") - - playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) - if(charges < 1) - status = 0 - update_icon() - - add_fingerprint(user) - -/obj/item/weapon/melee/baton/stunrod/throw_impact(atom/hit_atom) - . = ..() - if (prob(50)) - if(istype(hit_atom, /mob/living)) - var/mob/living/carbon/human/H = hit_atom - if(status) - H.apply_effect(5, STUN, 0) - H.apply_effect(5, WEAKEN, 0) - H.apply_effect(5, STUTTER, 0) - H.apply_damage(15, BURN) - charges-- - - for(var/mob/M in player_list) if(M.key == src.fingerprintslast) - foundmob = M - break - - H.visible_message("[src], thrown by [foundmob.name], strikes [H] and stuns them!") - - H.attack_log += "\[[time_stamp()]\] Stunned by thrown [src.name] last touched by ([src.fingerprintslast])" - log_attack("Flying [src.name], last touched by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])" ) - -/obj/item/weapon/melee/baton/stunrod/emp_act(severity) - switch(severity) - if(1) - charges = 0 - if(2) - charges = max(0, charges - 5) - if(charges < 1) - status = 0 - update_icon() \ No newline at end of file diff --git a/code/game/objects/storage/coat.dm.bak b/code/game/objects/storage/coat.dm.bak deleted file mode 100644 index 35dd0fc2..00000000 --- a/code/game/objects/storage/coat.dm.bak +++ /dev/null @@ -1,263 +0,0 @@ -/obj/item/clothing/suit/storage - var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) - var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) - var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set) - var/max_combined_w_class = 4 //The sum of the w_classes of all the items in this storage item. - var/storage_slots = 2 //The number of storage slots in this container. - var/obj/screen/storage/boxes = null - var/obj/screen/close/closer = null - -/obj/item/clothing/suit/storage/proc/return_inv() - - var/list/L = list( ) - - L += src.contents - - for(var/obj/item/weapon/storage/S in src) - L += S.return_inv() - for(var/obj/item/weapon/gift/G in src) - L += G.gift - if (istype(G.gift, /obj/item/weapon/storage)) - L += G.gift:return_inv() - return L - -/obj/item/clothing/suit/storage/proc/show_to(mob/user as mob) - user.client.screen -= src.boxes - user.client.screen -= src.closer - user.client.screen -= src.contents - user.client.screen += src.boxes - user.client.screen += src.closer - user.client.screen += src.contents - user.s_active = src - return - -/obj/item/clothing/suit/storage/proc/hide_from(mob/user as mob) - - if(!user.client) - return - user.client.screen -= src.boxes - user.client.screen -= src.closer - user.client.screen -= src.contents - return - -/obj/item/clothing/suit/storage/proc/close(mob/user as mob) - - src.hide_from(user) - user.s_active = null - return - -//This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right. -//The numbers are calculated from the bottom-left The bottom-left slot being 1,1. -/obj/item/clothing/suit/storage/proc/orient_objs(tx, ty, mx, my) - var/cx = tx - var/cy = ty - src.boxes.screen_loc = text("[tx]:,[ty] to [mx],[my]") - for(var/obj/O in src.contents) - O.screen_loc = text("[cx],[cy]") - O.layer = 20 - cx++ - if (cx > mx) - cx = tx - cy-- - src.closer.screen_loc = text("[mx+1],[my]") - return - -//This proc draws out the inventory and places the items on it. It uses the standard position. -/obj/item/clothing/suit/storage/proc/standard_orient_objs(var/rows,var/cols) - var/cx = 4 - var/cy = 2+rows - src.boxes.screen_loc = text("4:16,2:16 to [4+cols]:16,[2+rows]:16") - for(var/obj/O in src.contents) - O.screen_loc = text("[cx]:16,[cy]:16") - O.layer = 20 - cx++ - if (cx > (4+cols)) - cx = 4 - cy-- - src.closer.screen_loc = text("[4+cols+1]:16,2:16") - return - -//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing. -/obj/item/clothing/suit/storage/proc/orient2hud(mob/user as mob) - //var/mob/living/carbon/human/H = user - var/row_num = 0 - var/col_count = min(7,storage_slots) -1 - if (contents.len > 7) - row_num = round((contents.len-1) / 7) // 7 is the maximum allowed width. - src.standard_orient_objs(row_num,col_count) - return - -//This proc is called when you want to place an item into the storage item. -/obj/item/clothing/suit/storage/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/evidencebag) && src.loc != user) - return - - ..() - if(isrobot(user)) - user << "\blue You're a robot. No." - return //Robots can't interact with storage items. - - if(src.loc == W) - return //Means the item is already in the storage item - - if(contents.len >= storage_slots) - user << "\red \The [src] is full, make some space." - return //Storage item is full - - if(can_hold.len) - var/ok = 0 - for(var/A in can_hold) - if(istype(W, text2path(A) )) - ok = 1 - break - if(!ok) - user << "\red \The [src] cannot hold \the [W]." - return - - for(var/A in cant_hold) //Check for specific items which this container can't hold. - if(istype(W, text2path(A) )) - user << "\red \The [src] cannot hold \the [W]." - return - - if (W.w_class > max_w_class) - user << "\red \The [W] is too big for \the [src]" - return - - var/sum_w_class = W.w_class - for(var/obj/item/I in contents) - sum_w_class += I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it. - - if(sum_w_class > max_combined_w_class) - user << "\red \The [src] is full, make some space." - return - - if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage))) - if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm. - user << "\red \The [src] cannot hold \the [W] as it's a storage item of the same size." - return //To prevent the stacking of the same sized items. - - user.u_equip(W) - playsound(src.loc, "rustle", 50, 1, -5) - W.loc = src - if ((user.client && user.s_active != src)) - user.client.screen -= W - src.orient2hud(user) - W.dropped(user) - add_fingerprint(user) - show_to(user) - - -/obj/item/weapon/storage/dropped(mob/user as mob) - return - -/obj/item/clothing/suit/storage/MouseDrop(atom/over_object) - if(ishuman(usr)) - var/mob/living/carbon/human/M = usr - if (!( istype(over_object, /obj/screen) )) - return ..() - playsound(src.loc, "rustle", 50, 1, -5) - if ((!( M.restrained() ) && !( M.stat ) && M.wear_suit == src)) - if (over_object.name == "r_hand") - M.u_equip(src) - M.put_in_r_hand(src) - // if (!( M.r_hand )) - // M.u_equip(src) - // M.r_hand = src - else if (over_object.name == "l_hand") - M.u_equip(src) - M.put_in_l_hand(src) - // if (!( M.l_hand )) - // M.u_equip(src) - // M.l_hand = src - M.update_inv_wear_suit() - src.add_fingerprint(usr) - return - if( (over_object == usr && in_range(src, usr) || usr.contents.Find(src)) && usr.s_active) - usr.s_active.close(usr) - src.show_to(usr) - return - -/obj/item/clothing/suit/storage/attack_paw(mob/user as mob) - //playsound(src.loc, "rustle", 50, 1, -5) // what - return src.attack_hand(user) - -/obj/item/clothing/suit/storage/attack_hand(mob/user as mob) - playsound(src.loc, "rustle", 50, 1, -5) - src.orient2hud(user) - if (src.loc == user) - if (user.s_active) - user.s_active.close(user) - src.show_to(user) - else - ..() - for(var/mob/M in range(1)) - if (M.s_active == src) - src.close(M) - src.add_fingerprint(user) - return - -/obj/item/clothing/suit/storage/New() - - src.boxes = new /obj/screen/storage( ) - src.boxes.name = "storage" - src.boxes.master = src - src.boxes.icon_state = "block" - src.boxes.screen_loc = "7,7 to 10,8" - src.boxes.layer = 19 - src.closer = new /obj/screen/close( ) - src.closer.master = src - src.closer.icon_state = "x" - src.closer.layer = 20 - orient2hud() - return - -/obj/item/clothing/suit/emp_act(severity) - if(!istype(src.loc, /mob/living)) - for(var/obj/O in contents) - O.emp_act(severity) - ..() - -/obj/item/clothing/suit/hear_talk(mob/M, var/msg) - for (var/atom/A in src) - if(istype(A,/obj/)) - var/obj/O = A - O.hear_talk(M, msg) - -/obj/item/clothing/suit/storage/wintercoat - name = "Dark Winter Coat" - desc = "A soft dark coat, with fur on the edges of the hood." - icon_state = "coatdark" - item_state = "coatdark" - -/obj/item/clothing/suit/storage/wintercoat/white - name = "White Winter Coat" - desc = "A soft white coat, with fur on the edges of the hood." - icon_state = "coatwhite" - item_state = "coatwhite" - - verb/toggle() - set name = "Toggle wintercoat hood" - set category = "Object" - set src in usr - - if(!usr.canmove || usr.stat || usr.restrained()) - return 0 - - switch(icon_state) - if("coatdark") - src.icon_state = "coatdark-hood" - usr << "You button up the coat and pull on the hood." - if("coatdark-hood") - src.icon_state = "coatdark" - usr << "You unbutton the coat and pull off the hood." - if("coatwhite") - src.icon_state = "coatwhite-hood" - usr << "You button up the coat and pull on the hood." - if("coatwhite-hood") - src.icon_state = "coatwhite" - usr << "You unbutton the coat and pull off the hood." - else - usr << "You attempt to button-up the velcro on your [src], before promptly realising how retarded you are." - return - usr.update_inv_wear_suit() //so our overlays update - diff --git a/code/game/objects/structures/crates_lockers/closets.dm.bak b/code/game/objects/structures/crates_lockers/closets.dm.bak deleted file mode 100644 index 922039b8..00000000 --- a/code/game/objects/structures/crates_lockers/closets.dm.bak +++ /dev/null @@ -1,287 +0,0 @@ -/obj/structure/closet - name = "closet" - desc = "It's a basic storage unit." - icon = 'icons/obj/closet.dmi' - icon_state = "closed" - density = 1 - flags = FPRINT - var/icon_closed = "closed" - var/icon_opened = "open" - var/opened = 0 - var/welded = 0 - var/wall_mounted = 0 //never solid (You can always pass over it) - var/health = 100 - var/lastbang - var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate - //then open it in a populated area to crash clients. - -/obj/structure/closet/New() - ..() - spawn(1) - if(!opened) // if closed, any item at the crate's loc is put in the contents - for(var/obj/item/I in src.loc) - if(I.density || I.anchored || I == src) continue - I.loc = src - -/obj/structure/closet/alter_health() - return get_turf(src) - -/obj/structure/closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0 || wall_mounted)) return 1 - return (!density) - -/obj/structure/closet/proc/can_open() - if(src.welded) - return 0 - return 1 - -/obj/structure/closet/proc/can_close() - for(var/obj/structure/closet/closet in get_turf(src)) - if(closet != src) - return 0 - return 1 - -/obj/structure/closet/proc/dump_contents() - //Cham Projector Exception - for(var/obj/effect/dummy/chameleon/AD in src) - AD.loc = src.loc - - for(var/obj/I in src) - I.loc = src.loc - - for(var/mob/M in src) - M.loc = src.loc - if(M.client) - M.client.eye = M.client.mob - M.client.perspective = MOB_PERSPECTIVE - -/obj/structure/closet/proc/open() - if(src.opened) - return 0 - - if(!src.can_open()) - return 0 - - src.dump_contents() - - src.icon_state = src.icon_opened - src.opened = 1 - if(istype(src, /obj/structure/closet/body_bag)) - playsound(src.loc, 'sound/items/zip.ogg', 15, 1, -3) - else - playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) - density = 0 - return 1 - -/obj/structure/closet/proc/close() - if(!src.opened) - return 0 - if(!src.can_close()) - return 0 - - var/itemcount = 0 - - //Cham Projector Exception - for(var/obj/effect/dummy/chameleon/AD in src.loc) - if(itemcount >= storage_capacity) - break - AD.loc = src - itemcount++ - - for(var/obj/item/I in src.loc) - if(itemcount >= storage_capacity) - break - if(!I.anchored) - I.loc = src - itemcount++ - - for(var/mob/M in src.loc) - if(itemcount >= storage_capacity) - break - if(istype (M, /mob/dead/observer)) - continue - if(M.buckled) - continue - - if(M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - - M.loc = src - itemcount++ - - src.icon_state = src.icon_closed - src.opened = 0 - if(istype(src, /obj/structure/closet/body_bag)) - playsound(src.loc, 'sound/items/zip.ogg', 15, 1, -3) - else - playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) - density = 1 - return 1 - -/obj/structure/closet/proc/toggle(mob/user as mob) - . = src.opened ? src.close() : src.open() - if(!.) - user << "It won't budge!" - return - -// this should probably use dump_contents() -/obj/structure/closet/ex_act(severity) - switch(severity) - if(1) - for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion - A.loc = src.loc - A.ex_act(severity++) - del(src) - if(2) - if(prob(50)) - for (var/atom/movable/A as mob|obj in src) - A.loc = src.loc - A.ex_act(severity++) - del(src) - if(3) - if(prob(5)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - A.ex_act(severity++) - del(src) - -/obj/structure/closet/bullet_act(var/obj/item/projectile/Proj) - health -= Proj.damage - ..() - if(health <= 0) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - del(src) - - return - -/obj/structure/closet/attack_animal(mob/living/simple_animal/user as mob) - if(user.wall_smash) - visible_message("\red [user] destroys the [src]. ") - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - del(src) - -// this should probably use dump_contents() -/obj/structure/closet/blob_act() - if(prob(75)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - del(src) - -/obj/structure/closet/meteorhit(obj/O as obj) - if(O.icon_state == "flaming") - for(var/mob/M in src) - M.meteorhit(O) - src.dump_contents() - del(src) - -/obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(src.opened) - if(istype(W, /obj/item/weapon/grab)) - src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet - if(istype(W,/obj/item/tk_grab)) - return 0 - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(!WT.remove_fuel(0,user)) - user << "You need more welding fuel to complete this task." - return - new /obj/item/stack/sheet/metal(src.loc) - for(var/mob/M in viewers(src)) - M.show_message("\The [src] has been cut apart by [user] with \the [WT].", 3, "You hear welding.", 2) - del(src) - return - if(isrobot(user)) - return - usr.drop_item() - if(W) - W.loc = src.loc - else if(istype(W, /obj/item/weapon/packageWrap)) - return - else if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(!WT.remove_fuel(0,user)) - user << "You need more welding fuel to complete this task." - return - src.welded = !src.welded - src.update_icon() - for(var/mob/M in viewers(src)) - M.show_message("[src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "You hear welding.", 2) - else - src.attack_hand(user) - return - -/obj/structure/closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) - if(istype(O, /obj/screen)) //fix for HUD elements making their way into the world -Pete - return - if(O.loc == user) - return - if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis) - return - if((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src))) - return - if(user.loc==null) // just in case someone manages to get a closet into the blue light dimension, as unlikely as that seems - return - if(!istype(user.loc, /turf)) // are you in a container/closet/pod/etc? - return - if(!src.opened) - return - if(istype(O, /obj/structure/closet)) - return - step_towards(O, src.loc) - if(user != O) - user.show_viewers("[user] stuffs [O] into [src]!") - src.add_fingerprint(user) - return - -/obj/structure/closet/relaymove(mob/user as mob) - if(user.stat || !isturf(src.loc)) - return - - if(!src.open()) - user << "It won't budge!" - if(!lastbang) - lastbang = 1 - for (var/mob/M in hearers(src, null)) - M << text("BANG, bang!", max(0, 5 - get_dist(src, M))) - spawn(30) - lastbang = 0 - - -/obj/structure/closet/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/closet/attack_hand(mob/user as mob) - src.add_fingerprint(user) - src.toggle(user) - -// tk grab then use on self -/obj/structure/closet/attack_self_tk(mob/user as mob) - src.add_fingerprint(user) - if(!src.toggle()) - usr << "It won't budge!" - -/obj/structure/closet/verb/verb_toggleopen() - set src in oview(1) - set category = "Object" - set name = "Toggle Open" - - if(!usr.canmove || usr.stat || usr.restrained()) - return - - if(ishuman(usr)) - src.add_fingerprint(usr) - src.toggle(usr) - else - usr << "This mob type can't use this verb." - -/obj/structure/closet/update_icon()//Putting the welded stuff in updateicon() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot) - overlays.Cut() - if(!opened) - icon_state = icon_closed - if(welded) - overlays += "welded" - else - icon_state = icon_opened \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm.bak b/code/game/objects/structures/crates_lockers/closets/job_closets.dm.bak deleted file mode 100644 index a0a757a7..00000000 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm.bak +++ /dev/null @@ -1,104 +0,0 @@ -/* Closets for specific jobs - * Contains: - * Bartender - * Janitor - * Lawyer - * ERT - */ - -/* - * Bartender - */ -/obj/structure/closet/gmcloset - name = "formal closet" - desc = "It's a storage unit for formal clothing." - icon_state = "black" - icon_closed = "black" - -/obj/structure/closet/gmcloset/New() - ..() - sleep(2) - new /obj/item/clothing/head/that(src) - new /obj/item/clothing/head/that(src) - new /obj/item/clothing/head/hairflower - new /obj/item/clothing/under/sl_suit(src) - new /obj/item/clothing/under/sl_suit(src) - new /obj/item/clothing/under/rank/bartender(src) - new /obj/item/clothing/under/rank/bartender(src) - new /obj/item/clothing/under/dress/dress_saloon - new /obj/item/clothing/suit/wcoat(src) - new /obj/item/clothing/suit/wcoat(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - -/* - * Janitor - */ -/obj/structure/closet/jcloset - name = "custodial closet" - desc = "It's a storage unit for janitorial clothes and gear." - icon_state = "mixed" - icon_closed = "mixed" - -/obj/structure/closet/jcloset/New() - ..() - sleep(2) - new /obj/item/clothing/under/rank/janitor(src) - new /obj/item/weapon/cartridge/janitor(src) - new /obj/item/clothing/gloves/black(src) - new /obj/item/clothing/head/soft/purple(src) - new /obj/item/device/flashlight(src) - new /obj/item/weapon/caution(src) - new /obj/item/weapon/caution(src) - new /obj/item/weapon/caution(src) - new /obj/item/weapon/caution(src) - new /obj/item/device/lightreplacer(src) - new /obj/item/weapon/storage/bag/trash(src) - new /obj/item/clothing/shoes/galoshes(src) - -/* - * Lawyer - */ -/obj/structure/closet/lawcloset - name = "legal closet" - desc = "It's a storage unit for courtroom apparel and items." - icon_state = "blue" - icon_closed = "blue" - -/obj/structure/closet/lawcloset/New() - new /obj/item/clothing/under/lawyer/female(src) - new /obj/item/clothing/under/lawyer/black(src) - new /obj/item/clothing/under/lawyer/red(src) - new /obj/item/clothing/under/lawyer/bluesuit(src) - new /obj/item/clothing/suit/storage/lawyer/bluejacket(src) - new /obj/item/clothing/under/lawyer/purpsuit(src) - new /obj/item/clothing/suit/storage/lawyer/purpjacket(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/black(src) - -/* - * ERT - */ -/obj/structure/closet/ertcloset - name = "Response Team Locker" - desc = "It's a storage unit for Response Team Clothing." - icon_state = "ertclosed" - icon_closed = "ertclosed" - icon_opened = "ertopen" - -/obj/structure/closet/ertcloset/New() - new /obj/item/clothing/gloves/combat(src) - new /obj/item/clothing/gloves/combat(src) - new /obj/item/clothing/gloves/combat(src) - new /obj/item/clothing/shoes/combat(src) - new /obj/item/clothing/shoes/combat(src) - new /obj/item/clothing/shoes/combat(src) - new /obj/item/device/radio/headset/ert(src) - new /obj/item/device/radio/headset/ert(src) - new /obj/item/device/radio/headset/ert(src) - new /obj/item/clothing/under/rank/ert_soldier(src) - new /obj/item/clothing/under/rank/ert_soldier(src) - new /obj/item/clothing/under/rank/ert_nco(src) - new /obj/item/clothing/under/rank/ert_nco(src) - new /obj/item/clothing/under/rank/ert_officer(src) - new /obj/item/clothing/under/rank/ert_officer(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm.bak b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm.bak deleted file mode 100644 index 3778c041..00000000 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm.bak +++ /dev/null @@ -1,53 +0,0 @@ -/obj/structure/closet/secure_closet/guncabinet - name = "gun cabinet" - req_access = list(access_armory) - icon = 'icons/obj/guncabinet.dmi' - icon_state = "base" - icon_off = "base" - icon_broken = "base" - icon_locked = "base" - icon_closed = "base" - icon_opened = "base" - -/obj/structure/closet/secure_closet/guncabinet/New() - ..() - update_icon() - -/obj/structure/closet/secure_closet/guncabinet/toggle() - ..() - update_icon() - -/obj/structure/closet/secure_closet/guncabinet/update_icon() - overlays.Cut() - if(opened) - overlays += icon(icon,"door_open") - else - var/lazors = 0 - var/shottas = 0 - for (var/obj/item/weapon/gun/G in contents) - if (istype(G, /obj/item/weapon/gun/energy)) - lazors++ - if (istype(G, /obj/item/weapon/gun/projectile/)) - shottas++ - if (lazors || shottas) - for (var/i = 0 to 2) - var/image/gun = image(icon(src.icon)) - - if (lazors > 0 && (shottas <= 0 || prob(50))) - lazors-- - gun.icon_state = "laser" - else if (shottas > 0) - shottas-- - gun.icon_state = "projectile" - -// gun.pixel_x = i*4 Trying some fixes to make the guncabinets less retarded -- Skull132 - overlays += gun - - overlays += icon(src.icon,"door") - - if(broken) - overlays += icon(src.icon,"broken") - else if (locked) - overlays += icon(src.icon,"locked") - else - overlays += icon(src.icon,"open") \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm.bak b/code/game/objects/structures/crates_lockers/closets/secure/security.dm.bak deleted file mode 100644 index 1a0fb88f..00000000 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm.bak +++ /dev/null @@ -1,351 +0,0 @@ -/obj/structure/closet/secure_closet/captains - name = "Captain's Locker" - req_access = list(access_captain) - icon_state = "capsecure1" - icon_closed = "capsecure" - icon_locked = "capsecure1" - icon_opened = "capsecureopen" - icon_broken = "capsecurebroken" - icon_off = "capsecureoff" - - New() - ..() - sleep(2) - if(prob(50)) - new /obj/item/weapon/storage/backpack/captain(src) - else - new /obj/item/weapon/storage/backpack/satchel_cap(src) - new /obj/item/clothing/suit/captunic(src) - new /obj/item/clothing/suit/captunic/capjacket(src) - new /obj/item/clothing/head/helmet/cap(src) - new /obj/item/clothing/under/rank/captain(src) - new /obj/item/clothing/suit/armor/vest(src) - new /obj/item/weapon/cartridge/captain(src) - new /obj/item/clothing/head/helmet/swat(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/device/radio/headset/heads/captain(src) - new /obj/item/clothing/gloves/captain(src) - new /obj/item/weapon/gun/energy/gun/pistol(src) - new /obj/item/clothing/suit/armor/captain(src) - new /obj/item/weapon/melee/telebaton(src) - new /obj/item/clothing/under/dress/dress_cap(src) - return - - - -/obj/structure/closet/secure_closet/hop - name = "Head of Personnel's Locker" - req_access = list(access_hop) - icon_state = "hopsecure1" - icon_closed = "hopsecure" - icon_locked = "hopsecure1" - icon_opened = "hopsecureopen" - icon_broken = "hopsecurebroken" - icon_off = "hopsecureoff" - - New() - ..() - sleep(2) - new /obj/item/clothing/glasses/sunglasses(src) - new /obj/item/clothing/suit/armor/vest(src) - new /obj/item/clothing/head/helmet(src) - new /obj/item/weapon/cartridge/hop(src) - new /obj/item/device/radio/headset/heads/hop(src) - new /obj/item/weapon/storage/box/ids(src) - new /obj/item/weapon/storage/box/ids( src ) - new /obj/item/weapon/gun/energy/gun/pistol(src) - new /obj/item/device/flash(src) - return - -/obj/structure/closet/secure_closet/hop2 - name = "Head of Personnel's Attire" - req_access = list(access_hop) - icon_state = "hopsecure1" - icon_closed = "hopsecure" - icon_locked = "hopsecure1" - icon_opened = "hopsecureopen" - icon_broken = "hopsecurebroken" - icon_off = "hopsecureoff" - - New() - ..() - sleep(2) - new /obj/item/clothing/under/rank/head_of_personnel(src) - new /obj/item/clothing/under/dress/dress_hop(src) - new /obj/item/clothing/under/dress/dress_hr(src) - new /obj/item/clothing/under/lawyer/female(src) - new /obj/item/clothing/under/lawyer/black(src) - new /obj/item/clothing/under/lawyer/red(src) - new /obj/item/clothing/under/lawyer/oldman(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/leather(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/under/rank/head_of_personnel_whimsy(src) - return - - - -/obj/structure/closet/secure_closet/hos - name = "Head of Security's Locker" - req_access = list(access_hos) - icon_state = "hossecure1" - icon_closed = "hossecure" - icon_locked = "hossecure1" - icon_opened = "hossecureopen" - icon_broken = "hossecurebroken" - icon_off = "hossecureoff" - - New() - ..() - sleep(2) - if(prob(50)) - new /obj/item/weapon/storage/backpack/security(src) - else - new /obj/item/weapon/storage/backpack/satchel_sec(src) - new /obj/item/clothing/head/helmet/HoS(src) - new /obj/item/clothing/suit/armor/vest(src) - new /obj/item/clothing/under/rank/head_of_security/jensen(src) - new /obj/item/clothing/under/rank/head_of_security/corp(src) - new /obj/item/clothing/suit/armor/hos/jensen(src) - new /obj/item/clothing/suit/armor/hos(src) - new /obj/item/clothing/head/helmet/HoS/dermal(src) - new /obj/item/weapon/cartridge/hos(src) - new /obj/item/device/radio/headset/heads/hos(src) - new /obj/item/clothing/glasses/sunglasses/sechud(src) - new /obj/item/taperoll/police(src) - new /obj/item/weapon/shield/riot(src) - new /obj/item/weapon/storage/lockbox/loyalty(src) - new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/weapon/storage/belt/security(src) - new /obj/item/device/flash(src) - new /obj/item/weapon/melee/baton(src) - new /obj/item/weapon/gun/energy/gun/pistol(src) - new /obj/item/clothing/tie/holster/waist(src) - new /obj/item/weapon/melee/telebaton(src) - return - - - -/obj/structure/closet/secure_closet/warden - name = "Warden's Locker" - req_access = list(access_armory) - icon_state = "wardensecure1" - icon_closed = "wardensecure" - icon_locked = "wardensecure1" - icon_opened = "wardensecureopen" - icon_broken = "wardensecurebroken" - icon_off = "wardensecureoff" - - - New() - ..() - sleep(2) - if(prob(50)) - new /obj/item/weapon/storage/backpack/security(src) - else - new /obj/item/weapon/storage/backpack/satchel_sec(src) - new /obj/item/clothing/suit/armor/vest/security(src) - new /obj/item/clothing/under/rank/warden(src) - new /obj/item/clothing/under/rank/warden/corp(src) - new /obj/item/clothing/suit/armor/vest/warden(src) - new /obj/item/clothing/head/helmet/warden(src) -// new /obj/item/weapon/cartridge/security(src) - new /obj/item/device/radio/headset/headset_sec(src) - new /obj/item/clothing/glasses/sunglasses/sechud(src) - new /obj/item/taperoll/police(src) - new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/weapon/storage/belt/security(src) - new /obj/item/weapon/reagent_containers/spray/pepper(src) - new /obj/item/weapon/melee/baton(src) - new /obj/item/weapon/gun/energy/taser(src) - new /obj/item/weapon/storage/box/holobadge(src) - return - - - -/obj/structure/closet/secure_closet/security - name = "Security Officer's Locker" - req_access = list(access_brig) - icon_state = "sec1" - icon_closed = "sec" - icon_locked = "sec1" - icon_opened = "secopen" - icon_broken = "secbroken" - icon_off = "secoff" - - New() - ..() - sleep(2) - if(prob(50)) - new /obj/item/weapon/storage/backpack/security(src) - else - new /obj/item/weapon/storage/backpack/satchel_sec(src) - new /obj/item/clothing/suit/armor/vest/security(src) - new /obj/item/clothing/head/helmet(src) -// new /obj/item/weapon/cartridge/security(src) - new /obj/item/device/radio/headset/headset_sec(src) - new /obj/item/weapon/storage/belt/security(src) - new /obj/item/device/flash(src) - new /obj/item/weapon/reagent_containers/spray/pepper(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/melee/baton(src) - new /obj/item/weapon/gun/energy/taser(src) - new /obj/item/clothing/glasses/sunglasses/sechud(src) - new /obj/item/taperoll/police(src) - new /obj/item/device/hailer(src) - new /obj/item/clothing/tie/storage/black_vest(src) - new /obj/item/clothing/head/soft/sec/corp(src) - new /obj/item/clothing/under/rank/security/corp(src) - return - - -/obj/structure/closet/secure_closet/security/cargo - - New() - ..() - new /obj/item/clothing/tie/armband/cargo(src) - new /obj/item/device/encryptionkey/headset_cargo(src) - return - -/obj/structure/closet/secure_closet/security/engine - - New() - ..() - new /obj/item/clothing/tie/armband/engine(src) - new /obj/item/device/encryptionkey/headset_eng(src) - return - -/obj/structure/closet/secure_closet/security/science - - New() - ..() - new /obj/item/clothing/tie/armband/science(src) - new /obj/item/device/encryptionkey/headset_sci(src) - return - -/obj/structure/closet/secure_closet/security/med - - New() - ..() - new /obj/item/clothing/tie/armband/medgreen(src) - new /obj/item/device/encryptionkey/headset_med(src) - return - - -/obj/structure/closet/secure_closet/detective - name = "Detective's Cabinet" - req_access = list(access_forensics_lockers) - icon_state = "cabinetdetective_locked" - icon_closed = "cabinetdetective" - icon_locked = "cabinetdetective_locked" - icon_opened = "cabinetdetective_open" - icon_broken = "cabinetdetective_broken" - icon_off = "cabinetdetective_broken" - - New() - ..() - sleep(2) - new /obj/item/clothing/under/det(src) - new /obj/item/clothing/under/det/black(src) - new /obj/item/clothing/under/det/slob(src) - new /obj/item/clothing/suit/storage/det_suit(src) - new /obj/item/clothing/suit/storage/det_suit/black(src) - new /obj/item/clothing/suit/storage/forensics/blue(src) - new /obj/item/clothing/suit/storage/forensics/red(src) - new /obj/item/clothing/gloves/black(src) - new /obj/item/clothing/head/det_hat(src) - new /obj/item/clothing/head/det_hat/black(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/weapon/storage/box/evidence(src) - new /obj/item/device/radio/headset/headset_sec(src) - new /obj/item/device/detective_scanner(src) - new /obj/item/clothing/suit/armor/det_suit(src) - new /obj/item/ammo_magazine/c45r(src) - new /obj/item/ammo_magazine/c45r(src) - new /obj/item/taperoll/police(src) - new /obj/item/weapon/gun/projectile/detective/semiauto(src) - new /obj/item/clothing/tie/holster/armpit(src) - return - -/obj/structure/closet/secure_closet/detective/update_icon() - if(broken) - icon_state = icon_broken - else - if(!opened) - if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - else - icon_state = icon_opened - -/obj/structure/closet/secure_closet/injection - name = "Lethal Injections" - req_access = list(access_captain) - - - New() - ..() - sleep(2) - new /obj/item/weapon/reagent_containers/ld50_syringe/choral(src) - new /obj/item/weapon/reagent_containers/ld50_syringe/choral(src) - return - - - -/obj/structure/closet/secure_closet/brig - name = "Brig Locker" - req_access = list(access_brig) - anchored = 1 - var/id = null - - New() - new /obj/item/clothing/under/color/orange( src ) - new /obj/item/clothing/shoes/orange( src ) - return - - - -/obj/structure/closet/secure_closet/courtroom - name = "Courtroom Locker" - req_access = list(access_court) - - New() - ..() - sleep(2) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/weapon/paper/Court (src) - new /obj/item/weapon/paper/Court (src) - new /obj/item/weapon/paper/Court (src) - new /obj/item/weapon/pen (src) - new /obj/item/clothing/suit/judgerobe (src) - new /obj/item/clothing/head/powdered_wig (src) - new /obj/item/weapon/storage/briefcase(src) - return - -/obj/structure/closet/secure_closet/wall - name = "wall locker" - req_access = list(access_security) - icon_state = "wall-locker1" - density = 1 - icon_closed = "wall-locker" - icon_locked = "wall-locker1" - icon_opened = "wall-lockeropen" - icon_broken = "wall-lockerbroken" - icon_off = "wall-lockeroff" - - //too small to put a man in - large = 0 - -/obj/structure/closet/secure_closet/wall/update_icon() - if(broken) - icon_state = icon_broken - else - if(!opened) - if(locked) - icon_state = icon_locked - else - icon_state = icon_closed - else - icon_state = icon_opened diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm.bak b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm.bak deleted file mode 100644 index 2602685b..00000000 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm.bak +++ /dev/null @@ -1,232 +0,0 @@ -/* Utility Closets - * Contains: - * Emergency Closet - * Fire Closet - * Tool Closet - * Radiation Closet - * Bombsuit Closet - * Hydrant - * First Aid - */ - -/* - * Emergency Closet - */ -/obj/structure/closet/emcloset - name = "emergency closet" - desc = "It's a storage unit for emergency breathmasks and o2 tanks." - icon_state = "emergency" - icon_closed = "emergency" - icon_opened = "emergencyopen" - -/obj/structure/closet/emcloset/New() - ..() - - switch (pickweight(list("small" = 55, "aid" = 25, "tank" = 10, "both" = 10, "nothing" = 0, "delete" = 0))) - if ("small") - new /obj/item/weapon/tank/emergency_oxygen(src) - new /obj/item/weapon/tank/emergency_oxygen(src) - new /obj/item/clothing/mask/breath(src) - new /obj/item/clothing/mask/breath(src) - if ("aid") - new /obj/item/weapon/tank/emergency_oxygen(src) - new /obj/item/weapon/storage/toolbox/emergency(src) - new /obj/item/clothing/mask/breath(src) - new /obj/item/weapon/storage/firstaid/o2(src) - if ("tank") - new /obj/item/weapon/tank/emergency_oxygen/engi(src) - new /obj/item/clothing/mask/breath(src) - new /obj/item/weapon/tank/emergency_oxygen/engi(src) - new /obj/item/clothing/mask/breath(src) - if ("both") - new /obj/item/weapon/storage/toolbox/emergency(src) - new /obj/item/weapon/tank/emergency_oxygen/engi(src) - new /obj/item/clothing/mask/breath(src) - new /obj/item/weapon/storage/firstaid/o2(src) - if ("nothing") - // doot - - // teehee - Ah, tg coders... - if ("delete") - del(src) - - //If you want to re-add fire, just add "fire" = 15 to the pick list. - /*if ("fire") - new /obj/structure/closet/firecloset(src.loc) - del(src)*/ - -/obj/structure/closet/emcloset/legacy/New() - new /obj/item/weapon/tank/oxygen(src) - new /obj/item/clothing/mask/gas(src) - -/* - * Fire Closet - */ -/obj/structure/closet/firecloset - name = "fire-safety closet" - desc = "It's a storage unit for fire-fighting supplies." - icon_state = "firecloset" - icon_closed = "firecloset" - icon_opened = "fireclosetopen" - -/obj/structure/closet/firecloset/New() - ..() - - new /obj/item/clothing/suit/fire/firefighter(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/weapon/tank/oxygen/red(src) - new /obj/item/weapon/extinguisher(src) - new /obj/item/clothing/head/hardhat/red(src) - -/obj/structure/closet/firecloset/full/New() - ..() - sleep(4) - contents = list() - - new /obj/item/clothing/suit/fire/firefighter(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/device/flashlight(src) - new /obj/item/weapon/tank/oxygen/red(src) - new /obj/item/weapon/extinguisher(src) - new /obj/item/clothing/head/hardhat/red(src) - -/obj/structure/closet/firecloset/update_icon() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened - - -/* - * Tool Closet - */ -/obj/structure/closet/toolcloset - name = "tool closet" - desc = "It's a storage unit for tools." - icon_state = "toolcloset" - icon_closed = "toolcloset" - icon_opened = "toolclosetopen" - -/obj/structure/closet/toolcloset/New() - if(prob(40)) - new /obj/item/clothing/suit/storage/hazardvest(src) - if(prob(70)) - new /obj/item/device/flashlight(src) - if(prob(70)) - new /obj/item/weapon/screwdriver(src) - if(prob(70)) - new /obj/item/weapon/wrench(src) - if(prob(70)) - new /obj/item/weapon/weldingtool(src) - if(prob(70)) - new /obj/item/weapon/crowbar(src) - if(prob(70)) - new /obj/item/weapon/wirecutters(src) - if(prob(70)) - new /obj/item/device/t_scanner(src) - if(prob(20)) - new /obj/item/weapon/storage/belt/utility(src) - if(prob(30)) - new /obj/item/weapon/cable_coil/random(src) - if(prob(30)) - new /obj/item/weapon/cable_coil/random(src) - if(prob(30)) - new /obj/item/weapon/cable_coil/random(src) - if(prob(20)) - new /obj/item/device/multitool(src) - if(prob(5)) - new /obj/item/clothing/gloves/yellow(src) - if(prob(40)) - new /obj/item/clothing/head/hardhat(src) - - -/* - * Radiation Closet - */ -/obj/structure/closet/radiation - name = "radiation suit closet" - desc = "It's a storage unit for rad-protective suits." - icon_state = "radsuitcloset" - icon_opened = "toolclosetopen" - icon_closed = "radsuitcloset" - -/obj/structure/closet/radiation/New() - ..() - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - -/* - * Bombsuit closet - */ -/obj/structure/closet/bombcloset - name = "\improper EOD closet" - desc = "It's a storage unit for explosion-protective suits." - icon_state = "bombsuit" - icon_closed = "bombsuit" - icon_opened = "bombsuitopen" - -/obj/structure/closet/bombcloset/New() - ..() - sleep(2) - new /obj/item/clothing/suit/bomb_suit( src ) - new /obj/item/clothing/under/color/black( src ) - new /obj/item/clothing/shoes/black( src ) - new /obj/item/clothing/head/bomb_hood( src ) - - -/obj/structure/closet/bombclosetsecurity - name = "\improper EOD closet" - desc = "It's a storage unit for explosion-protective suits." - icon_state = "bombsuitsec" - icon_closed = "bombsuitsec" - icon_opened = "bombsuitsecopen" - -/obj/structure/closet/bombclosetsecurity/New() - ..() - sleep(2) - new /obj/item/clothing/suit/bomb_suit/security( src ) - new /obj/item/clothing/under/rank/security( src ) - new /obj/item/clothing/shoes/brown( src ) - new /obj/item/clothing/head/bomb_hood/security( src ) - -/* - * Hydrant - */ -/obj/structure/closet/hydrant //wall mounted fire closet - name = "fire-safety closet" - desc = "It's a storage unit for fire-fighting supplies." - icon_state = "hydrant" - icon_closed = "hydrant" - icon_opened = "hydrant_open" - anchored = 1 - density = 0 - wall_mounted = 1 - -/obj/structure/closet/hydrant/New() - ..() - sleep(2) - new /obj/item/clothing/suit/fire/firefighter(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/device/flashlight(src) - new /obj/item/weapon/tank/oxygen/red(src) - new /obj/item/weapon/extinguisher(src) - new /obj/item/clothing/head/hardhat/red(src) - -/* - * First Aid - */ -/obj/structure/closet/medical_wall //wall mounted medical closet - name = "first-aid closet" - desc = "It's wall-mounted storage unit for first aid supplies." - icon_state = "medical_wall" - icon_closed = "medical_wall" - icon_opened = "medical_wall_open" - anchored = 1 - density = 0 - wall_mounted = 1 - -/obj/structure/closet/medical_wall/update_icon() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm.bak b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm.bak deleted file mode 100644 index e024d68a..00000000 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm.bak +++ /dev/null @@ -1,383 +0,0 @@ -/obj/structure/closet/wardrobe - name = "wardrobe" - desc = "It's a storage unit for standard-issue Nanotrasen attire." - icon_state = "blue" - icon_closed = "blue" - -/obj/structure/closet/wardrobe/red - name = "security wardrobe" - icon_state = "red" - icon_closed = "red" - -/obj/structure/closet/wardrobe/red/New() - ..() - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/under/rank/security2(src) - new /obj/item/clothing/under/rank/security2(src) - new /obj/item/clothing/under/rank/security2(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/head/soft/sec(src) - new /obj/item/clothing/head/soft/sec(src) - new /obj/item/clothing/head/soft/sec(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/beret/sec(src) - return - - -/obj/structure/closet/wardrobe/pink - name = "pink wardrobe" - icon_state = "pink" - icon_closed = "pink" - -/obj/structure/closet/wardrobe/pink/New() - ..() - new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/brown(src) - return - -/obj/structure/closet/wardrobe/black - name = "black wardrobe" - icon_state = "black" - icon_closed = "black" - -/obj/structure/closet/wardrobe/black/New() - ..() - new /obj/item/clothing/under/color/black(src) - new /obj/item/clothing/under/color/black(src) - new /obj/item/clothing/under/color/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/head/that(src) - new /obj/item/clothing/head/that(src) - new /obj/item/clothing/head/that(src) - return - - -/obj/structure/closet/wardrobe/chaplain_black - name = "chapel wardrobe" - desc = "It's a storage unit for Nanotrasen-approved religious attire." - icon_state = "black" - icon_closed = "black" - -/obj/structure/closet/wardrobe/chaplain_black/New() - ..() - new /obj/item/clothing/under/rank/chaplain(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/suit/nun(src) - new /obj/item/clothing/head/nun_hood(src) - new /obj/item/clothing/suit/chaplain_hoodie(src) - new /obj/item/clothing/head/chaplain_hood(src) - new /obj/item/clothing/suit/holidaypriest(src) - new /obj/item/clothing/under/wedding/bride_white(src) - new /obj/item/weapon/storage/backpack/cultpack (src) - new /obj/item/weapon/storage/fancy/candle_box(src) - new /obj/item/weapon/storage/fancy/candle_box(src) - return - - -/obj/structure/closet/wardrobe/green - name = "green wardrobe" - icon_state = "green" - icon_closed = "green" - -/obj/structure/closet/wardrobe/green/New() - ..() - new /obj/item/clothing/under/color/green(src) - new /obj/item/clothing/under/color/green(src) - new /obj/item/clothing/under/color/green(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - return - -/obj/structure/closet/wardrobe/xenos - name = "xenos wardrobe" - icon_state = "green" - icon_closed = "green" - -/obj/structure/closet/wardrobe/xenos/New() - ..() - new /obj/item/clothing/suit/unathi/mantle(src) - new /obj/item/clothing/suit/unathi/robe(src) - new /obj/item/clothing/shoes/sandal(src) - new /obj/item/clothing/shoes/sandal(src) - new /obj/item/clothing/shoes/sandal(src) - return - - -/obj/structure/closet/wardrobe/orange - name = "prison wardrobe" - desc = "It's a storage unit for Nanotrasen-regulation prisoner attire." - icon_state = "orange" - icon_closed = "orange" - -/obj/structure/closet/wardrobe/orange/New() - ..() - new /obj/item/clothing/under/color/orange(src) - new /obj/item/clothing/under/color/orange(src) - new /obj/item/clothing/under/color/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - return - - -/obj/structure/closet/wardrobe/yellow - name = "yellow wardrobe" - icon_state = "wardrobe-y" - icon_closed = "wardrobe-y" - -/obj/structure/closet/wardrobe/yellow/New() - ..() - new /obj/item/clothing/under/color/yellow(src) - new /obj/item/clothing/under/color/yellow(src) - new /obj/item/clothing/under/color/yellow(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - return - - -/obj/structure/closet/wardrobe/atmospherics_yellow - name = "atmospherics wardrobe" - icon_state = "yellow" - icon_closed = "yellow" - -/obj/structure/closet/wardrobe/atmospherics_yellow/New() - ..() - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/head/hardhat/red(src) - new /obj/item/clothing/head/hardhat/red(src) - new /obj/item/clothing/head/hardhat/red(src) - new /obj/item/clothing/head/beret/eng(src) - new /obj/item/clothing/head/beret/eng(src) - new /obj/item/clothing/head/beret/eng(src) - return - - - -/obj/structure/closet/wardrobe/engineering_yellow - name = "engineering wardrobe" - icon_state = "yellow" - icon_closed = "yellow" - -/obj/structure/closet/wardrobe/engineering_yellow/New() - ..() - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/head/hardhat(src) - new /obj/item/clothing/head/hardhat(src) - new /obj/item/clothing/head/hardhat(src) - new /obj/item/clothing/head/beret/eng(src) - new /obj/item/clothing/head/beret/eng(src) - new /obj/item/clothing/head/beret/eng(src) - return - - -/obj/structure/closet/wardrobe/white - name = "white wardrobe" - icon_state = "white" - icon_closed = "white" - -/obj/structure/closet/wardrobe/white/New() - ..() - new /obj/item/clothing/under/color/white(src) - new /obj/item/clothing/under/color/white(src) - new /obj/item/clothing/under/color/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - return - - -/obj/structure/closet/wardrobe/pjs - name = "Pajama wardrobe" - icon_state = "white" - icon_closed = "white" - -/obj/structure/closet/wardrobe/pjs/New() - ..() - new /obj/item/clothing/under/pj/red(src) - new /obj/item/clothing/under/pj/red(src) - new /obj/item/clothing/under/pj/blue(src) - new /obj/item/clothing/under/pj/blue(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/slippers(src) - new /obj/item/clothing/shoes/slippers(src) - return - - -/obj/structure/closet/wardrobe/toxins_white - name = "toxins wardrobe" - icon_state = "white" - icon_closed = "white" - -/obj/structure/closet/wardrobe/toxins_white/New() - ..() - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/slippers - new /obj/item/clothing/shoes/slippers - new /obj/item/clothing/shoes/slippers - return - - -/obj/structure/closet/wardrobe/robotics_black - name = "robotics wardrobe" - icon_state = "black" - icon_closed = "black" - -/obj/structure/closet/wardrobe/robotics_black/New() - ..() - new /obj/item/clothing/under/rank/roboticist(src) - new /obj/item/clothing/under/rank/roboticist(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/gloves/black(src) - new /obj/item/clothing/gloves/black(src) - return - - -/obj/structure/closet/wardrobe/chemistry_white - name = "chemistry wardrobe" - icon_state = "white" - icon_closed = "white" - -/obj/structure/closet/wardrobe/chemistry_white/New() - ..() - new /obj/item/clothing/under/rank/chemist(src) - new /obj/item/clothing/under/rank/chemist(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/suit/storage/labcoat/chemist(src) - new /obj/item/clothing/suit/storage/labcoat/chemist(src) - return - - -/obj/structure/closet/wardrobe/genetics_white - name = "genetics wardrobe" - icon_state = "white" - icon_closed = "white" - -/obj/structure/closet/wardrobe/genetics_white/New() - ..() - new /obj/item/clothing/under/rank/geneticist(src) - new /obj/item/clothing/under/rank/geneticist(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/suit/storage/labcoat/genetics(src) - new /obj/item/clothing/suit/storage/labcoat/genetics(src) - return - - -/obj/structure/closet/wardrobe/virology_white - name = "virology wardrobe" - icon_state = "white" - icon_closed = "white" - -/obj/structure/closet/wardrobe/virology_white/New() - ..() - new /obj/item/clothing/under/rank/virologist(src) - new /obj/item/clothing/under/rank/virologist(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/suit/storage/labcoat/virologist(src) - new /obj/item/clothing/suit/storage/labcoat/virologist(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - return - - -/obj/structure/closet/wardrobe/medic_white - name = "medical wardrobe" - icon_state = "white" - icon_closed = "white" - -/obj/structure/closet/wardrobe/medic_white/New() - ..() - new /obj/item/clothing/under/rank/medical(src) - new /obj/item/clothing/under/rank/medical(src) - new /obj/item/clothing/under/rank/medical/blue(src) - new /obj/item/clothing/under/rank/medical/green(src) - new /obj/item/clothing/under/rank/medical/purple(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - return - - -/obj/structure/closet/wardrobe/grey - name = "grey wardrobe" - icon_state = "grey" - icon_closed = "grey" - -/obj/structure/closet/wardrobe/grey/New() - ..() - new /obj/item/clothing/under/color/grey(src) - new /obj/item/clothing/under/color/grey(src) - new /obj/item/clothing/under/color/grey(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/head/soft/grey(src) - new /obj/item/clothing/head/soft/grey(src) - new /obj/item/clothing/head/soft/grey(src) - return - - -/obj/structure/closet/wardrobe/mixed - name = "mixed wardrobe" - icon_state = "mixed" - icon_closed = "mixed" - -/obj/structure/closet/wardrobe/mixed/New() - ..() - new /obj/item/clothing/under/color/blue(src) - new /obj/item/clothing/under/color/yellow(src) - new /obj/item/clothing/under/color/green(src) - new /obj/item/clothing/under/color/orange(src) - new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/under/dress/plaid_blue(src) - new /obj/item/clothing/under/dress/plaid_red(src) - new /obj/item/clothing/under/dress/plaid_purple(src) - new /obj/item/clothing/under/dress/plaid_green(src) - new /obj/item/clothing/shoes/blue(src) - new /obj/item/clothing/shoes/yellow(src) - new /obj/item/clothing/shoes/green(src) - new /obj/item/clothing/shoes/orange(src) - new /obj/item/clothing/shoes/purple(src) - new /obj/item/clothing/shoes/red(src) - new /obj/item/clothing/shoes/leather(src) - return diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm.bak b/code/game/objects/structures/stool_bed_chair_nest/bed.dm.bak deleted file mode 100644 index 2a1eac5b..00000000 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm.bak +++ /dev/null @@ -1,162 +0,0 @@ -/* Beds... get your mind out of the gutter, they're for sleeping! - * Contains: - * Beds - * Roller beds - */ - -/* - * Beds - */ -/obj/structure/stool/bed - name = "bed" - desc = "This is used to lie in, sleep in or strap on." - icon_state = "bed" - var/mob/living/buckled_mob - -/obj/structure/stool/bed/psych - name = "psych bed" - desc = "For prime comfort during psychiatric evaluations." - icon_state = "psychbed" - -/obj/structure/stool/bed/alien - name = "resting contraption" - desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?" - icon_state = "abed" - -/obj/structure/stool/bed/Del() - unbuckle() - ..() - return - -/obj/structure/stool/bed/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/stool/bed/attack_hand(mob/user as mob) - manual_unbuckle(user) - return - -/obj/structure/stool/bed/MouseDrop(atom/over_object) - return - -/obj/structure/stool/bed/MouseDrop_T(mob/M as mob, mob/user as mob) - if(!istype(M)) return - buckle_mob(M, user) - return - -/obj/structure/stool/bed/proc/unbuckle() - if(buckled_mob) - if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt - buckled_mob.buckled = null - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() - buckled_mob = null - return - -/obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob) - if(buckled_mob) - if(buckled_mob.buckled == src) - if(buckled_mob != user) - buckled_mob.visible_message(\ - "\blue [buckled_mob.name] was unbuckled by [user.name]!",\ - "You were unbuckled from [src] by [user.name].",\ - "You hear metal clanking") - else - buckled_mob.visible_message(\ - "\blue [buckled_mob.name] unbuckled \himself!",\ - "You unbuckle yourself from [src].",\ - "You hear metal clanking") - unbuckle() - src.add_fingerprint(user) - return - -/obj/structure/stool/bed/proc/buckle_mob(mob/M as mob, mob/user as mob) - if (!ticker) - user << "You can't buckle anyone in before the game starts." - if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || user.lying || user.stat || M.buckled || istype(user, /mob/living/silicon/pai) ) - return - - if (istype(M, /mob/living/carbon/slime)) - user << "The [M] is too squishy to buckle in." - return - - unbuckle() - - if (M == usr) - M.visible_message(\ - "\blue [M.name] buckles in!",\ - "You buckle yourself to [src].",\ - "You hear metal clanking") - else - M.visible_message(\ - "\blue [M.name] is buckled in to [src] by [user.name]!",\ - "You are buckled in to [src] by [user.name].",\ - "You hear metal clanking") - M.buckled = src - M.loc = src.loc - M.dir = src.dir - M.update_canmove() - src.buckled_mob = M - src.add_fingerprint(user) - return - -/* - * Roller beds - */ -/obj/structure/stool/bed/roller - name = "roller bed" - icon = 'icons/obj/rollerbed.dmi' - icon_state = "down" - anchored = 0 - -/obj/item/roller - name = "roller bed" - desc = "A collapsed roller bed that can be carried around." - icon = 'icons/obj/rollerbed.dmi' - icon_state = "folded" - w_class = 4.0 // Can't be put in backpacks. Oh well. - - attack_self(mob/user) - var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc) - R.add_fingerprint(user) - del(src) - -/obj/structure/stool/bed/roller/Move() - ..() - if(buckled_mob) - if(buckled_mob.buckled == src) - buckled_mob.loc = src.loc - else - buckled_mob = null - -/obj/structure/stool/bed/roller/buckle_mob(mob/M as mob, mob/user as mob) - if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || user.lying || user.stat || M.buckled || istype(usr, /mob/living/silicon/pai) ) - return - M.pixel_y = 6 - density = 1 - icon_state = "up" - ..() - return - -/obj/structure/stool/bed/roller/manual_unbuckle(mob/user as mob) - if(buckled_mob) - if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt - buckled_mob.pixel_y = 0 - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.buckled = null - buckled_mob.update_canmove() - buckled_mob = null - density = 0 - icon_state = "down" - ..() - return - -/obj/structure/stool/bed/roller/MouseDrop(over_object, src_location, over_location) - ..() - if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) - if(!ishuman(usr)) return - if(buckled_mob) return 0 - visible_message("[usr] collapses \the [src.name]") - new/obj/item/roller(get_turf(src)) - spawn(0) - del(src) - return diff --git a/code/global.dm.bak b/code/global.dm.bak deleted file mode 100644 index 257f9fb9..00000000 --- a/code/global.dm.bak +++ /dev/null @@ -1,251 +0,0 @@ -//#define TESTING -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -var/global/obj/effect/datacore/data_core = null -var/global/obj/effect/overlay/plmaster = null -var/global/obj/effect/overlay/slmaster = null - - -var/global/list/active_areas = list() -var/global/list/all_areas = list() -var/global/list/machines = list() -var/global/list/processing_objects = list() -var/global/list/active_diseases = list() -var/global/list/events = list() - //items that ask to be called every cycle - -var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event - -var/global/list/global_map = null - //list/global_map = list(list(1,5),list(4,3))//an array of map Z levels. - //Resulting sector map looks like - //|_1_|_4_| - //|_5_|_3_| - // - //1 - SS13 - //4 - Derelict - //3 - AI satellite - //5 - empty space - - - ////////////// -var/list/paper_tag_whitelist = list("center","p","div","span","h1","h2","h3","h4","h5","h6","hr","pre", \ - "big","small","font","i","u","b","s","sub","sup","tt","br","hr","ol","ul","li","caption","col", \ - "table","td","th","tr") -var/list/paper_blacklist = list("java","onblur","onchange","onclick","ondblclick","onfocus","onkeydown", \ - "onkeypress","onkeyup","onload","onmousedown","onmousemove","onmouseout","onmouseover", \ - "onmouseup","onreset","onselect","onsubmit","onunload") - -var/BLINDBLOCK = 0 -var/DEAFBLOCK = 0 -var/HULKBLOCK = 0 -var/TELEBLOCK = 0 -var/FIREBLOCK = 0 -var/XRAYBLOCK = 0 -var/CLUMSYBLOCK = 0 -var/FAKEBLOCK = 0 -var/COUGHBLOCK = 0 -var/GLASSESBLOCK = 0 -var/EPILEPSYBLOCK = 0 -var/TWITCHBLOCK = 0 -var/NERVOUSBLOCK = 0 -var/MONKEYBLOCK = 27 - -var/BLOCKADD = 0 -var/DIFFMUT = 0 - -var/HEADACHEBLOCK = 0 -var/NOBREATHBLOCK = 0 -var/REMOTEVIEWBLOCK = 0 -var/REGENERATEBLOCK = 0 -var/INCREASERUNBLOCK = 0 -var/REMOTETALKBLOCK = 0 -var/MORPHBLOCK = 0 -var/BLENDBLOCK = 0 -var/HALLUCINATIONBLOCK = 0 -var/NOPRINTSBLOCK = 0 -var/SHOCKIMMUNITYBLOCK = 0 -var/SMALLSIZEBLOCK = 0 - -var/skipupdate = 0 - /////////////// -var/eventchance = 10 //% per 5 mins -var/event = 0 -var/hadevent = 0 -var/blobevent = 0 - /////////////// - -var/diary = null -var/diaryofmeanpeople = null -var/href_logfile = null -var/station_name = "NSS Aurora" -var/game_version = "Baystation12" -var/changelog_hash = "" -var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 442) - -var/datum/air_tunnel/air_tunnel1/SS13_airtunnel = null -var/going = 1.0 -var/master_mode = "extended"//"extended" -var/secret_force_mode = "secret" // if this is anything but "secret", the secret rotation will forceably choose this mode - -var/datum/engine_eject/engine_eject_control = null -var/host = null -var/aliens_allowed = 0 -var/ooc_allowed = 1 -var/dsay_allowed = 1 -var/dooc_allowed = 1 -var/traitor_scaling = 1 -//var/goonsay_allowed = 0 -var/dna_ident = 1 -var/abandon_allowed = 1 -var/enter_allowed = 1 -var/guests_allowed = 1 -var/shuttle_frozen = 0 -var/shuttle_left = 0 -var/tinted_weldhelh = 1 - -var/list/jobMax = list() -var/list/bombers = list( ) -var/list/admin_log = list ( ) -var/list/lastsignalers = list( ) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]" -var/list/lawchanges = list( ) //Stores who uploaded laws to which silicon-based lifeform, and what the law was -var/list/shuttles = list( ) -var/list/reg_dna = list( ) -// list/traitobj = list( ) - -var/mouse_respawn_time = 5 //Amount of time that must pass between a player dying as a mouse and repawning as a mouse. In minutes. - -var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) -var/CHARGELEVEL = 0.001 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) - -var/shuttle_z = 2 //default -var/airtunnel_start = 68 // default -var/airtunnel_stop = 68 // default -var/airtunnel_bottom = 72 // default -var/list/monkeystart = list() -var/list/wizardstart = list() -var/list/newplayer_start = list() -var/list/latejoin = list() -var/list/prisonwarp = list() //prisoners go to these -var/list/holdingfacility = list() //captured people go here -var/list/xeno_spawn = list()//Aliens spawn at these. -// list/mazewarp = list() -var/list/tdome1 = list() -var/list/tdome2 = list() -var/list/tdomeobserve = list() -var/list/tdomeadmin = list() -var/list/prisonsecuritywarp = list() //prison security goes to these -var/list/prisonwarped = list() //list of players already warped -var/list/blobstart = list() -var/list/ninjastart = list() -// list/traitors = list() //traitor list -var/list/cardinal = list( NORTH, SOUTH, EAST, WEST ) -var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) - -var/datum/station_state/start_state = null -var/datum/configuration/config = null -var/datum/sun/sun = null - -var/list/combatlog = list() -var/list/IClog = list() -var/list/OOClog = list() -var/list/adminlog = list() - - -var/list/powernets = list() - -var/Debug = 0 // global debug switch -var/Debug2 = 0 - -var/datum/debug/debugobj - -var/datum/moduletypes/mods = new() - -var/wavesecret = 0 -var/gravity_is_on = 1 - -var/shuttlecoming = 0 - -var/join_motd = null -var/forceblob = 0 - -// nanomanager, the manager for Nano UIs -var/datum/nanomanager/nanomanager = new() - - //airlockWireColorToIndex takes a number representing the wire color, e.g. the orange wire is always 1, the dark red wire is always 2, etc. It returns the index for whatever that wire does. - //airlockIndexToWireColor does the opposite thing - it takes the index for what the wire does, for example AIRLOCK_WIRE_IDSCAN is 1, AIRLOCK_WIRE_POWER1 is 2, etc. It returns the wire color number. - //airlockWireColorToFlag takes the wire color number and returns the flag for it (1, 2, 4, 8, 16, etc) -var/list/airlockWireColorToFlag = RandomAirlockWires() -var/list/airlockIndexToFlag -var/list/airlockIndexToWireColor -var/list/airlockWireColorToIndex -var/list/APCWireColorToFlag = RandomAPCWires() -var/list/APCIndexToFlag -var/list/APCIndexToWireColor -var/list/APCWireColorToIndex -var/list/BorgWireColorToFlag = RandomBorgWires() -var/list/BorgIndexToFlag -var/list/BorgIndexToWireColor -var/list/BorgWireColorToIndex -var/list/AAlarmWireColorToFlag = RandomAAlarmWires() -var/list/AAlarmIndexToFlag -var/list/AAlarmIndexToWireColor -var/list/AAlarmWireColorToIndex - -#define SPEED_OF_LIGHT 3e8 //not exact but hey! -#define SPEED_OF_LIGHT_SQ 9e+16 -#define FIRE_DAMAGE_MODIFIER 0.0215 //Higher values result in more external fire damage to the skin (default 0.0215) -#define AIR_DAMAGE_MODIFIER 2.025 //More means less damage from hot air scalding lungs, less = more damage. (default 2.025) -#define INFINITY 1.#INF - - //Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam -#define MAX_MESSAGE_LEN 1024 -#define MAX_PAPER_MESSAGE_LEN 3072 -#define MAX_BOOK_MESSAGE_LEN 9216 -#define MAX_NAME_LEN 26 - -#define shuttle_time_in_station 1800 // 3 minutes in the station -#define shuttle_time_to_arrive 6000 // 10 minutes to arrive - - //away missions -var/list/awaydestinations = list() //a list of landmarks that the warpgate can take you to - - // MySQL configuration - -var/sqladdress = "localhost" -var/sqlport = "3306" -var/sqldb = "tgstation" -var/sqllogin = "root" -var/sqlpass = "" - - // Feedback gathering sql connection - -var/sqlfdbkdb = "test" -var/sqlfdbklogin = "root" -var/sqlfdbkpass = "" - -var/sqllogging = 0 // Should we log deaths, population stats, etc? - - - - // Forum MySQL configuration (for use with forum account/key authentication) - // These are all default values that will load should the forumdbconfig.txt - // file fail to read for whatever reason. - -var/forumsqladdress = "localhost" -var/forumsqlport = "3306" -var/forumsqldb = "tgstation" -var/forumsqllogin = "root" -var/forumsqlpass = "" -var/forum_activated_group = "2" -var/forum_authenticated_group = "10" - - // For FTP requests. (i.e. downloading runtime logs.) - // However it'd be ok to use for accessing attack logs and such too, which are even laggier. -var/fileaccess_timer = 0 -var/custom_event_msg = null - -//Database connections -//A connection is established on world creation. Ideally, the connection dies when the server restarts (After feedback logging.). -var/DBConnection/dbcon = new() //Feedback database (New database) -var/DBConnection/dbcon_old = new() //Tgstation database (Old database) - See the files in the SQL folder for information what goes where. diff --git a/code/modules/admin/ToRban.dm.bak b/code/modules/admin/ToRban.dm.bak deleted file mode 100644 index 2f014f23..00000000 --- a/code/modules/admin/ToRban.dm.bak +++ /dev/null @@ -1,88 +0,0 @@ -//By Carnwennan -//fetches an external list and processes it into a list of ip addresses. -//It then stores the processed list into a savefile for later use -#define TORFILE "data/ToR_ban.bdb" -#define TOR_UPDATE_INTERVAL 216000 //~6 hours - -/proc/ToRban_isbanned(var/ip_address) - var/savefile/F = new(TORFILE) - if(F) - if( ip_address in F.dir ) - return 1 - return 0 - -/proc/ToRban_autoupdate() - var/savefile/F = new(TORFILE) - if(F) - var/last_update - F["last_update"] >> last_update - if((last_update + TOR_UPDATE_INTERVAL) < world.realtime) //we haven't updated for a while - ToRban_update() - return - -/proc/ToRban_update() - spawn(0) - diary << "Downloading updated ToR data..." - var/http[] = world.Export("http://exitlist.torproject.org/exit-addresses") - - var/list/rawlist = file2list(http["CONTENT"]) - if(rawlist.len) - fdel(TORFILE) - var/savefile/F = new(TORFILE) - for( var/line in rawlist ) - if(!line) continue - if( copytext(line,1,12) == "ExitAddress" ) - var/cleaned = copytext(line,13,length(line)-19) - if(!cleaned) continue - F[cleaned] << 1 - F["last_update"] << world.realtime - diary << "ToR data updated!" - if(usr) usr << "ToRban updated." - return 1 - diary << "ToR data update aborted: no data." - return 0 - -/client/proc/ToRban(task in list("update","toggle","show","remove","remove all","find")) - set name = "ToRban" - set category = "Server" - if(!holder) return - switch(task) - if("update") - ToRban_update() - if("toggle") - if(config) - if(config.ToRban) - config.ToRban = 0 - message_admins("ToR banning disabled.") - else - config.ToRban = 1 - message_admins("ToR banning enabled.") - if("show") - var/savefile/F = new(TORFILE) - var/dat - if( length(F.dir) ) - for( var/i=1, i<=length(F.dir), i++ ) - dat += "#[i] [F.dir[i]]" - dat = "[dat]
    " - else - dat = "No addresses in list." - src << browse(dat,"window=ToRban_show") - if("remove") - var/savefile/F = new(TORFILE) - var/choice = input(src,"Please select an IP address to remove from the ToR banlist:","Remove ToR ban",null) as null|anything in F.dir - if(choice) - F.dir.Remove(choice) - src << "Address removed" - if("remove all") - src << "[TORFILE] was [fdel(TORFILE)?"":"not "]removed." - if("find") - var/input = input(src,"Please input an IP address to search for:","Find ToR ban",null) as null|text - if(input) - if(ToRban_isbanned(input)) - src << "Address is a known ToR address" - else - src << "Address is not a known ToR address" - return - -#undef TORFILE -#undef TOR_UPDATE_INTERVAL \ No newline at end of file diff --git a/code/modules/admin/admin_ranks.dm.bak b/code/modules/admin/admin_ranks.dm.bak deleted file mode 100644 index e509e093..00000000 --- a/code/modules/admin/admin_ranks.dm.bak +++ /dev/null @@ -1,161 +0,0 @@ -var/list/admin_ranks = list() //list of all ranks with associated rights - -//load our rank - > rights associations -/proc/load_admin_ranks() - admin_ranks.Cut() - - var/previous_rights = 0 - - //load text from file - var/list/Lines = file2list("config/admin_ranks.txt") - - //process each line seperately - for(var/line in Lines) - if(!length(line)) continue - if(copytext(line,1,2) == "#") continue - - var/list/List = text2list(line,"+") - if(!List.len) continue - - var/rank = ckeyEx(List[1]) - switch(rank) - if(null,"") continue - if("Removed") continue //Reserved - - var/rights = 0 - for(var/i=2, i<=List.len, i++) - switch(ckey(List[i])) - if("@","prev") rights |= previous_rights - if("buildmode","build") rights |= R_BUILDMODE - if("admin") rights |= R_ADMIN - if("ban") rights |= R_BAN - if("fun") rights |= R_FUN - if("server") rights |= R_SERVER - if("debug") rights |= R_DEBUG - if("permissions","rights") rights |= R_PERMISSIONS - if("possess") rights |= R_POSSESS - if("stealth") rights |= R_STEALTH - if("rejuv","rejuvinate") rights |= R_REJUVINATE - if("varedit") rights |= R_VAREDIT - if("everything","host","all") rights |= R_HOST - if("sound","sounds") rights |= R_SOUNDS - if("spawn","create") rights |= R_SPAWN - if("mod") rights |= R_MOD - if("developer") rights |= R_DEV - admin_ranks[rank] = rights - previous_rights = rights - - #ifdef TESTING - var/msg = "Permission Sets Built:\n" - for(var/rank in admin_ranks) - msg += "\t[rank] - [admin_ranks[rank]]\n" - testing(msg) - #endif - - -/hook/startup/proc/loadAdmins() - load_admins() - return 1 - -/proc/load_admins() - //clear the datums references - admin_datums.Cut() - for(var/client/C in admins) - C.remove_admin_verbs() - C.holder = null - admins.Cut() - - if(config.admin_legacy_system) - load_admin_ranks() - - //load text from file - var/list/Lines = file2list("config/admins.txt") - - //process each line seperately - for(var/line in Lines) - if(!length(line)) continue - if(copytext(line,1,2) == "#") continue - - //Split the line at every "-" - var/list/List = text2list(line, "-") - if(!List.len) continue - - //ckey is before the first "-" - var/ckey = ckey(List[1]) - if(!ckey) continue - - //rank follows the first "-" - var/rank = "" - if(List.len >= 2) - rank = ckeyEx(List[2]) - - //load permissions associated with this rank - var/rights = admin_ranks[rank] - - //create the admin datum and store it for later use - var/datum/admins/D = new /datum/admins(rank, rights, ckey) - - //find the client for a ckey if they are connected and associate them with the new admin datum - D.associate(directory[ckey]) - - else - //The current admin system uses SQL - - establish_db_connection() - if(!dbcon.IsConnected()) - world.log << "Failed to connect to database in load_admins(). Reverting to legacy system." - diary << "Failed to connect to database in load_admins(). Reverting to legacy system." - config.admin_legacy_system = 1 - load_admins() - return - - var/DBQuery/query = dbcon.NewQuery("SELECT ckey, rank, level, flags FROM erro_admin") - query.Execute() - while(query.NextRow()) - var/ckey = query.item[1] - var/rank = query.item[2] - if(rank == "Removed") continue //This person was de-adminned. They are only in the admin list for archive purposes. - - var/rights = query.item[4] - if(istext(rights)) rights = text2num(rights) - var/datum/admins/D = new /datum/admins(rank, rights, ckey) - - //find the client for a ckey if they are connected and associate them with the new admin datum - D.associate(directory[ckey]) - if(!admin_datums) - world.log << "The database query in load_admins() resulted in no admins being added to the list. Reverting to legacy system." - diary << "The database query in load_admins() resulted in no admins being added to the list. Reverting to legacy system." - config.admin_legacy_system = 1 - load_admins() - return - - #ifdef TESTING - var/msg = "Admins Built:\n" - for(var/ckey in admin_datums) - var/rank - var/datum/admins/D = admin_datums[ckey] - if(D) rank = D.rank - msg += "\t[ckey] - [rank]\n" - testing(msg) - #endif - - -#ifdef TESTING -/client/verb/changerank(newrank in admin_ranks) - if(holder) - holder.rank = newrank - holder.rights = admin_ranks[newrank] - else - holder = new /datum/admins(newrank,admin_ranks[newrank],ckey) - remove_admin_verbs() - holder.associate(src) - -/client/verb/changerights(newrights as num) - if(holder) - holder.rights = newrights - else - holder = new /datum/admins("testing",newrights,ckey) - remove_admin_verbs() - holder.associate(src) - -#endif diff --git a/code/modules/admin/admin_verbs.dm.bak b/code/modules/admin/admin_verbs.dm.bak deleted file mode 100644 index 83f3b2af..00000000 --- a/code/modules/admin/admin_verbs.dm.bak +++ /dev/null @@ -1,807 +0,0 @@ -//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless -var/list/admin_verbs_default = list( - /datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/ - /client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/ - /client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/ - /client/proc/hide_verbs, /*hides all our adminverbs*/ - /client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/ - /client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/ - /client/proc/check_antagonists /*shows all antags*/ -// /client/proc/deadchat /*toggles deadchat on/off*/ - ) -var/list/admin_verbs_admin = list( - /client/proc/cmd_admin_wind, - /client/proc/cmd_admin_unwind, - /client/proc/player_panel, /*shows an interface for all players, with links to various panels (old style)*/ - /client/proc/player_panel_new, /*shows an interface for all players, with links to various panels*/ - /client/proc/invisimin, /*allows our mob to go invisible/visible*/ -// /datum/admins/proc/show_traitor_panel, /*interface which shows a mob's mind*/ -Removed due to rare practical use. Moved to debug verbs ~Errorage - /datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/ - /datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/ - /datum/admins/proc/announce, /*priority announce something to all clients.*/ - /client/proc/colorooc, /*allows us to set a custom colour for everythign we say in ooc*/ - /client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/ - /client/proc/toggle_view_range, /*changes how far we can see*/ - /datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/ - /datum/admins/proc/view_atk_log, /*shows the server combat-log, doesn't do anything presently*/ - /client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/ - /client/proc/cmd_admin_pm_panel, /*admin-pm list*/ - /client/proc/cmd_admin_subtle_message, /*send an message to somebody as a 'voice in their head'*/ - /client/proc/cmd_admin_delete, /*delete an instance/object/mob/etc*/ - /client/proc/cmd_admin_check_contents, /*displays the contents of an instance*/ - /datum/admins/proc/access_news_network, /*allows access of newscasters*/ - /client/proc/giveruntimelog, /*allows us to give access to runtime logs to somebody*/ - /client/proc/getruntimelog, /*allows us to access runtime logs to somebody*/ - /client/proc/getserverlog, /*allows us to fetch server logs (diary) for other days*/ - /client/proc/jumptocoord, /*we ghost and jump to a coordinate*/ - /client/proc/Getmob, /*teleports a mob to our location*/ - /client/proc/Getkey, /*teleports a mob with a certain ckey to our location*/ -// /client/proc/sendmob, /*sends a mob somewhere*/ -Removed due to it needing two sorting procs to work, which were executed every time an admin right-clicked. ~Errorage - /client/proc/Jump, - /client/proc/jumptokey, /*allows us to jump to the location of a mob with a certain ckey*/ - /client/proc/jumptomob, /*allows us to jump to a specific mob*/ - /client/proc/jumptoturf, /*allows us to jump to a specific turf*/ - /client/proc/admin_call_shuttle, /*allows us to call the emergency shuttle*/ - /client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcomm*/ - /client/proc/cmd_admin_direct_narrate, /*send text directly to a player with no padding. Useful for narratives and fluff-text*/ - /client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/ - /client/proc/cmd_admin_create_centcom_report, - /client/proc/check_words, /*displays cult-words*/ - /client/proc/check_ai_laws, /*shows AI and borg laws*/ - /client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/ - /client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/ - /client/proc/toggleprayers, /*toggles prayers on/off*/ -// /client/proc/toggle_hear_deadcast, /*toggles whether we hear deadchat*/ - /client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/ - /client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/ - /client/proc/secrets, - /datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/ - /datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/ - /datum/admins/proc/toggledsay, /*toggles dsay on/off for everyone*/ - /client/proc/game_panel, /*game panel, allows to change game-mode etc*/ - /client/proc/cmd_admin_say, /*admin-only ooc chat*/ - /datum/admins/proc/PlayerNotes, - /client/proc/cmd_mod_say, - /datum/admins/proc/show_player_info, - /client/proc/free_slot, /*frees slot for chosen job*/ - /client/proc/cmd_admin_change_custom_event, - /client/proc/cmd_admin_rejuvenate, - /client/proc/toggleattacklogs, - /client/proc/toggledebuglogs, - /client/proc/toggleghostwriters, - /datum/admins/proc/show_skills, - /client/proc/check_customitem_activity, - /client/proc/man_up, - /client/proc/global_man_up, - /client/proc/response_team, // Response Teams admin verb - /client/proc/toggle_antagHUD_use, - /client/proc/toggle_antagHUD_restrictions, - /client/proc/allow_character_respawn /* Allows a ghost to respawn */ -) -var/list/admin_verbs_ban = list( - /client/proc/unban_panel, - /client/proc/jobbans - ) -var/list/admin_verbs_sounds = list( - /client/proc/play_local_sound, - /client/proc/play_sound - ) -var/list/admin_verbs_fun = list( - /client/proc/object_talk, - /client/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/cinematic, - /client/proc/one_click_antag, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/send_space_ninja, - /client/proc/cmd_admin_add_freeform_ai_law, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /client/proc/set_ooc, - /client/proc/editappear - ) -var/list/admin_verbs_dev = list( - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /client/proc/giveruntimelog, - /client/proc/getruntimelog, - /client/proc/cmd_admin_list_open_jobs, - /client/proc/Debug2, - /client/proc/admin_ghost, - /client/proc/kill_air, - /client/proc/ZASSettings, - /client/proc/cmd_debug_make_powernets, - /client/proc/kill_airgroup, - /client/proc/debug_controller, - /client/proc/cmd_debug_mob_lists, - /client/proc/cmd_admin_delete, - /client/proc/cmd_debug_del_all, - /client/proc/cmd_debug_tog_aliens, - /client/proc/air_report, - /client/proc/reload_admins, - /client/proc/restart_controller, - /client/proc/enable_debug_verbs, - /client/proc/callproc, - /client/proc/toggledebuglogs, - /client/proc/SDQL_query, - /client/proc/SDQL2_query, - /client/proc/cmd_dev_say -) -var/list/admin_verbs_spawn = list( - /datum/admins/proc/spawn_atom, /*allows us to spawn instances*/ - /client/proc/respawn_character - ) -var/list/admin_verbs_server = list( - /client/proc/Set_Holiday, - /client/proc/ToRban, - /datum/admins/proc/startnow, - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /datum/admins/proc/toggleaban, - /client/proc/toggle_log_hrefs, - /datum/admins/proc/immreboot, - /client/proc/everyone_random, - /datum/admins/proc/toggleAI, - /client/proc/cmd_admin_delete, /*delete an instance/object/mob/etc*/ - /client/proc/cmd_debug_del_all, - /datum/admins/proc/adrev, - /datum/admins/proc/adspawn, - /datum/admins/proc/adjump, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/toggle_random_events, - /client/proc/check_customitem_activity - ) -var/list/admin_verbs_debug = list( - /client/proc/cmd_admin_list_open_jobs, - /client/proc/Debug2, - /client/proc/kill_air, - /client/proc/ZASSettings, - /client/proc/cmd_debug_make_powernets, - /client/proc/kill_airgroup, - /client/proc/debug_controller, - /client/proc/cmd_debug_mob_lists, - /client/proc/cmd_admin_delete, - /client/proc/cmd_debug_del_all, - /client/proc/cmd_debug_tog_aliens, - /client/proc/air_report, - /client/proc/reload_admins, - /client/proc/restart_controller, - /client/proc/enable_debug_verbs, - /client/proc/callproc, - /client/proc/toggledebuglogs, - /client/proc/SDQL_query, - /client/proc/SDQL2_query - ) -var/list/admin_verbs_possess = list( - /proc/possess, - /proc/release - ) -var/list/admin_verbs_permissions = list( - /client/proc/edit_admin_permissions - ) -var/list/admin_verbs_rejuv = list( - /client/proc/respawn_character - ) - -//verbs which can be hidden - needs work -var/list/admin_verbs_hideable = list( - /client/proc/set_ooc, - /client/proc/deadmin_self, -// /client/proc/deadchat, - /client/proc/toggleprayers, - /client/proc/toggle_hear_radio, - /datum/admins/proc/show_traitor_panel, - /datum/admins/proc/toggleenter, - /datum/admins/proc/toggleguests, - /datum/admins/proc/announce, - /client/proc/colorooc, - /client/proc/admin_ghost, - /client/proc/toggle_view_range, - /datum/admins/proc/view_txt_log, - /datum/admins/proc/view_atk_log, - /client/proc/cmd_admin_subtle_message, - /client/proc/cmd_admin_check_contents, - /datum/admins/proc/access_news_network, - /client/proc/admin_call_shuttle, - /client/proc/admin_cancel_shuttle, - /client/proc/cmd_admin_direct_narrate, - /client/proc/cmd_admin_world_narrate, - /client/proc/check_words, - /client/proc/play_local_sound, - /client/proc/play_sound, - /client/proc/object_talk, - /client/proc/cmd_admin_dress, - /client/proc/cmd_admin_gib_self, - /client/proc/drop_bomb, - /client/proc/cinematic, - /datum/admins/proc/toggle_aliens, - /datum/admins/proc/toggle_space_ninja, - /client/proc/send_space_ninja, - /client/proc/cmd_admin_add_freeform_ai_law, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/cmd_admin_create_centcom_report, - /client/proc/make_sound, - /client/proc/toggle_random_events, - /client/proc/cmd_admin_add_random_ai_law, - /client/proc/Set_Holiday, - /client/proc/ToRban, - /datum/admins/proc/startnow, - /datum/admins/proc/restart, - /datum/admins/proc/delay, - /datum/admins/proc/toggleaban, - /client/proc/toggle_log_hrefs, - /datum/admins/proc/immreboot, - /client/proc/everyone_random, - /datum/admins/proc/toggleAI, - /datum/admins/proc/adrev, - /datum/admins/proc/adspawn, - /datum/admins/proc/adjump, - /client/proc/restart_controller, - /client/proc/cmd_admin_list_open_jobs, - /client/proc/callproc, - /client/proc/Debug2, - /client/proc/reload_admins, - /client/proc/kill_air, - /client/proc/cmd_debug_make_powernets, - /client/proc/kill_airgroup, - /client/proc/debug_controller, - /client/proc/startSinglo, - /client/proc/cmd_debug_mob_lists, - /client/proc/cmd_debug_del_all, - /client/proc/cmd_debug_tog_aliens, - /client/proc/air_report, - /client/proc/enable_debug_verbs, - /proc/possess, - /proc/release - ) -var/list/admin_verbs_mod = list( - /client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/ - /client/proc/cmd_admin_pm_panel, /*admin-pm list*/ - /client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game.*/ - /client/proc/toggledebuglogs, - /datum/admins/proc/PlayerNotes, - /client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/ - /client/proc/cmd_mod_say, - /datum/admins/proc/show_player_info, - /client/proc/player_panel_new, - /client/proc/dsay, - /datum/admins/proc/show_skills, - /client/proc/jobbans, - /client/proc/cmd_admin_subtle_message /*send an message to somebody as a 'voice in their head'*/ -) -/client/proc/add_admin_verbs() - if(holder) - verbs += admin_verbs_default - if(holder.rights & R_BUILDMODE) verbs += /client/proc/togglebuildmodeself - if(holder.rights & R_ADMIN) verbs += admin_verbs_admin - if(holder.rights & R_BAN) verbs += admin_verbs_ban - if(holder.rights & R_FUN) verbs += admin_verbs_fun - if(holder.rights & R_SERVER) verbs += admin_verbs_server - if(holder.rights & R_DEBUG) verbs += admin_verbs_debug - if(holder.rights & R_POSSESS) verbs += admin_verbs_possess - if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions - if(holder.rights & R_STEALTH) verbs += /client/proc/stealth - if(holder.rights & R_REJUVINATE) verbs += admin_verbs_rejuv - if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds - if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn - if(holder.rights & R_MOD) verbs += admin_verbs_mod - if(holder.rights & R_DEV) verbs += admin_verbs_dev - -/client/proc/remove_admin_verbs() - verbs.Remove( - admin_verbs_default, - /client/proc/togglebuildmodeself, - admin_verbs_admin, - admin_verbs_ban, - admin_verbs_fun, - admin_verbs_server, - admin_verbs_debug, - admin_verbs_possess, - admin_verbs_permissions, - /client/proc/stealth, - admin_verbs_rejuv, - admin_verbs_sounds, - admin_verbs_spawn, - /*Debug verbs added by "show debug verbs"*/ - /client/proc/Cell, - /client/proc/do_not_use_these, - /client/proc/camera_view, - /client/proc/sec_camera_report, - /client/proc/intercom_view, - /client/proc/air_status, - /client/proc/atmosscan, - /client/proc/powerdebug, - /client/proc/count_objects_on_z_level, - /client/proc/count_objects_all, - /client/proc/cmd_assume_direct_control, - /client/proc/jump_to_dead_group, - /client/proc/startSinglo, - /client/proc/ticklag, - /client/proc/cmd_admin_grantfullaccess, - /client/proc/kaboom, - /client/proc/splash, - /client/proc/cmd_admin_areatest - ) - -/client/proc/hide_most_verbs()//Allows you to keep some functionality while hiding some verbs - set name = "Adminverbs - Hide Most" - set category = "Admin" - - verbs.Remove(/client/proc/hide_most_verbs, admin_verbs_hideable) - verbs += /client/proc/show_verbs - - src << "Most of your adminverbs have been hidden." - feedback_add_details("admin_verb","HMV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/hide_verbs() - set name = "Adminverbs - Hide All" - set category = "Admin" - - remove_admin_verbs() - verbs += /client/proc/show_verbs - - src << "Almost all of your adminverbs have been hidden." - feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/show_verbs() - set name = "Adminverbs - Show" - set category = "Admin" - - verbs -= /client/proc/show_verbs - add_admin_verbs() - - src << "All of your adminverbs are now visible." - feedback_add_details("admin_verb","TAVVS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - - - - -/client/proc/admin_ghost() - set category = "Admin" - set name = "Aghost" - if(!holder) return - if(istype(mob,/mob/dead/observer)) - //re-enter - var/mob/dead/observer/ghost = mob - ghost.can_reenter_corpse = 1 //just in-case. - ghost.reenter_corpse() - feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - else if(istype(mob,/mob/new_player)) - src << "Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first." - else - //ghostize - var/mob/body = mob - body.ghostize(1) - if(body && !body.key) - body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus - feedback_add_details("admin_verb","O") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - -/client/proc/invisimin() - set name = "Invisimin" - set category = "Admin" - set desc = "Toggles ghost-like invisibility (Don't abuse this)" - if(holder && mob) - if(mob.invisibility == INVISIBILITY_OBSERVER) - mob.invisibility = initial(mob.invisibility) - mob << "\red Invisimin off. Invisibility reset." - mob.alpha = max(mob.alpha + 100, 255) - else - mob.invisibility = INVISIBILITY_OBSERVER - mob << "\blue Invisimin on. You are now as invisible as a ghost." - mob.alpha = max(mob.alpha - 100, 0) - - -/client/proc/player_panel() - set name = "Player Panel" - set category = "Admin" - if(holder) - holder.player_panel_old() - feedback_add_details("admin_verb","PP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/player_panel_new() - set name = "Player Panel New" - set category = "Admin" - if(holder) - holder.player_panel_new() - feedback_add_details("admin_verb","PPN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/check_antagonists() - set name = "Check Antagonists" - set category = "Admin" - if(holder) - holder.check_antagonists() - log_admin("[key_name(usr)] checked antagonists.") //for tsar~ - feedback_add_details("admin_verb","CHA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/jobbans() - set name = "Display Job bans" - set category = "Admin" - if(holder) - if(config.ban_legacy_system) - holder.Jobbans() - else - holder.DB_ban_panel() - feedback_add_details("admin_verb","VJB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/unban_panel() - set name = "Unban Panel" - set category = "Admin" - if(holder) - if(config.ban_legacy_system) - holder.unbanpanel() - else - holder.DB_ban_panel() - feedback_add_details("admin_verb","UBP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/game_panel() - set name = "Game Panel" - set category = "Admin" - if(holder) - holder.Game() - feedback_add_details("admin_verb","GP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/secrets() - set name = "Secrets" - set category = "Admin" - if (holder) - holder.Secrets() - feedback_add_details("admin_verb","S") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/colorooc() - set category = "Fun" - set name = "OOC Text Color" - if(!holder) return - var/new_ooccolor = input(src, "Please select your OOC colour.", "OOC colour") as color|null - if(new_ooccolor) - prefs.ooccolor = new_ooccolor - prefs.save_preferences() - feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/stealth() - set category = "Admin" - set name = "Stealth Mode" - if(holder) - if(holder.fakekey) - holder.fakekey = null - else - var/new_key = ckeyEx(input("Enter your desired display name.", "Fake Key", key) as text|null) - if(!new_key) return - if(length(new_key) >= 26) - new_key = copytext(new_key, 1, 26) - holder.fakekey = new_key - log_admin("[key_name(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]") - message_admins("[key_name_admin(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]", 1) - feedback_add_details("admin_verb","SM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -#define MAX_WARNS 3 -#define AUTOBANTIME 10 - -/client/proc/warn(warned_ckey) - if(!check_rights(R_ADMIN)) return - - if(!warned_ckey || !istext(warned_ckey)) return - if(warned_ckey in admin_datums) - usr << "Error: warn(): You can't warn admins." - return - - var/datum/preferences/D - var/client/C = directory[warned_ckey] - if(C) D = C.prefs - else D = preferences_datums[warned_ckey] - - if(!D) - src << "Error: warn(): No such ckey found." - return - - if(++D.warns >= MAX_WARNS) //uh ohhhh...you'reee iiiiin trouuuubble O:) - ban_unban_log_save("[ckey] warned [warned_ckey], resulting in a [AUTOBANTIME] minute autoban.") - if(C) - message_admins("[key_name_admin(src)] has warned [key_name_admin(C)] resulting in a [AUTOBANTIME] minute ban.") - C << "You have been autobanned due to a warning by [ckey].
    This is a temporary ban, it will be removed in [AUTOBANTIME] minutes." - del(C) - else - message_admins("[key_name_admin(src)] has warned [warned_ckey] resulting in a [AUTOBANTIME] minute ban.") - AddBan(warned_ckey, D.last_id, "Autobanning due to too many formal warnings", ckey, 1, AUTOBANTIME) - feedback_inc("ban_warn",1) - else - if(C) - C << "You have been formally warned by an administrator.
    Further warnings will result in an autoban.
    " - message_admins("[key_name_admin(src)] has warned [key_name_admin(C)]. They have [MAX_WARNS-D.warns] strikes remaining.") - else - message_admins("[key_name_admin(src)] has warned [warned_ckey] (DC). They have [MAX_WARNS-D.warns] strikes remaining.") - - feedback_add_details("admin_verb","WARN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -#undef MAX_WARNS -#undef AUTOBANTIME - -/client/proc/drop_bomb() // Some admin dickery that can probably be done better -- TLE - set category = "Special Verbs" - set name = "Drop Bomb" - set desc = "Cause an explosion of varying strength at your location." - - var/turf/epicenter = mob.loc - var/list/choices = list("Small Bomb", "Medium Bomb", "Big Bomb", "Custom Bomb") - var/choice = input("What size explosion would you like to produce?") in choices - switch(choice) - if(null) - return 0 - if("Small Bomb") - explosion(epicenter, 1, 2, 3, 3) - if("Medium Bomb") - explosion(epicenter, 2, 3, 4, 4) - if("Big Bomb") - explosion(epicenter, 3, 5, 7, 5) - if("Custom Bomb") - var/devastation_range = input("Devastation range (in tiles):") as num - var/heavy_impact_range = input("Heavy impact range (in tiles):") as num - var/light_impact_range = input("Light impact range (in tiles):") as num - var/flash_range = input("Flash range (in tiles):") as num - explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range) - message_admins("\blue [ckey] creating an admin explosion at [epicenter.loc].") - feedback_add_details("admin_verb","DB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/give_spell(mob/T as mob in mob_list) // -- Urist - set category = "Fun" - set name = "Give Spell" - set desc = "Gives a spell to a mob." - var/obj/effect/proc_holder/spell/S = input("Choose the spell to give to that guy", "ABRAKADABRA") as null|anything in spells - if(!S) return - T.spell_list += new S - feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].") - message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1) - -/client/proc/give_disease(mob/T as mob in mob_list) // -- Giacom - set category = "Fun" - set name = "Give Disease" - set desc = "Gives a Disease to a mob." - var/datum/disease/D = input("Choose the disease to give to that guy", "ACHOO") as null|anything in diseases - if(!D) return - T.contract_disease(new D, 1) - feedback_add_details("admin_verb","GD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] gave [key_name(T)] the disease [D].") - message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the disease [D].", 1) - -/client/proc/make_sound(var/obj/O in world) // -- TLE - set category = "Special Verbs" - set name = "Make Sound" - set desc = "Display a message to everyone who can hear the target" - if(O) - var/message = input("What do you want the message to be?", "Make Sound") as text|null - if(!message) - return - for (var/mob/V in hearers(O)) - V.show_message(message, 2) - log_admin("[key_name(usr)] made [O] at [O.x], [O.y], [O.z]. make a sound") - message_admins("\blue [key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z]. make a sound", 1) - feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - -/client/proc/togglebuildmodeself() - set name = "Toggle Build Mode Self" - set category = "Special Verbs" - if(src.mob) - togglebuildmode(src.mob) - feedback_add_details("admin_verb","TBMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/object_talk(var/msg as text) // -- TLE - set category = "Special Verbs" - set name = "oSay" - set desc = "Display a message to everyone who can hear the target" - if(mob.control_object) - if(!msg) - return - for (var/mob/V in hearers(mob.control_object)) - V.show_message("[mob.control_object.name] says: \"" + msg + "\"", 2) - feedback_add_details("admin_verb","OT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/kill_air() // -- TLE - set category = "Debug" - set name = "Kill Air" - set desc = "Toggle Air Processing" - if(air_processing_killed) - air_processing_killed = 0 - usr << "Enabled air processing." - else - air_processing_killed = 1 - usr << "Disabled air processing." - feedback_add_details("admin_verb","KA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] used 'kill air'.") - message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1) - -/client/proc/deadmin_self() - set name = "De-admin self" - set category = "Admin" - - if(holder) - if(alert("Confirm self-deadmin for the round? You can't re-admin yourself without someont promoting you.",,"Yes","No") == "Yes") - log_admin("[src] deadmined themself.") - message_admins("[src] deadmined themself.", 1) - deadmin() - src << "You are now a normal player." - feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/toggle_log_hrefs() - set name = "Toggle href logging" - set category = "Server" - if(!holder) return - if(config) - if(config.log_hrefs) - config.log_hrefs = 0 - src << "Stopped logging hrefs" - else - config.log_hrefs = 1 - src << "Started logging hrefs" - -/client/proc/check_ai_laws() - set name = "Check AI Laws" - set category = "Admin" - if(holder) - src.holder.output_ai_laws() - - -//---- bs12 verbs ---- - -/client/proc/mod_panel() - set name = "Moderator Panel" - set category = "Admin" -/* if(holder) - holder.mod_panel()*/ -// feedback_add_details("admin_verb","MP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/editappear(mob/living/carbon/human/M as mob in world) - set name = "Edit Appearance" - set category = "Fun" - - if(!check_rights(R_FUN)) return - - if(!istype(M, /mob/living/carbon/human)) - usr << "\red You can only do this to humans!" - return - switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Vox and Tajaran can result in unintended consequences.",,"Yes","No")) - if("No") - return - var/new_facial = input("Please select facial hair color.", "Character Generation") as color - if(new_facial) - M.r_facial = hex2num(copytext(new_facial, 2, 4)) - M.g_facial = hex2num(copytext(new_facial, 4, 6)) - M.b_facial = hex2num(copytext(new_facial, 6, 8)) - - var/new_hair = input("Please select hair color.", "Character Generation") as color - if(new_facial) - M.r_hair = hex2num(copytext(new_hair, 2, 4)) - M.g_hair = hex2num(copytext(new_hair, 4, 6)) - M.b_hair = hex2num(copytext(new_hair, 6, 8)) - - var/new_eyes = input("Please select eye color.", "Character Generation") as color - if(new_eyes) - M.r_eyes = hex2num(copytext(new_eyes, 2, 4)) - M.g_eyes = hex2num(copytext(new_eyes, 4, 6)) - M.b_eyes = hex2num(copytext(new_eyes, 6, 8)) - - var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text - - if (new_tone) - M.s_tone = max(min(round(text2num(new_tone)), 220), 1) - M.s_tone = -M.s_tone + 35 - - // hair - var/new_hstyle = input(usr, "Select a hair style", "Grooming") as null|anything in hair_styles_list - if(new_hstyle) - M.h_style = new_hstyle - - // facial hair - var/new_fstyle = input(usr, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list - if(new_fstyle) - M.f_style = new_fstyle - - var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female") - if (new_gender) - if(new_gender == "Male") - M.gender = MALE - else - M.gender = FEMALE - M.update_hair() - M.update_body() - M.check_dna(M) - -/client/proc/playernotes() - set name = "Show Player Info" - set category = "Admin" - if(holder) - holder.PlayerNotes() - return - -/client/proc/free_slot() - set name = "Free Job Slot" - set category = "Admin" - if(holder) - var/list/jobs = list() - for (var/datum/job/J in job_master.occupations) - if (J.current_positions >= J.total_positions && J.total_positions != -1) - jobs += J.title - if (!jobs.len) - usr << "There are no fully staffed jobs." - return - var/job = input("Please select job slot to free", "Free job slot") as null|anything in jobs - if (job) - job_master.FreeRole(job) - return - -/client/proc/toggleattacklogs() - set name = "Toggle Attack Log Messages" - set category = "Preferences" - - prefs.toggles ^= CHAT_ATTACKLOGS - if (prefs.toggles & CHAT_ATTACKLOGS) - usr << "You now will get attack log messages" - else - usr << "You now won't get attack log messages" - - -/client/proc/toggleghostwriters() - set name = "Toggle ghost writers" - set category = "Server" - if(!holder) return - if(config) - if(config.cult_ghostwriter) - config.cult_ghostwriter = 0 - src << "Disallowed ghost writers." - message_admins("Admin [key_name_admin(usr)] has disabled ghost writers.", 1) - else - config.cult_ghostwriter = 1 - src << "Enabled ghost writers." - message_admins("Admin [key_name_admin(usr)] has enabled ghost writers.", 1) - - -/client/proc/toggledebuglogs() - set name = "Toggle Debug Log Messages" - set category = "Preferences" - - prefs.toggles ^= CHAT_DEBUGLOGS - if (prefs.toggles & CHAT_DEBUGLOGS) - usr << "You now will get debug log messages" - else - usr << "You now won't get debug log messages" - - -/client/proc/man_up(mob/T as mob in mob_list) - set category = "Fun" - set name = "Man Up" - set desc = "Tells mob to man up and deal with it." - - T << "Man up and deal with it." - T << "Move on." - - log_admin("[key_name(usr)] told [key_name(T)] to man up and deal with it.") - message_admins("\blue [key_name_admin(usr)] told [key_name(T)] to man up and deal with it.", 1) - -/client/proc/global_man_up() - set category = "Fun" - set name = "Man Up Global" - set desc = "Tells everyone to man up and deal with it." - - for (var/mob/T as mob in mob_list) - T << "
    Man up.
    Deal with it.

    Move on.

    " - T << 'sound/voice/ManUp1.ogg' - - log_admin("[key_name(usr)] told everyone to man up and deal with it.") - message_admins("\blue [key_name_admin(usr)] told everyone to man up and deal with it.", 1) diff --git a/code/modules/admin/banjob.dm.bak b/code/modules/admin/banjob.dm.bak deleted file mode 100644 index 7fcb4d80..00000000 --- a/code/modules/admin/banjob.dm.bak +++ /dev/null @@ -1,114 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - -var/jobban_runonce // Updates legacy bans with new info -var/jobban_keylist[0] //to store the keys & ranks - -/proc/jobban_fullban(mob/M, rank, reason) - if (!M || !M.key) return - jobban_keylist.Add(text("[M.ckey] - [rank] ## [reason]")) - jobban_savebanfile() - -/proc/jobban_client_fullban(ckey, rank) - if (!ckey || !rank) return - jobban_keylist.Add(text("[ckey] - [rank]")) - jobban_savebanfile() - -//returns a reason if M is banned from rank, returns 0 otherwise -/proc/jobban_isbanned(mob/M, rank) - if(M && rank) - /* - if(_jobban_isbanned(M, rank)) return "Reason Unspecified" //for old jobban - */ - - if (guest_jobbans(rank)) - if(config.guest_jobban && IsGuestKey(M.key)) - return "Guest Job-ban" - if(config.usewhitelist && !check_whitelist(M)) - return "Whitelisted Job" - - for (var/s in jobban_keylist) - if( findtext(s,"[M.ckey] - [rank]") == 1 ) - var/startpos = findtext(s, "## ")+3 - if(startpos && startpos> jobban_keylist - log_admin("Loading jobban_rank") - S["runonce"] >> jobban_runonce - - if (!length(jobban_keylist)) - jobban_keylist=list() - log_admin("jobban_keylist was empty") - else - if(!establish_db_connection()) - world.log << "Database connection failed. Reverting to the legacy ban system." - diary << "Database connection failed. Reverting to the legacy ban system." - config.ban_legacy_system = 1 - jobban_loadbanfile() - return - - //Job permabans - var/DBQuery/query = dbcon.NewQuery("SELECT ckey, job FROM erro_ban WHERE bantype = 'JOB_PERMABAN' AND isnull(unbanned)") - query.Execute() - - while(query.NextRow()) - var/ckey = query.item[1] - var/job = query.item[2] - - jobban_keylist.Add("[ckey] - [job]") - - //Job tempbans - var/DBQuery/query1 = dbcon.NewQuery("SELECT ckey, job FROM erro_ban WHERE bantype = 'JOB_TEMPBAN' AND isnull(unbanned) AND expiration_time > Now()") - query1.Execute() - - while(query1.NextRow()) - var/ckey = query1.item[1] - var/job = query1.item[2] - - jobban_keylist.Add("[ckey] - [job]") - -/proc/jobban_savebanfile() - var/savefile/S=new("data/job_full.ban") - S["keys[0]"] << jobban_keylist - -/proc/jobban_unban(mob/M, rank) - jobban_remove("[M.ckey] - [rank]") - jobban_savebanfile() - - -/proc/ban_unban_log_save(var/formatted_log) - text2file(formatted_log,"data/ban_unban_log.txt") - - -/proc/jobban_remove(X) - for (var/i = 1; i <= length(jobban_keylist); i++) - if( findtext(jobban_keylist[i], "[X]") ) - jobban_keylist.Remove(jobban_keylist[i]) - jobban_savebanfile() - return 1 - return 0 diff --git a/code/modules/admin/verbs/diagnostics.dm.bak b/code/modules/admin/verbs/diagnostics.dm.bak deleted file mode 100644 index f490cd3e..00000000 --- a/code/modules/admin/verbs/diagnostics.dm.bak +++ /dev/null @@ -1,209 +0,0 @@ -/client/proc/air_report() - set category = "Debug" - set name = "Show Air Report" - - if(!master_controller || !air_master) - alert(usr,"Master_controller or air_master not found.","Air Report") - return - - var/active_groups = air_master.active_zones.len - var/inactive_groups = air_master.zones.len - active_groups - - var/hotspots = 0 - for(var/obj/fire/hotspot in world) - hotspots++ - - var/active_on_main_station = 0 - var/inactive_on_main_station = 0 - for(var/zone/zone in air_master.zones) - var/turf/simulated/turf = locate() in zone.contents - if(turf && turf.z == 1) - if(zone.status) - active_on_main_station++ - else - inactive_on_main_station++ - - var/output = {"AIR SYSTEMS REPORT
    -General Processing Data
    - Cycle: [air_master.current_cycle]
    - Groups: [air_master.zones.len]
    ----- Active: [active_groups]
    ----- Inactive: [inactive_groups]

    ----- Active on station: [active_on_main_station]
    ----- Inactive on station: [inactive_on_main_station]
    -
    -Special Processing Data
    - Hotspot Processing: [hotspots]
    -
    -Geometry Processing Data
    - Tile Update: [air_master.tiles_to_update.len]
    -"} - - usr << browse(output,"window=airreport") - - -/client/proc/air_status(turf/target as turf) - set category = "Debug" - set name = "Display Air Status" - - /*(!isturf(target)) - return - - var/datum/gas_mixture/GM = target.return_air() - var/burning = 0 - if(istype(target, /turf/simulated)) - var/turf/simulated/T = target - if(T.active_hotspot) - burning = 1 - - usr << "\blue @[target.x],[target.y] ([GM.group_multiplier]): O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]" - for(var/datum/gas/trace_gas in GM.trace_gases) - usr << "[trace_gas.type]: [trace_gas.moles]" - feedback_add_details("admin_verb","DAST") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - */ - -/client/proc/fix_next_move() - set category = "Debug" - set name = "Unfreeze Everyone" - var/largest_move_time = 0 - var/largest_click_time = 0 - var/mob/largest_move_mob = null - var/mob/largest_click_mob = null - for(var/mob/M in world) - if(!M.client) - continue - if(M.next_move >= largest_move_time) - largest_move_mob = M - if(M.next_move > world.time) - largest_move_time = M.next_move - world.time - else - largest_move_time = 1 - if(M.next_click >= largest_click_time) - largest_click_mob = M - if(M.next_click > world.time) - largest_click_time = M.next_click - world.time - else - largest_click_time = 0 - log_admin("DEBUG: [key_name(M)] next_move = [M.next_move] next_click = [M.next_click] world.time = [world.time]") - M.next_move = 1 - M.next_click = 0 - message_admins("[key_name_admin(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [largest_move_time/10] seconds!", 1) - message_admins("[key_name_admin(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [largest_click_time/10] seconds!", 1) - message_admins("world.time = [world.time]", 1) - feedback_add_details("admin_verb","UFE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/client/proc/radio_report() - set category = "Debug" - set name = "Radio report" - - var/filters = list( - "1" = "RADIO_TO_AIRALARM", - "2" = "RADIO_FROM_AIRALARM", - "3" = "RADIO_CHAT", - "4" = "RADIO_ATMOSIA", - "5" = "RADIO_NAVBEACONS", - "6" = "RADIO_AIRLOCK", - "7" = "RADIO_SECBOT", - "8" = "RADIO_MULEBOT", - "_default" = "NO_FILTER" - ) - var/output = "Radio Report
    " - for (var/fq in radio_controller.frequencies) - output += "Freq: [fq]
    " - var/list/datum/radio_frequency/fqs = radio_controller.frequencies[fq] - if (!fqs) - output += "  ERROR
    " - continue - for (var/filter in fqs.devices) - var/list/f = fqs.devices[filter] - if (!f) - output += "  [filters[filter]]: ERROR
    " - continue - output += "  [filters[filter]]: [f.len]
    " - for (var/device in f) - if (isobj(device)) - output += "    [device] ([device:x],[device:y],[device:z] in area [get_area(device:loc)])
    " - else - output += "    [device]
    " - - usr << browse(output,"window=radioreport") - feedback_add_details("admin_verb","RR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/reload_admins() - set name = "Reload Admins" - set category = "Debug" - - if(!check_rights(R_SERVER|R_DEV)) return - - message_admins("[usr] manually reloaded admins") - load_admins() - feedback_add_details("admin_verb","RLDA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -//todo: -/client/proc/jump_to_dead_group() - set name = "Jump to dead group" - set category = "Debug" - /* - if(!holder) - src << "Only administrators may use this command." - return - - if(!air_master) - usr << "Cannot find air_system" - return - var/datum/air_group/dead_groups = list() - for(var/datum/air_group/group in air_master.air_groups) - if (!group.group_processing) - dead_groups += group - var/datum/air_group/dest_group = pick(dead_groups) - usr.loc = pick(dest_group.members) - feedback_add_details("admin_verb","JDAG") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - */ - -/client/proc/kill_airgroup() - set name = "Kill Local Airgroup" - set desc = "Use this to allow manual manupliation of atmospherics." - set category = "Debug" - /* - if(!holder) - src << "Only administrators may use this command." - return - - if(!air_master) - usr << "Cannot find air_system" - return - - var/turf/T = get_turf(usr) - if(istype(T, /turf/simulated)) - var/datum/air_group/AG = T:parent - AG.next_check = 30 - AG.group_processing = 0 - else - usr << "Local airgroup is unsimulated!" - feedback_add_details("admin_verb","KLAG") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - */ - -/client/proc/print_jobban_old() - set name = "Print Jobban Log" - set desc = "This spams all the active jobban entries for the current round to standard output." - set category = "Debug" - - usr << "Jobbans active in this round." - for(var/t in jobban_keylist) - usr << "[t]" - -/client/proc/print_jobban_old_filter() - set name = "Search Jobban Log" - set desc = "This searches all the active jobban entries for the current round and outputs the results to standard output." - set category = "Debug" - - var/filter = input("Contains what?","Filter") as text|null - if(!filter) - return - - usr << "Jobbans active in this round." - for(var/t in jobban_keylist) - if(findtext(t, filter)) - usr << "[t]" diff --git a/code/modules/admin/verbs/mapping.dm.bak b/code/modules/admin/verbs/mapping.dm.bak deleted file mode 100644 index 4df2bd8b..00000000 --- a/code/modules/admin/verbs/mapping.dm.bak +++ /dev/null @@ -1,413 +0,0 @@ -//- Are all the floors with or without air, as they should be? (regular or airless) -//- Does the area have an APC? -//- Does the area have an Air Alarm? -//- Does the area have a Request Console? -//- Does the area have lights? -//- Does the area have a light switch? -//- Does the area have enough intercoms? -//- Does the area have enough security cameras? (Use the 'Camera Range Display' verb under Debug) -//- Is the area connected to the scrubbers air loop? -//- Is the area connected to the vent air loop? (vent pumps) -//- Is everything wired properly? -//- Does the area have a fire alarm and firedoors? -//- Do all pod doors work properly? -//- Are accesses set properly on doors, pod buttons, etc. -//- Are all items placed properly? (not below vents, scrubbers, tables) -//- Does the disposal system work properly from all the disposal units in this room and all the units, the pipes of which pass through this room? -//- Check for any misplaced or stacked piece of pipe (air and disposal) -//- Check for any misplaced or stacked piece of wire -//- Identify how hard it is to break into the area and where the weak points are -//- Check if the area has too much empty space. If so, make it smaller and replace the rest with maintenance tunnels. - -var/camera_range_display_status = 0 -var/intercom_range_display_status = 0 - -/obj/effect/debugging/camera_range - icon = 'icons/480x480.dmi' - icon_state = "25percent" - - New() - src.pixel_x = -224 - src.pixel_y = -224 - -/obj/effect/debugging/marker - icon = 'icons/turf/areas.dmi' - icon_state = "yellow" - -/obj/effect/debugging/marker/Move() - return 0 - -/client/proc/do_not_use_these() - set category = "Mapping" - set name = "-None of these are for ingame use!!" - - ..() - -/client/proc/camera_view() - set category = "Mapping" - set name = "Camera Range Display" - - if(camera_range_display_status) - camera_range_display_status = 0 - else - camera_range_display_status = 1 - - - - for(var/obj/effect/debugging/camera_range/C in world) - del(C) - - if(camera_range_display_status) - for(var/obj/machinery/camera/C in cameranet.cameras) - new/obj/effect/debugging/camera_range(C.loc) - feedback_add_details("admin_verb","mCRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - - -/client/proc/sec_camera_report() - set category = "Mapping" - set name = "Camera Report" - - if(!master_controller) - alert(usr,"Master_controller not found.","Sec Camera Report") - return 0 - - var/list/obj/machinery/camera/CL = list() - - for(var/obj/machinery/camera/C in cameranet.cameras) - CL += C - - var/output = {"CAMERA ANNOMALITIES REPORT
    -The following annomalities have been detected. The ones in red need immediate attention: Some of those in black may be intentional.
    " - usr << browse(output,"window=airreport;size=1000x500") - feedback_add_details("admin_verb","mCRP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/intercom_view() - set category = "Mapping" - set name = "Intercom Range Display" - - if(intercom_range_display_status) - intercom_range_display_status = 0 - else - intercom_range_display_status = 1 - - for(var/obj/effect/debugging/marker/M in world) - del(M) - - if(intercom_range_display_status) - for(var/obj/item/device/radio/intercom/I in world) - for(var/turf/T in orange(7,I)) - var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T) - if (!(F in view(7,I.loc))) - del(F) - feedback_add_details("admin_verb","mIRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -var/list/debug_verbs = list ( - /client/proc/do_not_use_these - ,/client/proc/camera_view - ,/client/proc/sec_camera_report - ,/client/proc/intercom_view - ,/client/proc/air_status - ,/client/proc/Cell - ,/client/proc/atmosscan - ,/client/proc/powerdebug - ,/client/proc/count_objects_on_z_level - ,/client/proc/count_objects_all - ,/client/proc/cmd_assume_direct_control - ,/client/proc/jump_to_dead_group - ,/client/proc/startSinglo - ,/client/proc/ticklag - ,/client/proc/cmd_admin_grantfullaccess - ,/client/proc/kaboom - ,/client/proc/splash - ,/client/proc/cmd_admin_areatest - ,/client/proc/cmd_admin_rejuvenate - ,/datum/admins/proc/show_traitor_panel - ,/client/proc/print_jobban_old - ,/client/proc/print_jobban_old_filter - ,/client/proc/forceEvent - ,/client/proc/break_all_air_groups - ,/client/proc/regroup_all_air_groups - ,/client/proc/kill_pipe_processing - ,/client/proc/kill_air_processing - ,/client/proc/disable_communication - ,/client/proc/disable_movement - ,/client/proc/Zone_Info - ,/client/proc/Test_ZAS_Connection - ,/client/proc/ZoneTick - ,/client/proc/TestZASRebuild - ,/client/proc/hide_debug_verbs - ,/client/proc/testZAScolors - ,/client/proc/testZAScolors_remove - ) - - -/client/proc/enable_debug_verbs() - set category = "Debug" - set name = "Debug verbs" - - if(!check_rights(R_DEBUG|R_DEV)) return - - verbs += debug_verbs - - feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/hide_debug_verbs() - set category = "Debug" - set name = "Hide Debug verbs" - - if(!check_rights(R_DEBUG|R_DEV)) return - - verbs -= debug_verbs - - feedback_add_details("admin_verb","hDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - -/client/var/list/testZAScolors_turfs = list() -/client/var/list/testZAScolors_zones = list() -/client/var/usedZAScolors = 0 -/client/var/list/image/ZAScolors = list() - -/client/proc/recurse_zone(var/zone/Z, var/recurse_level =1) - testZAScolors_zones += Z - if(recurse_level > 10) - return - var/icon/yellow = new('icons/misc/debug_group.dmi', "yellow") - - for(var/turf/T in Z.contents) - images += image(yellow, T, "zasdebug", TURF_LAYER) - testZAScolors_turfs += T - for(var/zone/connected in Z.connected_zones) - if(connected in testZAScolors_zones) - continue - recurse_zone(connected,recurse_level+1) - - -/client/proc/testZAScolors() - set category = "ZAS" - set name = "Check ZAS connections" - - if(!check_rights(R_DEBUG|R_DEV)) return - testZAScolors_remove() - - var/turf/location = get_turf(usr) - - if(!istype(location, /turf/simulated)) // We're in space, let's not cause runtimes. - usr << "\red this debug tool cannot be used from space" - return - - var/icon/red = new('icons/misc/debug_group.dmi', "red") //created here so we don't have to make thousands of these. - var/icon/green = new('icons/misc/debug_group.dmi', "green") - var/icon/blue = new('icons/misc/debug_group.dmi', "blue") - - if(!usedZAScolors) - usr << "ZAS Test Colors" - usr << "Green = Zone you are standing in" - usr << "Blue = Connected zone to the zone you are standing in" - usr << "Yellow = A zone that is connected but not one adjacent to your connected zone" - usr << "Red = Not connected" - usedZAScolors = 1 - - testZAScolors_zones += location.zone - for(var/turf/T in location.zone.contents) - images += image(green, T,"zasdebug", TURF_LAYER) - testZAScolors_turfs += T - for(var/zone/Z in location.zone.connected_zones) - testZAScolors_zones += Z - for(var/turf/T in Z.contents) - images += image(blue, T,"zasdebug",TURF_LAYER) - testZAScolors_turfs += T - for(var/zone/connected in Z.connected_zones) - if(connected in testZAScolors_zones) - continue - recurse_zone(connected,1) - - for(var/turf/T in range(25,location)) - if(!istype(T)) - continue - if(T in testZAScolors_turfs) - continue - images += image(red, T, "zasdebug", TURF_LAYER) - testZAScolors_turfs += T - -/client/proc/testZAScolors_remove() - set category = "ZAS" - set name = "Remove ZAS connection colors" - - testZAScolors_turfs.Cut() - testZAScolors_zones.Cut() - - if(images.len) - for(var/image/i in images) - if(i.icon_state == "zasdebug") - images.Remove(i) - - -/client/proc/count_objects_on_z_level() - set category = "Mapping" - set name = "Count Objects On Level" - var/level = input("Which z-level?","Level?") as text - if(!level) return - var/num_level = text2num(level) - if(!num_level) return - if(!isnum(num_level)) return - - var/type_text = input("Which type path?","Path?") as text - if(!type_text) return - var/type_path = text2path(type_text) - if(!type_path) return - - var/count = 1 - - var/list/atom/atom_list = list() - - for(var/atom/A in world) - if(istype(A,type_path)) - var/atom/B = A - while(!(isturf(B.loc))) - if(B && B.loc) - B = B.loc - else - break - if(B) - if(B.z == num_level) - count++ - atom_list += A - /* - var/atom/temp_atom - for(var/i = 0; i <= (atom_list.len/10); i++) - var/line = "" - for(var/j = 1; j <= 10; j++) - if(i*10+j <= atom_list.len) - temp_atom = atom_list[i*10+j] - line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; " - world << line*/ - - world << "There are [count] objects of type [type_path] on z-level [num_level]" - feedback_add_details("admin_verb","mOBJZ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/count_objects_all() - set category = "Mapping" - set name = "Count Objects All" - - var/type_text = input("Which type path?","") as text - if(!type_text) return - var/type_path = text2path(type_text) - if(!type_path) return - - var/count = 0 - - for(var/atom/A in world) - if(istype(A,type_path)) - count++ - /* - var/atom/temp_atom - for(var/i = 0; i <= (atom_list.len/10); i++) - var/line = "" - for(var/j = 1; j <= 10; j++) - if(i*10+j <= atom_list.len) - temp_atom = atom_list[i*10+j] - line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; " - world << line*/ - - world << "There are [count] objects of type [type_path] in the game world" - feedback_add_details("admin_verb","mOBJ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - -var/global/prevent_airgroup_regroup = 0 - -/client/proc/break_all_air_groups() - set category = "Mapping" - set name = "Break All Airgroups" - - /*prevent_airgroup_regroup = 1 - for(var/datum/air_group/AG in air_master.air_groups) - AG.suspend_group_processing() - message_admins("[src.ckey] used 'Break All Airgroups'")*/ - -/client/proc/regroup_all_air_groups() - set category = "Mapping" - set name = "Regroup All Airgroups Attempt" - - usr << "\red Proc disabled." - - /*prevent_airgroup_regroup = 0 - for(var/datum/air_group/AG in air_master.air_groups) - AG.check_regroup() - message_admins("[src.ckey] used 'Regroup All Airgroups Attempt'")*/ - -/client/proc/kill_pipe_processing() - set category = "Mapping" - set name = "Kill pipe processing" - - usr << "\red Proc disabled." - - /*pipe_processing_killed = !pipe_processing_killed - if(pipe_processing_killed) - message_admins("[src.ckey] used 'kill pipe processing', stopping all pipe processing.") - else - message_admins("[src.ckey] used 'kill pipe processing', restoring all pipe processing.")*/ - -/client/proc/kill_air_processing() - set category = "Mapping" - set name = "Kill air processing" - - usr << "\red Proc disabled." - - /*air_processing_killed = !air_processing_killed - if(air_processing_killed) - message_admins("[src.ckey] used 'kill air processing', stopping all air processing.") - else - message_admins("[src.ckey] used 'kill air processing', restoring all air processing.")*/ - -//This proc is intended to detect lag problems relating to communication procs -var/global/say_disabled = 0 -/client/proc/disable_communication() - set category = "Mapping" - set name = "Disable all communication verbs" - - usr << "\red Proc disabled." - - /*say_disabled = !say_disabled - if(say_disabled) - message_admins("[src.ckey] used 'Disable all communication verbs', killing all communication methods.") - else - message_admins("[src.ckey] used 'Disable all communication verbs', restoring all communication methods.")*/ - -//This proc is intended to detect lag problems relating to movement -var/global/movement_disabled = 0 -var/global/movement_disabled_exception //This is the client that calls the proc, so he can continue to run around to gauge any change to lag. -/client/proc/disable_movement() - set category = "Mapping" - set name = "Disable all movement" - - usr << "\red Proc disabled." - - /*movement_disabled = !movement_disabled - if(movement_disabled) - message_admins("[src.ckey] used 'Disable all movement', killing all movement.") - movement_disabled_exception = usr.ckey - else - message_admins("[src.ckey] used 'Disable all movement', restoring all movement.")*/ diff --git a/code/modules/admin/verbs/vox_raiders.dm.bak b/code/modules/admin/verbs/vox_raiders.dm.bak deleted file mode 100644 index f1e6204d..00000000 --- a/code/modules/admin/verbs/vox_raiders.dm.bak +++ /dev/null @@ -1,87 +0,0 @@ -var/global/vox_tick = 1 - -/mob/living/carbon/human/proc/equip_vox_raider() - - var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate(src) - R.set_frequency(SYND_FREQ) //Same frequency as the syndicate team in Nuke mode. - equip_to_slot_or_del(R, slot_l_ear) - - equip_to_slot_or_del(new /obj/item/clothing/under/vox/vox_robes(src), slot_w_uniform) - equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/vox(src), slot_shoes) // REPLACE THESE WITH CODED VOX ALTERNATIVES. - equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow/vox(src), slot_gloves) // AS ABOVE. - - switch(vox_tick) - if(1) // Vox raider! - equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(src), slot_wear_suit) - equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(src), slot_head) - equip_to_slot_or_del(new /obj/item/weapon/melee/telebaton(src), slot_belt) - equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. - equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store) - - var/obj/item/weapon/crossbow/W = new(src) - W.cell = new /obj/item/weapon/cell/crap(W) - W.cell.charge = 500 - equip_to_slot_or_del(W, slot_r_hand) - - var/obj/item/stack/rods/A = new(src) - A.amount = 20 - equip_to_slot_or_del(A, slot_l_hand) - - if(2) // Vox engineer! - equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/pressure(src), slot_wear_suit) - equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/pressure(src), slot_head) - equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) - equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. - equip_to_slot_or_del(new /obj/item/weapon/storage/box/emps(src), slot_r_hand) - equip_to_slot_or_del(new /obj/item/device/multitool(src), slot_l_hand) - - - if(3) // Vox saboteur! - equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/stealth(src), slot_wear_suit) - equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/stealth(src), slot_head) - equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) - equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. - equip_to_slot_or_del(new /obj/item/weapon/card/emag(src), slot_l_store) - equip_to_slot_or_del(new /obj/item/weapon/gun/dartgun/vox/raider(src), slot_r_hand) - equip_to_slot_or_del(new /obj/item/device/multitool(src), slot_l_hand) - - if(4) // Vox medic! - equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/medic(src), slot_wear_suit) - equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/medic(src), slot_head) - equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) // Who needs actual surgical tools? - equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. - equip_to_slot_or_del(new /obj/item/weapon/circular_saw(src), slot_l_store) - equip_to_slot_or_del(new /obj/item/weapon/gun/dartgun/vox/medical, slot_r_hand) - - equip_to_slot_or_del(new /obj/item/clothing/mask/breath/vox(src), slot_wear_mask) - equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(src), slot_back) - equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_r_store) - - var/obj/item/weapon/card/id/syndicate/C = new(src) - C.name = "[real_name]'s Legitimate Human ID Card" - C.icon_state = "id" - C.access = list(access_syndicate) - C.assignment = "Trader" - C.registered_name = real_name - C.registered_user = src - var/obj/item/weapon/storage/wallet/W = new(src) - W.handle_item_insertion(C) - spawn_money(rand(50,150)*10,W) - equip_to_slot_or_del(W, slot_wear_id) - - var/obj/item/weapon/implant/cortical/I = new(src) - I.imp_in = src - I.implanted = 1 - var/datum/organ/external/affected = src.get_organ("head") - affected.implants += I - I.part = affected - - if(ticker.mode && ( istype( ticker.mode,/datum/game_mode/heist ) ) ) - var/datum/game_mode/heist/M = ticker.mode - M.cortical_stacks += I - M.raiders[mind] = I - - vox_tick++ - if (vox_tick > 4) vox_tick = 1 - - return 1 \ No newline at end of file diff --git a/code/modules/clothing/suits/armor.dm.bak b/code/modules/clothing/suits/armor.dm.bak deleted file mode 100644 index b8df2fa6..00000000 --- a/code/modules/clothing/suits/armor.dm.bak +++ /dev/null @@ -1,222 +0,0 @@ - -/obj/item/clothing/suit/armor - allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) - body_parts_covered = UPPER_TORSO|LOWER_TORSO - flags = FPRINT | TABLEPASS - - cold_protection = UPPER_TORSO|LOWER_TORSO - min_cold_protection_temperature = ARMOR_MIN_COLD_PROTECITON_TEMPERATURE - heat_protection = UPPER_TORSO|LOWER_TORSO - max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECITON_TEMPERATURE - siemens_coefficient = 0.6 - - -/obj/item/clothing/suit/armor/vest - name = "armor" - desc = "An armored vest that protects against some damage." - icon_state = "armor" - item_state = "armor" - blood_overlay_type = "armor" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL - armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) - -/obj/item/clothing/suit/armor/vest/security - name = "security armor" - desc = "An armored vest that protects against some damage. This one has NanoTrasen corporate badge." - icon_state = "armorsec" - item_state = "armor" - -/obj/item/clothing/suit/armor/vest/warden - name = "Warden's jacket" - desc = "An armoured jacket with silver rank pips and livery." - icon_state = "warden_jacket" - item_state = "armor" - - -/obj/item/clothing/suit/armor/riot - name = "Riot Suit" - desc = "A suit of armor with heavy padding to protect against melee attacks. Looks like it might impair movement." - icon_state = "riot" - item_state = "swat_suit" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - slowdown = 1 - armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) - flags_inv = HIDEJUMPSUIT - siemens_coefficient = 0.5 - - -/obj/item/clothing/suit/armor/bulletproof - name = "Bulletproof Vest" - desc = "A vest that excels in protecting the wearer against high-velocity solid projectiles." - icon_state = "bulletproof" - item_state = "armor" - blood_overlay_type = "armor" - armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0.7 - -/obj/item/clothing/suit/armor/laserproof - name = "Ablative Armor Vest" - desc = "A vest that excels in protecting the wearer against energy projectiles." - icon_state = "armor_reflec" - item_state = "armor_reflec" - blood_overlay_type = "armor" - armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0 - -/obj/item/clothing/suit/armor/swat - name = "swat suit" - desc = "A heavily armored suit that protects against moderate damage. Used in special operations." - icon_state = "deathsquad" - item_state = "swat_suit" - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) - slowdown = 1 - armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 0, rad = 0) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE - siemens_coefficient = 0.5 - - -/obj/item/clothing/suit/armor/swat/officer - name = "officer jacket" - desc = "An armored jacket used in special operations." - icon_state = "detective" - item_state = "det_suit" - blood_overlay_type = "coat" - flags_inv = 0 - - -/obj/item/clothing/suit/armor/det_suit - name = "armor" - desc = "An armored vest with a detective's badge on it." - icon_state = "detective-armor" - item_state = "armor" - blood_overlay_type = "armor" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL - body_parts_covered = UPPER_TORSO|LOWER_TORSO - armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) - - -//Reactive armor -//When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!) -/obj/item/clothing/suit/armor/reactive - name = "Reactive Teleport Armor" - desc = "Someone seperated our Research Director from his own head!" - var/active = 0.0 - icon_state = "reactiveoff" - item_state = "reactiveoff" - blood_overlay_type = "armor" - slowdown = 1 - flags = FPRINT | TABLEPASS - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) - -/obj/item/clothing/suit/armor/reactive/IsShield() - if(active) - return 1 - return 0 - -/obj/item/clothing/suit/armor/reactive/attack_self(mob/user as mob) - src.active = !( src.active ) - if (src.active) - user << "\blue The reactive armor is now active." - src.icon_state = "reactive" - src.item_state = "reactive" - else - user << "\blue The reactive armor is now inactive." - src.icon_state = "reactiveoff" - src.item_state = "reactiveoff" - src.add_fingerprint(user) - return - -/obj/item/clothing/suit/armor/reactive/emp_act(severity) - active = 0 - src.icon_state = "reactiveoff" - src.item_state = "reactiveoff" - ..() - - -//All of the armor below is mostly unused - - -/obj/item/clothing/suit/armor/centcomm - name = "Cent. Com. armor" - desc = "A suit that protects against some damage." - icon_state = "centcom" - item_state = "centcom" - w_class = 4//bulky item - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE - siemens_coefficient = 0 - -/obj/item/clothing/suit/armor/heavy - name = "heavy armor" - desc = "A heavily armored suit that protects against moderate damage." - icon_state = "heavy" - item_state = "swat_suit" - w_class = 4//bulky item - gas_transfer_coefficient = 0.90 - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - slowdown = 3 - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - siemens_coefficient = 0 - -/obj/item/clothing/suit/armor/tdome - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - -/obj/item/clothing/suit/armor/tdome/red - name = "Thunderdome suit (red)" - desc = "Reddish armor." - icon_state = "tdred" - item_state = "tdred" - siemens_coefficient = 1 - -/obj/item/clothing/suit/armor/tdome/green - name = "Thunderdome suit (green)" - desc = "Pukish armor." - icon_state = "tdgreen" - item_state = "tdgreen" - siemens_coefficient = 1 - -/obj/item/clothing/suit/armor/vest/ert_soldier - name = "ERT trooper vest" - desc = "A platecarrier worns by the troopers of NanoTrasen's Emergency Response Teams." - icon_state = "ert_soldier" - item_state = "ert_soldier" - blood_overlay_type = "armor" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL - armor = list(melee = 65, bullet = 25, laser = 65, energy = 25, bomb = 35, bio = 0, rad = 0) - -/obj/item/clothing/suit/armor/vest/ert_nco - name = "ERT leading trooper vest" - desc = "A platecarrier worns by the leading troopers of NanoTrasen's Emergency Response Teams." - icon_state = "ert_nco" - item_state = "ert_nco" - blood_overlay_type = "armor" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL - armor = list(melee = 65, bullet = 25, laser = 65, energy = 25, bomb = 35, bio = 0, rad = 0) - -/obj/item/clothing/suit/armor/vest/ert_officer - name = "ERT sub-officer vest" - desc = "A platecarrier worns by the sub-officers of NanoTrasen's Emergency Response Teams." - icon_state = "ert_officer" - item_state = "ert_ófficer" - blood_overlay_type = "armor" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL - armor = list(melee = 65, bullet = 25, laser = 65, energy = 25, bomb = 35, bio = 0, rad = 0) - -/obj/item/clothing/suit/armor/vest/ert_commander - name = "ERT commander vest" - desc = "A platecarrier worns by the commanders of NanoTrasen's Emergency Response Teams." - icon_state = "ert_cdr" - item_state = "ert_cdr" - blood_overlay_type = "armor" - flags = FPRINT | TABLEPASS | ONESIZEFITSALL - armor = list(melee = 65, bullet = 25, laser = 65, energy = 25, bomb = 35, bio = 0, rad = 0) \ No newline at end of file diff --git a/code/modules/clothing/under/jobs/security.dm.bak b/code/modules/clothing/under/jobs/security.dm.bak deleted file mode 100644 index 03ea2162..00000000 --- a/code/modules/clothing/under/jobs/security.dm.bak +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Contains: - * Security - * Detective - * Head of Security - */ - -/* - * Security - */ -/obj/item/clothing/under/rank/warden - desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for more robust protection. It has the word \"Warden\" written on the shoulders." - name = "warden's jumpsuit" - icon_state = "warden" - item_state = "r_suit" - item_color = "warden" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.9 - -/obj/item/clothing/under/rank/security - name = "security officer's jumpsuit" - desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection." - icon_state = "security" - item_state = "r_suit" - item_color = "secred" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.9 - -/obj/item/clothing/under/rank/dispatch - name = "dispatcher's uniform" - desc = "A dress shirt and khakis with a security patch sewn on." - icon_state = "dispatch" - item_state = "dispatch" - item_color = "dispatch" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.9 - -/obj/item/clothing/under/rank/security2 - name = "security officer's uniform" - desc = "It's made of a slightly sturdier material, to allow for robust protection." - icon_state = "redshirt2" - item_state = "r_suit" - item_color = "redshirt2" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.9 - -/obj/item/clothing/under/rank/security/corp - icon_state = "sec_corporate" - item_state = "sec_corporate" - item_color = "sec_corporate" - -/obj/item/clothing/under/rank/warden/corp - icon_state = "warden_corporate" - item_state = "warden_corporate" - item_color = "warden_corporate" - -/* - * Detective - */ -/obj/item/clothing/under/det - name = "hard-worn suit" - desc = "Someone who wears this means business." - icon_state = "detective" - item_state = "det" - item_color = "detective" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.9 - -/obj/item/clothing/under/det/black - icon_state = "detective2" - item_color = "detective2" - -/obj/item/clothing/under/det/slob - icon_state = "polsuit" - item_color = "polsuit" - -/obj/item/clothing/under/det/slob/verb/rollup() - set name = "Roll suit sleeves" - set category = "Object" - set src in usr - item_color = item_color == "polsuit" ? "polsuit_rolled" : "polsuit" - if (ishuman(loc)) - var/mob/living/carbon/human/H = loc - H.update_inv_w_uniform(1) - -/obj/item/clothing/head/det_hat - name = "hat" - desc = "Someone who wears this will look very smart." - icon_state = "detective" - allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen) - armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0.9 - -/obj/item/clothing/head/det_hat/black - icon_state = "detective2" - - -/* - * Head of Security - */ -/obj/item/clothing/under/rank/head_of_security - desc = "It's a jumpsuit 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 jumpsuit" - icon_state = "hos" - item_state = "r_suit" - item_color = "hosred" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.8 - -/obj/item/clothing/under/rank/head_of_security/corp - icon_state = "hos_corporate" - item_state = "hos_corporate" - item_color = "hos_corporate" - -/obj/item/clothing/head/helmet/HoS - name = "Head of Security Hat" - desc = "The hat of the Head of Security. For showing the officers who's in charge." - icon_state = "hoscap" - flags = FPRINT | TABLEPASS | HEADCOVERSEYES - armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0) - flags_inv = 0 - flags_inv = HIDEEARS - siemens_coefficient = 0.8 - -/obj/item/clothing/suit/armor/hos - name = "Head of Security's jacket" - desc = "An armoured jacket with golden rank pips and livery." - icon_state = "hos" - item_state = "hos" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) - flags_inv = HIDEJUMPSUIT - siemens_coefficient = 0.6 - - -/obj/item/clothing/head/helmet/HoS/dermal - name = "Dermal Armour Patch" - desc = "You're not quite sure how you manage to take it on and off, but it implants nicely in your head." - icon_state = "dermal" - item_state = "dermal" - siemens_coefficient = 0.6 - -//Jensen cosplay gear -/obj/item/clothing/under/rank/head_of_security/jensen - desc = "You never asked for anything that stylish." - name = "head of security's jumpsuit" - icon_state = "jensen" - item_state = "jensen" - item_color = "jensen" - siemens_coefficient = 0.6 - -/obj/item/clothing/suit/armor/hos/jensen - name = "armored trenchcoat" - desc = "A trenchcoat with armour concealed underneath." - icon_state = "jensencoat" - item_state = "jensencoat" - flags_inv = 0 - siemens_coefficient = 0.6 - -/* - * Naval Uniforms - */ - -/obj/item/clothing/under/rank/navy/hos - name = "Naval Head of Security Uniform" - desc = "A service uniform worn by a Head of Security of the NanoTrasen Naval branch." - icon_state = "hosdnavyclothes" - item_state = "hosdnavyclothes" - item_color = "hosdnavyclothes" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.8 - -/obj/item/clothing/under/rank/navy/hos/blue - name = "Blue Head of Security Uniform" - desc = "A blue service uniform worn by the Head of Security." - icon_state = "hosblueclothes" - item_state = "hosblueclothes" - item_color = "hosblueclothes" - -/obj/item/clothing/under/rank/navy/hos/tan - name = "Tan Head of Security Uniform" - desc = "A tan service uniform worn by the Head of Security." - icon_state = "hostanclothes" - item_state = "hostanclothes" - item_color = "hostanclothes" - -/obj/item/clothing/under/rank/navy/warden - name = "Naval Warden Uniform" - desc = "A service uniform worn by a Warden of the NanoTrasen Naval branch." - icon_state = "wardendnavyclothes" - item_state = "wardendnavyclothes" - item_color = "wardendnavyclothes" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.9 - -/obj/item/clothing/under/rank/navy/warden/blue - name = "Blue Warden Uniform" - desc = "A blue service uniform worn by the Warden." - icon_state = "wardenblueclothes" - item_state = "wardenblueclothes" - item_color = "wardenblueclothes" - -/obj/item/clothing/under/rank/navy/warden/tan - name = "Tan Warden Uniform" - desc = "A tan service uniform worn by the Warden." - icon_state = "wardentanclothes" - item_state = "wardentanclothes" - item_color = "wardentanclothes" - -/obj/item/clothing/under/rank/navy/officer - name = "Naval Officer Uniform" - desc = "A service unfirom worn by an officer of the NanoTrasen Naval branch." - icon_state = "officerdnavyclothes" - item_state = "officerdnavyclothes" - item_color = "officerdnavyclothes" - armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - flags = FPRINT | TABLEPASS - siemens_coefficient = 0.9 - -/obj/item/clothing/under/rank/navy/officer/blue - name = "Blue Officer Uniform" - desc = "A blue service uniform worn by a security officer." - icon_state = "officerblueclothes" - item_state = "officerblueclothes" - item_color = "officerblueclothes" - -/obj/item/clothing/under/rank/navy/officer/tan - name = "Tan Officer Uniform" - desc = "A tan service uniform worn by a security officer." - icon_state = "officertanclothes" - item_state = "officertanclothes" - item_color = "officertanclothes" \ No newline at end of file diff --git a/code/modules/clothing/under/miscellaneous.dm.bak b/code/modules/clothing/under/miscellaneous.dm.bak deleted file mode 100644 index aa54b0c4..00000000 --- a/code/modules/clothing/under/miscellaneous.dm.bak +++ /dev/null @@ -1,381 +0,0 @@ -/obj/item/clothing/under/pj/red - name = "red pj's" - desc = "Sleepwear." - icon_state = "red_pyjamas" - item_color = "red_pyjamas" - item_state = "w_suit" - -/obj/item/clothing/under/pj/blue - name = "blue pj's" - desc = "Sleepwear." - icon_state = "blue_pyjamas" - item_color = "blue_pyjamas" - item_state = "w_suit" - -/obj/item/clothing/under/captain_fly - name = "rogue captains uniform" - desc = "For the man who doesn't care because he's still free." - icon_state = "captain_fly" - item_state = "captain_fly" - item_color = "captain_fly" - -/obj/item/clothing/under/scratch - name = "white suit" - desc = "A white suit, suitable for an excellent host" - icon_state = "scratch" - item_state = "scratch" - item_color = "scratch" - -/obj/item/clothing/under/sl_suit - desc = "It's a very amish looking suit." - name = "amish suit" - icon_state = "sl_suit" - item_color = "sl_suit" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/under/waiter - name = "waiter's outfit" - desc = "It's a very smart uniform with a special pocket for tip." - icon_state = "waiter" - item_state = "waiter" - item_color = "waiter" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/under/rank/mailman - name = "mailman's jumpsuit" - desc = "'Special delivery!'" - icon_state = "mailman" - item_state = "b_suit" - item_color = "mailman" - -/obj/item/clothing/under/sexyclown - name = "sexy-clown suit" - desc = "It makes you look HONKable!" - icon_state = "sexyclown" - item_state = "sexyclown" - item_color = "sexyclown" - -/obj/item/clothing/under/rank/vice - name = "vice officer's jumpsuit" - desc = "It's the standard issue pretty-boy outfit, as seen on Holo-Vision." - icon_state = "vice" - item_state = "gy_suit" - item_color = "vice" - -/obj/item/clothing/under/rank/centcom_officer - desc = "It's a jumpsuit worn by CentCom Officers." - name = "\improper CentCom officer's jumpsuit" - icon_state = "officer" - item_state = "g_suit" - item_color = "officer" - -/obj/item/clothing/under/rank/centcom_commander - desc = "It's a jumpsuit worn by CentCom's highest-tier Commanders." - name = "\improper CentCom officer's jumpsuit" - icon_state = "centcom" - item_state = "dg_suit" - item_color = "centcom" - -/obj/item/clothing/under/space - name = "\improper NASA jumpsuit" - desc = "It has a NASA logo on it and is made of space-proofed materials." - icon_state = "black" - item_state = "bl_suit" - item_color = "black" - w_class = 4//bulky item - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.02 - flags = FPRINT | TABLEPASS - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | ARMS //Needs gloves and shoes with cold protection to be fully protected. - min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE - -/obj/item/clothing/under/acj - name = "administrative cybernetic jumpsuit" - icon_state = "syndicate" - item_state = "bl_suit" - item_color = "syndicate" - desc = "it's a cybernetically enhanced jumpsuit used for administrative duties." - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.01 - flags = FPRINT | TABLEPASS - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100) - cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE - siemens_coefficient = 0 - -/obj/item/clothing/under/owl - name = "owl uniform" - desc = "A jumpsuit with owl wings. Photorealistic owl feathers! Twooooo!" - icon_state = "owl" - item_color = "owl" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/under/johnny - name = "johnny~~ jumpsuit" - desc = "Johnny~~" - icon_state = "johnny" - item_color = "johnny" - -/obj/item/clothing/under/rainbow - name = "rainbow" - desc = "rainbow" - icon_state = "rainbow" - item_state = "rainbow" - item_color = "rainbow" - -/obj/item/clothing/under/cloud - name = "cloud" - desc = "cloud" - icon_state = "cloud" - item_color = "cloud" - -/obj/item/clothing/under/psysuit - name = "dark undersuit" - desc = "A thick, layered grey undersuit lined with power cables. Feels a little like wearing an electrical storm." - icon_state = "psysuit" - item_state = "psysuit" - item_color = "psysuit" - -/obj/item/clothing/under/gentlesuit - name = "Gentlemans Suit" - desc = "A silk black shirt with a white tie and a matching gray vest and slacks. Feels proper." - icon_state = "gentlesuit" - item_state = "gentlesuit" - item_color = "gentlesuit" - -/obj/item/clothing/under/gimmick/rank/captain/suit - name = "captain's suit" - desc = "A green suit and yellow necktie. Exemplifies authority." - icon_state = "green_suit" - item_state = "dg_suit" - item_color = "green_suit" - -/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit - name = "head of personnel's suit" - desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble." - icon_state = "teal_suit" - item_state = "g_suit" - item_color = "teal_suit" - -/obj/item/clothing/under/suit_jacket - name = "black suit" - desc = "A black suit and red tie. Very formal." - icon_state = "black_suit" - item_state = "bl_suit" - item_color = "black_suit" - -/obj/item/clothing/under/suit_jacket/really_black - name = "executive suit" - desc = "A formal black suit and red tie, intended for the station's finest." - icon_state = "really_black_suit" - item_state = "bl_suit" - item_color = "black_suit" - -/obj/item/clothing/under/suit_jacket/female - name = "executive suit" - desc = "A formal trouser suit for women, intended for the station's finest." - icon_state = "black_suit_fem" - item_state = "black_suit_fem" - item_color = "black_suit_fem" - -/obj/item/clothing/under/suit_jacket/red - name = "red suit" - desc = "A red suit and blue tie. Somewhat formal." - icon_state = "red_suit" - item_state = "r_suit" - item_color = "red_suit" - -/obj/item/clothing/under/blackskirt - name = "black skirt" - desc = "A black skirt, very fancy!" - icon_state = "blackskirt" - item_color = "blackskirt" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - -/obj/item/clothing/under/schoolgirl - name = "schoolgirl uniform" - desc = "It's just like one of my Japanese animes!" - icon_state = "schoolgirl" - item_state = "schoolgirl" - item_color = "schoolgirl" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - -/obj/item/clothing/under/overalls - name = "laborer's overalls" - desc = "A set of durable overalls for getting the job done." - icon_state = "overalls" - item_state = "lb_suit" - item_color = "overalls" - -/obj/item/clothing/under/pirate - name = "pirate outfit" - desc = "Yarr." - icon_state = "pirate" - item_state = "pirate" - item_color = "pirate" - -/obj/item/clothing/under/soviet - name = "soviet uniform" - desc = "For the Motherland!" - icon_state = "soviet" - item_state = "soviet" - item_color = "soviet" - -/obj/item/clothing/under/redcoat - name = "redcoat uniform" - desc = "Looks old." - icon_state = "redcoat" - item_state = "redcoat" - item_color = "redcoat" - -/obj/item/clothing/under/kilt - name = "kilt" - desc = "Includes shoes and plaid" - icon_state = "kilt" - item_state = "kilt" - item_color = "kilt" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET - -/obj/item/clothing/under/sexymime - name = "sexy mime outfit" - desc = "The only time when you DON'T enjoy looking at someone's rack." - icon_state = "sexymime" - item_state = "sexymime" - item_color = "sexymime" - body_parts_covered = UPPER_TORSO|LOWER_TORSO - -/obj/item/clothing/under/gladiator - name = "gladiator uniform" - desc = "Are you not entertained? Is that not why you are here?" - icon_state = "gladiator" - item_state = "gladiator" - item_color = "gladiator" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - -//dress - -/obj/item/clothing/under/dress/dress_fire - name = "flame dress" - desc = "A small black dress with blue flames print on it." - icon_state = "dress_fire" - item_color = "dress_fire" - -/obj/item/clothing/under/dress/dress_green - name = "green dress" - desc = "A simple, tight fitting green dress." - icon_state = "dress_green" - item_color = "dress_green" - -/obj/item/clothing/under/dress/dress_orange - name = "orange dress" - desc = "A fancy orange gown for those who like to show leg." - icon_state = "dress_orange" - item_color = "dress_orange" - -/obj/item/clothing/under/dress/dress_pink - name = "pink dress" - desc = "A simple, tight fitting pink dress." - icon_state = "dress_pink" - item_color = "dress_pink" - -/obj/item/clothing/under/dress/dress_yellow - name = "yellow dress" - desc = "A flirty, little yellow dress." - icon_state = "dress_yellow" - item_color = "dress_yellow" - -/obj/item/clothing/under/dress/dress_saloon - name = "saloon girl dress" - desc = "A old western inspired gown for the girl who likes to drink." - icon_state = "dress_saloon" - item_color = "dress_saloon" - - -/obj/item/clothing/under/dress/dress_cap - name = "captain dress uniform" - desc = "Feminine fashion for the style concious captain." - icon_state = "dress_cap" - item_color = "dress_cap" - -/obj/item/clothing/under/dress/dress_hop - name = "head of personal dress uniform" - desc = "Feminine fashion for the style concious HoP." - icon_state = "dress_hop" - item_color = "dress_hop" - -/obj/item/clothing/under/dress/dress_hr - name = "human resources director uniform" - desc = "Superior class for the nosy H.R. Director." - icon_state = "huresource" - item_color = "huresource" - -/obj/item/clothing/under/dress/plaid_blue - name = "blue plaid skirt" - desc = "A preppy blue skirt with a white blouse." - icon_state = "plaid_blue" - item_color = "plaid_blue" - -/obj/item/clothing/under/dress/plaid_red - name = "red plaid skirt" - desc = "A preppy red skirt with a white blouse." - icon_state = "plaid_red" - item_color = "plaid_red" - -/obj/item/clothing/under/dress/plaid_purple - name = "blue purple skirt" - desc = "A preppy purple skirt with a white blouse." - icon_state = "plaid_purple" - item_color = "plaid_purple" - -/obj/item/clothing/under/dress/plaid_green - name = "blue purple skirt" - desc = "A preppy greed skirt with a white blouse." - icon_state = "plaid_green" - item_color = "plaid_green" - -//wedding stuff - -/obj/item/clothing/under/wedding/bride_orange - name = "orange wedding dress" - desc = "A big and puffy orange dress." - icon_state = "bride_orange" - item_color = "bride_orange" - flags_inv = HIDESHOES - -/obj/item/clothing/under/wedding/bride_purple - name = "purple wedding dress" - desc = "A big and puffy purple dress." - icon_state = "bride_purple" - item_color = "bride_purple" - flags_inv = HIDESHOES - -/obj/item/clothing/under/wedding/bride_blue - name = "blue wedding dress" - desc = "A big and puffy blue dress." - icon_state = "bride_blue" - item_color = "bride_blue" - flags_inv = HIDESHOES - -/obj/item/clothing/under/wedding/bride_red - name = "red wedding dress" - desc = "A big and puffy red dress." - icon_state = "bride_red" - item_color = "bride_red" - flags_inv = HIDESHOES - -/obj/item/clothing/under/wedding/bride_white - name = "silky wedding dress" - desc = "A white wedding gown made from the finest silk." - icon_state = "bride_white" - item_color = "bride_white" - flags_inv = HIDESHOES - -/obj/item/clothing/under/sundress - name = "sundress" - desc = "Makes you want to frolic in a field of daisies." - icon_state = "sundress" - item_state = "sundress" - item_color = "sundress" - body_parts_covered = UPPER_TORSO|LOWER_TORSO \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm.bak b/code/modules/mob/living/carbon/human/human_attackhand.dm.bak deleted file mode 100644 index 23c008dc..00000000 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm.bak +++ /dev/null @@ -1,227 +0,0 @@ -/mob/living/carbon/human/attack_hand(mob/living/carbon/human/M as mob) - if (istype(loc, /turf) && istype(loc.loc, /area/start)) - M << "No attacking people at spawn, you jackass." - return - - var/datum/organ/external/temp = M:organs_by_name["r_hand"] - if (M.hand) - temp = M:organs_by_name["l_hand"] - if(temp && !temp.is_usable()) - M << "\red You can't use your [temp.display_name]." - return - - ..() - - if((M != src) && check_shields(0, M.name)) - visible_message("\red [M] attempted to touch [src]!") - return 0 - - - if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves)) - var/obj/item/clothing/gloves/G = M.gloves - if(G.cell) - if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien. - if(G.cell.charge >= 2500) - G.cell.use(2500) - visible_message("\red [src] has been touched with the stun gloves by [M]!") - M.attack_log += text("\[[time_stamp()]\] Stungloved [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] Has been stungloved by [M.name] ([M.ckey])") - - msg_admin_attack("[M.name] ([M.ckey]) stungloved [src.name] ([src.ckey]) (JMP)") - - var/armorblock = run_armor_check(M.zone_sel.selecting, "energy") - apply_effects(5,5,0,0,5,0,0,armorblock) - return 1 - else - M << "\red Not enough charge! " - visible_message("\red [src] has been touched with the stun gloves by [M]!") - return - - if(istype(M.gloves , /obj/item/clothing/gloves/boxing/hologlove)) - - var/damage = rand(0, 9) - if(!damage) - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("\red [M] has attempted to punch [src]!") - return 0 - var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) - var/armor_block = run_armor_check(affecting, "melee") - - if(HULK in M.mutations) damage += 5 - - playsound(loc, "punch", 25, 1, -1) - - visible_message("\red [M] has punched [src]!") - - apply_damage(damage, HALLOSS, affecting, armor_block) - if(damage >= 9) - visible_message("\red [M] has weakened [src]!") - apply_effect(4, WEAKEN, armor_block) - - return - else - if(istype(M,/mob/living/carbon)) -// log_debug("No gloves, [M] is truing to infect [src]") - M.spread_disease_to(src, "Contact") - - - switch(M.a_intent) - if("help") - if(health >= config.health_threshold_crit) - help_shake_act(M) - return 1 -// if(M.health < -75) return 0 - - if((M.head && (M.head.flags & HEADCOVERSMOUTH)) || (M.wear_mask && (M.wear_mask.flags & MASKCOVERSMOUTH))) - M << "\blue Remove your mask!" - return 0 - if((head && (head.flags & HEADCOVERSMOUTH)) || (wear_mask && (wear_mask.flags & MASKCOVERSMOUTH))) - M << "\blue Remove his mask!" - return 0 - - var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human() - O.source = M - O.target = src - O.s_loc = M.loc - O.t_loc = loc - O.place = "CPR" - requests += O - spawn(0) - O.process() - return 1 - - if("grab") - if(M == src || anchored) - return 0 - if(w_uniform) - w_uniform.add_fingerprint(M) - - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src) - if(buckled) - M << "You cannot grab [src], \he is buckled in!" - if(!G) //the grab will delete itself in New if affecting is anchored - return - M.put_in_active_hand(G) - grabbed_by += G - G.synch() - LAssailant = M - - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has grabbed [src] passively!") - return 1 - - if("hurt") - - M.attack_log += text("\[[time_stamp()]\] [M.species.attack_verb]ed [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] Has been [M.species.attack_verb]ed by [M.name] ([M.ckey])") - log_attack("[M.name] ([M.ckey]) [M.species.attack_verb]ed [src.name] ([src.ckey])") - - var/damage = rand(0, 5)//BS12 EDIT - if(!damage) - if(M.species.attack_verb == "punch") - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - else - playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) - - visible_message("\red [M] has attempted to [M.species.attack_verb] [src]!") - return 0 - - - var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) - var/armor_block = run_armor_check(affecting, "melee") - - if(HULK in M.mutations) damage += 5 - - - if(M.species.attack_verb == "punch") - playsound(loc, "punch", 25, 1, -1) - else - playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) - - visible_message("\red [M] has [M.species.attack_verb]ed [src]!") - //Rearranged, so claws don't increase weaken chance. - if(damage >= 5 && prob(50)) - visible_message("\red [M] has weakened [src]!") - apply_effect(2, WEAKEN, armor_block) - - if(M.species.punch_damage) - damage += M.species.punch_damage - apply_damage(damage, BRUTE, affecting, armor_block) - - - if("disarm") - M.attack_log += text("\[[time_stamp()]\] Disarmed [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] Has been disarmed by [M.name] ([M.ckey])") - - log_attack("[M.name] ([M.ckey]) disarmed [src.name] ([src.ckey])") - - if(w_uniform) - w_uniform.add_fingerprint(M) - var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) - - if (istype(r_hand,/obj/item/weapon/gun) || istype(l_hand,/obj/item/weapon/gun)) - var/obj/item/weapon/gun/W = null - var/chance = 0 - - if (istype(l_hand,/obj/item/weapon/gun)) - W = l_hand - chance = hand ? 40 : 20 - - if (istype(r_hand,/obj/item/weapon/gun)) - W = r_hand - chance = !hand ? 40 : 20 - - if (prob(chance)) - visible_message("[src]'s [W] goes off during struggle!") - var/list/turfs = list() - for(var/turf/T in view()) - turfs += T - var/turf/target = pick(turfs) - return W.afterattack(target,src) - - var/randn = rand(1, 100) - if (randn <= 25) - apply_effect(4, WEAKEN, run_armor_check(affecting, "melee")) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("\red [M] has pushed [src]!") - return - - var/talked = 0 // BubbleWrap - - if(randn <= 60) - //BubbleWrap: Disarming breaks a pull - if(pulling) - visible_message("\red [M] has broken [src]'s grip on [pulling]!") - talked = 1 - stop_pulling() - - //BubbleWrap: Disarming also breaks a grab - this will also stop someone being choked, won't it? - if(istype(l_hand, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/lgrab = l_hand - if(lgrab.affecting) - visible_message("\red [M] has broken [src]'s grip on [lgrab.affecting]!") - talked = 1 - spawn(1) - del(lgrab) - if(istype(r_hand, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/rgrab = r_hand - if(rgrab.affecting) - visible_message("\red [M] has broken [src]'s grip on [rgrab.affecting]!") - talked = 1 - spawn(1) - del(rgrab) - //End BubbleWrap - - if(!talked) //BubbleWrap - drop_item() - visible_message("\red [M] has disarmed [src]!") - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - return - - - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("\red [M] attempted to disarm [src]!") - return - -/mob/living/carbon/human/proc/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, inrange, params) - return \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents.dm.bak b/code/modules/reagents/Chemistry-Reagents.dm.bak deleted file mode 100644 index 1ce323df..00000000 --- a/code/modules/reagents/Chemistry-Reagents.dm.bak +++ /dev/null @@ -1,3740 +0,0 @@ -#define SOLID 1 -#define LIQUID 2 -#define GAS 3 -#define FOOD_METABOLISM 0.4 -#define REAGENTS_OVERDOSE 30 -#define REM REAGENTS_EFFECT_MULTIPLIER - -//Some on_mob_life() procs check for alien races. -#define IS_DIONA 1 -#define IS_VOX 2 - -//The reaction procs must ALWAYS set src = null, this detaches the proc from the object (the reagent) -//so that it can continue working when the reagent is deleted while the proc is still active. - - -datum - reagent - var/name = "Reagent" - var/id = "reagent" - var/description = "" - var/datum/reagents/holder = null - var/reagent_state = SOLID - var/list/data = null - var/volume = 0 - var/nutriment_factor = 0 - var/custom_metabolism = REAGENTS_METABOLISM //Default 0.2 - var/overdose = 0 - var/overdose_dam = 1 - //var/list/viruses = list() - var/color = "#000000" // rgb: 0, 0, 0 (does not support alpha channels - yet!) - - proc - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //By default we have a chance to transfer some - if(!istype(M, /mob/living)) return 0 - var/datum/reagent/self = src - src = null //of the reagent to the mob on TOUCHING it. - - if(!istype(self.holder.my_atom, /obj/effect/effect/smoke/chem)) - // If the chemicals are in a smoke cloud, do not try to let the chemicals "penetrate" into the mob's system (balance station 13) -- Doohl - - if(method == TOUCH) - - var/chance = 1 - var/block = 0 - - for(var/obj/item/clothing/C in M.get_equipped_items()) - if(C.permeability_coefficient < chance) chance = C.permeability_coefficient - if(istype(C, /obj/item/clothing/suit/bio_suit)) - // bio suits are just about completely fool-proof - Doohl - // kind of a hacky way of making bio suits more resistant to chemicals but w/e - if(prob(75)) - block = 1 - - if(istype(C, /obj/item/clothing/head/bio_hood)) - if(prob(75)) - block = 1 - - chance = chance * 100 - - if(prob(chance) && !block) - if(M.reagents) - M.reagents.add_reagent(self.id,self.volume/2) - return 1 - - reaction_obj(var/obj/O, var/volume) //By default we transfer a small part of the reagent to the object - src = null //if it can hold reagents. nope! - //if(O.reagents) - // O.reagents.add_reagent(id,volume/3) - return - - reaction_turf(var/turf/T, var/volume) - src = null - return - - on_mob_life(var/mob/living/M as mob, var/alien) - if(!istype(M, /mob/living)) - return //Noticed runtime errors from pacid trying to damage ghosts, this should fix. --NEO - if( (overdose > 0) && (volume >= overdose))//Overdosing, wooo - M.adjustToxLoss(overdose_dam) - holder.remove_reagent(src.id, custom_metabolism) //By default it slowly disappears. - return - - on_move(var/mob/M) - return - - // Called after add_reagents creates a new reagent. - on_new(var/data) - return - - // Called when two reagents of the same are mixing. - on_merge(var/data) - return - - on_update(var/atom/A) - return - - - - blood - data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null, "antibodies" = null) - name = "Blood" - id = "blood" - reagent_state = LIQUID - color = "#C80000" // rgb: 200, 0, 0 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - var/datum/reagent/blood/self = src - src = null - if(self.data && self.data["viruses"]) - for(var/datum/disease/D in self.data["viruses"]) - //var/datum/disease/virus = new D.type(0, D, 1) - // We don't spread. - if(D.spread_type == SPECIAL || D.spread_type == NON_CONTAGIOUS) continue - - if(method == TOUCH) - M.contract_disease(D) - else //injected - M.contract_disease(D, 1, 0) - if(self.data && self.data["virus2"] && istype(M, /mob/living/carbon))//infecting... - if(method == TOUCH) - infect_virus2(M,self.data["virus2"]) - else - infect_virus2(M,self.data["virus2"],1) //injected, force infection! - if(self.data && self.data["antibodies"] && istype(M, /mob/living/carbon))//... and curing - var/mob/living/carbon/C = M - C.antibodies |= self.data["antibodies"] - - - - - reaction_turf(var/turf/simulated/T, var/volume)//splash the blood all over the place - if(!istype(T)) return - var/datum/reagent/blood/self = src - src = null - if(!(volume >= 3)) return - //var/datum/disease/D = self.data["virus"] - if(!self.data["donor"] || istype(self.data["donor"], /mob/living/carbon/human)) - var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T //find some blood here - if(!blood_prop) //first blood! - blood_prop = new(T) - blood_prop.blood_DNA[self.data["blood_DNA"]] = self.data["blood_type"] - - for(var/datum/disease/D in self.data["viruses"]) - var/datum/disease/newVirus = D.Copy(1) - blood_prop.viruses += newVirus - newVirus.holder = blood_prop - - - else if(istype(self.data["donor"], /mob/living/carbon/monkey)) - var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T - if(!blood_prop) - blood_prop = new(T) - blood_prop.blood_DNA["Non-Human DNA"] = "A+" - for(var/datum/disease/D in self.data["viruses"]) - var/datum/disease/newVirus = D.Copy(1) - blood_prop.viruses += newVirus - newVirus.holder = blood_prop - - else if(istype(self.data["donor"], /mob/living/carbon/alien)) - var/obj/effect/decal/cleanable/blood/xeno/blood_prop = locate() in T - if(!blood_prop) - blood_prop = new(T) - blood_prop.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*" - for(var/datum/disease/D in self.data["viruses"]) - var/datum/disease/newVirus = D.Copy(1) - blood_prop.viruses += newVirus - newVirus.holder = blood_prop - return - -/* Must check the transfering of reagents and their data first. They all can point to one disease datum. - - Del() - if(src.data["virus"]) - var/datum/disease/D = src.data["virus"] - D.cure(0) - ..() -*/ - vaccine - //data must contain virus type - name = "Vaccine" - id = "vaccine" - reagent_state = LIQUID - color = "#C81040" // rgb: 200, 16, 64 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - var/datum/reagent/vaccine/self = src - src = null - if(self.data&&method == INGEST) - for(var/datum/disease/D in M.viruses) - if(istype(D, /datum/disease/advance)) - var/datum/disease/advance/A = D - if(A.GetDiseaseID() == self.data) - D.cure() - else - if(D.type == self.data) - D.cure() - - M.resistances += self.data - return - - - water - name = "Water" - id = "water" - description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." - reagent_state = LIQUID - color = "#0064C8" // rgb: 0, 100, 200 - custom_metabolism = 0.01 - - reaction_turf(var/turf/simulated/T, var/volume) - if (!istype(T)) return - src = null - if(volume >= 3) - if(T.wet >= 1) return - T.wet = 1 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor") - T.overlays += T.wet_overlay - - spawn(800) - if (!istype(T)) return - if(T.wet >= 2) return - T.wet = 0 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - - for(var/mob/living/carbon/slime/M in T) - M.adjustToxLoss(rand(15,20)) - - var/hotspot = (locate(/obj/fire) in T) - if(hotspot && !istype(T, /turf/space)) - var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) - lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) - lowertemp.react() - T.assume_air(lowertemp) - del(hotspot) - return - reaction_obj(var/obj/O, var/volume) - src = null - var/turf/T = get_turf(O) - var/hotspot = (locate(/obj/fire) in T) - if(hotspot && !istype(T, /turf/space)) - var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) - lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) - lowertemp.react() - T.assume_air(lowertemp) - del(hotspot) - if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube)) - var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O - if(!cube.wrapped) - cube.Expand() - return - - water/holywater - name = "Holy Water" - id = "holywater" - description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality." - color = "#E0E8EF" // rgb: 224, 232, 239 - - on_mob_life(var/mob/living/M as mob) - if(ishuman(M)) - if((M.mind in ticker.mode.cult) && prob(10)) - M << "\blue A cooling sensation from inside you brings you an untold calmness." - ticker.mode.remove_cultist(M.mind) - for(var/mob/O in viewers(M, null)) - O.show_message(text("\blue []'s eyes blink and become clearer.", M), 1) // So observers know it worked. - holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls. - return - - lube - name = "Space Lube" - id = "lube" - description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." - reagent_state = LIQUID - color = "#009CA8" // rgb: 0, 156, 168 - overdose = REAGENTS_OVERDOSE - - reaction_turf(var/turf/simulated/T, var/volume) - if (!istype(T)) return - src = null - if(volume >= 1) - if(T.wet >= 2) return - T.wet = 2 - spawn(800) - if (!istype(T)) return - T.wet = 0 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - return - - plasticide - name = "Plasticide" - id = "plasticide" - description = "Liquid plastic, do not eat." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - custom_metabolism = 0.01 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - // Toxins are really weak, but without being treated, last very long. - M.adjustToxLoss(0.2) - ..() - return - - slimetoxin - name = "Mutation Toxin" - id = "mutationtoxin" - description = "A corruptive toxin produced by slimes." - reagent_state = LIQUID - color = "#13BC5E" // rgb: 19, 188, 94 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(ishuman(M)) - var/mob/living/carbon/human/human = M - if(human.dna.mutantrace == null) - M << "\red Your flesh rapidly mutates!" - human.dna.mutantrace = "slime" - human.update_mutantrace() - ..() - return - - aslimetoxin - name = "Advanced Mutation Toxin" - id = "amutationtoxin" - description = "An advanced corruptive toxin produced by slimes." - reagent_state = LIQUID - color = "#13BC5E" // rgb: 19, 188, 94 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(istype(M, /mob/living/carbon) && M.stat != DEAD) - M << "\red Your flesh rapidly mutates!" - if(M.monkeyizing) return - M.monkeyizing = 1 - M.canmove = 0 - M.icon = null - M.overlays.Cut() - M.invisibility = 101 - for(var/obj/item/W in M) - if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something - del(W) - continue - W.layer = initial(W.layer) - W.loc = M.loc - W.dropped(M) - var/mob/living/carbon/slime/new_mob = new /mob/living/carbon/slime(M.loc) - new_mob.a_intent = "hurt" - new_mob.universal_speak = 1 - if(M.mind) - M.mind.transfer_to(new_mob) - else - new_mob.key = M.key - del(M) - ..() - return - - srejuvenate - name = "Soporific Rejuvenant" - id = "stoxin2" - description = "Put people to sleep, and heals them." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - data++ - if(M.losebreath >= 10) - M.losebreath = max(10, M.losebreath-10) - holder.remove_reagent(src.id, 0.2) - switch(data) - if(1 to 15) - M.eye_blurry = max(M.eye_blurry, 10) - if(15 to 25) - M.drowsyness = max(M.drowsyness, 20) - if(25 to INFINITY) - M.sleeping += 1 - M.adjustOxyLoss(-M.getOxyLoss()) - M.SetWeakened(0) - M.SetStunned(0) - M.SetParalysis(0) - M.dizziness = 0 - M.drowsyness = 0 - M.stuttering = 0 - M.confused = 0 - M.jitteriness = 0 - ..() - return - - inaprovaline - name = "Inaprovaline" - id = "inaprovaline" - description = "Inaprovaline is a synaptic stimulant and cardiostimulant. Commonly used to stabilize patients." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE*2 - - on_mob_life(var/mob/living/M as mob, var/alien) - if(!M) M = holder.my_atom - - if(alien && alien == IS_VOX) - M.adjustToxLoss(REAGENTS_METABOLISM) - else - if(M.losebreath >= 10) - M.losebreath = max(10, M.losebreath-5) - - holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM) - return - - space_drugs - name = "Space drugs" - id = "space_drugs" - description = "An illegal chemical compound used as drug." - reagent_state = LIQUID - color = "#60A584" // rgb: 96, 165, 132 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.druggy = max(M.druggy, 15) - if(isturf(M.loc) && !istype(M.loc, /turf/space)) - if(M.canmove && !M.restrained()) - if(prob(10)) step(M, pick(cardinal)) - if(prob(7)) M.emote(pick("twitch","drool","moan","giggle")) - holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM) - return - - serotrotium - name = "Serotrotium" - id = "serotrotium" - description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." - reagent_state = LIQUID - color = "#202040" // rgb: 20, 20, 40 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(ishuman(M)) - if(prob(7)) M.emote(pick("twitch","drool","moan","gasp")) - holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM) - return - -/* silicate - name = "Silicate" - id = "silicate" - description = "A compound that can be used to reinforce glass." - reagent_state = LIQUID - color = "#C7FFFF" // rgb: 199, 255, 255 - - reaction_obj(var/obj/O, var/volume) - src = null - if(istype(O,/obj/structure/window)) - if(O:silicate <= 200) - - O:silicate += volume - O:health += volume * 3 - - if(!O:silicateIcon) - var/icon/I = icon(O.icon,O.icon_state,O.dir) - - var/r = (volume / 100) + 1 - var/g = (volume / 70) + 1 - var/b = (volume / 50) + 1 - I.SetIntensity(r,g,b) - O.icon = I - O:silicateIcon = I - else - var/icon/I = O:silicateIcon - - var/r = (volume / 100) + 1 - var/g = (volume / 70) + 1 - var/b = (volume / 50) + 1 - I.SetIntensity(r,g,b) - O.icon = I - O:silicateIcon = I - - return*/ - - oxygen - name = "Oxygen" - id = "oxygen" - description = "A colorless, odorless gas." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - - custom_metabolism = 0.01 - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2) return - if(alien && alien == IS_VOX) - M.adjustToxLoss(REAGENTS_METABOLISM) - holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears. - return - ..() - - copper - name = "Copper" - id = "copper" - description = "A highly ductile metal." - color = "#6E3B08" // rgb: 110, 59, 8 - - custom_metabolism = 0.01 - - nitrogen - name = "Nitrogen" - id = "nitrogen" - description = "A colorless, odorless, tasteless gas." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - - custom_metabolism = 0.01 - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2) return - if(alien && alien == IS_VOX) - M.adjustOxyLoss(-2*REM) - holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears. - return - ..() - - hydrogen - name = "Hydrogen" - id = "hydrogen" - description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - - custom_metabolism = 0.01 - - potassium - name = "Potassium" - id = "potassium" - description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." - reagent_state = SOLID - color = "#A0A0A0" // rgb: 160, 160, 160 - - custom_metabolism = 0.01 - - mercury - name = "Mercury" - id = "mercury" - description = "A chemical element." - reagent_state = LIQUID - color = "#484848" // rgb: 72, 72, 72 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.canmove && !M.restrained() && istype(M.loc, /turf/space)) - step(M, pick(cardinal)) - if(prob(5)) M.emote(pick("twitch","drool","moan")) - M.adjustBrainLoss(2) - ..() - return - - sulfur - name = "Sulfur" - id = "sulfur" - description = "A chemical element with a pungent smell." - reagent_state = SOLID - color = "#BF8C00" // rgb: 191, 140, 0 - - custom_metabolism = 0.01 - - carbon - name = "Carbon" - id = "carbon" - description = "A chemical element, the builing block of life." - reagent_state = SOLID - color = "#1C1300" // rgb: 30, 20, 0 - - custom_metabolism = 0.01 - - reaction_turf(var/turf/T, var/volume) - src = null - if(!istype(T, /turf/space)) - new /obj/effect/decal/cleanable/dirt(T) - - chlorine - name = "Chlorine" - id = "chlorine" - description = "A chemical element with a characteristic odour." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.take_organ_damage(1*REM, 0) - ..() - return - - fluorine - name = "Fluorine" - id = "fluorine" - description = "A highly-reactive chemical element." - reagent_state = GAS - color = "#808080" // rgb: 128, 128, 128 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1*REM) - ..() - return - - sodium - name = "Sodium" - id = "sodium" - description = "A chemical element, readily reacts with water." - reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 - - custom_metabolism = 0.01 - - phosphorus - name = "Phosphorus" - id = "phosphorus" - description = "A chemical element, the backbone of biological energy carriers." - reagent_state = SOLID - color = "#832828" // rgb: 131, 40, 40 - - custom_metabolism = 0.01 - - lithium - name = "Lithium" - id = "lithium" - description = "A chemical element, used as antidepressant." - reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.canmove && !M.restrained() && istype(M.loc, /turf/space)) - step(M, pick(cardinal)) - if(prob(5)) M.emote(pick("twitch","drool","moan")) - ..() - return - - sugar - name = "Sugar" - id = "sugar" - description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste." - reagent_state = SOLID - color = "#FFFFFF" // rgb: 255, 255, 255 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += 1*REM - ..() - return - - - glycerol - name = "Glycerol" - id = "glycerol" - description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." - reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 - - custom_metabolism = 0.01 - - nitroglycerin - name = "Nitroglycerin" - id = "nitroglycerin" - description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." - reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 - - custom_metabolism = 0.01 - - radium - name = "Radium" - id = "radium" - description = "Radium is an alkaline earth metal. It is extremely radioactive." - reagent_state = SOLID - color = "#C7C7C7" // rgb: 199,199,199 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.apply_effect(2*REM,IRRADIATE,0) - // radium may increase your chances to cure a disease - if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs - var/mob/living/carbon/C = M - if(C.virus2.len) - for (var/ID in C.virus2) - var/datum/disease2/disease/V = C.virus2[ID] - if(prob(5)) - if(prob(50)) - M.radiation += 50 // curing it that way may kill you instead - var/mob/living/carbon/human/H - if(istype(C,/mob/living/carbon/human)) - H = C - if(!H || (H.species && !(H.species.flags & RAD_ABSORB))) M.adjustToxLoss(100) - M:antibodies |= V.antigen - ..() - return - - reaction_turf(var/turf/T, var/volume) - src = null - if(volume >= 3) - if(!istype(T, /turf/space)) - new /obj/effect/decal/cleanable/greenglow(T) - return - - - ryetalyn - name = "Ryetalyn" - id = "ryetalyn" - description = "Ryetalyn can cure all genetic abnomalities via a catalytic process." - reagent_state = SOLID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - - var/needs_update = M.mutations.len > 0 - - M.mutations = list() - M.disabilities = 0 - M.sdisabilities = 0 - - // Might need to update appearance for hulk etc. - if(needs_update && ishuman(M)) - var/mob/living/carbon/human/H = M - H.update_mutations() - - ..() - return - - thermite - name = "Thermite" - id = "thermite" - description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." - reagent_state = SOLID - color = "#673910" // rgb: 103, 57, 16 - - reaction_turf(var/turf/T, var/volume) - src = null - if(volume >= 5) - if(istype(T, /turf/simulated/wall)) - T:thermite = 1 - T.overlays.Cut() - T.overlays = image('icons/effects/effects.dmi',icon_state = "thermite") - return - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustFireLoss(1) - ..() - return - - paracetamol - name = "Paracetamol" - id = "paracetamol" - description = "Most probably know this as Tylenol, but this chemical is a mild, simple painkiller." - reagent_state = LIQUID - color = "#C855DC" - overdose = 60 - - on_mob_life(var/mob/living/M as mob) - if (volume > overdose) - M.hallucination = max(M.hallucination, 2) - - tramadol - name = "Tramadol" - id = "tramadol" - description = "A simple, yet effective painkiller." - reagent_state = LIQUID - color = "#C8A5DC" - overdose = 30 - - on_mob_life(var/mob/living/M as mob) - if (volume > overdose) - M.hallucination = max(M.hallucination, 2) - - oxycodone - name = "Oxycodone" - id = "oxycodone" - description = "An effective and very addictive painkiller." - reagent_state = LIQUID - color = "#C805DC" - overdose = 20 - - on_mob_life(var/mob/living/M as mob) - if (volume > overdose) - M.druggy = max(M.druggy, 10) - M.hallucination = max(M.hallucination, 3) - - - virus_food - name = "Virus Food" - id = "virusfood" - description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce." - reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM - color = "#899613" // rgb: 137, 150, 19 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.nutrition += nutriment_factor*REM - ..() - return - - sterilizine - name = "Sterilizine" - id = "sterilizine" - description = "Sterilizes wounds in preparation for surgery." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - /* reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - src = null - if (method==TOUCH) - if(istype(M, /mob/living/carbon/human)) - if(M.health >= -100 && M.health <= 0) - M.crit_op_stage = 0.0 - if (method==INGEST) - usr << "Well, that was stupid." - M.adjustToxLoss(3) - return - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.radiation += 3 - ..() - return - */ - iron - name = "Iron" - id = "iron" - description = "Pure iron is a metal." - reagent_state = SOLID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - gold - name = "Gold" - id = "gold" - description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." - reagent_state = SOLID - color = "#F7C430" // rgb: 247, 196, 48 - - silver - name = "Silver" - id = "silver" - description = "A soft, white, lustrous transition metal, it has the highest electrical conductivity of any element and the highest thermal conductivity of any metal." - reagent_state = SOLID - color = "#D0D0D0" // rgb: 208, 208, 208 - - uranium - name ="Uranium" - id = "uranium" - description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." - reagent_state = SOLID - color = "#B8B8C0" // rgb: 184, 184, 192 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.apply_effect(1,IRRADIATE,0) - ..() - return - - reaction_turf(var/turf/T, var/volume) - src = null - if(volume >= 3) - if(!istype(T, /turf/space)) - new /obj/effect/decal/cleanable/greenglow(T) - - aluminum - name = "Aluminum" - id = "aluminum" - description = "A silvery white and ductile member of the boron group of chemical elements." - reagent_state = SOLID - color = "#A8A8A8" // rgb: 168, 168, 168 - - silicon - name = "Silicon" - id = "silicon" - description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." - reagent_state = SOLID - color = "#A8A8A8" // rgb: 168, 168, 168 - - fuel - name = "Welding fuel" - id = "fuel" - description = "Required for welders. Flamable." - reagent_state = LIQUID - color = "#660000" // rgb: 102, 0, 0 - overdose = REAGENTS_OVERDOSE - - - reaction_obj(var/obj/O, var/volume) - var/turf/the_turf = get_turf(O) - if(!the_turf) - return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO - new /obj/effect/decal/cleanable/liquid_fuel(the_turf, volume) - reaction_turf(var/turf/T, var/volume) - new /obj/effect/decal/cleanable/liquid_fuel(T, volume) - return - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1) - ..() - return - - space_cleaner - name = "Space cleaner" - id = "cleaner" - description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" - reagent_state = LIQUID - color = "#A5F0EE" // rgb: 165, 240, 238 - overdose = REAGENTS_OVERDOSE - - reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/effect/decal/cleanable)) - del(O) - else - if(O) - O.clean_blood() - reaction_turf(var/turf/T, var/volume) - if(volume >= 1) - T.overlays.Cut() - T.clean_blood() - for(var/obj/effect/decal/cleanable/C in src) - del(C) - - for(var/mob/living/carbon/slime/M in T) - M.adjustToxLoss(rand(5,10)) - reaction_turf(var/turf/simulated/S, var/volume) - if(volume >= 1) - S.dirt = 0 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(C.r_hand) - C.r_hand.clean_blood() - if(C.l_hand) - C.l_hand.clean_blood() - if(C.wear_mask) - if(C.wear_mask.clean_blood()) - C.update_inv_wear_mask(0) - if(ishuman(M)) - var/mob/living/carbon/human/H = C - if(H.head) - if(H.head.clean_blood()) - H.update_inv_head(0) - if(H.wear_suit) - if(H.wear_suit.clean_blood()) - H.update_inv_wear_suit(0) - else if(H.w_uniform) - if(H.w_uniform.clean_blood()) - H.update_inv_w_uniform(0) - if(H.shoes) - if(H.shoes.clean_blood()) - H.update_inv_shoes(0) - M.clean_blood() - - leporazine - name = "Leporazine" - id = "leporazine" - description = "Leporazine can be use to stabilize an individuals body temperature." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.bodytemperature > 310) - M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT)) - else if(M.bodytemperature < 311) - M.bodytemperature = min(310, M.bodytemperature + (40 * TEMPERATURE_DAMAGE_COEFFICIENT)) - ..() - return - - cryptobiolin - name = "Cryptobiolin" - id = "cryptobiolin" - description = "Cryptobiolin causes confusion and dizzyness." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.make_dizzy(1) - if(!M.confused) M.confused = 1 - M.confused = max(M.confused, 20) - holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM) - ..() - return - - - kelotane - name = "Kelotane" - id = "kelotane" - description = "Kelotane is a drug used to treat burns." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(M.stat == 2.0) - return - if(!M) M = holder.my_atom - //This needs a diona check but if one is added they won't be able to heal burn damage at all. - M.heal_organ_damage(0,2*REM) - ..() - return - - dermaline - name = "Dermaline" - id = "dermaline" - description = "Dermaline is the next step in burn medication. Works twice as good as kelotane and enables the body to restore even the direst heat-damaged tissue." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE/2 - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2.0) //THE GUY IS **DEAD**! BEREFT OF ALL LIFE HE RESTS IN PEACE etc etc. He does NOT metabolise shit anymore, god DAMN - return - if(!M) M = holder.my_atom - if(!alien || alien != IS_DIONA) - M.heal_organ_damage(0,3*REM) - ..() - return - - dexalin - name = "Dexalin" - id = "dexalin" - description = "Dexalin is used in the treatment of oxygen deprivation." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2.0) - return //See above, down and around. --Agouri - if(!M) M = holder.my_atom - - if(alien && alien == IS_VOX) - M.adjustToxLoss(2*REM) - else if(!alien || alien != IS_DIONA) - M.adjustOxyLoss(-2*REM) - - if(holder.has_reagent("lexorin")) - holder.remove_reagent("lexorin", 2*REM) - ..() - return - - dexalinp - name = "Dexalin Plus" - id = "dexalinp" - description = "Dexalin Plus is used in the treatment of oxygen deprivation. It is highly effective." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE/2 - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2.0) - return - if(!M) M = holder.my_atom - - if(alien && alien == IS_VOX) - M.adjustOxyLoss() - else if(!alien || alien != IS_DIONA) - M.adjustOxyLoss(-M.getOxyLoss()) - - if(holder.has_reagent("lexorin")) - holder.remove_reagent("lexorin", 2*REM) - ..() - return - - tricordrazine - name = "Tricordrazine" - id = "tricordrazine" - description = "Tricordrazine is a highly potent stimulant, originally derived from cordrazine. Can be used to treat a wide range of injuries." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2.0) - return - if(!M) M = holder.my_atom - if(!alien || alien != IS_DIONA) - if(M.getOxyLoss()) M.adjustOxyLoss(-1*REM) - if(M.getBruteLoss() && prob(80)) M.heal_organ_damage(1*REM,0) - if(M.getFireLoss() && prob(80)) M.heal_organ_damage(0,1*REM) - if(M.getToxLoss() && prob(80)) M.adjustToxLoss(-1*REM) - ..() - return - - anti_toxin - name = "Anti-Toxin (Dylovene)" - id = "anti_toxin" - description = "Dylovene is a broad-spectrum antitoxin." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob, var/alien) - if(!M) M = holder.my_atom - if(!alien || alien != IS_DIONA) - M.reagents.remove_all_type(/datum/reagent/toxin, 1*REM, 0, 1) - M.drowsyness = max(M.drowsyness-2*REM, 0) - M.hallucination = max(0, M.hallucination - 5*REM) - M.adjustToxLoss(-2*REM) - ..() - return - - adminordrazine //An OP chemical for admins - name = "Adminordrazine" - id = "adminordrazine" - description = "It's magic. We don't have to explain it." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/carbon/M as mob) - if(!M) M = holder.my_atom ///This can even heal dead people. - M.reagents.remove_all_type(/datum/reagent/toxin, 5*REM, 0, 1) - M.setCloneLoss(0) - M.setOxyLoss(0) - M.radiation = 0 - M.heal_organ_damage(5,5) - M.adjustToxLoss(-5) - M.hallucination = 0 - M.setBrainLoss(0) - M.disabilities = 0 - M.sdisabilities = 0 - M.eye_blurry = 0 - M.eye_blind = 0 - M.SetWeakened(0) - M.SetStunned(0) - M.SetParalysis(0) - M.silent = 0 - M.dizziness = 0 - M.drowsyness = 0 - M.stuttering = 0 - M.confused = 0 - M.sleeping = 0 - M.jitteriness = 0 - for(var/datum/disease/D in M.viruses) - D.spread = "Remissive" - D.stage-- - if(D.stage < 1) - D.cure() - ..() - return - - synaptizine - name = "Synaptizine" - id = "synaptizine" - description = "Synaptizine is used to treat various diseases." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - custom_metabolism = 0.01 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.drowsyness = max(M.drowsyness-5, 0) - M.AdjustParalysis(-1) - M.AdjustStunned(-1) - M.AdjustWeakened(-1) - if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 5) - M.hallucination = max(0, M.hallucination - 10) - if(prob(60)) M.adjustToxLoss(1) - ..() - return - - impedrezene - name = "Impedrezene" - id = "impedrezene" - description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.jitteriness = max(M.jitteriness-5,0) - if(prob(80)) M.adjustBrainLoss(1*REM) - if(prob(50)) M.drowsyness = max(M.drowsyness, 3) - if(prob(10)) M.emote("drool") - ..() - return - - hyronalin - name = "Hyronalin" - id = "hyronalin" - description = "Hyronalin is a medicinal drug used to counter the effect of radiation poisoning." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - custom_metabolism = 0.05 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.radiation = max(M.radiation-3*REM,0) - ..() - return - - arithrazine - name = "Arithrazine" - id = "arithrazine" - description = "Arithrazine is an unstable medication used for the most extreme cases of radiation poisoning." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - custom_metabolism = 0.05 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(M.stat == 2.0) - return //See above, down and around. --Agouri - if(!M) M = holder.my_atom - M.radiation = max(M.radiation-7*REM,0) - M.adjustToxLoss(-1*REM) - if(prob(15)) - M.take_organ_damage(1, 0) - ..() - return - - alkysine - name = "Alkysine" - id = "alkysine" - description = "Alkysine is a drug used to lessen the damage to neurological tissue after a catastrophic injury. Can heal brain tissue." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - custom_metabolism = 0.05 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustBrainLoss(-3*REM) - ..() - return - - imidazoline - name = "Imidazoline" - id = "imidazoline" - description = "Heals eye damage" - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.eye_blurry = max(M.eye_blurry-5 , 0) - M.eye_blind = max(M.eye_blind-5 , 0) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/datum/organ/internal/eyes/E = H.internal_organs["eyes"] - if(istype(E)) - if(E.damage > 0) - E.damage -= 1 - ..() - return - - peridaxon - name = "Peridaxon" - id = "peridaxon" - description = "Used to encourage recovery of internal organs and nervous systems. Medicate cautiously." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = 10 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/datum/organ/external/chest/C = H.get_organ("chest") - for(var/datum/organ/internal/I in C.internal_organs) - if(I.damage > 0) - I.damage -= 0.20 - ..() - return - - bicaridine - name = "Bicaridine" - id = "bicaridine" - description = "Bicaridine is an analgesic medication and can be used to treat blunt trauma." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob, var/alien) - if(M.stat == 2.0) - return - if(!M) M = holder.my_atom - if(alien != IS_DIONA) - M.heal_organ_damage(2*REM,0) - ..() - return - - hyperzine - name = "Hyperzine" - id = "hyperzine" - description = "Hyperzine is a highly effective, long lasting, muscle stimulant." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - custom_metabolism = 0.03 - overdose = REAGENTS_OVERDOSE/2 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(prob(5)) M.emote(pick("twitch","blink_r","shiver")) - ..() - return - - cryoxadone - name = "Cryoxadone" - id = "cryoxadone" - description = "A chemical mixture with almost magical healing powers. Its main limitation is that the targets body temperature must be under 170K for it to metabolise correctly." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.bodytemperature < 170) - M.adjustCloneLoss(-1) - M.adjustOxyLoss(-1) - M.heal_organ_damage(1,1) - M.adjustToxLoss(-1) - ..() - return - - clonexadone - name = "Clonexadone" - id = "clonexadone" - description = "A liquid compound similar to that used in the cloning process. Can be used to 'finish' the cloning process when used in conjunction with a cryo tube." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(M.bodytemperature < 170) - M.adjustCloneLoss(-3) - M.adjustOxyLoss(-3) - M.heal_organ_damage(3,3) - M.adjustToxLoss(-3) - ..() - return - - rezadone - name = "Rezadone" - id = "rezadone" - description = "A powder derived from fish toxin, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects." - reagent_state = SOLID - color = "#669900" // rgb: 102, 153, 0 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - data++ - switch(data) - if(1 to 15) - M.adjustCloneLoss(-1) - M.heal_organ_damage(1,1) - if(15 to 35) - M.adjustCloneLoss(-2) - M.heal_organ_damage(2,1) - M.status_flags &= ~DISFIGURED - if(35 to INFINITY) - M.adjustToxLoss(1) - M.make_dizzy(5) - M.make_jittery(5) - - ..() - return - - spaceacillin - name = "Spaceacillin" - id = "spaceacillin" - description = "An all-purpose antiviral agent." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - custom_metabolism = 0.01 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - ..() - return - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - holywater - name = "Holy Water" - id = "holywater" - description = "This was once water, but has been altered by higher powers." - reagent_state = LIQUID - color = "#535E66" // rgb: 83, 94, 102 - - nanites - name = "Nanomachines" - id = "nanites" - description = "Microscopic construction robots." - reagent_state = LIQUID - color = "#535E66" // rgb: 83, 94, 102 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - src = null - if( (prob(10) && method==TOUCH) || method==INGEST) - M.contract_disease(new /datum/disease/robotic_transformation(0),1) - - xenomicrobes - name = "Xenomicrobes" - id = "xenomicrobes" - description = "Microbes with an entirely alien cellular structure." - reagent_state = LIQUID - color = "#535E66" // rgb: 83, 94, 102 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - src = null - if( (prob(10) && method==TOUCH) || method==INGEST) - M.contract_disease(new /datum/disease/xeno_transformation(0),1) - - fluorosurfactant//foam precursor - name = "Fluorosurfactant" - id = "fluorosurfactant" - description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." - reagent_state = LIQUID - color = "#9E6B38" // rgb: 158, 107, 56 - - foaming_agent// Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually. - name = "Foaming agent" - id = "foaming_agent" - description = "A agent that yields metallic foam when mixed with light metal and a strong acid." - reagent_state = SOLID - color = "#664B63" // rgb: 102, 75, 99 - - nicotine - name = "Nicotine" - id = "nicotine" - description = "A highly addictive stimulant extracted from the tobacco plant." - reagent_state = LIQUID - color = "#181818" // rgb: 24, 24, 24 - - ammonia - name = "Ammonia" - id = "ammonia" - description = "A caustic substance commonly used in fertilizer or household cleaners." - reagent_state = GAS - color = "#404030" // rgb: 64, 64, 48 - - ultraglue - name = "Ultra Glue" - id = "glue" - description = "An extremely powerful bonding agent." - color = "#FFFFCC" // rgb: 255, 255, 204 - - diethylamine - name = "Diethylamine" - id = "diethylamine" - description = "A secondary amine, mildly corrosive." - reagent_state = LIQUID - color = "#604030" // rgb: 96, 64, 48 - - ethylredoxrazine // FUCK YOU, ALCOHOL - name = "Ethylredoxrazine" - id = "ethylredoxrazine" - description = "A powerful oxidizer that reacts with ethanol." - reagent_state = SOLID - color = "#605048" // rgb: 96, 80, 72 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.dizziness = 0 - M.drowsyness = 0 - M.stuttering = 0 - M.confused = 0 - M.reagents.remove_all_type(/datum/reagent/ethanol, 1*REM, 0, 1) - ..() - return - -//////////////////////////Poison stuff/////////////////////// - - toxin - name = "Toxin" - id = "toxin" - description = "A toxic chemical." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - var/toxpwr = 0.7 // Toxins are really weak, but without being treated, last very long. - custom_metabolism = 0.1 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(toxpwr) - M.adjustToxLoss(toxpwr*REM) - ..() - return - - toxin/amatoxin - name = "Amatoxin" - id = "amatoxin" - description = "A powerful poison derived from certain species of mushroom." - reagent_state = LIQUID - color = "#792300" // rgb: 121, 35, 0 - toxpwr = 1 - - toxin/mutagen - name = "Unstable mutagen" - id = "mutagen" - description = "Might cause unpredictable mutations. Keep away from children." - reagent_state = LIQUID - color = "#13BC5E" // rgb: 19, 188, 94 - toxpwr = 0 - - reaction_mob(var/mob/living/carbon/M, var/method=TOUCH, var/volume) - if(!..()) return - if(!istype(M) || !M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. - src = null - if((method==TOUCH && prob(33)) || method==INGEST) - randmuti(M) - if(prob(98)) randmutb(M) - else randmutg(M) - domutcheck(M, null) - M.UpdateAppearance() - return - on_mob_life(var/mob/living/carbon/M) - if(!istype(M)) return - if(!M) M = holder.my_atom - M.apply_effect(10,IRRADIATE,0) - ..() - return - - toxin/plasma - name = "Plasma" - id = "plasma" - description = "Plasma in its liquid form." - reagent_state = LIQUID - color = "#E71B00" // rgb: 231, 27, 0 - toxpwr = 3 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(holder.has_reagent("inaprovaline")) - holder.remove_reagent("inaprovaline", 2*REM) - ..() - return - reaction_obj(var/obj/O, var/volume) - src = null - /*if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg/slime)) - var/obj/item/weapon/reagent_containers/food/snacks/egg/slime/egg = O - if (egg.grown) - egg.Hatch()*/ - if((!O) || (!volume)) return 0 - var/turf/the_turf = get_turf(O) - var/datum/gas_mixture/napalm = new - var/datum/gas/volatile_fuel/fuel = new - fuel.moles = 5 - napalm.trace_gases += fuel - the_turf.assume_air(napalm) - reaction_turf(var/turf/T, var/volume) - src = null - var/datum/gas_mixture/napalm = new - var/datum/gas/volatile_fuel/fuel = new - fuel.moles = 5 - napalm.trace_gases += fuel - T.assume_air(napalm) - return - - toxin/lexorin - name = "Lexorin" - id = "lexorin" - description = "Lexorin temporarily stops respiration. Causes tissue damage." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - toxpwr = 0 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(M.stat == 2.0) - return - if(!M) M = holder.my_atom - if(prob(33)) - M.take_organ_damage(1*REM, 0) - M.adjustOxyLoss(4) - if(prob(20)) M.emote("gasp") - ..() - return - - toxin/slimejelly - name = "Slime Jelly" - id = "slimejelly" - description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." - reagent_state = LIQUID - color = "#801E28" // rgb: 128, 30, 40 - toxpwr = 0 - - on_mob_life(var/mob/living/M as mob) - if(prob(10)) - M << "\red Your insides are burning!" - M.adjustToxLoss(rand(20,60)*REM) - else if(prob(40)) - M.heal_organ_damage(5*REM,0) - ..() - return - - toxin/cyanide //Fast and Lethal - name = "Cyanide" - id = "cyanide" - description = "A highly toxic chemical." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - toxpwr = 4 - custom_metabolism = 0.4 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustOxyLoss(4*REM) - M.sleeping += 1 - ..() - return - - toxin/destabilizer - name = "Genetic Destabilizer" - id = "destabilizer" - description = "Causes severe damage to genetic data." - reagent_state = LIQUID - toxpwr = 0 - custom_metabolism = 0.1 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustCloneLoss(6) //High but still knocks out slower than mutagen. - ..() - return - - - chefspecial - // Quiet and lethal, needs atleast 4 units in the person before they'll die - name = "Chef's Special" - id = "chefspecial" - description = "An extremely toxic chemical that will surely end in death." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - custom_metabolism = 0.39 - - on_mob_life(var/mob/living/M as mob) - var/random = rand(150,180) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(0 to 5) - ..() - if(data >= random) - if(M.stat != DEAD) - M.death(0) - M.attack_log += "\[[time_stamp()]\]Died a quick and painless death by Chef Excellence's Special Sauce." - data++ - return - - - - toxin/minttoxin - name = "Mint Toxin" - id = "minttoxin" - description = "Useful for dealing with undesirable customers." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - toxpwr = 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if (FAT in M.mutations) - M.gib() - ..() - return - - toxin/carpotoxin - name = "Carpotoxin" - id = "carpotoxin" - description = "A deadly neurotoxin produced by the dreaded space carp." - reagent_state = LIQUID - color = "#003333" // rgb: 0, 51, 51 - toxpwr = 2 - - toxin/zombiepowder - name = "Zombie Powder" - id = "zombiepowder" - description = "A strong neurotoxin that puts the subject into a death-like state." - reagent_state = SOLID - color = "#669900" // rgb: 102, 153, 0 - toxpwr = 0.5 - - on_mob_life(var/mob/living/carbon/M as mob) - if(!M) M = holder.my_atom - M.status_flags |= FAKEDEATH - M.adjustOxyLoss(0.5*REM) - M.Weaken(10) - M.silent = max(M.silent, 10) - M.tod = worldtime2text() - ..() - return - - Del() - if(holder && ismob(holder.my_atom)) - var/mob/M = holder.my_atom - M.status_flags &= ~FAKEDEATH - ..() - - toxin/mindbreaker - name = "Mindbreaker Toxin" - id = "mindbreaker" - description = "A powerful hallucinogen, it can cause fatal effects in users." - reagent_state = LIQUID - color = "#B31008" // rgb: 139, 166, 233 - toxpwr = 0 - custom_metabolism = 0.05 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M) - if(!M) M = holder.my_atom - M.hallucination += 10 - ..() - return - - toxin/plantbgone - name = "Plant-B-Gone" - id = "plantbgone" - description = "A harmful toxic mixture to kill plantlife. Do not ingest!" - reagent_state = LIQUID - color = "#49002E" // rgb: 73, 0, 46 - toxpwr = 1 - - // Clear off wallrot fungi - reaction_turf(var/turf/T, var/volume) - if(istype(T, /turf/simulated/wall)) - var/turf/simulated/wall/W = T - if(W.rotting) - W.rotting = 0 - for(var/obj/effect/E in W) if(E.name == "Wallrot") del E - - for(var/mob/O in viewers(W, null)) - O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1) - - reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/effect/alien/weeds/)) - var/obj/effect/alien/weeds/alien_weeds = O - alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast - alien_weeds.healthcheck() - else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it - del(O) - else if(istype(O,/obj/effect/spacevine)) - if(prob(50)) del(O) //Kills kudzu too. - // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - src = null - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.wear_mask) // If not wearing a mask - C.adjustToxLoss(2) // 4 toxic damage per application, doubled for some reason - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.dna) - if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage - H.adjustToxLoss(50) - - toxin/stoxin - name = "Sleep Toxin" - id = "stoxin" - description = "An effective hypnotic used to treat insomnia." - reagent_state = LIQUID - color = "#E895CC" // rgb: 232, 149, 204 - toxpwr = 0 - custom_metabolism = 0.1 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 5) - if(prob(20)) M.emote("yawn") - if(5 to 10) - M.eye_blurry = max(M.eye_blurry, 10) - if(10 to 15) - if(prob(25)) - M.Weaken(2) - M.drowsyness = max(M.drowsyness, 20) - if(15 to INFINITY) - if(prob(75)) - M.Weaken(20) - M.drowsyness = max(M.drowsyness, 30) - data++ - ..() - return - - toxin/chloralhydrate - name = "Chloral Hydrate" - id = "chloralhydrate" - description = "A powerful sedative." - reagent_state = SOLID - color = "#000067" // rgb: 0, 0, 103 - toxpwr = 1 - custom_metabolism = 0.1 //Default 0.2 - overdose = 15 - overdose_dam = 5 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - data++ - switch(data) - if(1) - M.confused += 2 - M.drowsyness += 2 - if(2 to 199) - M.Weaken(30) - if(200 to INFINITY) - M.sleeping += 1 - ..() - return - - toxin/potassium_chloride - name = "Potassium Chloride" - id = "potassium_chloride" - description = "A delicious salt that stops the heart when injected into cardiac muscle." - reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 - toxpwr = 0 - overdose = 30 - - on_mob_life(var/mob/living/carbon/M as mob) - var/mob/living/carbon/human/H = M - if(H.stat != 1) - if (volume >= overdose) - if(H.losebreath >= 10) - H.losebreath = max(10, H.losebreath-10) - H.adjustOxyLoss(2) - H.Weaken(10) - ..() - return - - toxin/potassium_chlorophoride - name = "Potassium Chlorophoride" - id = "potassium_chlorophoride" - description = "A specific chemical based on Potassium Chloride to stop the heart for surgery. Not safe to eat!" - reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 - toxpwr = 2 - overdose = 20 - - on_mob_life(var/mob/living/carbon/M as mob) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.stat != 1) - if(H.losebreath >= 10) - H.losebreath = max(10, M.losebreath-10) - H.adjustOxyLoss(2) - H.Weaken(10) - ..() - return - - toxin/beer2 //disguised as normal beer for use by emagged brobots - name = "Beer" - id = "beer2" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water. The fermentation appears to be imcomplete." //If the players manage to analyze this, they deserve to know something is wrong. - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - custom_metabolism = 0.15 // Sleep toxins should always be consumed pretty fast - overdose = REAGENTS_OVERDOSE/2 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1) - M.confused += 2 - M.drowsyness += 2 - if(2 to 50) - M.sleeping += 1 - if(51 to INFINITY) - M.sleeping += 1 - M.adjustToxLoss((data - 50)*REM) - data++ - ..() - return - - toxin/acid - name = "Sulphuric acid" - id = "sacid" - description = "A very corrosive mineral acid with the molecular formula H2SO4." - reagent_state = LIQUID - color = "#DB5008" // rgb: 219, 80, 8 - toxpwr = 1 - var/meltprob = 10 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.take_organ_damage(0, 1*REM) - ..() - return - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//magic numbers everywhere - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - - if(H.head) - if(prob(meltprob) && !H.head.unacidable) - H << "Your headgear melts away but protects you from the acid!" - del(H.head) - H.update_inv_head(0) - H.update_hair(0) - else - H << "Your headgear protects you from the acid." - return - - if(H.wear_mask) - if(prob(meltprob) && !H.wear_mask.unacidable) - H << "Your mask melts away but protects you from the acid!" - del (H.wear_mask) - H.update_inv_wear_mask(0) - H.update_hair(0) - else - H << "Your mask protects you from the acid." - return - - if(H.glasses) //Doesn't protect you from the acid but can melt anyways! - if(prob(meltprob) && !H.glasses.unacidable) - H << "Your glasses melts away!" - del (H.glasses) - H.update_inv_glasses(0) - - else if(ismonkey(M)) - var/mob/living/carbon/monkey/MK = M - if(MK.wear_mask) - if(!MK.wear_mask.unacidable) - MK << "Your mask melts away but protects you from the acid!" - del (MK.wear_mask) - MK.update_inv_wear_mask(0) - else - MK << "Your mask protects you from the acid." - return - - if(!M.unacidable) - if(istype(M, /mob/living/carbon/human) && volume >= 10) - var/mob/living/carbon/human/H = M - var/datum/organ/external/affecting = H.get_organ("head") - if(affecting) - if(affecting.take_damage(4*toxpwr, 2*toxpwr)) - H.UpdateDamageIcon() - if(prob(meltprob)) //Applies disfigurement - H.emote("scream") - H.status_flags |= DISFIGURED - else - M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl - else - if(!M.unacidable) - M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) - - reaction_obj(var/obj/O, var/volume) - if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(meltprob * 3)) - if(!O.unacidable) - var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc) - I.desc = "Looks like this was \an [O] some time ago." - for(var/mob/M in viewers(5, O)) - M << "\red \the [O] melts." - del(O) - - toxin/acid/polyacid - name = "Polytrinic acid" - id = "pacid" - description = "Polytrinic acid is a an extremely corrosive chemical substance." - reagent_state = LIQUID - color = "#8E18A9" // rgb: 142, 24, 169 - toxpwr = 2 - meltprob = 30 - -/////////////////////////Food Reagents//////////////////////////// -// Part of the food code. Nutriment is used instead of the old "heal_amt" code. Also is where all the food -// condiments, additives, and such go. - nutriment - name = "Nutriment" - id = "nutriment" - description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." - reagent_state = SOLID - nutriment_factor = 15 * REAGENTS_METABOLISM - color = "#664330" // rgb: 102, 67, 48 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(prob(50)) M.heal_organ_damage(1,0) - M.nutrition += nutriment_factor // For hunger and fatness -/* - // If overeaten - vomit and fall down - // Makes you feel bad but removes reagents and some effect - // from your body - if (M.nutrition > 650) - M.nutrition = rand (250, 400) - M.weakened += rand(2, 10) - M.jitteriness += rand(0, 5) - M.dizziness = max (0, (M.dizziness - rand(0, 15))) - M.druggy = max (0, (M.druggy - rand(0, 15))) - M.adjustToxLoss(rand(-15, -5))) - M.updatehealth() -*/ - ..() - return - - lipozine - name = "Lipozine" // The anti-nutriment. - id = "lipozine" - description = "A chemical compound that causes a powerful fat-burning reaction." - reagent_state = LIQUID - nutriment_factor = 10 * REAGENTS_METABOLISM - color = "#BBEDA4" // rgb: 187, 237, 164 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.nutrition -= nutriment_factor - M.overeatduration = 0 - if(M.nutrition < 0)//Prevent from going into negatives. - M.nutrition = 0 - ..() - return - - soysauce - name = "Soysauce" - id = "soysauce" - description = "A salty sauce made from the soy plant." - reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM - color = "#792300" // rgb: 121, 35, 0 - - ketchup - name = "Ketchup" - id = "ketchup" - description = "Ketchup, catsup, whatever. It's tomato paste." - reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#731008" // rgb: 115, 16, 8 - - capsaicin - name = "Capsaicin Oil" - id = "capsaicin" - description = "This is what makes chilis hot." - reagent_state = LIQUID - color = "#B31008" // rgb: 179, 16, 8 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 15) - M.bodytemperature += 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 5) - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature += rand(5,20) - if(15 to 25) - M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature += rand(10,20) - if(25 to INFINITY) - M.bodytemperature += 15 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature += rand(15,20) - holder.remove_reagent(src.id, FOOD_METABOLISM) - data++ - ..() - return - - condensedcapsaicin - name = "Condensed Capsaicin" - id = "condensedcapsaicin" - description = "A chemical agent used for self-defense and in police work." - reagent_state = LIQUID - color = "#B31008" // rgb: 179, 16, 8 - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/victim = M - var/mouth_covered = 0 - var/eyes_covered = 0 - var/obj/item/safe_thing = null - if( victim.wear_mask ) - if ( victim.wear_mask.flags & MASKCOVERSEYES ) - eyes_covered = 1 - safe_thing = victim.wear_mask - if ( victim.wear_mask.flags & MASKCOVERSMOUTH ) - mouth_covered = 1 - safe_thing = victim.wear_mask - if( victim.head ) - if ( victim.head.flags & MASKCOVERSEYES ) - eyes_covered = 1 - safe_thing = victim.head - if ( victim.head.flags & MASKCOVERSMOUTH ) - mouth_covered = 1 - safe_thing = victim.head - if(victim.glasses) - eyes_covered = 1 - if ( !safe_thing ) - safe_thing = victim.glasses - if ( eyes_covered && mouth_covered ) - victim << "\red Your [safe_thing] protects you from the pepperspray!" - return - else if ( mouth_covered ) // Reduced effects if partially protected - victim << "\red Your [safe_thing] protect you from most of the pepperspray!" - victim.eye_blurry = max(M.eye_blurry, 15) - victim.eye_blind = max(M.eye_blind, 5) - victim.Stun(5) - victim.Weaken(5) - //victim.Paralyse(10) - //victim.drop_item() - return - else if ( eyes_covered ) // Eye cover is better than mouth cover - victim << "\red Your [safe_thing] protects your eyes from the pepperspray!" - victim.emote("scream") - victim.eye_blurry = max(M.eye_blurry, 5) - return - else // Oh dear :D - victim.emote("scream") - victim << "\red You're sprayed directly in the eyes with pepperspray!" - victim.eye_blurry = max(M.eye_blurry, 25) - victim.eye_blind = max(M.eye_blind, 10) - victim.Stun(5) - victim.Weaken(5) - //victim.Paralyse(10) - //victim.drop_item() - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(prob(5)) - M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]") - return - - frostoil - name = "Frost Oil" - id = "frostoil" - description = "A special oil that noticably chills the body. Extracted from Ice Peppers." - reagent_state = LIQUID - color = "#B31008" // rgb: 139, 166, 233 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 15) - M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 5) - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(5,20) - if(15 to 25) - M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(10,20) - if(25 to INFINITY) - M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT - if(prob(1)) M.emote("shiver") - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(15,20) - data++ - holder.remove_reagent(src.id, FOOD_METABOLISM) - ..() - return - - reaction_turf(var/turf/simulated/T, var/volume) - for(var/mob/living/carbon/slime/M in T) - M.adjustToxLoss(rand(15,30)) - - sodiumchloride - name = "Table Salt" - id = "sodiumchloride" - description = "A salt made of sodium chloride. Commonly used to season food." - reagent_state = SOLID - color = "#FFFFFF" // rgb: 255,255,255 - overdose = REAGENTS_OVERDOSE - - blackpepper - name = "Black Pepper" - id = "blackpepper" - description = "A powder ground from peppercorns. *AAAACHOOO*" - reagent_state = SOLID - // no color (ie, black) - - coco - name = "Coco Powder" - id = "coco" - description = "A fatty, bitter paste made from coco beans." - reagent_state = SOLID - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - hot_coco - name = "Hot Chocolate" - id = "hot_coco" - description = "Made with love! And cocoa beans." - reagent_state = LIQUID - nutriment_factor = 2 * REAGENTS_METABOLISM - color = "#403010" // rgb: 64, 48, 16 - - on_mob_life(var/mob/living/M as mob) - if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 - M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.nutrition += nutriment_factor - ..() - return - - psilocybin - name = "Psilocybin" - id = "psilocybin" - description = "A strong psycotropic derived from certain species of mushroom." - color = "#E700E7" // rgb: 231, 0, 231 - overdose = REAGENTS_OVERDOSE - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.druggy = max(M.druggy, 30) - if(!data) data = 1 - switch(data) - if(1 to 5) - if (!M.stuttering) M.stuttering = 1 - M.make_dizzy(5) - if(prob(10)) M.emote(pick("twitch","giggle")) - if(5 to 10) - if (!M.stuttering) M.stuttering = 1 - M.make_jittery(10) - M.make_dizzy(10) - M.druggy = max(M.druggy, 35) - if(prob(20)) M.emote(pick("twitch","giggle")) - if (10 to INFINITY) - if (!M.stuttering) M.stuttering = 1 - M.make_jittery(20) - M.make_dizzy(20) - M.druggy = max(M.druggy, 40) - if(prob(30)) M.emote(pick("twitch","giggle")) - holder.remove_reagent(src.id, 0.2) - data++ - ..() - return - - sprinkles - name = "Sprinkles" - id = "sprinkles" - description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FF00FF" // rgb: 255, 0, 255 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - /*if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Head of Security", "Detective", "Warden")) - if(!M) M = holder.my_atom - M.heal_organ_damage(1,1) - M.nutrition += nutriment_factor - ..() - return - */ - ..() - -/* //removed because of meta bullshit. this is why we can't have nice things. - syndicream - name = "Cream filling" - id = "syndicream" - description = "Delicious cream filling of a mysterious origin. Tastes criminally good." - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#AB7878" // rgb: 171, 120, 120 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - if(istype(M, /mob/living/carbon/human) && M.mind) - if(M.mind.special_role) - if(!M) M = holder.my_atom - M.heal_organ_damage(1,1) - M.nutrition += nutriment_factor - ..() - return - ..() -*/ - cornoil - name = "Corn Oil" - id = "cornoil" - description = "An oil derived from various types of corn." - reagent_state = LIQUID - nutriment_factor = 20 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - reaction_turf(var/turf/simulated/T, var/volume) - if (!istype(T)) return - src = null - if(volume >= 3) - if(T.wet >= 1) return - T.wet = 1 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor") - T.overlays += T.wet_overlay - - spawn(800) - if (!istype(T)) return - if(T.wet >= 2) return - T.wet = 0 - if(T.wet_overlay) - T.overlays -= T.wet_overlay - T.wet_overlay = null - var/hotspot = (locate(/obj/fire) in T) - if(hotspot) - var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) - lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) - lowertemp.react() - T.assume_air(lowertemp) - del(hotspot) - - enzyme - name = "Universal Enzyme" - id = "enzyme" - description = "A universal enzyme used in the preperation of certain chemicals and foods." - reagent_state = LIQUID - color = "#365E30" // rgb: 54, 94, 48 - overdose = REAGENTS_OVERDOSE - - dry_ramen - name = "Dry Ramen" - id = "dry_ramen" - description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." - reagent_state = SOLID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - hot_ramen - name = "Hot Ramen" - id = "hot_ramen" - description = "The noodles are boiled, the flavors are artificial, just like being back in school." - reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 - M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT)) - ..() - return - - hell_ramen - name = "Hell Ramen" - id = "hell_ramen" - description = "The noodles are boiled, the flavors are artificial, just like being back in school." - reagent_state = LIQUID - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT - ..() - return - - flour - name = "flour" - id = "flour" - description = "This is what you rub all over yourself to pretend to be a ghost." - reagent_state = SOLID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FFFFFF" // rgb: 0, 0, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - reaction_turf(var/turf/T, var/volume) - src = null - if(!istype(T, /turf/space)) - new /obj/effect/decal/cleanable/flour(T) - - rice - name = "Rice" - id = "rice" - description = "Enjoy the great taste of nothing." - reagent_state = SOLID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FFFFFF" // rgb: 0, 0, 0 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - - cherryjelly - name = "Cherry Jelly" - id = "cherryjelly" - description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." - reagent_state = LIQUID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#801E28" // rgb: 128, 30, 40 - - on_mob_life(var/mob/living/M as mob) - M.nutrition += nutriment_factor - ..() - return - -///////////////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////// DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum//////////////////////////////// -///////////////////////////////////////////////////////////////////////////////////////////////////////// - - drink - name = "Drink" - id = "drink" - description = "Uh, some kind of drink." - reagent_state = LIQUID - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#E78108" // rgb: 231, 129, 8 - var/adj_dizzy = 0 - var/adj_drowsy = 0 - var/adj_sleepy = 0 - var/adj_temp = 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.nutrition += nutriment_factor - holder.remove_reagent(src.id, FOOD_METABOLISM) - // Drinks should be used up faster than other reagents. - holder.remove_reagent(src.id, FOOD_METABOLISM) - if (adj_dizzy) M.dizziness = max(0,M.dizziness + adj_dizzy) - if (adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy) - if (adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy) - if (adj_temp) - if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 - M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT)) - - ..() - return - - drink/orangejuice - name = "Orange juice" - id = "orangejuice" - description = "Both delicious AND rich in Vitamin C, what more do you need?" - color = "#E78108" // rgb: 231, 129, 8 - - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getOxyLoss() && prob(30)) M.adjustOxyLoss(-1) - return - - drink/tomatojuice - name = "Tomato Juice" - id = "tomatojuice" - description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" - color = "#731008" // rgb: 115, 16, 8 - - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getFireLoss() && prob(20)) M.heal_organ_damage(0,1) - return - - drink/limejuice - name = "Lime Juice" - id = "limejuice" - description = "The sweet-sour juice of limes." - color = "#365E30" // rgb: 54, 94, 48 - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1*REM) - return - - drink/carrotjuice - name = "Carrot juice" - id = "carrotjuice" - description = "It is just like a carrot but without crunching." - color = "#973800" // rgb: 151, 56, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - M.eye_blurry = max(M.eye_blurry-1 , 0) - M.eye_blind = max(M.eye_blind-1 , 0) - if(!data) data = 1 - switch(data) - if(1 to 20) - //nothing - if(21 to INFINITY) - if (prob(data-10)) - M.disabilities &= ~NEARSIGHTED - data++ - return - - drink/berryjuice - name = "Berry Juice" - id = "berryjuice" - description = "A delicious blend of several different kinds of berries." - color = "#990066" // rgb: 153, 0, 102 - - drink/grapejuice - name = "Grape Juice" - id = "grapejuice" - description = "It's grrrrrape!" - color = "#863333" // rgb: 134, 51, 51 - - drink/grapesoda - name = "Grape Soda" - id = "grapesoda" - description = "Grapes made into a fine drank." - color = "#421C52" // rgb: 98, 57, 53 - adj_drowsy = -3 - - drink/poisonberryjuice - name = "Poison Berry Juice" - id = "poisonberryjuice" - description = "A tasty juice blended from various kinds of very deadly and toxic berries." - color = "#863353" // rgb: 134, 51, 83 - - on_mob_life(var/mob/living/M as mob) - ..() - M.adjustToxLoss(1) - return - - drink/watermelonjuice - name = "Watermelon Juice" - id = "watermelonjuice" - description = "Delicious juice made from watermelon." - color = "#863333" // rgb: 134, 51, 51 - - drink/lemonjuice - name = "Lemon Juice" - id = "lemonjuice" - description = "This juice is VERY sour." - color = "#863333" // rgb: 175, 175, 0 - - drink/banana - name = "Banana Juice" - id = "banana" - description = "The raw essence of a banana." - color = "#863333" // rgb: 175, 175, 0 - - drink/nothing - name = "Nothing" - id = "nothing" - description = "Absolutely nothing." - - drink/potato_juice - name = "Potato Juice" - id = "potato" - description = "Juice of the potato. Bleh." - nutriment_factor = 2 * FOOD_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - drink/milk - name = "Milk" - id = "milk" - description = "An opaque white liquid produced by the mammary glands of mammals." - color = "#DFDFDF" // rgb: 223, 223, 223 - - on_mob_life(var/mob/living/M as mob) - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) - ..() - return - - drink/milk/soymilk - name = "Soy Milk" - id = "soymilk" - description = "An opaque white liquid made from soybeans." - color = "#DFDFC7" // rgb: 223, 223, 199 - - drink/milk/cream - name = "Cream" - id = "cream" - description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" - color = "#DFD7AF" // rgb: 223, 215, 175 - - drink/grenadine - name = "Grenadine Syrup" - id = "grenadine" - description = "Made in the modern day with proper pomegranate substitute. Who uses real fruit, anyways?" - color = "#FF004F" // rgb: 255, 0, 79 - - drink/hot_coco - name = "Hot Chocolate" - id = "hot_coco" - description = "Made with love! And cocoa beans." - nutriment_factor = 2 * FOOD_METABOLISM - color = "#403010" // rgb: 64, 48, 16 - adj_temp = 5 - - drink/coffee - name = "Coffee" - id = "coffee" - description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." - color = "#482000" // rgb: 72, 32, 0 - adj_dizzy = -5 - adj_drowsy = -3 - adj_sleepy = -2 - adj_temp = 25 - - on_mob_life(var/mob/living/M as mob) - ..() - M.make_jittery(5) - if(adj_temp > 0 && holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 10*REAGENTS_METABOLISM) - - holder.remove_reagent(src.id, 0.1) - - drink/coffee/icecoffee - name = "Iced Coffee" - id = "icecoffee" - description = "Coffee and ice, refreshing and cool." - color = "#102838" // rgb: 16, 40, 56 - adj_temp = -5 - - drink/coffee/soy_latte - name = "Soy Latte" - id = "soy_latte" - description = "A nice and tasty beverage while you are reading your hippie books." - color = "#664300" // rgb: 102, 67, 0 - adj_sleepy = 0 - adj_temp = 5 - - on_mob_life(var/mob/living/M as mob) - ..() - M.sleeping = 0 - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - return - - drink/coffee/cafe_latte - name = "Cafe Latte" - id = "cafe_latte" - description = "A nice, strong and tasty beverage while you are reading." - color = "#664300" // rgb: 102, 67, 0 - adj_sleepy = 0 - adj_temp = 5 - - on_mob_life(var/mob/living/M as mob) - ..() - M.sleeping = 0 - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - return - - drink/tea - name = "Tea" - id = "tea" - description = "Tasty black tea, it has antioxidants, it's good for you!" - color = "#101000" // rgb: 16, 16, 0 - adj_dizzy = -2 - adj_drowsy = -1 - adj_sleepy = -3 - adj_temp = 20 - - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getToxLoss() && prob(20)) - M.adjustToxLoss(-1) - return - - drink/tea/icetea - name = "Iced Tea" - id = "icetea" - description = "No relation to a certain rap artist/ actor." - color = "#104038" // rgb: 16, 64, 56 - adj_temp = -5 - - drink/cold - name = "Cold drink" - adj_temp = -5 - - drink/cold/tonic - name = "Tonic Water" - id = "tonic" - description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." - color = "#664300" // rgb: 102, 67, 0 - adj_dizzy = -5 - adj_drowsy = -3 - adj_sleepy = -2 - - drink/cold/sodawater - name = "Soda Water" - id = "sodawater" - description = "A can of club soda. Why not make a scotch and soda?" - color = "#619494" // rgb: 97, 148, 148 - adj_dizzy = -5 - adj_drowsy = -3 - - drink/cold/ice - name = "Ice" - id = "ice" - description = "Frozen water, your dentist wouldn't like you chewing this." - reagent_state = SOLID - color = "#619494" // rgb: 97, 148, 148 - - drink/cold/space_cola - name = "Space Cola" - id = "cola" - description = "A refreshing beverage." - reagent_state = LIQUID - color = "#100800" // rgb: 16, 8, 0 - adj_drowsy = -3 - - drink/cold/nuka_cola - name = "Nuka Cola" - id = "nuka_cola" - description = "Cola, cola never changes." - color = "#100800" // rgb: 16, 8, 0 - adj_sleepy = -2 - - on_mob_life(var/mob/living/M as mob) - M.make_jittery(20) - M.druggy = max(M.druggy, 30) - M.dizziness +=5 - M.drowsyness = 0 - ..() - return - - drink/cold/spacemountainwind - name = "Mountain Wind" - id = "spacemountainwind" - description = "Blows right through you like a space wind." - color = "#102000" // rgb: 16, 32, 0 - adj_drowsy = -7 - adj_sleepy = -1 - - drink/cold/dr_gibb - name = "Dr. Gibb" - id = "dr_gibb" - description = "A delicious blend of 42 different flavours" - color = "#102000" // rgb: 16, 32, 0 - adj_drowsy = -6 - - drink/cold/space_up - name = "Space-Up" - id = "space_up" - description = "Tastes like a hull breach in your mouth." - color = "#202800" // rgb: 32, 40, 0 - adj_temp = -8 - - drink/cold/lemon_lime - name = "Lemon Lime" - description = "A tangy substance made of 0.5% natural citrus!" - id = "lemon_lime" - color = "#878F00" // rgb: 135, 40, 0 - adj_temp = -8 - - drink/cold/lemonade - name = "Lemonade" - description = "Oh the nostalgia..." - id = "lemonade" - color = "#FFFF00" // rgb: 255, 255, 0 - - drink/cold/kiraspecial - name = "Kira Special" - description = "Long live the guy who everyone had mistaken for a girl. Baka!" - id = "kiraspecial" - color = "#CCCC99" // rgb: 204, 204, 153 - - drink/cold/brownstar - name = "Brown Star" - description = "It's not what it sounds like..." - id = "brownstar" - color = "#9F3400" // rgb: 159, 052, 000 - adj_temp = - 2 - - drink/cold/milkshake - name = "Milkshake" - description = "Glorious brainfreezing mixture." - id = "milkshake" - color = "#AEE5E4" // rgb" 174, 229, 228 - adj_temp = -9 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 15) - M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 5) - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(5,20) - if(15 to 25) - M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(10,20) - if(25 to INFINITY) - M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT - if(prob(1)) M.emote("shiver") - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(15,20) - data++ - holder.remove_reagent(src.id, FOOD_METABOLISM) - ..() - return - - drink/cold/rewriter - name = "Rewriter" - description = "The secret of the sanctuary of the Libarian..." - id = "rewriter" - color = "#485000" // rgb:72, 080, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - M.make_jittery(5) - return - - - doctor_delight - name = "The Doctor's Delight" - id = "doctorsdelight" - description = "A gulp a day keeps the MediBot away. That's probably for the best." - reagent_state = LIQUID - color = "#FF8CFF" // rgb: 255, 140, 255 - nutriment_factor = 1 * FOOD_METABOLISM - - on_mob_life(var/mob/living/M as mob) - M:nutrition += nutriment_factor - holder.remove_reagent(src.id, FOOD_METABOLISM) - if(!M) M = holder.my_atom - if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2) - if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0) - if(M:getFireLoss() && prob(50)) M:heal_organ_damage(0,2) - if(M:getToxLoss() && prob(50)) M:adjustToxLoss(-2) - if(M.dizziness !=0) M.dizziness = max(0,M.dizziness-15) - if(M.confused !=0) M.confused = max(0,M.confused - 5) - ..() - return - -//////////////////////////////////////////////The ten friggen million reagents that get you drunk////////////////////////////////////////////// - - atomicbomb - name = "Atomic Bomb" - id = "atomicbomb" - description = "Nuclear proliferation never tasted so good." - reagent_state = LIQUID - color = "#666300" // rgb: 102, 99, 0 - - on_mob_life(var/mob/living/M as mob) - M.druggy = max(M.druggy, 50) - M.confused = max(M.confused+2,0) - M.make_dizzy(10) - if (!M.stuttering) M.stuttering = 1 - M.stuttering += 3 - if(!data) data = 1 - data++ - switch(data) - if(51 to 200) - M.sleeping += 1 - if(201 to INFINITY) - M.sleeping += 1 - M.adjustToxLoss(2) - ..() - return - - gargle_blaster - name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" - description = "Whoah, this stuff looks volatile!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - if(!data) data = 1 - data++ - M.dizziness +=6 - if(data >= 15 && data <45) - if (!M.stuttering) M.stuttering = 1 - M.stuttering += 3 - else if(data >= 45 && prob(50) && data <55) - M.confused = max(M.confused+3,0) - else if(data >=55) - M.druggy = max(M.druggy, 55) - else if(data >=200) - M.adjustToxLoss(2) - ..() - return - - neurotoxin - name = "Neurotoxin" - id = "neurotoxin" - description = "A strong neurotoxin that puts the subject into a death-like state." - reagent_state = LIQUID - color = "#2E2E61" // rgb: 46, 46, 97 - - on_mob_life(var/mob/living/carbon/M as mob) - if(!M) M = holder.my_atom - M.weakened = max(M.weakened, 3) - if(!data) data = 1 - data++ - M.dizziness +=6 - if(data >= 15 && data <45) - if (!M.stuttering) M.stuttering = 1 - M.stuttering += 3 - else if(data >= 45 && prob(50) && data <55) - M.confused = max(M.confused+3,0) - else if(data >=55) - M.druggy = max(M.druggy, 55) - else if(data >=200) - M.adjustToxLoss(2) - ..() - return - - hippies_delight - name = "Hippies' Delight" - id = "hippiesdelight" - description = "You just don't get it maaaan." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.druggy = max(M.druggy, 50) - if(!data) data = 1 - data++ - switch(data) - if(1 to 5) - if (!M.stuttering) M.stuttering = 1 - M.make_dizzy(10) - if(prob(10)) M.emote(pick("twitch","giggle")) - if(5 to 10) - if (!M.stuttering) M.stuttering = 1 - M.make_jittery(20) - M.make_dizzy(20) - M.druggy = max(M.druggy, 45) - if(prob(20)) M.emote(pick("twitch","giggle")) - if (10 to 200) - if (!M.stuttering) M.stuttering = 1 - M.make_jittery(40) - M.make_dizzy(40) - M.druggy = max(M.druggy, 60) - if(prob(30)) M.emote(pick("twitch","giggle")) - if(200 to INFINITY) - if (!M.stuttering) M.stuttering = 1 - M.make_jittery(60) - M.make_dizzy(60) - M.druggy = max(M.druggy, 75) - if(prob(40)) M.emote(pick("twitch","giggle")) - if(prob(30)) M.adjustToxLoss(2) - holder.remove_reagent(src.id, 0.2) - ..() - return - -/*boozepwr chart -1-2 = non-toxic alcohol -3 = medium-toxic -4 = the hard stuff -5 = potent mixes -<6 = deadly toxic -*/ - - ethanol - name = "Ethanol" //Parent class for all alcoholic reagents. - id = "ethanol" - description = "A well-known alcohol with a variety of applications." - reagent_state = LIQUID - nutriment_factor = 0 //So alcohol can fill you up! If they want to. - color = "#404030" // rgb: 64, 64, 48 - var/boozepwr = 5 //higher numbers mean the booze will have an effect faster. - var/dizzy_adj = 3 - var/adj_drowsy = 0 - var/adj_sleepy = 0 - var/slurr_adj = 3 - var/confused_adj = 2 - var/slur_start = 90 //amount absorbed after which mob starts slurring - var/confused_start = 150 //amount absorbed after which mob starts confusing directions - var/blur_start = 300 //amount absorbed after which mob starts getting blurred vision - var/pass_out = 400 //amount absorbed after which mob starts passing out - - on_mob_life(var/mob/living/M as mob) - M:nutrition += nutriment_factor - holder.remove_reagent(src.id, FOOD_METABOLISM) - - if (adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy) - if (adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy) - - if(!src.data || (!isnum(src.data) && src.data.len)) data = 1 //if it doesn't exist we set it. if it's a list we're going to set it to 1 as well. This is to - src.data += boozepwr //avoid a runtime error associated with drinking blood mixed in drinks (demon's blood). - - var/d = data - - // make all the beverages work together - for(var/datum/reagent/ethanol/A in holder.reagent_list) - if(isnum(A.data)) d += A.data - - M.dizziness += dizzy_adj. - if(d >= slur_start && d < pass_out) - if (!M:slurring) M:slurring = 1 - M:slurring += slurr_adj - if(d >= confused_start && prob(33)) - if (!M:confused) M:confused = 1 - M.confused = max(M:confused+confused_adj,0) - if(d >= blur_start) - M.eye_blurry = max(M.eye_blurry, 10) - M:drowsyness = max(M:drowsyness, 0) - if(d >= pass_out) - M:paralysis = max(M:paralysis, 20) - M:drowsyness = max(M:drowsyness, 30) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/datum/organ/internal/liver/L = H.internal_organs["liver"] - if (istype(L)) - L.take_damage(0.1, 1) - H.adjustToxLoss(0.1) - ..() - return - - reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/item/weapon/paper)) - var/obj/item/weapon/paper/paperaffected = O - paperaffected.clearpaper() - usr << "The solution dissolves the ink on the paper." - if(istype(O,/obj/item/weapon/book)) - if(volume >= 5) - var/obj/item/weapon/book/affectedbook = O - affectedbook.dat = null - usr << "The solution dissolves the ink on the book." - else - usr << "It wasn't enough..." - return - - ethanol/beer - name = "Beer" - id = "beer" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1 - nutriment_factor = 1 * FOOD_METABOLISM - - on_mob_life(var/mob/living/M as mob) - M:jitteriness = max(M:jitteriness-3,0) - ..() - return - - ethanol/kahlua - name = "Kahlua" - id = "kahlua" - description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1.5 - dizzy_adj = -5 - adj_drowsy = -3 - adj_sleepy = -2 - - on_mob_life(var/mob/living/M as mob) - M.make_jittery(5) - ..() - return - - ethanol/whiskey - name = "Whiskey" - id = "whiskey" - description = "A superb and well-aged single-malt whiskey. Damn." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - dizzy_adj = 4 - - ethanol/specialwhiskey - name = "Special Blend Whiskey" - id = "specialwhiskey" - description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - dizzy_adj = 4 - slur_start = 30 //amount absorbed after which mob starts slurring - - ethanol/thirteenloko - name = "Thirteen Loko" - id = "thirteenloko" - description = "A potent mixture of caffeine and alcohol." - color = "#102000" // rgb: 16, 32, 0 - boozepwr = 2 - nutriment_factor = 1 * FOOD_METABOLISM - - on_mob_life(var/mob/living/M as mob) - M:drowsyness = max(0,M:drowsyness-7) - if (M.bodytemperature > 310) - M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) - ..() - return - - ethanol/vodka - name = "Vodka" - id = "vodka" - description = "Number one drink AND fueling choice for Russians worldwide." - color = "#0064C8" // rgb: 0, 100, 200 - boozepwr = 2 - - on_mob_life(var/mob/living/M as mob) - M.radiation = max(M.radiation-1,0) - ..() - return - - ethanol/bilk - name = "Bilk" - id = "bilk" - description = "This appears to be beer mixed with milk. Disgusting." - color = "#895C4C" // rgb: 137, 92, 76 - boozepwr = 1 - nutriment_factor = 2 * FOOD_METABOLISM - - ethanol/threemileisland - name = "Three Mile Island Iced Tea" - id = "threemileisland" - description = "Made for a woman, strong enough for a man." - color = "#666340" // rgb: 102, 99, 64 - boozepwr = 5 - - on_mob_life(var/mob/living/M as mob) - M.druggy = max(M.druggy, 50) - ..() - return - - ethanol/gin - name = "Gin" - id = "gin" - description = "It's gin. In space. I say, good sir." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1 - dizzy_adj = 3 - - ethanol/rum - name = "Rum" - id = "rum" - description = "Yohoho and all that." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1.5 - - ethanol/tequilla - name = "Tequila" - id = "tequilla" - description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" - color = "#FFFF91" // rgb: 255, 255, 145 - boozepwr = 2 - - ethanol/vermouth - name = "Vermouth" - id = "vermouth" - description = "You suddenly feel a craving for a martini..." - color = "#91FF91" // rgb: 145, 255, 145 - boozepwr = 1.5 - - ethanol/wine - name = "Wine" - id = "wine" - description = "An premium alchoholic beverage made from distilled grape juice." - color = "#7E4043" // rgb: 126, 64, 67 - boozepwr = 1.5 - dizzy_adj = 2 - slur_start = 65 //amount absorbed after which mob starts slurring - confused_start = 145 //amount absorbed after which mob starts confusing directions - - ethanol/cognac - name = "Cognac" - id = "cognac" - description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." - color = "#AB3C05" // rgb: 171, 60, 5 - boozepwr = 1.5 - dizzy_adj = 4 - confused_start = 115 //amount absorbed after which mob starts confusing directions - - ethanol/hooch - name = "Hooch" - id = "hooch" - description = "Either someone's failure at cocktail making or attempt in alchohol production. In any case, do you really want to drink that?" - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - dizzy_adj = 6 - slurr_adj = 5 - slur_start = 35 //amount absorbed after which mob starts slurring - confused_start = 90 //amount absorbed after which mob starts confusing directions - - ethanol/ale - name = "Ale" - id = "ale" - description = "A dark alchoholic beverage made by malted barley and yeast." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1 - - ethanol/absinthe - name = "Absinthe" - id = "absinthe" - description = "Watch out that the Green Fairy doesn't come for you!" - color = "#33EE00" // rgb: 51, 238, 0 - boozepwr = 4 - dizzy_adj = 5 - slur_start = 15 - confused_start = 30 - - - ethanol/pwine - name = "Poison Wine" - id = "pwine" - description = "Is this even wine? Toxic! Hallucinogenic! Probably consumed in boatloads by your superiors!" - color = "#000000" // rgb: 0, 0, 0 SHOCKER - boozepwr = 1 - dizzy_adj = 1 - slur_start = 1 - confused_start = 1 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.druggy = max(M.druggy, 50) - if(!data) data = 1 - data++ - switch(data) - if(1 to 25) - if (!M.stuttering) M.stuttering = 1 - M.make_dizzy(1) - M.hallucination = max(M.hallucination, 3) - if(prob(1)) M.emote(pick("twitch","giggle")) - if(25 to 75) - if (!M.stuttering) M.stuttering = 1 - M.hallucination = max(M.hallucination, 10) - M.make_jittery(2) - M.make_dizzy(2) - M.druggy = max(M.druggy, 45) - if(prob(5)) M.emote(pick("twitch","giggle")) - if (75 to 150) - if (!M.stuttering) M.stuttering = 1 - M.hallucination = max(M.hallucination, 60) - M.make_jittery(4) - M.make_dizzy(4) - M.druggy = max(M.druggy, 60) - if(prob(10)) M.emote(pick("twitch","giggle")) - if(prob(30)) M.adjustToxLoss(2) - if (150 to 300) - if (!M.stuttering) M.stuttering = 1 - M.hallucination = max(M.hallucination, 60) - M.make_jittery(4) - M.make_dizzy(4) - M.druggy = max(M.druggy, 60) - if(prob(10)) M.emote(pick("twitch","giggle")) - if(prob(30)) M.adjustToxLoss(2) - if(prob(5)) if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/datum/organ/internal/heart/L = H.internal_organs["heart"] - if (istype(L)) - L.take_damage(5, 0) - if (300 to INFINITY) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/datum/organ/internal/heart/L = H.internal_organs["heart"] - if (istype(L)) - L.take_damage(100, 0) - holder.remove_reagent(src.id, FOOD_METABOLISM) - - ethanol/deadrum - name = "Deadrum" - id = "rum" - description = "Popular with the sailors. Not very popular with everyone else." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1 - - on_mob_life(var/mob/living/M as mob) - ..() - M.dizziness +=5 - return - - ethanol/sake - name = "Sake" - id = "sake" - description = "Anime's favorite drink." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - - -/////////////////////////////////////////////////////////////////cocktail entities////////////////////////////////////////////// - - - ethanol/goldschlager - name = "Goldschlager" - id = "goldschlager" - description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - ethanol/patron - name = "Patron" - id = "patron" - description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." - color = "#585840" // rgb: 88, 88, 64 - boozepwr = 1.5 - - ethanol/gintonic - name = "Gin and Tonic" - id = "gintonic" - description = "An all time classic, mild cocktail." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1 - - ethanol/cuba_libre - name = "Cuba Libre" - id = "cubalibre" - description = "Rum, mixed with cola. Viva la revolucion." - color = "#3E1B00" // rgb: 62, 27, 0 - boozepwr = 1.5 - - ethanol/whiskey_cola - name = "Whiskey Cola" - id = "whiskeycola" - description = "Whiskey, mixed with cola. Surprisingly refreshing." - color = "#3E1B00" // rgb: 62, 27, 0 - boozepwr = 2 - - ethanol/martini - name = "Classic Martini" - id = "martini" - description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - - ethanol/vodkamartini - name = "Vodka Martini" - id = "vodkamartini" - description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 4 - - ethanol/white_russian - name = "White Russian" - id = "whiterussian" - description = "That's just, like, your opinion, man..." - color = "#A68340" // rgb: 166, 131, 64 - boozepwr = 3 - - ethanol/screwdrivercocktail - name = "Screwdriver" - id = "screwdrivercocktail" - description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." - color = "#A68310" // rgb: 166, 131, 16 - boozepwr = 3 - - ethanol/booger - name = "Booger" - id = "booger" - description = "Ewww..." - color = "#8CFF8C" // rgb: 140, 255, 140 - boozepwr = 1.5 - - ethanol/bloody_mary - name = "Bloody Mary" - id = "bloodymary" - description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - ethanol/brave_bull - name = "Brave Bull" - id = "bravebull" - description = "It's just as effective as Dutch-Courage!." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - ethanol/tequilla_sunrise - name = "Tequila Sunrise" - id = "tequillasunrise" - description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~" - color = "#FFE48C" // rgb: 255, 228, 140 - boozepwr = 2 - - ethanol/toxins_special - name = "Toxins Special" - id = "toxinsspecial" - description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 5 - - on_mob_life(var/mob/living/M as mob) - if (M.bodytemperature < 330) - M.bodytemperature = min(330, M.bodytemperature + (15 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 - ..() - return - - ethanol/beepsky_smash - name = "Beepsky Smash" - id = "beepskysmash" - description = "Deny drinking this and prepare for THE LAW." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 4 - - on_mob_life(var/mob/living/M as mob) - M.Stun(2) - ..() - return - - ethanol/irish_cream - name = "Irish Cream" - id = "irishcream" - description = "Whiskey-imbued cream, what else would you expect from the Irish." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - - ethanol/manly_dorf - name = "The Manly Dorf" - id = "manlydorf" - description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - - ethanol/longislandicedtea - name = "Long Island Iced Tea" - id = "longislandicedtea" - description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 4 - - ethanol/moonshine - name = "Moonshine" - id = "moonshine" - description = "You've really hit rock bottom now... your liver packed its bags and left last night." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 4 - - ethanol/b52 - name = "B-52" - id = "b52" - description = "Coffee, Irish Cream, and cognac. You will get bombed." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 4 - - ethanol/irishcoffee - name = "Irish Coffee" - id = "irishcoffee" - description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - ethanol/margarita - name = "Margarita" - id = "margarita" - description = "On the rocks with salt on the rim. Arriba~!" - color = "#8CFF8C" // rgb: 140, 255, 140 - boozepwr = 3 - - ethanol/black_russian - name = "Black Russian" - id = "blackrussian" - description = "For the lactose-intolerant. Still as classy as a White Russian." - color = "#360000" // rgb: 54, 0, 0 - boozepwr = 3 - - ethanol/manhattan - name = "Manhattan" - id = "manhattan" - description = "The Detective's undercover drink of choice. He never could stomach gin..." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - ethanol/manhattan_proj - name = "Manhattan Project" - id = "manhattan_proj" - description = "A scientist's drink of choice, for pondering ways to blow up the station." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 5 - - on_mob_life(var/mob/living/M as mob) - M.druggy = max(M.druggy, 30) - ..() - return - - ethanol/whiskeysoda - name = "Whiskey Soda" - id = "whiskeysoda" - description = "For the more refined griffon." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - ethanol/antifreeze - name = "Anti-freeze" - id = "antifreeze" - description = "Ultimate refreshment." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 4 - - on_mob_life(var/mob/living/M as mob) - if (M.bodytemperature < 330) - M.bodytemperature = min(330, M.bodytemperature + (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 - ..() - return - - ethanol/barefoot - name = "Barefoot" - id = "barefoot" - description = "Barefoot and pregnant" - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1.5 - - ethanol/snowwhite - name = "Snow White" - id = "snowwhite" - description = "A cold refreshment" - color = "#FFFFFF" // rgb: 255, 255, 255 - boozepwr = 1.5 - - ethanol/melonliquor - name = "Melon Liquor" - id = "melonliquor" - description = "A relatively sweet and fruity 46 proof liquor." - color = "#138808" // rgb: 19, 136, 8 - boozepwr = 1 - - ethanol/bluecuracao - name = "Blue Curacao" - id = "bluecuracao" - description = "Exotically blue, fruity drink, distilled from oranges." - color = "#0000CD" // rgb: 0, 0, 205 - boozepwr = 1.5 - - ethanol/suidream - name = "Sui Dream" - id = "suidream" - description = "Comprised of: White soda, blue curacao, melon liquor." - color = "#00A86B" // rgb: 0, 168, 107 - boozepwr = 0.5 - - ethanol/demonsblood - name = "Demons Blood" - id = "demonsblood" - description = "AHHHH!!!!" - color = "#820000" // rgb: 130, 0, 0 - boozepwr = 3 - ethanol/vodkatonic - name = "Vodka and Tonic" - id = "vodkatonic" - description = "For when a gin and tonic isn't russian enough." - color = "#0064C8" // rgb: 0, 100, 200 - boozepwr = 3 - dizzy_adj = 4 - slurr_adj = 3 - - ethanol/ginfizz - name = "Gin Fizz" - id = "ginfizz" - description = "Refreshingly lemony, deliciously dry." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1.5 - dizzy_adj = 4 - slurr_adj = 3 - - ethanol/bahama_mama - name = "Bahama mama" - id = "bahama_mama" - description = "Tropical cocktail." - color = "#FF7F3B" // rgb: 255, 127, 59 - boozepwr = 2 - - ethanol/singulo - name = "Singulo" - id = "singulo" - description = "A blue-space beverage!" - color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 5 - dizzy_adj = 15 - slurr_adj = 15 - - ethanol/sbiten - name = "Sbiten" - id = "sbiten" - description = "A spicy Vodka! Might be a little hot for the little guys!" - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - on_mob_life(var/mob/living/M as mob) - if (M.bodytemperature < 360) - M.bodytemperature = min(360, M.bodytemperature + (50 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 - ..() - return - - ethanol/devilskiss - name = "Devils Kiss" - id = "devilskiss" - description = "Creepy time!" - color = "#A68310" // rgb: 166, 131, 16 - boozepwr = 3 - - ethanol/red_mead - name = "Red Mead" - id = "red_mead" - description = "The true Viking's drink! Even though it has a strange red color." - color = "#C73C00" // rgb: 199, 60, 0 - boozepwr = 1.5 - - ethanol/mead - name = "Mead" - id = "mead" - description = "A Viking's drink, though a cheap one." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1.5 - nutriment_factor = 1 * FOOD_METABOLISM - - ethanol/iced_beer - name = "Iced Beer" - id = "iced_beer" - description = "A beer which is so cold the air around it freezes." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 1 - - on_mob_life(var/mob/living/M as mob) - if(M.bodytemperature > 270) - M.bodytemperature = max(270, M.bodytemperature - (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 - ..() - return - - ethanol/grog - name = "Grog" - id = "grog" - description = "Watered down rum, NanoTrasen approves!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 0.5 - - ethanol/aloe - name = "Aloe" - id = "aloe" - description = "So very, very, very good." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - ethanol/andalusia - name = "Andalusia" - id = "andalusia" - description = "A nice, strangely named drink." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 3 - - ethanol/alliescocktail - name = "Allies Cocktail" - id = "alliescocktail" - description = "A drink made from your allies, not as sweet as when made from your enemies." - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - - ethanol/acid_spit - name = "Acid Spit" - id = "acidspit" - description = "A drink for the daring, can be deadly if incorrectly prepared!" - reagent_state = LIQUID - color = "#365000" // rgb: 54, 80, 0 - boozepwr = 1.5 - - ethanol/amasec - name = "Amasec" - id = "amasec" - description = "Official drink of the NanoTrasen Gun-Club!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 2 - - ethanol/changelingsting - name = "Changeling Sting" - id = "changelingsting" - description = "You take a tiny sip and feel a burning sensation..." - color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 5 - - ethanol/irishcarbomb - name = "Irish Car Bomb" - id = "irishcarbomb" - description = "Mmm, tastes like chocolate cake..." - color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 3 - dizzy_adj = 5 - - ethanol/syndicatebomb - name = "Syndicate Bomb" - id = "syndicatebomb" - description = "Tastes like terrorism!" - color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 5 - - ethanol/erikasurprise - name = "Erika Surprise" - id = "erikasurprise" - description = "The surprise is it's green!" - color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 3 - - ethanol/driestmartini - name = "Driest Martini" - id = "driestmartini" - description = "Only for the experienced. You think you see sand floating in the glass." - nutriment_factor = 1 * FOOD_METABOLISM - color = "#2E6671" // rgb: 46, 102, 113 - boozepwr = 4 - - ethanol/bananahonk - name = "Banana Mama" - id = "bananahonk" - description = "A drink from Clown Heaven." - nutriment_factor = 1 * REAGENTS_METABOLISM - color = "#FFFF91" // rgb: 255, 255, 140 - boozepwr = 4 - - ethanol/silencer - name = "Silencer" - id = "silencer" - description = "A drink from Mime Heaven." - nutriment_factor = 1 * FOOD_METABOLISM - color = "#664300" // rgb: 102, 67, 0 - boozepwr = 4 - - on_mob_life(var/mob/living/M as mob) - if(!data) data = 1 - data++ - M.dizziness +=10 - if(data >= 55 && data <115) - if (!M.stuttering) M.stuttering = 1 - M.stuttering += 10 - else if(data >= 115 && prob(33)) - M.confused = max(M.confused+15,15) - ..() - return - -// Undefine the alias for REAGENTS_EFFECT_MULTIPLER -#undef REM diff --git a/code/modules/reagents/reagent_containers/spray.dm.bak b/code/modules/reagents/reagent_containers/spray.dm.bak deleted file mode 100644 index 89ddf095..00000000 --- a/code/modules/reagents/reagent_containers/spray.dm.bak +++ /dev/null @@ -1,315 +0,0 @@ -/obj/item/weapon/reagent_containers/spray - name = "spray bottle" - desc = "A spray bottle, with an unscrewable top." - icon = 'icons/obj/janitor.dmi' - icon_state = "cleaner" - item_state = "cleaner" - flags = TABLEPASS|OPENCONTAINER|FPRINT|NOBLUDGEON - slot_flags = SLOT_BELT - throwforce = 3 - w_class = 2.0 - throw_speed = 2 - throw_range = 10 - amount_per_transfer_from_this = 10 - volume = 250 - possible_transfer_amounts = null - - -/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob) - if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ - || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart)) - return - - if(istype(A, /obj/effect/proc_holder/spell)) - return - - if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution - if(!A.reagents.total_volume && A.reagents) - user << "\The [A] is empty." - return - - if(reagents.total_volume >= reagents.maximum_volume) - user << "\The [src] is full." - return - - var/trans = A.reagents.trans_to(src, A:amount_per_transfer_from_this) - user << "You fill \the [src] with [trans] units of the contents of \the [A]." - return - - if(reagents.total_volume < amount_per_transfer_from_this) - user << "\The [src] is empty!" - return - - var/obj/effect/decal/chempuff/D = new/obj/effect/decal/chempuff(get_turf(src)) - D.create_reagents(amount_per_transfer_from_this) - reagents.trans_to(D, amount_per_transfer_from_this, 1/3) - D.icon += mix_color_from_reagents(D.reagents.reagent_list) - - var/turf/A_turf = get_turf(A)//BS12 - - spawn(0) - for(var/i=0, i<3, i++) - step_towards(D,A) - D.reagents.reaction(get_turf(D)) - for(var/atom/T in get_turf(D)) - D.reagents.reaction(T) - - // When spraying against the wall, also react with the wall, but - // not its contents. BS12 - if(get_dist(D, A_turf) == 1 && A_turf.density) - D.reagents.reaction(A_turf) - sleep(2) - sleep(3) - del(D) - - playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) - - if(reagents.has_reagent("sacid")) - message_admins("[key_name_admin(user)] fired sulphuric acid from \a [src].") - log_game("[key_name(user)] fired sulphuric acid from \a [src].") - if(reagents.has_reagent("pacid")) - message_admins("[key_name_admin(user)] fired Polyacid from \a [src].") - log_game("[key_name(user)] fired Polyacid from \a [src].") - if(reagents.has_reagent("lube")) - message_admins("[key_name_admin(user)] fired Space lube from \a [src].") - log_game("[key_name(user)] fired Space lube from \a [src].") - return - -/obj/item/weapon/reagent_containers/spray/attack_self(var/mob/user) - - amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10) - user << "You switched [amount_per_transfer_from_this == 10 ? "on" : "off"] the pressure nozzle. You'll now use [amount_per_transfer_from_this] units per spray." - - -/obj/item/weapon/reagent_containers/spray/examine() - set src in usr - ..() - usr << "[round(src.reagents.total_volume)] units left." - return - -/obj/item/weapon/reagent_containers/spray/verb/empty() - - set name = "Empty Spray Bottle" - set category = "Object" - set src in usr - - if (alert(usr, "Are you sure you want to empty that?", "Empty Bottle:", "Yes", "No") != "Yes") - return - if(isturf(usr.loc)) - usr << "You empty \the [src] onto the floor." - reagents.reaction(usr.loc) - spawn(5) src.reagents.clear_reagents() - -//space cleaner -/obj/item/weapon/reagent_containers/spray/cleaner - name = "space cleaner" - desc = "BLAM!-brand non-foaming space cleaner!" - - -/obj/item/weapon/reagent_containers/spray/cleaner/New() - ..() - reagents.add_reagent("cleaner", 250) - -//pepperspray -/obj/item/weapon/reagent_containers/spray/pepper - name = "pepperspray" - desc = "Manufactured by UhangInc, used to blind and down an opponent quickly." - icon = 'icons/obj/weapons.dmi' - icon_state = "pepperspray" - item_state = "pepperspray" - volume = 40 - amount_per_transfer_from_this = 10 - - -/obj/item/weapon/reagent_containers/spray/pepper/New() - ..() - reagents.add_reagent("condensedcapsaicin", 40) - -//water flower -/obj/item/weapon/reagent_containers/spray/waterflower - name = "water flower" - desc = "A seemingly innocent sunflower...with a twist." - icon = 'icons/obj/harvest.dmi' - icon_state = "sunflower" - item_state = "sunflower" - amount_per_transfer_from_this = 1 - volume = 10 - -/obj/item/weapon/reagent_containers/spray/waterflower/New() - ..() - reagents.add_reagent("water", 10) - -/obj/item/weapon/reagent_containers/spray/waterflower/attack_self(var/mob/user) //Don't allow changing how much the flower sprays - return - -//chemsprayer -/obj/item/weapon/reagent_containers/spray/chemsprayer - name = "chem sprayer" - desc = "A utility used to spray large amounts of reagent in a given area." - icon = 'icons/obj/chemsprayer.dmi' - icon_state = "chemsprayer" - item_state = "chemsprayer" - throwforce = 3 - w_class = 4.0 - slot_flags = SLOT_BACK - volume = 600 - origin_tech = "combat=3;materials=3;engineering=3" - -/obj/item/weapon/chemsprayerframe - name = "chem sprayer frame" - desc = "A metal frame lacking almost any items required to showcase its full potential." - icon = 'icons/obj/chemsprayer.dmi' - icon_state = "chemsprayerframe" - item_state = "chemsprayer" - var/build_step = 0 - w_class = 4.0 -/* - -CODE THIS WHENENEVER YOU'RE -NOT- TIRED, SKULL! - -/obj/item/weapon/chemsprayerframe/complete - name = "chem sprayer frame" - desc = "A metal frame with a metal superstructure built on it." - icon_state = "chemsprayerframecomplete" - -/obj/item/weapon/chemsprayerframe/onetank - name = "chem sprayer frame" - desc = "A metal frame with a single pressure vessel attached to it." - icon_state = "chemsprayeronetank" - -/obj/item/weapon/chemsprayerframe/twotank - name = "chem sprayer frame" - desc = "A metal frame with two pressure vessel attached to it." - icon_state = "chemsprayertwotank" - -/obj/item/weapon/chemsprayerframe/beaker - name = "chem sprayer frame" - desc = "A metal frame with two pressure vessels and a reagent container attached to it." - icon_state = "chemsprayerbeaker" - -/obj/item/weapon/chemsprayerframe/electronics - name = "chem sprayer frame" - desc = "A metal frame with a set of electronics rigged to the existing machinery." - icon_state = "chemsprayerelectronics" - -/obj/item/weapon/reagent_containers/spray/chemsprayer/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - switch(build_step) - if(0) - if(istype(W, /obj/item/device/healthanalyzer)) - user.drop_item() - del(W) - src.build_step++ - user << "You add the health sensor to [src]." - src.name = "First aid/robot arm/health analyzer assembly" - src.overlays += image('icons/obj/aibots.dmi', "na_scanner") - if(1) - if(isprox(W)) - user.drop_item() - del(W) - src.build_step++ - user << "You complete the Medibot! Beep boop." - var/turf/T = get_turf(src) - var/obj/machinery/bot/medbot/S = new /obj/machinery/bot/medbot(T) - S.name = src.created_name - user.drop_from_inventory(src) - del(src) */ - -//this is a big copypasta clusterfuck, but it's still better than it used to be! -/obj/item/weapon/reagent_containers/spray/chemsprayer/afterattack(atom/A as mob|obj, mob/user as mob) - if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ - || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink)) - return - - if(istype(A, /obj/effect/proc_holder/spell)) - return - - if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution - if(!A.reagents.total_volume && A.reagents) - user << "\The [A] is empty." - return - - if(reagents.total_volume >= reagents.maximum_volume) - user << "\The [src] is full." - return - - var/trans = A.reagents.trans_to(src, A:amount_per_transfer_from_this) - user << "You fill \the [src] with [trans] units of the contents of \the [A]." - return - - if(reagents.total_volume < amount_per_transfer_from_this) - user << "\The [src] is empty!" - return - - var/Sprays[3] - for(var/i=1, i<=3, i++) // intialize sprays - if(src.reagents.total_volume < 1) break - var/obj/effect/decal/chempuff/D = new/obj/effect/decal/chempuff(get_turf(src)) - D.create_reagents(amount_per_transfer_from_this) - src.reagents.trans_to(D, amount_per_transfer_from_this) - - D.icon += mix_color_from_reagents(D.reagents.reagent_list) - - Sprays[i] = D - - var/direction = get_dir(src, A) - var/turf/T = get_turf(A) - var/turf/T1 = get_step(T,turn(direction, 90)) - var/turf/T2 = get_step(T,turn(direction, -90)) - var/list/the_targets = list(T,T1,T2) - - for(var/i=1, i<=Sprays.len, i++) - spawn() - var/obj/effect/decal/chempuff/D = Sprays[i] - if(!D) continue - - // Spreads the sprays a little bit - var/turf/my_target = pick(the_targets) - the_targets -= my_target - - for(var/j=1, j<=rand(6,8), j++) - step_towards(D, my_target) - D.reagents.reaction(get_turf(D)) - for(var/atom/t in get_turf(D)) - D.reagents.reaction(t) - sleep(2) - del(D) - - playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) - - if(reagents.has_reagent("sacid")) - message_admins("[key_name_admin(user)] fired sulphuric acid from a chem sprayer.") - log_game("[key_name(user)] fired sulphuric acid from a chem sprayer.") - if(reagents.has_reagent("pacid")) - message_admins("[key_name_admin(user)] fired Polyacid from a chem sprayer.") - log_game("[key_name(user)] fired Polyacid from a chem sprayer.") - if(reagents.has_reagent("lube")) - message_admins("[key_name_admin(user)] fired Space lube from a chem sprayer.") - log_game("[key_name(user)] fired Space lube from a chem sprayer.") - return - -// Plant-B-Gone -/obj/item/weapon/reagent_containers/spray/plantbgone // -- Skie - name = "Plant-B-Gone" - desc = "Kills those pesky weeds!" - icon = 'icons/obj/hydroponics.dmi' - icon_state = "plantbgone" - item_state = "plantbgone" - volume = 100 - - -/obj/item/weapon/reagent_containers/spray/plantbgone/New() - ..() - reagents.add_reagent("plantbgone", 100) - - -/obj/item/weapon/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob, proximity) - if(!proximity) return - - if (istype(A, /obj/machinery/hydroponics)) // We are targeting hydrotray - return - - if (istype(A, /obj/effect/blob)) // blob damage in blob code - return - - ..() \ No newline at end of file diff --git a/code/modules/research/designs.dm.bak b/code/modules/research/designs.dm.bak deleted file mode 100644 index 0c0a9068..00000000 --- a/code/modules/research/designs.dm.bak +++ /dev/null @@ -1,1893 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - -/*************************************************************** -** Design Datums ** -** All the data for building stuff and tracking reliability. ** -***************************************************************/ -/* -For the materials datum, it assumes you need reagents unless specified otherwise. To designate a material that isn't a reagent, -you use one of the material IDs below. These are NOT ids in the usual sense (they aren't defined in the object or part of a datum), -they are simply references used as part of a "has materials?" type proc. They all start with a $ to denote that they aren't reagents. -The currently supporting non-reagent materials: -- $metal (/obj/item/stack/metal). One sheet = 3750 units. -- $glass (/obj/item/stack/glass). One sheet = 3750 units. -- $plasma (/obj/item/stack/plasma). One sheet = 3750 units. -- $silver (/obj/item/stack/silver). One sheet = 3750 units. -- $gold (/obj/item/stack/gold). One sheet = 3750 units. -- $uranium (/obj/item/stack/uranium). One sheet = 3750 units. -- $diamond (/obj/item/stack/diamond). One sheet = 3750 units. -- $clown (/obj/item/stack/clown). One sheet = 3750 units. ("Bananium") -(Insert new ones here) - -Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials. - -Design Guidlines -- The reliability formula for all R&D built items is reliability_base (a fixed number) + total tech levels required to make it + -reliability_mod (starts at 0, gets improved through experimentation). Example: PACMAN generator. 79 base reliablity + 6 tech -(3 plasmatech, 3 powerstorage) + 0 (since it's completely new) = 85% reliability. Reliability is the chance it works CORRECTLY. -- When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed. -- A single sheet of anything is 3750 units of material. Materials besides metal/glass require help from other jobs (mining for -other types of metals and chemistry for reagents). -- Add the AUTOLATHE tag to - - -*/ -#define IMPRINTER 1 //For circuits. Uses glass/chemicals. -#define PROTOLATHE 2 //New stuff. Uses glass/metal/chemicals -#define AUTOLATHE 4 //Uses glass/metal only. -#define CRAFTLATHE 8 //Uses fuck if I know. For use eventually. -#define MECHFAB 16 //Remember, objects utilising this flag should have construction_time and construction_cost vars. -//Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable. - -datum/design //Datum for object designs, used in construction - var/name = "Name" //Name of the created object. - var/desc = "Desc" //Description of the created object. - var/id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols - var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements. - var/reliability_mod = 0 //Reliability modifier of the device at it's starting point. - var/reliability_base = 100 //Base reliability of a device before modifiers. - var/reliability = 100 //Reliability of the device. - var/build_type = null //Flag as to what kind machine the design is built in. See defines. - var/list/materials = list() //List of materials. Format: "id" = amount. - var/build_path = "" //The file path of the object that gets created - var/locked = 0 //If true it will spawn inside a lockbox with currently sec access - var/category = null //Primarily used for Mech Fabricators, but can be used for anything - - -//A proc to calculate the reliability of a design based on tech levels and innate modifiers. -//Input: A list of /datum/tech; Output: The new reliabilty. -datum/design/proc/CalcReliability(var/list/temp_techs) - var/new_reliability = reliability_mod + reliability_base - for(var/datum/tech/T in temp_techs) - if(T.id in req_tech) - new_reliability += T.level - new_reliability = between(reliability_base, new_reliability, 100) - reliability = new_reliability - return - - -///////////////////Computer Boards/////////////////////////////////// - -datum/design/seccamera - name = "Circuit Design (Security)" - desc = "Allows for the construction of circuit boards used to build security camera computers." - id = "seccamera" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/security" - -datum/design/aicore - name = "Circuit Design (AI Core)" - desc = "Allows for the construction of circuit boards used to build new AI cores." - id = "aicore" - req_tech = list("programming" = 4, "biotech" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aicore" - -datum/design/aiupload - name = "Circuit Design (AI Upload)" - desc = "Allows for the construction of circuit boards used to build an AI Upload Console." - id = "aiupload" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aiupload" - -datum/design/borgupload - name = "Circuit Design (Cyborg Upload)" - desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console." - id = "borgupload" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/borgupload" - -datum/design/med_data - name = "Circuit Design (Medical Records)" - desc = "Allows for the construction of circuit boards used to build a medical records console." - id = "med_data" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/med_data" - -datum/design/operating - name = "Circuit Design (Operating Computer)" - desc = "Allows for the construction of circuit boards used to build an operating computer console." - id = "operating" - req_tech = list("programming" = 2, "biotech" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/operating" - -datum/design/pandemic - name = "Circuit Design (PanD.E.M.I.C. 2200)" - desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console." - id = "pandemic" - req_tech = list("programming" = 2, "biotech" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pandemic" - -datum/design/scan_console - name = "Circuit Design (DNA Machine)" - desc = "Allows for the construction of circuit boards used to build a new DNA scanning console." - id = "scan_console" - req_tech = list("programming" = 2, "biotech" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/scan_consolenew" - -datum/design/comconsole - name = "Circuit Design (Communications)" - desc = "Allows for the construction of circuit boards used to build a communications console." - id = "comconsole" - req_tech = list("programming" = 2, "magnets" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/communications" - -datum/design/idcardconsole - name = "Circuit Design (ID Computer)" - desc = "Allows for the construction of circuit boards used to build an ID computer." - id = "idcardconsole" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/card" - -datum/design/crewconsole - name = "Circuit Design (Crew monitoring computer)" - desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer." - id = "crewconsole" - req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/crew" - -datum/design/teleconsole - name = "Circuit Design (Teleporter Console)" - desc = "Allows for the construction of circuit boards used to build a teleporter control console." - id = "teleconsole" - req_tech = list("programming" = 3, "bluespace" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/teleporter" - -datum/design/secdata - name = "Circuit Design (Security Records Console)" - desc = "Allows for the construction of circuit boards used to build a security records console." - id = "secdata" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/secure_data" - -datum/design/atmosalerts - name = "Circuit Design (Atmosphere Alert)" - desc = "Allows for the construction of circuit boards used to build an atmosphere alert console.." - id = "atmosalerts" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/atmos_alert" - -datum/design/air_management - name = "Circuit Design (Atmospheric Monitor)" - desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor." - id = "air_management" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/air_management" - -/* Uncomment if someone makes these buildable -datum/design/general_alert - name = "Circuit Design (General Alert Console)" - desc = "Allows for the construction of circuit boards used to build a General Alert console." - id = "general_alert" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/general_alert" -*/ - -datum/design/robocontrol - name = "Circuit Design (Robotics Control Console)" - desc = "Allows for the construction of circuit boards used to build a Robotics Control console." - id = "robocontrol" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/robotics" - -datum/design/clonecontrol - name = "Circuit Design (Cloning Machine Console)" - desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." - id = "clonecontrol" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/cloning" - -datum/design/clonepod - name = "Circuit Design (Clone Pod)" - desc = "Allows for the construction of circuit boards used to build a Cloning Pod." - id = "clonepod" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/clonepod" - -datum/design/clonescanner - name = "Circuit Design (Cloning Scanner)" - desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." - id = "clonescanner" - req_tech = list("programming" = 3, "biotech" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/clonescanner" - -datum/design/arcademachine - name = "Circuit Design (Arcade Machine)" - desc = "Allows for the construction of circuit boards used to build a new arcade machine." - id = "arcademachine" - req_tech = list("programming" = 1) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/arcade" - -datum/design/powermonitor - name = "Circuit Design (Power Monitor)" - desc = "Allows for the construction of circuit boards used to build a new power monitor" - id = "powermonitor" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/powermonitor" - -datum/design/solarcontrol - name = "Circuit Design (Solar Control)" - desc = "Allows for the construction of circuit boards used to build a solar control console" - id = "solarcontrol" - req_tech = list("programming" = 2, "powerstorage" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/solar_control" - -datum/design/prisonmanage - name = "Circuit Design (Prisoner Management Console)" - desc = "Allows for the construction of circuit boards used to build a prisoner management console." - id = "prisonmanage" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/prisoner" - -datum/design/mechacontrol - name = "Circuit Design (Exosuit Control Console)" - desc = "Allows for the construction of circuit boards used to build an exosuit control console." - id = "mechacontrol" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha_control" - -datum/design/mechapower - name = "Circuit Design (Mech Bay Power Control Console)" - desc = "Allows for the construction of circuit boards used to build a mech bay power control console." - id = "mechapower" - req_tech = list("programming" = 2, "powerstorage" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mech_bay_power_console" - -datum/design/rdconsole - name = "Circuit Design (R&D Console)" - desc = "Allows for the construction of circuit boards used to build a new R&D console." - id = "rdconsole" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdconsole" - -datum/design/ordercomp - name = "Circuit Design (Supply ordering console)" - desc = "Allows for the construction of circuit boards used to build a Supply ordering console." - id = "ordercomp" - req_tech = list("programming" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/ordercomp" - -datum/design/supplycomp - name = "Circuit Design (Supply shuttle console)" - desc = "Allows for the construction of circuit boards used to build a Supply shuttle console." - id = "supplycomp" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/supplycomp" - -datum/design/comm_monitor - name = "Circuit Design (Telecommunications Monitoring Console)" - desc = "Allows for the construction of circuit boards used to build a telecommunications monitor." - id = "comm_monitor" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_monitor" - -datum/design/comm_server - name = "Circuit Design (Telecommunications Server Monitoring Console)" - desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor." - id = "comm_server" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_server" - -datum/design/message_monitor - name = "Circuit Design (Messaging Monitor Console)" - desc = "Allows for the construction of circuit boards used to build a messaging monitor console." - id = "message_monitor" - req_tech = list("programming" = 5) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/message_monitor" - -datum/design/aifixer - name = "Circuit Design (AI Integrity Restorer)" - desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer." - id = "aifixer" - req_tech = list("programming" = 3, "biotech" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aifixer" - -datum/design/comm_traffic - name = "Circuitboard (Telecommunications Traffic Control)" - desc = "Allows for the construction of circuit boards used to build a Telecomms Traffic Computer." - id = "comm_traffic" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_traffic" - -/////////////////////////////////// -//////////AI Module Disks////////// -/////////////////////////////////// -datum/design/safeguard_module - name = "Module Design (Safeguard)" - desc = "Allows for the construction of a Safeguard AI Module." - id = "safeguard_module" - req_tech = list("programming" = 3, "materials" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/safeguard" - -datum/design/onehuman_module - name = "Module Design (OneHuman)" - desc = "Allows for the construction of a OneHuman AI Module." - id = "onehuman_module" - req_tech = list("programming" = 4, "materials" = 6) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/oneHuman" - -datum/design/protectstation_module - name = "Module Design (ProtectStation)" - desc = "Allows for the construction of a ProtectStation AI Module." - id = "protectstation_module" - req_tech = list("programming" = 3, "materials" = 6) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/protectStation" - -datum/design/notele_module - name = "Module Design (TeleporterOffline Module)" - desc = "Allows for the construction of a TeleporterOffline AI Module." - id = "notele_module" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/teleporterOffline" - -datum/design/quarantine_module - name = "Module Design (Quarantine)" - desc = "Allows for the construction of a Quarantine AI Module." - id = "quarantine_module" - req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/quarantine" - -datum/design/oxygen_module - name = "Module Design (OxygenIsToxicToHumans)" - desc = "Allows for the construction of a Safeguard AI Module." - id = "oxygen_module" - req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/oxygen" - -datum/design/freeform_module - name = "Module Design (Freeform)" - desc = "Allows for the construction of a Freeform AI Module." - id = "freeform_module" - req_tech = list("programming" = 4, "materials" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/freeform" - -datum/design/reset_module - name = "Module Design (Reset)" - desc = "Allows for the construction of a Reset AI Module." - id = "reset_module" - req_tech = list("programming" = 3, "materials" = 6) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/reset" - -datum/design/purge_module - name = "Module Design (Purge)" - desc = "Allows for the construction of a Purge AI Module." - id = "purge_module" - req_tech = list("programming" = 4, "materials" = 6) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/purge" - -datum/design/freeformcore_module - name = "Core Module Design (Freeform)" - desc = "Allows for the construction of a Freeform AI Core Module." - id = "freeformcore_module" - req_tech = list("programming" = 4, "materials" = 6) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/freeformcore" - -datum/design/asimov - name = "Core Module Design (Asimov)" - desc = "Allows for the construction of a Asimov AI Core Module." - id = "asimov_module" - req_tech = list("programming" = 3, "materials" = 6) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/asimov" - -datum/design/paladin_module - name = "Core Module Design (P.A.L.A.D.I.N.)" - desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module." - id = "paladin_module" - req_tech = list("programming" = 4, "materials" = 6) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/paladin" - -datum/design/tyrant_module - name = "Core Module Design (T.Y.R.A.N.T.)" - desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module." - id = "tyrant_module" - req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/tyrant" - - - -/////////////////////////////////// -/////Subspace Telecomms//////////// -/////////////////////////////////// -datum/design/subspace_receiver - name = "Circuit Design (Subspace Receiver)" - desc = "Allows for the construction of Subspace Receiver equipment." - id = "s-receiver" - req_tech = list("programming" = 4, "engineering" = 3, "bluespace" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/receiver" - -datum/design/telecomms_bus - name = "Circuit Design (Bus Mainframe)" - desc = "Allows for the construction of Telecommunications Bus Mainframes." - id = "s-bus" - req_tech = list("programming" = 4, "engineering" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/bus" - -datum/design/telecomms_hub - name = "Circuit Design (Hub Mainframe)" - desc = "Allows for the construction of Telecommunications Hub Mainframes." - id = "s-hub" - req_tech = list("programming" = 4, "engineering" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/hub" - -datum/design/telecomms_relay - name = "Circuit Design (Relay Mainframe)" - desc = "Allows for the construction of Telecommunications Relay Mainframes." - id = "s-relay" - req_tech = list("programming" = 3, "engineering" = 4, "bluespace" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/relay" - -datum/design/telecomms_processor - name = "Circuit Design (Processor Unit)" - desc = "Allows for the construction of Telecommunications Processor equipment." - id = "s-processor" - req_tech = list("programming" = 4, "engineering" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/processor" - -datum/design/telecomms_server - name = "Circuit Design (Server Mainframe)" - desc = "Allows for the construction of Telecommunications Servers." - id = "s-server" - req_tech = list("programming" = 4, "engineering" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/server" - -datum/design/subspace_broadcaster - name = "Circuit Design (Subspace Broadcaster)" - desc = "Allows for the construction of Subspace Broadcasting equipment." - id = "s-broadcaster" - req_tech = list("programming" = 4, "engineering" = 4, "bluespace" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/broadcaster" - - -/////////////////////////////////// -/////Non-Board Computer Stuff////// -/////////////////////////////////// - -datum/design/intellicard - name = "Intellicard AI Transportation System" - desc = "Allows for the construction of an intellicard." - id = "intellicard" - req_tech = list("programming" = 4, "materials" = 4) - build_type = PROTOLATHE - materials = list("$glass" = 1000, "$gold" = 200) - build_path = "/obj/item/device/aicard" - -datum/design/paicard - name = "Personal Artificial Intelligence Card" - desc = "Allows for the construction of a pAI Card" - id = "paicard" - req_tech = list("programming" = 2) - build_type = PROTOLATHE - materials = list("$glass" = 500, "$metal" = 500) - build_path = "/obj/item/device/paicard" - -datum/design/posibrain - name = "Positronic Brain" - desc = "Allows for the construction of a positronic brain" - id = "posibrain" - req_tech = list("engineering" = 4, "materials" = 6, "bluespace" = 2, "programming" = 4) - - build_type = PROTOLATHE - materials = list("$metal" = 2000, "$glass" = 1000, "$silver" = 1000, "$gold" = 500, "$plasma" = 500, "$diamond" = 100) - build_path = "/obj/item/device/mmi/posibrain" - -/////////////////////////////////// -//////////Mecha Module Disks/////// -/////////////////////////////////// - -datum/design/ripley_main - name = "Circuit Design (APLU \"Ripley\" Central Control module)" - desc = "Allows for the construction of a \"Ripley\" Central Control module." - id = "ripley_main" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/ripley/main" - -datum/design/ripley_peri - name = "Circuit Design (APLU \"Ripley\" Peripherals Control module)" - desc = "Allows for the construction of a \"Ripley\" Peripheral Control module." - id = "ripley_peri" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/ripley/peripherals" - -datum/design/odysseus_main - name = "Circuit Design (\"Odysseus\" Central Control module)" - desc = "Allows for the construction of a \"Odysseus\" Central Control module." - id = "odysseus_main" - req_tech = list("programming" = 3,"biotech" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/main" - -datum/design/odysseus_peri - name = "Circuit Design (\"Odysseus\" Peripherals Control module)" - desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module." - id = "odysseus_peri" - req_tech = list("programming" = 3,"biotech" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/peripherals" - -datum/design/gygax_main - name = "Circuit Design (\"Gygax\" Central Control module)" - desc = "Allows for the construction of a \"Gygax\" Central Control module." - id = "gygax_main" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/main" - -datum/design/gygax_peri - name = "Circuit Design (\"Gygax\" Peripherals Control module)" - desc = "Allows for the construction of a \"Gygax\" Peripheral Control module." - id = "gygax_peri" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/peripherals" - -datum/design/gygax_targ - name = "Circuit Design (\"Gygax\" Weapons & Targeting Control module)" - desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module." - id = "gygax_targ" - req_tech = list("programming" = 4, "combat" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/targeting" - -datum/design/durand_main - name = "Circuit Design (\"Durand\" Central Control module)" - desc = "Allows for the construction of a \"Durand\" Central Control module." - id = "durand_main" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/main" - -datum/design/durand_peri - name = "Circuit Design (\"Durand\" Peripherals Control module)" - desc = "Allows for the construction of a \"Durand\" Peripheral Control module." - id = "durand_peri" - req_tech = list("programming" = 4) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/peripherals" - -datum/design/durand_targ - name = "Circuit Design (\"Durand\" Weapons & Targeting Control module)" - desc = "Allows for the construction of a \"Durand\" Weapons & Targeting Control module." - id = "durand_targ" - req_tech = list("programming" = 4, "combat" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/targeting" - -datum/design/honker_main - name = "Circuit Design (\"H.O.N.K\" Central Control module)" - desc = "Allows for the construction of a \"H.O.N.K\" Central Control module." - id = "honker_main" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/main" - -datum/design/honker_peri - name = "Circuit Design (\"H.O.N.K\" Peripherals Control module)" - desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module." - id = "honker_peri" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/peripherals" - -datum/design/honker_targ - name = "Circuit Design (\"H.O.N.K\" Weapons & Targeting Control module)" - desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module." - id = "honker_targ" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/targeting" - -//////////////////////////////////////// -/////////// Mecha Equpment ///////////// -//////////////////////////////////////// - -datum/design/mech_scattershot - name = "Exosuit Weapon Design (LBX AC 10 \"Scattershot\")" - desc = "Allows for the construction of LBX AC 10." - id = "mech_scattershot" - build_type = MECHFAB - req_tech = list("combat" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot" - category = "Exosuit Equipment" - -datum/design/mech_laser - name = "Exosuit Weapon Design (CH-PS \"Immolator\" Laser)" - desc = "Allows for the construction of CH-PS Laser." - id = "mech_laser" - build_type = MECHFAB - req_tech = list("combat" = 3, "magnets" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser" - category = "Exosuit Equipment" - -datum/design/mech_laser_heavy - name = "Exosuit Weapon Design (CH-LC \"Solaris\" Laser Cannon)" - desc = "Allows for the construction of CH-LC Laser Cannon." - id = "mech_laser_heavy" - build_type = MECHFAB - req_tech = list("combat" = 4, "magnets" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy" - category = "Exosuit Equipment" - -datum/design/mech_grenade_launcher - name = "Exosuit Weapon Design (SGL-6 Grenade Launcher)" - desc = "Allows for the construction of SGL-6 Grenade Launcher." - id = "mech_grenade_launcher" - build_type = MECHFAB - req_tech = list("combat" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang" - category = "Exosuit Equipment" - -datum/design/clusterbang_launcher - name = "Exosuit Module Design (SOP-6 Clusterbang Launcher)" - desc = "A weapon that violates the Geneva Convention at 6 rounds per minute" - id = "clusterbang_launcher" - build_type = MECHFAB - req_tech = list("combat"= 5, "materials" = 5, "syndicate" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited" - category = "Exosuit Equipment" - -datum/design/mech_wormhole_gen - name = "Exosuit Module Design (Localized Wormhole Generator)" - desc = "An exosuit module that allows generating of small quasi-stable wormholes." - id = "mech_wormhole_gen" - build_type = MECHFAB - req_tech = list("bluespace" = 3, "magnets" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/wormhole_generator" - category = "Exosuit Equipment" - -datum/design/mech_teleporter - name = "Exosuit Module Design (Teleporter Module)" - desc = "An exosuit module that allows exosuits to teleport to any position in view." - id = "mech_teleporter" - build_type = MECHFAB - req_tech = list("bluespace" = 10, "magnets" = 5) - build_path = "/obj/item/mecha_parts/mecha_equipment/teleporter" - category = "Exosuit Equipment" - -datum/design/mech_rcd - name = "Exosuit Module Design (RCD Module)" - desc = "An exosuit-mounted Rapid Construction Device." - id = "mech_rcd" - build_type = MECHFAB - req_tech = list("materials" = 4, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/rcd" - category = "Exosuit Equipment" - -datum/design/mech_gravcatapult - name = "Exosuit Module Design (Gravitational Catapult Module)" - desc = "An exosuit mounted Gravitational Catapult." - id = "mech_gravcatapult" - build_type = MECHFAB - req_tech = list("bluespace" = 2, "magnets" = 3, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/gravcatapult" - category = "Exosuit Equipment" - -datum/design/mech_repair_droid - name = "Exosuit Module Design (Repair Droid Module)" - desc = "Automated Repair Droid. BEEP BOOP" - id = "mech_repair_droid" - build_type = MECHFAB - req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/repair_droid" - category = "Exosuit Equipment" - -datum/design/mech_plasma_generator - name = "Exosuit Module Design (Plasma Converter Module)" - desc = "Exosuit-mounted plasma converter." - id = "mech_plasma_generator" - build_type = MECHFAB - req_tech = list("plasmatech" = 2, "powerstorage"= 2, "engineering" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/plasma_generator" - category = "Exosuit Equipment" - -datum/design/mech_energy_relay - name = "Exosuit Module Design (Tesla Energy Relay)" - desc = "Tesla Energy Relay" - id = "mech_energy_relay" - build_type = MECHFAB - req_tech = list("magnets" = 4, "powerstorage" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay" - category = "Exosuit Equipment" - -datum/design/mech_ccw_armor - name = "Exosuit Module Design(Reactive Armor Booster Module)" - desc = "Exosuit-mounted armor booster." - id = "mech_ccw_armor" - build_type = MECHFAB - req_tech = list("materials" = 5, "combat" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster" - category = "Exosuit Equipment" - -datum/design/mech_proj_armor - name = "Exosuit Module Design(Reflective Armor Booster Module)" - desc = "Exosuit-mounted armor booster." - id = "mech_proj_armor" - build_type = MECHFAB - req_tech = list("materials" = 5, "combat" = 5, "engineering"=3) - build_path = "/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster" - category = "Exosuit Equipment" - -datum/design/mech_syringe_gun - name = "Exosuit Module Design(Syringe Gun)" - desc = "Exosuit-mounted syringe gun and chemical synthesizer." - id = "mech_syringe_gun" - build_type = MECHFAB - req_tech = list("materials" = 3, "biotech"=4, "magnets"=4, "programming"=3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun" - category = "Exosuit Equipment" - -datum/design/mech_diamond_drill - name = "Exosuit Module Design (Diamond Mining Drill)" - desc = "An upgraded version of the standard drill" - id = "mech_diamond_drill" - build_type = MECHFAB - req_tech = list("materials" = 4, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill" - category = "Exosuit Equipment" - -datum/design/mech_generator_nuclear - name = "Exosuit Module Design (ExoNuclear Reactor)" - desc = "Compact nuclear reactor module" - id = "mech_generator_nuclear" - build_type = MECHFAB - req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/generator/nuclear" - category = "Exosuit Equipment" - - -//////////////////////////////////////// -//////////Disk Construction Disks/////// -//////////////////////////////////////// -datum/design/design_disk - name = "Design Storage Disk" - desc = "Produce additional disks for storing device designs." - id = "design_disk" - req_tech = list("programming" = 1) - build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 30, "$glass" = 10) - build_path = "/obj/item/weapon/disk/design_disk" - -datum/design/tech_disk - name = "Technology Data Storage Disk" - desc = "Produce additional disks for storing technology data." - id = "tech_disk" - req_tech = list("programming" = 1) - build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 30, "$glass" = 10) - build_path = "/obj/item/weapon/disk/tech_disk" - -//////////////////////////////////////// -/////////////Stock Parts//////////////// -//////////////////////////////////////// - -datum/design/basic_capacitor - name = "Basic Capacitor" - desc = "A stock part used in the construction of various devices." - id = "basic_capacitor" - req_tech = list("powerstorage" = 1) - build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/stock_parts/capacitor" - -datum/design/basic_sensor - name = "Basic Sensor Module" - desc = "A stock part used in the construction of various devices." - id = "basic_sensor" - req_tech = list("magnets" = 1) - build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 50, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/scanning_module" - -datum/design/micro_mani - name = "Micro Manipulator" - desc = "A stock part used in the construction of various devices." - id = "micro_mani" - req_tech = list("materials" = 1, "programming" = 1) - build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 30) - build_path = "/obj/item/weapon/stock_parts/manipulator" - -datum/design/basic_micro_laser - name = "Basic Micro-Laser" - desc = "A stock part used in the construction of various devices." - id = "basic_micro_laser" - req_tech = list("magnets" = 1) - build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 10, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/micro_laser" - -datum/design/basic_matter_bin - name = "Basic Matter Bin" - desc = "A stock part used in the construction of various devices." - id = "basic_matter_bin" - req_tech = list("materials" = 1) - build_type = PROTOLATHE | AUTOLATHE - materials = list("$metal" = 80) - build_path = "/obj/item/weapon/stock_parts/matter_bin" - -datum/design/adv_capacitor - name = "Advanced Capacitor" - desc = "A stock part used in the construction of various devices." - id = "adv_capacitor" - req_tech = list("powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/stock_parts/capacitor/adv" - -datum/design/adv_sensor - name = "Advanced Sensor Module" - desc = "A stock part used in the construction of various devices." - id = "adv_sensor" - req_tech = list("magnets" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/scanning_module/adv" - -datum/design/nano_mani - name = "Nano Manipulator" - desc = "A stock part used in the construction of various devices." - id = "nano_mani" - req_tech = list("materials" = 3, "programming" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 30) - build_path = "/obj/item/weapon/stock_parts/manipulator/nano" - -datum/design/high_micro_laser - name = "High-Power Micro-Laser" - desc = "A stock part used in the construction of various devices." - id = "high_micro_laser" - req_tech = list("magnets" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 10, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/micro_laser/high" - -datum/design/adv_matter_bin - name = "Advanced Matter Bin" - desc = "A stock part used in the construction of various devices." - id = "adv_matter_bin" - req_tech = list("materials" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 80) - build_path = "/obj/item/weapon/stock_parts/matter_bin/adv" - -datum/design/super_capacitor - name = "Super Capacitor" - desc = "A stock part used in the construction of various devices." - id = "super_capacitor" - req_tech = list("powerstorage" = 5, "materials" = 4) - build_type = PROTOLATHE - reliability_base = 71 - materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20) - build_path = "/obj/item/weapon/stock_parts/capacitor/super" - -datum/design/phasic_sensor - name = "Phasic Sensor Module" - desc = "A stock part used in the construction of various devices." - id = "phasic_sensor" - req_tech = list("magnets" = 5, "materials" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10) - reliability_base = 72 - build_path = "/obj/item/weapon/stock_parts/scanning_module/phasic" - -datum/design/pico_mani - name = "Pico Manipulator" - desc = "A stock part used in the construction of various devices." - id = "pico_mani" - req_tech = list("materials" = 5, "programming" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 30) - reliability_base = 73 - build_path = "/obj/item/weapon/stock_parts/manipulator/pico" - -datum/design/ultra_micro_laser - name = "Ultra-High-Power Micro-Laser" - desc = "A stock part used in the construction of various devices." - id = "ultra_micro_laser" - req_tech = list("magnets" = 5, "materials" = 5) - build_type = PROTOLATHE - materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10) - reliability_base = 70 - build_path = "/obj/item/weapon/stock_parts/micro_laser/ultra" - -datum/design/super_matter_bin - name = "Super Matter Bin" - desc = "A stock part used in the construction of various devices." - id = "super_matter_bin" - req_tech = list("materials" = 5) - build_type = PROTOLATHE - materials = list("$metal" = 80) - reliability_base = 75 - build_path = "/obj/item/weapon/stock_parts/matter_bin/super" - - - -datum/design/subspace_ansible - name = "Subspace Ansible" - desc = "A compact module capable of sensing extradimensional activity." - id = "s-ansible" - req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 80, "$silver" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/ansible" - -datum/design/hyperwave_filter - name = "Hyperwave Filter" - desc = "A tiny device capable of filtering and converting super-intense radiowaves." - id = "s-filter" - req_tech = list("programming" = 3, "magnets" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 40, "$silver" = 10) - build_path = "/obj/item/weapon/stock_parts/subspace/filter" - -datum/design/subspace_amplifier - name = "Subspace Amplifier" - desc = "A compact micro-machine capable of amplifying weak subspace transmissions." - id = "s-amplifier" - req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/amplifier" - -datum/design/subspace_treatment - name = "Subspace Treatment Disk" - desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves." - id = "s-treatment" - req_tech = list("programming" = 3, "magnets" = 2, "materials" = 4, "bluespace" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 10, "$silver" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/treatment" - -datum/design/subspace_analyzer - name = "Subspace Analyzer" - desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." - id = "s-analyzer" - req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 10, "$gold" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/analyzer" - -datum/design/subspace_crystal - name = "Ansible Crystal" - desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths." - id = "s-crystal" - req_tech = list("magnets" = 4, "materials" = 4, "bluespace" = 2) - build_type = PROTOLATHE - materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/crystal" - -datum/design/subspace_transmitter - name = "Subspace Transmitter" - desc = "A large piece of equipment used to open a window into the subspace dimension." - id = "s-transmitter" - req_tech = list("magnets" = 5, "materials" = 5, "bluespace" = 3) - build_type = PROTOLATHE - materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/transmitter" - -//////////////////////////////////////// -//////////////////Power///////////////// -//////////////////////////////////////// - -datum/design/basic_cell - name = "Basic Power Cell" - desc = "A basic power cell that holds 1000 units of energy" - id = "basic_cell" - req_tech = list("powerstorage" = 1) - build_type = PROTOLATHE | AUTOLATHE |MECHFAB - materials = list("$metal" = 700, "$glass" = 50) - build_path = "/obj/item/weapon/cell" - category = "Misc" - -datum/design/high_cell - name = "High-Capacity Power Cell" - desc = "A power cell that holds 10000 units of energy" - id = "high_cell" - req_tech = list("powerstorage" = 2) - build_type = PROTOLATHE | AUTOLATHE | MECHFAB - materials = list("$metal" = 700, "$glass" = 60) - build_path = "/obj/item/weapon/cell/high" - category = "Misc" - -datum/design/super_cell - name = "Super-Capacity Power Cell" - desc = "A power cell that holds 20000 units of energy" - id = "super_cell" - req_tech = list("powerstorage" = 3, "materials" = 2) - reliability_base = 75 - build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 700, "$glass" = 70) - build_path = "/obj/item/weapon/cell/super" - category = "Misc" - -datum/design/hyper_cell - name = "Hyper-Capacity Power Cell" - desc = "A power cell that holds 30000 units of energy" - id = "hyper_cell" - req_tech = list("powerstorage" = 5, "materials" = 4) - reliability_base = 70 - build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) - build_path = "/obj/item/weapon/cell/hyper" - category = "Misc" - -datum/design/light_replacer - name = "Light Replacer" - desc = "A device to automatically replace lights. Refill with working lightbulbs." - id = "light_replacer" - req_tech = list("magnets" = 3, "materials" = 4) - build_type = PROTOLATHE - materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000) - build_path = "/obj/item/device/lightreplacer" - -datum/design/heavy_flashlight - name = "heavy duty flashlight" - desc = "A high-luminosity flashlight for specialist duties." - id = "heavy_flashlight" - req_tech = list("powerstorage" = 4, "materials" = 3, "engineering" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 2000, "$glass" = 4000) - build_path = "/obj/item/device/flashlight/heavy" - -//////////////////////////////////////// -//////////////MISC Boards/////////////// -//////////////////////////////////////// - -datum/design/destructive_analyzer - name = "Destructive Analyzer Board" - desc = "The circuit board for a destructive analyzer." - id = "destructive_analyzer" - req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/destructive_analyzer" - -datum/design/protolathe - name = "Protolathe Board" - desc = "The circuit board for a protolathe." - id = "protolathe" - req_tech = list("programming" = 2, "engineering" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/protolathe" - -datum/design/circuit_imprinter - name = "Circuit Imprinter Board" - desc = "The circuit board for a circuit imprinter." - id = "circuit_imprinter" - req_tech = list("programming" = 2, "engineering" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/circuit_imprinter" - -datum/design/autolathe - name = "Autolathe Board" - desc = "The circuit board for a autolathe." - id = "autolathe" - req_tech = list("programming" = 2, "engineering" = 2) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/autolathe" - -datum/design/rdservercontrol - name = "R&D Server Control Console Board" - desc = "The circuit board for a R&D Server Control Console" - id = "rdservercontrol" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdservercontrol" - -datum/design/rdserver - name = "R&D Server Board" - desc = "The circuit board for an R&D Server" - id = "rdserver" - req_tech = list("programming" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdserver" - -datum/design/mechfab - name = "Exosuit Fabricator Board" - desc = "The circuit board for an Exosuit Fabricator" - id = "mechfab" - req_tech = list("programming" = 3, "engineering" = 3) - build_type = IMPRINTER - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mechfab" - - -///////////////////////////////////////// -////////////Power Stuff////////////////// -///////////////////////////////////////// - -datum/design/pacman - name = "PACMAN-type Generator Board" - desc = "The circuit board that for a PACMAN-type portable generator." - id = "pacman" - req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3) - build_type = IMPRINTER - reliability_base = 79 - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman" - -datum/design/superpacman - name = "SUPERPACMAN-type Generator Board" - desc = "The circuit board that for a SUPERPACMAN-type portable generator." - id = "superpacman" - req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4) - build_type = IMPRINTER - reliability_base = 76 - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman/super" - -datum/design/mrspacman - name = "MRSPACMAN-type Generator Board" - desc = "The circuit board that for a MRSPACMAN-type portable generator." - id = "mrspacman" - req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5) - build_type = IMPRINTER - reliability_base = 74 - materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman/mrs" - - -///////////////////////////////////////// -////////////Medical Tools//////////////// -///////////////////////////////////////// - -datum/design/mass_spectrometer - name = "Mass-Spectrometer" - desc = "A device for analyzing chemicals in the blood." - id = "mass_spectrometer" - req_tech = list("biotech" = 2, "magnets" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 - build_path = "/obj/item/device/mass_spectrometer" - -datum/design/adv_mass_spectrometer - name = "Advanced Mass-Spectrometer" - desc = "A device for analyzing chemicals in the blood and their quantities." - id = "adv_mass_spectrometer" - req_tech = list("biotech" = 2, "magnets" = 4) - build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 74 - build_path = "/obj/item/device/mass_spectrometer/adv" - -datum/design/reagent_scanner - name = "Reagent Scanner" - desc = "A device for identifying chemicals." - id = "reagent_scanner" - req_tech = list("biotech" = 2, "magnets" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 76 - build_path = "/obj/item/device/reagent_scanner" - -datum/design/adv_reagent_scanner - name = "Advanced Reagent Scanner" - desc = "A device for identifying chemicals and their proportions." - id = "adv_reagent_scanner" - req_tech = list("biotech" = 2, "magnets" = 4) - build_type = PROTOLATHE - materials = list("$metal" = 30, "$glass" = 20) - reliability_base = 74 - build_path = "/obj/item/device/reagent_scanner/adv" - -datum/design/mmi - name = "Man-Machine Interface" - desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." - id = "mmi" - req_tech = list("programming" = 2, "biotech" = 3) - build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 1000, "$glass" = 500) - reliability_base = 76 - build_path = "/obj/item/device/mmi" - category = "Misc" - -datum/design/mmi_radio - name = "Radio-enabled Man-Machine Interface" - desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio." - id = "mmi_radio" - req_tech = list("programming" = 2, "biotech" = 4) - build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 1200, "$glass" = 500) - reliability_base = 74 - build_path = "/obj/item/device/mmi/radio_enabled" - category = "Misc" - -datum/design/synthetic_flash - name = "Synthetic Flash" - desc = "When a problem arises, SCIENCE is the solution." - id = "sflash" - req_tech = list("magnets" = 3, "combat" = 2) - build_type = MECHFAB - materials = list("$metal" = 750, "$glass" = 750) - reliability_base = 76 - build_path = "/obj/item/device/flash/synthetic" - category = "Misc" - -datum/design/nanopaste - name = "nanopaste" - desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery." - id = "nanopaste" - req_tech = list("materials" = 4, "engineering" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 7000, "$glass" = 7000) - build_path = "/obj/item/stack/nanopaste" - -datum/design/implant_loyal - name = "loyalty implant" - desc = "Makes you loyal or such." - id = "implant_loyal" - req_tech = list("materials" = 2, "biotech" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 7000, "$glass" = 7000) - build_path = "/obj/item/weapon/implantcase/loyalty" - -datum/design/implant_chem - name = "chemical implant" - desc = "Injects things." - id = "implant_chem" - req_tech = list("materials" = 2, "biotech" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/implantcase/chem" - -datum/design/implant_free - name = "freedom implant" - desc = "Use this to escape from those evil Red Shirts." - id = "implant_free" - req_tech = list("syndicate" = 2, "biotech" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/implantcase/freedom" - -datum/design/implant_death_alarm - name = "death alarm implant" - desc = "Alerts others to your death." - id = "implant_death_alarm" - req_tech = list("materials" = 2, "biotech" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/implantcase/death_alarm" - -datum/design/chameleon - name = "Chameleon Jumpsuit" - desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." - id = "chameleon" - req_tech = list("syndicate" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 500) - build_path = "/obj/item/clothing/under/chameleon" - - -datum/design/bluespacebeaker - name = "bluespace beaker" - desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." - id = "bluespacebeaker" - req_tech = list("bluespace" = 2, "materials" = 6) - build_type = PROTOLATHE - materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500) - reliability_base = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/bluespace" - -datum/design/noreactbeaker - name = "cryostasis beaker" - desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." - id = "splitbeaker" - req_tech = list("materials" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 3000) - reliability_base = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/noreact" - category = "Misc" -///////////////////////////////////////// -/////////////////Weapons///////////////// -///////////////////////////////////////// - -datum/design/nuclear_gun - name = "Advanced Energy Gun" - desc = "An energy gun with an experimental miniaturized reactor." - id = "nuclear_gun" - req_tech = list("combat" = 3, "materials" = 5, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 500) - reliability_base = 76 - build_path = "/obj/item/weapon/gun/energy/gun/nuclear" - locked = 1 - -datum/design/stunrevolver - name = "Stun Revolver" - desc = "The prize of the Head of Security." - id = "stunrevolver" - req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 4000) - build_path = "/obj/item/weapon/gun/energy/stunrevolver" - locked = 1 - -datum/design/lasercannon - name = "Laser Cannon" - desc = "A heavy duty laser cannon." - id = "lasercannon" - req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 10000, "$glass" = 1000, "$diamond" = 2000) - build_path = "/obj/item/weapon/gun/energy/rifle/lasercannon" - locked = 1 - -datum/design/decloner - name = "Decloner" - desc = "Your opponent will bubble into a messy pile of goop." - id = "decloner" - req_tech = list("combat" = 8, "materials" = 7, "biotech" = 5, "powerstorage" = 6) - build_type = PROTOLATHE - materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40) - build_path = "/obj/item/weapon/gun/energy/decloner" - locked = 1 - -datum/design/chemsprayer - name = "Chem Sprayer" - desc = "An advanced chem spraying device." - id = "chemsprayer" - req_tech = list("materials" = 3, "engineering" = 3, "biotech" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1000) - reliability_base = 100 - build_path = "/obj/item/weapon/reagent_containers/spray/chemsprayer" - -datum/design/rapidsyringe - name = "Rapid Syringe Gun" - desc = "A gun that fires many syringes." - id = "rapidsyringe" - req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1000) - build_path = "/obj/item/weapon/gun/syringe/rapidsyringe" - -datum/design/largecrossbow - name = "Energy Crossbow" - desc = "A weapon favoured by syndicate infiltration teams." - id = "largecrossbow" - req_tech = list("combat" = 4, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 1000, "$silver" = 1000) - build_path = "/obj/item/weapon/gun/energy/crossbow/largecrossbow" - -datum/design/temp_gun - name = "Temperature Gun" - desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want - id = "temp_gun" - req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000) - build_path = "/obj/item/weapon/gun/energy/temperature" - locked = 1 - -datum/design/flora_gun - name = "Floral Somatoray" - desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life." - id = "flora_gun" - req_tech = list("materials" = 2, "biotech" = 3, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 2000, "$glass" = 500, "$uranium" = 500) - build_path = "/obj/item/weapon/gun/energy/floragun" - -datum/design/large_grenade - name = "Large Grenade" - desc = "A grenade that affects a larger area and use larger containers." - id = "large_Grenade" - req_tech = list("combat" = 3, "materials" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 3000) - reliability_base = 79 - build_path = "/obj/item/weapon/grenade/chem_grenade/large" - -datum/design/smg - name = "Submachine Gun" - desc = "A lightweight, fast firing gun." - id = "smg" - req_tech = list("combat" = 4, "materials" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000) - build_path = "/obj/item/weapon/gun/projectile/automatic" - locked = 1 - -datum/design/ammo_9mm - name = "Ammunition Box (9mm)" - desc = "A box of prototype 9mm ammunition." - id = "ammo_9mm" - req_tech = list("combat" = 4, "materials" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 3750, "$silver" = 100) - build_path = "/obj/item/ammo_magazine/c9mm" - -datum/design/stunshell - name = "Stun Shell" - desc = "A stunning shell for a shotgun." - id = "stunshell" - req_tech = list("combat" = 3, "materials" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 4000) - build_path = "/obj/item/ammo_casing/shotgun/stunshell" - -datum/design/plasmapistol - name = "plasma pistol" - desc = "A specialized firearm designed to fire lethal bolts of toxins." - id = "ppistol" - req_tech = list("combat" = 5, "plasmatech" = 4) - build_type = PROTOLATHE - materials = list("$metal" = 5000, "$glass" = 1000, "$plasma" = 3000) - build_path = "/obj/item/weapon/gun/energy/toxgun" -///////////////////////////////////////// -/////////////////Mining////////////////// -///////////////////////////////////////// - -datum/design/jackhammer - name = "Sonic Jackhammer" - desc = "Cracks rocks with sonic blasts, perfect for killing cave lizards." - id = "jackhammer" - req_tech = list("materials" = 3, "powerstorage" = 2, "engineering" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 2000, "$glass" = 500, "$silver" = 500) - build_path = "/obj/item/weapon/pickaxe/jackhammer" - -datum/design/drill - name = "Mining Drill" - desc = "Yours is the drill that will pierce through the rock walls." - id = "drill" - req_tech = list("materials" = 2, "powerstorage" = 3, "engineering" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 6000, "$glass" = 1000) //expensive, but no need for miners. - build_path = "/obj/item/weapon/pickaxe/drill" - -datum/design/plasmacutter - name = "Plasma Cutter" - desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff." - id = "plasmacutter" - req_tech = list("materials" = 4, "plasmatech" = 3, "engineering" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$plasma" = 500) - reliability_base = 79 - build_path = "/obj/item/weapon/pickaxe/plasmacutter" - -datum/design/pick_diamond - name = "Diamond Pickaxe" - desc = "A pickaxe with a diamond pick head, this is just like minecraft." - id = "pick_diamond" - req_tech = list("materials" = 6) - build_type = PROTOLATHE - materials = list("$diamond" = 3000) - build_path = "/obj/item/weapon/pickaxe/diamond" - -datum/design/drill_diamond - name = "Diamond Mining Drill" - desc = "Yours is the drill that will pierce the heavens!" - id = "drill_diamond" - req_tech = list("materials" = 6, "powerstorage" = 4, "engineering" = 4) - build_type = PROTOLATHE - materials = list("$metal" = 3000, "$glass" = 1000, "$diamond" = 3750) //Yes, a whole diamond is needed. - reliability_base = 79 - build_path = "/obj/item/weapon/pickaxe/diamonddrill" - -datum/design/mesons - name = "Optical Meson Scanners" - desc = "Used for seeing walls, floors, and stuff through anything." - id = "mesons" - req_tech = list("magnets" = 2, "engineering" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/meson" - -///////////////////////////////////////// -//////////////Blue Space///////////////// -///////////////////////////////////////// - -datum/design/beacon - name = "Tracking Beacon" - desc = "A blue space tracking beacon." - id = "beacon" - req_tech = list("bluespace" = 1) - build_type = PROTOLATHE - materials = list ("$metal" = 20, "$glass" = 10) - build_path = "/obj/item/device/radio/beacon" - -datum/design/bag_holding - name = "Bag of Holding" - desc = "A backpack that opens into a localized pocket of Blue Space." - id = "bag_holding" - req_tech = list("bluespace" = 4, "materials" = 6) - build_type = PROTOLATHE - materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250) - reliability_base = 80 - build_path = "/obj/item/weapon/storage/backpack/holding" - -datum/design/bluespace_crystal - name = "Artificial Bluespace Crystal" - desc = "A small blue crystal with mystical properties." - id = "bluespace_crystal" - req_tech = list("bluespace" = 5, "materials" = 7) - build_type = PROTOLATHE - materials = list("$gold" = 1500, "$diamond" = 3000, "$plasma" = 1500) - reliability_base = 100 - build_path = "/obj/item/bluespace_crystal/artificial" - -///////////////////////////////////////// -/////////////////HUDs//////////////////// -///////////////////////////////////////// - -datum/design/health_hud - name = "Health Scanner HUD" - desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." - id = "health_hud" - req_tech = list("biotech" = 2, "magnets" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/hud/health" - -datum/design/security_hud - name = "Security HUD" - desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status." - id = "security_hud" - req_tech = list("magnets" = 3, "combat" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/hud/security" - locked = 1 - -///////////////////////////////////////// -//////////////////Test/////////////////// -///////////////////////////////////////// - - /* test - name = "Test Design" - desc = "A design to test the new protolathe." - id = "protolathe_test" - build_type = PROTOLATHE - req_tech = list("materials" = 1) - materials = list("$gold" = 3000, "iron" = 15, "copper" = 10, "$silver" = 2500) - build_path = "/obj/item/weapon/banhammer" */ - -//////////////////////////////////////// -//Disks for transporting design datums// -//////////////////////////////////////// - -/obj/item/weapon/disk/design_disk - name = "Component Design Disk" - desc = "A disk for storing device design data for construction in lathes." - icon = 'icons/obj/cloning.dmi' - icon_state = "datadisk2" - item_state = "card-id" - w_class = 1.0 - m_amt = 30 - g_amt = 10 - var/datum/design/blueprint - -/obj/item/weapon/disk/design_disk/New() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) - - -///////////////////////////////////////// -//////////////Borg Upgrades////////////// -///////////////////////////////////////// -datum/design/borg_syndicate_module - name = "Borg Illegal Weapons Upgrade" - desc = "Allows for the construction of illegal upgrades for cyborgs" - id = "borg_syndicate_module" - build_type = MECHFAB - req_tech = list("combat" = 4, "syndicate" = 3) - build_path = "/obj/item/borg/upgrade/syndicate" - category = "Cyborg Upgrade Modules" - -///////////////////////////////////////// -/////////////PDA and Radio stuff///////// -///////////////////////////////////////// -datum/design/binaryencrypt - name = "Binary Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." - id = "binaryencrypt" - req_tech = list("syndicate" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 300, "$glass" = 300) - build_path = "/obj/item/device/encryptionkey/binary" -datum/design/pda - name = "PDA" - desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge." - id = "pda" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/device/pda" -datum/design/cart_basic - name = "Generic Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_basic" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge" -datum/design/cart_engineering - name = "Power-ON Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_engineering" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/engineering" -datum/design/cart_atmos - name = "BreatheDeep Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_atmos" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/atmos" -datum/design/cart_medical - name = "Med-U Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_medical" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/medical" -datum/design/cart_chemistry - name = "ChemWhiz Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_chemistry" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/chemistry" -datum/design/cart_security - name = "R.O.B.U.S.T. Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_security" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/security" - locked = 1 -datum/design/cart_janitor - name = "CustodiPRO Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_janitor" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/janitor" - -/* -datum/design/cart_clown - name = "Honkworks 5.0 Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_clown" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/clown" -datum/design/cart_mime - name = "Gestur-O 1000 Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_mime" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/mime" -*/ - -datum/design/cart_toxins - name = "Signal Ace 2 Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_toxins" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/toxins" -datum/design/cart_quartermaster - name = "Space Parts & Space Vendors Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_quartermaster" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/quartermaster" - locked = 1 -datum/design/cart_hop - name = "Human Resources 9001 Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_hop" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/hop" - locked = 1 -datum/design/cart_hos - name = "R.O.B.U.S.T. DELUXE Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_hos" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/hos" - locked = 1 -datum/design/cart_ce - name = "Power-On DELUXE Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_ce" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/ce" - locked = 1 -datum/design/cart_cmo - name = "Med-U DELUXE Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_cmo" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/cmo" - locked = 1 -datum/design/cart_rd - name = "Signal Ace DELUXE Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_rd" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/rd" - locked = 1 -datum/design/cart_captain - name = "Value-PAK Cartridge" - desc = "A data cartridge for portable microcomputers." - id = "cart_captain" - req_tech = list("engineering" = 2, "powerstorage" = 3) - build_type = PROTOLATHE - materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/captain" - locked = 1 diff --git a/code/modules/research/xenoarchaeology/misc.dm.bak b/code/modules/research/xenoarchaeology/misc.dm.bak deleted file mode 100644 index 37bc4c6c..00000000 --- a/code/modules/research/xenoarchaeology/misc.dm.bak +++ /dev/null @@ -1,160 +0,0 @@ -#define XENOARCH_SPAWN_CHANCE 0.5 -#define XENOARCH_SPREAD_CHANCE 15 -#define ARTIFACT_SPAWN_CHANCE 20 - -proc/SetupXenoarch() - for(var/turf/simulated/mineral/M in block(locate(1,1,1), locate(world.maxx, world.maxy, world.maxz))) - if(!M.geologic_data) - M.geologic_data = new/datum/geosample(M) - - if(!prob(XENOARCH_SPAWN_CHANCE)) - continue - - var/digsite = get_random_digsite_type() - var/list/processed_turfs = list() - var/list/turfs_to_process = list(M) - for(var/turf/simulated/mineral/archeo_turf in turfs_to_process) - - for(var/turf/simulated/mineral/T in orange(1, archeo_turf)) - if(T.finds) - continue - if(T in processed_turfs) - continue - if(prob(XENOARCH_SPREAD_CHANCE)) - turfs_to_process.Add(T) - - processed_turfs.Add(archeo_turf) - if(!archeo_turf.finds) - archeo_turf.finds = list() - if(prob(50)) - archeo_turf.finds.Add(new /datum/find(digsite, rand(5,95))) - else if(prob(75)) - archeo_turf.finds.Add(new /datum/find(digsite, rand(5,45))) - archeo_turf.finds.Add(new /datum/find(digsite, rand(55,95))) - else - archeo_turf.finds.Add(new /datum/find(digsite, rand(5,30))) - archeo_turf.finds.Add(new /datum/find(digsite, rand(35,75))) - archeo_turf.finds.Add(new /datum/find(digsite, rand(75,95))) - - //sometimes a find will be close enough to the surface to show - var/datum/find/F = archeo_turf.finds[1] - if(F.excavation_required <= F.view_range) - archeo_turf.archaeo_overlay = "overlay_archaeo[rand(1,3)]" - archeo_turf.overlays += archeo_turf.archaeo_overlay - - //dont create artifact machinery in animal or plant digsites, or if we already have one - if(!M.artifact_find && digsite != 1 && digsite != 2 && prob(ARTIFACT_SPAWN_CHANCE)) - M.artifact_find = new() - artifact_spawn.Add(src) - - -//---- Noticeboard - -/obj/structure/noticeboard/anomaly - notices = 5 - icon_state = "nboard05" - -/obj/structure/noticeboard/anomaly/New() - //add some memos - var/obj/item/weapon/paper/P = new() - P.name = "Memo RE: proper analysis procedure" - P.info = "
    We keep test dummies in pens here for a reason, so standard procedure should be to activate newfound alien artifacts and place the two in close proximity. Promising items I might even approve monkey testing on." - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Memo RE: materials gathering" - P.info = "Corasang,
    the hands-on approach to gathering our samples may very well be slow at times, but it's safer than allowing the blundering miners to roll willy-nilly over our dig sites in their mechs, destroying everything in the process. And don't forget the escavation tools on your way out there!
    - R.W" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Memo RE: ethical quandaries" - P.info = "Darion-

    I don't care what his rank is, our business is that of science and knowledge - questions of moral application do not come into this. Sure, so there are those who would employ the energy-wave particles my modified device has managed to abscond for their own personal gain, but I can hardly see the practical benefits of some of these artifacts our benefactors left behind. Ward--" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "READ ME! Before you people destroy any more samples" - P.info = "how many times do i have to tell you people, these xeno-arch samples are del-i-cate, and should be handled so! careful application of a focussed, concentrated heat or some corrosive liquids should clear away the extraneous carbon matter, while application of an energy beam will most decidedly destroy it entirely - like someone did to the chemical dispenser! W, the one who signs your paychecks" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Reminder regarding the anomalous material suits" - P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around in them unless you're field testing something, R" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - -//---- Bookcase - -/obj/structure/bookcase/manuals/xenoarchaeology - name = "Xenoarchaeology Manuals bookcase" - - New() - ..() - new /obj/item/weapon/book/manual/excavation(src) - new /obj/item/weapon/book/manual/mass_spectrometry(src) - new /obj/item/weapon/book/manual/materials_chemistry_analysis(src) - new /obj/item/weapon/book/manual/anomaly_testing(src) - new /obj/item/weapon/book/manual/anomaly_spectroscopy(src) - new /obj/item/weapon/book/manual/stasis(src) - update_icon() - -//---- Lockers and closets - -/obj/structure/closet/secure_closet/xenoarchaeologist - name = "Xenoarchaeologist Locker" - req_access = list(access_tox_storage) - icon_state = "secureres1" - icon_closed = "secureres" - icon_locked = "secureres1" - icon_opened = "secureresopen" - icon_broken = "secureresbroken" - icon_off = "secureresoff" - - New() - ..() - sleep(2) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/storage/labcoat(src) - new /obj/item/clothing/shoes/white(src) - new /obj/item/clothing/glasses/science(src) - new /obj/item/device/radio/headset/headset_sci(src) - new /obj/item/weapon/storage/belt/archaeology(src) - new /obj/item/weapon/storage/box/excavation(src) - return - -/obj/structure/closet/excavation - name = "Excavation tools" - icon_state = "toolcloset" - icon_closed = "toolcloset" - icon_opened = "toolclosetopen" - - New() - ..() - sleep(2) - new /obj/item/weapon/storage/belt/archaeology(src) - new /obj/item/weapon/storage/box/excavation(src) - new /obj/item/device/flashlight/lantern(src) - new /obj/item/device/depth_scanner(src) - new /obj/item/device/core_sampler(src) - new /obj/item/device/gps(src) - new /obj/item/device/beacon_locator(src) - new /obj/item/device/radio/beacon(src) - new /obj/item/clothing/glasses/meson(src) - new /obj/item/weapon/pickaxe(src) - new /obj/item/device/measuring_tape(src) - new /obj/item/weapon/pickaxe/hand(src) - return - -//---- Isolation room air alarms - -/obj/machinery/alarm/isolation - name = "Isolation room air control" - req_access = list(access_research) diff --git a/code/setup.dm.bak b/code/setup.dm.bak deleted file mode 100644 index b3976c35..00000000 --- a/code/setup.dm.bak +++ /dev/null @@ -1,750 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -#define DEBUG - -#define PI 3.1415 - -#define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol) -#define ONE_ATMOSPHERE 101.325 //kPa - -#define CELL_VOLUME 2500 //liters in a cell -#define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC - -#define O2STANDARD 0.21 -#define N2STANDARD 0.79 - -#define MOLES_O2STANDARD MOLES_CELLSTANDARD*O2STANDARD // O2 standard value (21%) -#define MOLES_N2STANDARD MOLES_CELLSTANDARD*N2STANDARD // N2 standard value (79%) - -#define MOLES_PLASMA_VISIBLE 0.7 //Moles in a standard cell after which plasma is visible -#define MIN_PLASMA_DAMAGE 1 -#define MAX_PLASMA_DAMAGE 10 - -#define BREATH_VOLUME 0.5 //liters in a normal breath -#define BREATH_MOLES (ONE_ATMOSPHERE * BREATH_VOLUME /(T20C*R_IDEAL_GAS_EQUATION)) -#define BREATH_PERCENTAGE BREATH_VOLUME/CELL_VOLUME - //Amount of air to take a from a tile -#define HUMAN_NEEDED_OXYGEN MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16 - //Amount of air needed before pass out/suffocation commences - -// Pressure limits. -#define HAZARD_HIGH_PRESSURE 550 //This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) -#define WARNING_HIGH_PRESSURE 325 //This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) -#define WARNING_LOW_PRESSURE 50 //This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) -#define HAZARD_LOW_PRESSURE 20 //This is when the black ultra-low pressure icon is displayed. (This one is set as a constant) - -#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 //This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount. -#define BODYTEMP_AUTORECOVERY_DIVISOR 12 //This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. -#define BODYTEMP_AUTORECOVERY_MINIMUM 10 //Minimum amount of kelvin moved toward 310.15K per tick. So long as abs(310.15 - bodytemp) is more than 50. -#define BODYTEMP_COLD_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster. -#define BODYTEMP_HEAT_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster. -#define BODYTEMP_COOLING_MAX 30 //The maximum number of degrees that your body can cool in 1 tick, when in a cold area. -#define BODYTEMP_HEATING_MAX 30 //The maximum number of degrees that your body can heat up in 1 tick, when in a hot area. - -#define BODYTEMP_HEAT_DAMAGE_LIMIT 360.15 // The limit the human body can take before it starts taking damage from heat. -#define BODYTEMP_COLD_DAMAGE_LIMIT 260.15 // The limit the human body can take before it starts taking damage from coldness. - -#define SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE 2.0 //what min_cold_protection_temperature is set to for space-helmet quality headwear. MUST NOT BE 0. -#define SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE 2.0 //what min_cold_protection_temperature is set to for space-suit quality jumpsuits or suits. MUST NOT BE 0. -#define SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE 5000 //These need better heat protect -#define FIRESUIT_MAX_HEAT_PROTECITON_TEMPERATURE 30000 //what max_heat_protection_temperature is set to for firesuit quality headwear. MUST NOT BE 0. -#define FIRE_HELMET_MAX_HEAT_PROTECITON_TEMPERATURE 30000 //for fire helmet quality items (red and white hardhats) -#define HELMET_MIN_COLD_PROTECITON_TEMPERATURE 160 //For normal helmets -#define HELMET_MAX_HEAT_PROTECITON_TEMPERATURE 600 //For normal helmets -#define ARMOR_MIN_COLD_PROTECITON_TEMPERATURE 160 //For armor -#define ARMOR_MAX_HEAT_PROTECITON_TEMPERATURE 600 //For armor - -#define GLOVES_MIN_COLD_PROTECITON_TEMPERATURE 2.0 //For some gloves (black and) -#define GLOVES_MAX_HEAT_PROTECITON_TEMPERATURE 1500 //For some gloves -#define SHOE_MIN_COLD_PROTECITON_TEMPERATURE 2.0 //For gloves -#define SHOE_MAX_HEAT_PROTECITON_TEMPERATURE 1500 //For gloves - - -#define PRESSURE_DAMAGE_COEFFICIENT 4 //The amount of pressure damage someone takes is equal to (pressure / HAZARD_HIGH_PRESSURE)*PRESSURE_DAMAGE_COEFFICIENT, with the maximum of MAX_PRESSURE_DAMAGE -#define MAX_HIGH_PRESSURE_DAMAGE 4 //This used to be 20... I got this much random rage for some retarded decision by polymorph?! Polymorph now lies in a pool of blood with a katana jammed in his spleen. ~Errorage --PS: The katana did less than 20 damage to him :( -#define LOW_PRESSURE_DAMAGE 2 //The amounb of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value). - -#define PRESSURE_SUIT_REDUCTION_COEFFICIENT 0.8 //This is how much (percentual) a suit with the flag STOPSPRESSUREDMAGE reduces pressure. -#define PRESSURE_HEAD_REDUCTION_COEFFICIENT 0.4 //This is how much (percentual) a helmet/hat with the flag STOPSPRESSUREDMAGE reduces pressure. - -// Doors! -#define DOOR_CRUSH_DAMAGE 10 - -// Factor of how fast mob nutrition decreases -#define HUNGER_FACTOR 0.05 - -// How many units of reagent are consumed per tick, by default. -#define REAGENTS_METABOLISM 0.2 - -// By defining the effect multiplier this way, it'll exactly adjust -// all effects according to how they originally were with the 0.4 metabolism -#define REAGENTS_EFFECT_MULTIPLIER REAGENTS_METABOLISM / 0.4 - - -#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05 - //Minimum ratio of air that must move to/from a tile to suspend group processing -#define MINIMUM_AIR_TO_SUSPEND MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND - //Minimum amount of air that has to move before a group processing can be suspended - -#define MINIMUM_MOLES_DELTA_TO_MOVE MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND //Either this must be active -#define MINIMUM_TEMPERATURE_TO_MOVE T20C+100 //or this (or both, obviously) - -#define MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND 0.012 -#define MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND 4 - //Minimum temperature difference before group processing is suspended -#define MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER 0.5 - //Minimum temperature difference before the gas temperatures are just set to be equal - -#define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION T20C+10 -#define MINIMUM_TEMPERATURE_START_SUPERCONDUCTION T20C+200 - -#define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.4 -#define WALL_HEAT_TRANSFER_COEFFICIENT 0.0 -#define DOOR_HEAT_TRANSFER_COEFFICIENT 0.0 -#define SPACE_HEAT_TRANSFER_COEFFICIENT 0.2 //a hack to partly simulate radiative heat -#define OPEN_HEAT_TRANSFER_COEFFICIENT 0.4 -#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 //a hack for now - //Must be between 0 and 1. Values closer to 1 equalize temperature faster - //Should not exceed 0.4 else strange heat flow occur - -/* -#define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD 150+T0C -#define FIRE_MINIMUM_TEMPERATURE_TO_EXIST 100+T0C -#define FIRE_SPREAD_RADIOSITY_SCALE 0.85 -#define FIRE_CARBON_ENERGY_RELEASED 500000 //Amount of heat released per mole of burnt carbon into the tile -#define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile -#define FIRE_GROWTH_RATE 40000 //For small fires - -#define WATER_BOIL_TEMP 393 */ - -// Fire Damage -#define CARBON_LIFEFORM_FIRE_RESISTANCE 200+T0C -#define CARBON_LIFEFORM_FIRE_DAMAGE 4 - -//Plasma fire properties -#define PLASMA_MINIMUM_BURN_TEMPERATURE 100+T0C -#define PLASMA_FLASHPOINT 246+T0C -#define PLASMA_UPPER_TEMPERATURE 1370+T0C -#define PLASMA_MINIMUM_OXYGEN_NEEDED 2 -#define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 20 -#define PLASMA_OXYGEN_FULLBURN 10 - -#define T0C 273.15 // 0degC -#define T20C 293.15 // 20degC -#define TCMB 2.7 // -270.3degC - -//Used to be used by FEA -//var/turf/space/Space_Tile = locate(/turf/space) // A space tile to reference when atmos wants to remove excess heat. - -#define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) // Tank starts leaking -#define TANK_RUPTURE_PRESSURE (40.*ONE_ATMOSPHERE) // Tank spills all contents into atmosphere - -#define TANK_FRAGMENT_PRESSURE (50.*ONE_ATMOSPHERE) // Boom 3x3 base explosion -#define TANK_FRAGMENT_SCALE (10.*ONE_ATMOSPHERE) // +1 for each SCALE kPa aboe threshold - // was 2 atm - -//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage -var/MAX_EXPLOSION_RANGE = 14 -//#define MAX_EXPLOSION_RANGE 14 // Defaults to 12 (was 8) -- TLE - -#define HUMAN_STRIP_DELAY 40 //takes 40ds = 4s to strip someone. - -#define ALIEN_SELECT_AFK_BUFFER 1 // How many minutes that a person can be AFK before not being allowed to be an alien. - -#define NORMPIPERATE 30 //pipe-insulation rate divisor -#define HEATPIPERATE 8 //heat-exch pipe insulation - -#define FLOWFRAC 0.99 // fraction of gas transfered per process - -#define SHOES_SLOWDOWN -1.0 // How much shoes slow you down by default. Negative values speed you up - - -//ITEM INVENTORY SLOT BITMASKS -#define SLOT_OCLOTHING 1 -#define SLOT_ICLOTHING 2 -#define SLOT_GLOVES 4 -#define SLOT_EYES 8 -#define SLOT_EARS 16 -#define SLOT_MASK 32 -#define SLOT_HEAD 64 -#define SLOT_FEET 128 -#define SLOT_ID 256 -#define SLOT_BELT 512 -#define SLOT_BACK 1024 -#define SLOT_POCKET 2048 //this is to allow items with a w_class of 3 or 4 to fit in pockets. -#define SLOT_DENYPOCKET 4096 //this is to deny items with a w_class of 2 or 1 to fit in pockets. -#define SLOT_TWOEARS 8192 -#define SLOT_LEGS = 16384 - -//FLAGS BITMASK -#define STOPSPRESSUREDMAGE 1 //This flag is used on the flags variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere - //To successfully stop you taking all pressure damage you must have both a suit and head item with this flag. -#define TABLEPASS 2 // can pass by a table or rack - -#define MASKINTERNALS 8 // mask allows internals -//#define SUITSPACE 8 // suit protects against space - -#define USEDELAY 16 // 1 second extra delay on use (Can be used once every 2s) -#define NODELAY 32768 // 1 second attackby delay skipped (Can be used once every 0.2s). Most objects have a 1s attackby delay, which doesn't require a flag. -#define NOSHIELD 32 // weapon not affected by shield -#define CONDUCT 64 // conducts electricity (metal etc.) -#define FPRINT 256 // takes a fingerprint -#define ON_BORDER 512 // item has priority to check when entering or leaving -#define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message with the default handler -#define NOBLOODY 2048 // used to items if they don't want to get a blood overlay - -#define GLASSESCOVERSEYES 1024 -#define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags -#define HEADCOVERSEYES 1024 // feel free to realloc these numbers for other purposes -#define MASKCOVERSMOUTH 2048 // on other items, these are just for mask/head -#define HEADCOVERSMOUTH 2048 - -#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc - -#define OPENCONTAINER 4096 // is an open container for chemistry purposes - -#define BLOCK_GAS_SMOKE_EFFECT 8192 // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! (NOTE: flag shared with ONESIZEFITSALL) -#define ONESIZEFITSALL 8192 -#define PLASMAGUARD 16384 //Does not get contaminated by plasma. - -#define NOREACT 16384 //Reagents dont' react inside this container. - -#define BLOCKHEADHAIR 4 // temporarily removes the user's hair overlay. Leaves facial hair. -#define BLOCKHAIR 32768 // temporarily removes the user's hair, facial and otherwise. - -//flags for pass_flags -#define PASSTABLE 1 -#define PASSGLASS 2 -#define PASSGRILLE 4 -#define PASSBLOB 8 - -//turf-only flags -#define NOJAUNT 1 - - -//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. -#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!! -#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!! -#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!! -#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!! -#define HIDEMASK 1 //APPLIES ONLY TO HELMETS/MASKS!! -#define HIDEEARS 2 //APPLIES ONLY TO HELMETS/MASKS!! (ears means headsets and such) -#define HIDEEYES 4 //APPLIES ONLY TO HELMETS/MASKS!! (eyes means glasses) -#define HIDEFACE 8 //APPLIES ONLY TO HELMETS/MASKS!! Dictates whether we appear as unknown. - -//slots -#define slot_back 1 -#define slot_wear_mask 2 -#define slot_handcuffed 3 -#define slot_l_hand 4 -#define slot_r_hand 5 -#define slot_belt 6 -#define slot_wear_id 7 -#define slot_l_ear 8 -#define slot_glasses 9 -#define slot_gloves 10 -#define slot_head 11 -#define slot_shoes 12 -#define slot_wear_suit 13 -#define slot_w_uniform 14 -#define slot_l_store 15 -#define slot_r_store 16 -#define slot_s_store 17 -#define slot_in_backpack 18 -#define slot_legcuffed 19 -#define slot_r_ear 20 -#define slot_legs 21 - -//Cant seem to find a mob bitflags area other than the powers one - -// bitflags for clothing parts -#define HEAD 1 -#define UPPER_TORSO 2 -#define LOWER_TORSO 4 -#define LEG_LEFT 8 -#define LEG_RIGHT 16 -#define LEGS 24 -#define FOOT_LEFT 32 -#define FOOT_RIGHT 64 -#define FEET 96 -#define ARM_LEFT 128 -#define ARM_RIGHT 256 -#define ARMS 384 -#define HAND_LEFT 512 -#define HAND_RIGHT 1024 -#define HANDS 1536 -#define FULL_BODY 2047 - -// bitflags for the percentual amount of protection a piece of clothing which covers the body part offers. -// Used with human/proc/get_heat_protection() and human/proc/get_cold_protection() -// The values here should add up to 1. -// Hands and feet have 2.5%, arms and legs 7.5%, each of the torso parts has 15% and the head has 30% -#define THERMAL_PROTECTION_HEAD 0.3 -#define THERMAL_PROTECTION_UPPER_TORSO 0.15 -#define THERMAL_PROTECTION_LOWER_TORSO 0.15 -#define THERMAL_PROTECTION_LEG_LEFT 0.075 -#define THERMAL_PROTECTION_LEG_RIGHT 0.075 -#define THERMAL_PROTECTION_FOOT_LEFT 0.025 -#define THERMAL_PROTECTION_FOOT_RIGHT 0.025 -#define THERMAL_PROTECTION_ARM_LEFT 0.075 -#define THERMAL_PROTECTION_ARM_RIGHT 0.075 -#define THERMAL_PROTECTION_HAND_LEFT 0.025 -#define THERMAL_PROTECTION_HAND_RIGHT 0.025 - - -//bitflags for mutations - // Extra powers: -#define SHADOW (1<<10) // shadow teleportation (create in/out portals anywhere) (25%) -#define SCREAM (1<<11) // supersonic screaming (25%) -#define EXPLOSIVE (1<<12) // exploding on-demand (15%) -#define REGENERATION (1<<13) // superhuman regeneration (30%) -#define REPROCESSOR (1<<14) // eat anything (50%) -#define SHAPESHIFTING (1<<15) // take on the appearance of anything (40%) -#define PHASING (1<<16) // ability to phase through walls (40%) -#define SHIELD (1<<17) // shielding from all projectile attacks (30%) -#define SHOCKWAVE (1<<18) // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) -#define ELECTRICITY (1<<19) // ability to shoot electric attacks (15%) - - -// String identifiers for associative list lookup - -// mob/var/list/mutations - -#define STRUCDNASIZE 27 -#define UNIDNASIZE 13 - - // Generic mutations: -#define TK 1 -#define COLD_RESISTANCE 2 -#define XRAY 3 -#define HULK 4 -#define CLUMSY 5 -#define FAT 6 -#define HUSK 7 -#define NOCLONE 8 - - - // Extra powers: -#define LASER 9 // harm intent - click anywhere to shoot lasers from eyes -#define HEAL 10 // healing people with hands -#define SHADOW 11 // shadow teleportation (create in/out portals anywhere) (25%) -#define SCREAM 12 // supersonic screaming (25%) -#define EXPLOSIVE 13 // exploding on-demand (15%) -#define REGENERATION 14 // superhuman regeneration (30%) -#define REPROCESSOR 15 // eat anything (50%) -#define SHAPESHIFTING 16 // take on the appearance of anything (40%) -#define PHASING 17 // ability to phase through walls (40%) -#define SHIELD 18 // shielding from all projectile attacks (30%) -#define SHOCKWAVE 19 // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) -#define ELECTRICITY 20 // ability to shoot electric attacks (15%) - - //2spooky -#define SKELETON 29 -#define PLANT 30 - -// Other Mutations: -#define mNobreath 100 // no need to breathe -#define mRemote 101 // remote viewing -#define mRegen 102 // health regen -#define mRun 103 // no slowdown -#define mRemotetalk 104 // remote talking -#define mMorph 105 // changing appearance -#define mBlend 106 // nothing (seriously nothing) -#define mHallucination 107 // hallucinations -#define mFingerprints 108 // no fingerprints -#define mShock 109 // insulated hands -#define mSmallsize 110 // table climbing - -//disabilities -#define NEARSIGHTED 1 -#define EPILEPSY 2 -#define COUGHING 4 -#define TOURETTES 8 -#define NERVOUS 16 - -//sdisabilities -#define BLIND 1 -#define MUTE 2 -#define DEAF 4 - -//mob/var/stat things -#define CONSCIOUS 0 -#define UNCONSCIOUS 1 -#define DEAD 2 - -// channel numbers for power -#define EQUIP 1 -#define LIGHT 2 -#define ENVIRON 3 -#define TOTAL 4 //for total power used only - -// bitflags for machine stat variable -#define BROKEN 1 -#define NOPOWER 2 -#define POWEROFF 4 // tbd -#define MAINT 8 // under maintaince -#define EMPED 16 // temporary broken by EMP pulse - -//bitflags for door switches. -#define OPEN 1 -#define IDSCAN 2 -#define BOLTS 4 -#define SHOCK 8 -#define SAFE 16 - -#define ENGINE_EJECT_Z 3 - -//metal, glass, rod stacks -#define MAX_STACK_AMOUNT_METAL 50 -#define MAX_STACK_AMOUNT_GLASS 50 -#define MAX_STACK_AMOUNT_RODS 60 - -#define GAS_O2 (1 << 0) -#define GAS_N2 (1 << 1) -#define GAS_PL (1 << 2) -#define GAS_CO2 (1 << 3) -#define GAS_N2O (1 << 4) - - -var/list/accessable_z_levels = list("1" = 5, "3" = 10, "4" = 15, "5" = 10, "6" = 60) -//This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there. -//(Exceptions: extended, sandbox and nuke) -Errorage -//Was list("3" = 30, "4" = 70). -//Spacing should be a reliable method of getting rid of a body -- Urist. -//Go away Urist, I'm restoring this to the longer list. ~Errorage - -#define IS_MODE_COMPILED(MODE) (ispath(text2path("/datum/game_mode/"+(MODE)))) - - -var/list/global_mutations = list() // list of hidden mutation things - -//Bluh shields - - -//Damage things //TODO: merge these down to reduce on defines -//Way to waste perfectly good damagetype names (BRUTE) on this... If you were really worried about case sensitivity, you could have just used lowertext(damagetype) in the proc... -#define BRUTE "brute" -#define BURN "fire" -#define TOX "tox" -#define OXY "oxy" -#define CLONE "clone" -#define HALLOSS "halloss" - -#define STUN "stun" -#define WEAKEN "weaken" -#define PARALYZE "paralize" -#define IRRADIATE "irradiate" -#define AGONY "agony" // Added in PAIN! -#define STUTTER "stutter" -#define EYE_BLUR "eye_blur" -#define DROWSY "drowsy" - -//I hate adding defines like this but I'd much rather deal with bitflags than lists and string searches -#define BRUTELOSS 1 -#define FIRELOSS 2 -#define TOXLOSS 4 -#define OXYLOSS 8 - -//Bitflags defining which status effects could be or are inflicted on a mob -#define CANSTUN 1 -#define CANWEAKEN 2 -#define CANPARALYSE 4 -#define CANPUSH 8 -#define GODMODE 4096 -#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath -#define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system -#define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy. - -var/static/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg','sound/items/Welder.ogg','sound/items/Welder2.ogg','sound/machines/airlock.ogg','sound/effects/clownstep1.ogg','sound/effects/clownstep2.ogg') - -//Grab levels -#define GRAB_PASSIVE 1 -#define GRAB_AGGRESSIVE 2 -#define GRAB_NECK 3 -#define GRAB_UPGRADING 4 -#define GRAB_KILL 5 - -//Security levels -#define SEC_LEVEL_GREEN 0 -#define SEC_LEVEL_BLUE 1 -#define SEC_LEVEL_RED 2 -#define SEC_LEVEL_DELTA 3 - -#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level - -var/list/liftable_structures = list(\ - - /obj/machinery/autolathe, \ - /obj/machinery/constructable_frame, \ - /obj/machinery/hydroponics, \ - /obj/machinery/computer, \ - /obj/machinery/optable, \ - /obj/structure/dispenser, \ - /obj/machinery/gibber, \ - /obj/machinery/microwave, \ - /obj/machinery/vending, \ - /obj/machinery/seed_extractor, \ - /obj/machinery/space_heater, \ - /obj/machinery/recharge_station, \ - /obj/machinery/flasher, \ - /obj/structure/stool, \ - /obj/structure/closet, \ - /obj/machinery/photocopier, \ - /obj/structure/filingcabinet, \ - /obj/structure/reagent_dispensers, \ - /obj/machinery/portable_atmospherics/canister) - -//A set of constants used to determine which type of mute an admin wishes to apply: -//Please read and understand the muting/automuting stuff before changing these. MUTE_IC_AUTO etc = (MUTE_IC << 1) -//Therefore there needs to be a gap between the flags for the automute flags -#define MUTE_IC 1 -#define MUTE_OOC 2 -#define MUTE_PRAY 4 -#define MUTE_ADMINHELP 8 -#define MUTE_DEADCHAT 16 -#define MUTE_ALL 31 - -//Number of identical messages required to get the spam-prevention automute thing to trigger warnings and automutes -#define SPAM_TRIGGER_WARNING 5 -#define SPAM_TRIGGER_AUTOMUTE 10 - -//Some constants for DB_Ban -#define BANTYPE_PERMA 1 -#define BANTYPE_TEMP 2 -#define BANTYPE_JOB_PERMA 3 -#define BANTYPE_JOB_TEMP 4 -#define BANTYPE_ANY_FULLBAN 5 //used to locate stuff to unban. - -#define SEE_INVISIBLE_MINIMUM 5 - -#define SEE_INVISIBLE_OBSERVER_NOLIGHTING 15 - -#define INVISIBILITY_LIGHTING 20 - -#define SEE_INVISIBLE_LIVING 25 - -#define SEE_INVISIBLE_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized. -#define INVISIBILITY_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized. - -#define SEE_INVISIBLE_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. -#define INVISIBILITY_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. - -#define INVISIBILITY_OBSERVER 60 -#define SEE_INVISIBLE_OBSERVER 60 - -#define INVISIBILITY_MAXIMUM 100 - -//Object specific defines -#define CANDLE_LUM 3 //For how bright candles are - - -//Some mob defines below -#define AI_CAMERA_LUMINOSITY 6 - -#define BORGMESON 1 -#define BORGTHERM 2 -#define BORGXRAY 4 - -//some arbitrary defines to be used by self-pruning global lists. (see master_controller) -#define PROCESS_KILL 26 //Used to trigger removal from a processing list - -// Reference list for disposal sort junctions. Set the sortType variable on disposal sort junctions to -// the index of the sort department that you want. For example, sortType set to 2 will reroute all packages -// tagged for the Cargo Bay. -var/list/TAGGERLOCATIONS = list("Disposals", - "Cargo Bay", "QM Office", "Engineering", "CE Office", - "Atmospherics", "Security", "HoS Office", "Medbay", - "CMO Office", "Chemistry", "Research", "RD Office", - "Robotics", "HoP Office", "Library", "Chapel", "Theatre", - "Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics") - -#define HOSTILE_STANCE_IDLE 1 -#define HOSTILE_STANCE_ALERT 2 -#define HOSTILE_STANCE_ATTACK 3 -#define HOSTILE_STANCE_ATTACKING 4 -#define HOSTILE_STANCE_TIRED 5 - -#define ROUNDSTART_LOGOUT_REPORT_TIME 6000 //Amount of time (in deciseconds) after the rounds starts, that the player disconnect report is issued. - -//Damage things - -#define CUT "cut" -#define BRUISE "bruise" -#define BRUTE "brute" -#define BURN "fire" -#define TOX "tox" -#define OXY "oxy" -#define CLONE "clone" -#define HALLOSS "halloss" - -#define STUN "stun" -#define WEAKEN "weaken" -#define PARALYZE "paralize" -#define IRRADIATE "irradiate" -#define STUTTER "stutter" -#define SLUR "slur" -#define EYE_BLUR "eye_blur" -#define DROWSY "drowsy" - -///////////////////ORGAN DEFINES/////////////////// - -#define ORGAN_CUT_AWAY 1 -#define ORGAN_GAUZED 2 -#define ORGAN_ATTACHABLE 4 -#define ORGAN_BLEEDING 8 -#define ORGAN_BROKEN 32 -#define ORGAN_DESTROYED 64 -#define ORGAN_ROBOT 128 -#define ORGAN_SPLINTED 256 -#define SALVED 512 -#define ORGAN_DEAD 1024 -#define ORGAN_MUTATED 2048 - -#define ROUNDSTART_LOGOUT_REPORT_TIME 6000 //Amount of time (in deciseconds) after the rounds starts, that the player disconnect report is issued. - - - -//Please don't edit these values without speaking to Errorage first ~Carn -//Admin Permissions -#define R_BUILDMODE 1 -#define R_ADMIN 2 -#define R_BAN 4 -#define R_FUN 8 -#define R_SERVER 16 -#define R_DEBUG 32 -#define R_POSSESS 64 -#define R_PERMISSIONS 128 -#define R_STEALTH 256 -#define R_REJUVINATE 512 -#define R_VAREDIT 1024 -#define R_SOUNDS 2048 -#define R_SPAWN 4096 -#define R_MOD 8192 -#define R_DEV 16384 - -#define R_MAXPERMISSION 16384 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. - -#define R_HOST 65535 - -//Preference toggles -#define SOUND_ADMINHELP 1 -#define SOUND_MIDI 2 -#define SOUND_AMBIENCE 4 -#define SOUND_LOBBY 8 -#define CHAT_OOC 16 -#define CHAT_DEAD 32 -#define CHAT_GHOSTEARS 64 -#define CHAT_GHOSTSIGHT 128 -#define CHAT_PRAYER 256 -#define CHAT_RADIO 512 -#define CHAT_ATTACKLOGS 1024 -#define CHAT_DEBUGLOGS 2048 -#define CHAT_LOOC 4096 -#define CHAT_GHOSTRADIO 8192 - - -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC) - -#define BE_TRAITOR 1 -#define BE_OPERATIVE 2 -#define BE_CHANGELING 4 -#define BE_WIZARD 8 -#define BE_MALF 16 -#define BE_REV 32 -#define BE_ALIEN 64 -#define BE_PAI 128 -#define BE_CULTIST 256 -#define BE_MONKEY 512 -#define BE_NINJA 1024 -#define BE_RAIDER 2048 -#define BE_PLANT 4096 - -var/list/be_special_flags = list( - "Traitor" = BE_TRAITOR, - "Operative" = BE_OPERATIVE, - "Changeling" = BE_CHANGELING, - "Wizard" = BE_WIZARD, - "Malf AI" = BE_MALF, - "Revolutionary" = BE_REV, - "Xenomorph" = BE_ALIEN, - "pAI" = BE_PAI, - "Cultist" = BE_CULTIST, - "Monkey" = BE_MONKEY, - "Ninja" = BE_NINJA, - "Raider" = BE_RAIDER, - "Diona" = BE_PLANT - ) - -#define AGE_MIN 17 //youngest a character can be -#define AGE_MAX 85 //oldest a character can be - -//Languages! -#define LANGUAGE_HUMAN 1 -#define LANGUAGE_ALIEN 2 -#define LANGUAGE_DOG 4 -#define LANGUAGE_CAT 8 -#define LANGUAGE_BINARY 16 -#define LANGUAGE_OTHER 32768 - -#define LANGUAGE_UNIVERSAL 65535 - -#define LEFT 1 -#define RIGHT 2 - -// for secHUDs and medHUDs and variants. The number is the location of the image on the list hud_list of humans. -#define HEALTH_HUD 1 // dead, alive, sick, health status -#define STATUS_HUD 2 // a simple line rounding the mob's number health -#define ID_HUD 3 // the job asigned to your ID -#define WANTED_HUD 4 // wanted, released, parroled, security status -#define IMPLOYAL_HUD 5 // loyality implant -#define IMPCHEM_HUD 6 // chemical implant -#define IMPTRACK_HUD 7 // tracking implant - -//Pulse levels, very simplified -#define PULSE_NONE 0 //so !M.pulse checks would be possible -#define PULSE_SLOW 1 //<60 bpm -#define PULSE_NORM 2 //60-90 bpm -#define PULSE_FAST 3 //90-120 bpm -#define PULSE_2FAST 4 //>120 bpm -#define PULSE_THREADY 5 //occurs during hypovolemic shock -//feel free to add shit to lists below -var/list/tachycardics = list("coffee", "inaprovaline", "hyperzine", "nitroglycerin", "thirteenloko", "nicotine") //increase heart rate -var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "space_drugs", "stoxin") //decrease heart rate -var/list/heartstopper = list("potassium_phorochloride", "zombie_powder") //this stops the heart -var/list/cheartstopper = list("potassium_chloride") //this stops the heart when overdose is met -- c = conditional - -//proc/get_pulse methods -#define GETPULSE_HAND 0 //less accurate (hand) -#define GETPULSE_TOOL 1 //more accurate (med scanner, sleeper, etc) - -var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accessed by preexisting terminals. AIs and new terminals can't use them. - "thunder", - "ERT", - "NUKE" - ) - -//Species flags. -#define NO_BLOOD 1 -#define NO_BREATHE 2 -#define NO_SCAN 4 -#define NO_PAIN 8 - -#define HAS_SKIN_TONE 16 -#define HAS_LIPS 32 -#define HAS_UNDERWEAR 64 -#define HAS_TAIL 128 - -#define IS_SLOW 256 -#define IS_PLANT 512 -#define IS_WHITELISTED 1024 - -#define RAD_ABSORB 2048 -#define REQUIRE_LIGHT 4096 - -//Language flags. -#define WHITELISTED 1 // Language is available if the speaker is whitelisted. -#define RESTRICTED 2 // Language can only be accquired by spawning or an admin. - -//Flags for zone sleeping -#define ZONE_ACTIVE 1 -#define ZONE_SLEEPING 0 diff --git a/code/stylesheet.dm.bak b/code/stylesheet.dm.bak deleted file mode 100644 index fd404473..00000000 --- a/code/stylesheet.dm.bak +++ /dev/null @@ -1,71 +0,0 @@ -client/script = {""} diff --git a/code/world.dm.bak b/code/world.dm.bak deleted file mode 100644 index 8b4f0cb2..00000000 --- a/code/world.dm.bak +++ /dev/null @@ -1,346 +0,0 @@ -/world - mob = /mob/new_player - turf = /turf/space - area = /area - view = "15x15" - cache_lifespan = 0 //stops player uploaded stuff from being kept in the rsc past the current session - - - -#define RECOMMENDED_VERSION 501 -/world/New() - //logs - var/date_string = time2text(world.realtime, "YYYY/MM-Month/DD-Day") - href_logfile = file("data/logs/[date_string] hrefs.htm") - diary = file("data/logs/[date_string].log") - diaryofmeanpeople = file("data/logs/[date_string] Attack.log") - diary << "\n\nStarting up. [time2text(world.timeofday, "hh:mm.ss")]\n---------------------" - diaryofmeanpeople << "\n\nStarting up. [time2text(world.timeofday, "hh:mm.ss")]\n---------------------" - changelog_hash = md5('html/changelog.html') //used for telling if the changelog has changed recently - - if(byond_version < RECOMMENDED_VERSION) - world.log << "Your server's byond version does not meet the recommended requirements for this server. Please update BYOND" - - load_configuration() - - if(config && config.server_name != null && config.server_suffix && world.port > 0) - // dumb and hardcoded but I don't care~ - config.server_name += " #[(world.port % 1000) / 100]" - - if(config && config.log_runtime) - log = file("data/logs/runtime/[time2text(world.realtime,"YYYY-MM-DD-(hh-mm-ss)")]-runtime.log") - - callHook("startup") - //Emergency Fix - load_mods() - //end-emergency fix - - src.update_status() - - . = ..() - - sleep_offline = 1 - - master_controller = new /datum/controller/game_controller() - spawn(1) - master_controller.setup() - - spawn(3000) //so we aren't adding to the round-start lag - if(config.ToRban) - ToRban_autoupdate() - if(config.kick_inactive) - KickInactiveClients() - -#undef RECOMMENDED_VERSION - - return - -//world/Topic(href, href_list[]) -// world << "Received a Topic() call!" -// world << "[href]" -// for(var/a in href_list) -// world << "[a]" -// if(href_list["hello"]) -// world << "Hello world!" -// return "Hello world!" -// world << "End of Topic() call." -// ..() - -/world/Topic(T, addr, master, key) - diary << "TOPIC: \"[T]\", from:[addr], master:[master], key:[key]" - - if (T == "ping") - var/x = 1 - for (var/client/C) - x++ - return x - - else if(T == "players") - var/n = 0 - for(var/mob/M in player_list) - if(M.client) - n++ - return n - - else if (T == "status") - var/list/s = list() - s["version"] = game_version - s["mode"] = master_mode - s["respawn"] = config ? abandon_allowed : 0 - s["enter"] = enter_allowed - s["vote"] = config.allow_vote_mode - s["ai"] = config.allow_ai - s["host"] = host ? host : null - s["players"] = list() - var/n = 0 - var/admins = 0 - - for(var/client/C in clients) - if(C.holder) - if(C.holder.fakekey) - continue //so stealthmins aren't revealed by the hub - admins++ - s["player[n]"] = C.key - n++ - s["players"] = n - - if(revdata) s["revision"] = revdata.revision - s["admins"] = admins - - return list2params(s) - - -/world/Reboot(var/reason) - /*spawn(0) - world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg')) // random end sounds!! - LastyBatsy - */ - for(var/client/C in clients) - if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite - C << link("byond://[config.server]") - else - C << link("byond://[world.address]:[world.port]") - - ..(reason) - - -#define INACTIVITY_KICK 6000 //10 minutes in ticks (approx.) -/world/proc/KickInactiveClients() - spawn(-1) - set background = 1 - while(1) - sleep(INACTIVITY_KICK) - for(var/client/C in clients) - if(C.is_afk(INACTIVITY_KICK)) - if(!istype(C.mob, /mob/dead)) - log_access("AFK: [key_name(C)]") - C << "\red You have been inactive for more than 10 minutes and have been disconnected." - del(C) -#undef INACTIVITY_KICK - - -/hook/startup/proc/loadMode() - world.load_mode() - return 1 - -/world/proc/load_mode() - var/list/Lines = file2list("data/mode.txt") - if(Lines.len) - if(Lines[1]) - master_mode = Lines[1] - diary << "Saved mode is '[master_mode]'" - -/world/proc/save_mode(var/the_mode) - var/F = file("data/mode.txt") - fdel(F) - F << the_mode - - -/hook/startup/proc/loadMOTD() - world.load_motd() - return 1 - -/world/proc/load_motd() - join_motd = file2text("config/motd.txt") - - -/world/proc/load_configuration() - config = new /datum/configuration() - config.load("config/config.txt") - config.load("config/game_options.txt","game_options") - config.loadsql("config/dbconfig.txt") - config.loadforumsql("config/forumdbconfig.txt") - // apply some settings from config.. - abandon_allowed = config.respawn - - -/hook/startup/proc/loadMods() - world.load_mods() - return 1 - -/world/proc/load_mods() - if(config.admin_legacy_system) - var/text = file2text("config/moderators.txt") - if (!text) - diary << "Failed to load config/mods.txt\n" - else - var/list/lines = text2list(text, "\n") - for(var/line in lines) - if (!line) - continue - - if (copytext(line, 1, 2) == ";") - continue - - var/rights = admin_ranks["Moderator"] - var/ckey = copytext(line, 1, length(line)+1) - var/datum/admins/D = new /datum/admins("Moderator", rights, ckey) - D.associate(directory[ckey]) - -/world/proc/update_status() - var/s = "" - - if (config && config.server_name) - s += "[config.server_name] — " - - s += "[station_name()] - Heavy Roleplay"; - s += " (" - s += "" //Change this to wherever you want the hub to link to. -// s += "[game_version]" - s += "Forums" //Replace this with something else. Or ever better, delete it and uncomment the game version. - s += "" - s += ")" - - var/list/features = list() - - if(ticker) - if(master_mode) - features += master_mode - else - features += "STARTING" - - if (!enter_allowed) - features += "closed" - - features += abandon_allowed ? "respawn" : "no respawn" - - if (config && config.allow_vote_mode) - features += "vote" - - if (config && config.allow_ai) - features += "AI allowed" - - var/n = 0 - for (var/mob/M in player_list) - if (M.client) - n++ - - if (n > 1) - features += "~[n] players" - else if (n > 0) - features += "~[n] player" - - /* - is there a reason for this? the byond site shows 'hosted by X' when there is a proper host already. - if (host) - features += "hosted by [host]" - */ - - if (!host && config && config.hostedby) - features += "hosted by [config.hostedby]" - - if (features) - s += ": [list2text(features, ", ")]" - - /* does this help? I do not know */ - if (src.status != s) - src.status = s - -#define FAILED_DB_CONNECTION_CUTOFF 5 -var/failed_db_connections = 0 -var/failed_old_db_connections = 0 - -/hook/startup/proc/connectDB() - if(!setup_database_connection()) - world.log << "Your server failed to establish a connection with the feedback database." - else - world.log << "Feedback database connection established." - return 1 - -proc/setup_database_connection() - - if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore. - return 0 - - if(!dbcon) - dbcon = new() - - var/user = sqlfdbklogin - var/pass = sqlfdbkpass - var/db = sqlfdbkdb - var/address = sqladdress - var/port = sqlport - - dbcon.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]") - . = dbcon.IsConnected() - if ( . ) - failed_db_connections = 0 //If this connection succeeded, reset the failed connections counter. - else - failed_db_connections++ //If it failed, increase the failed connections counter. - world.log << dbcon.ErrorMsg() - - return . - -//This proc ensures that the connection to the feedback database (global variable dbcon) is established -proc/establish_db_connection() - if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) - return 0 - - if(!dbcon || !dbcon.IsConnected()) - return setup_database_connection() - else - return 1 - - -/hook/startup/proc/connectOldDB() - if(!setup_old_database_connection()) - world.log << "Your server failed to establish a connection with the SQL database." - else - world.log << "SQL database connection established." - return 1 - -//These two procs are for the old database, while it's being phased out. See the tgstation.sql file in the SQL folder for more information. -proc/setup_old_database_connection() - - if(failed_old_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore. - return 0 - - if(!dbcon_old) - dbcon_old = new() - - var/user = sqllogin - var/pass = sqlpass - var/db = sqldb - var/address = sqladdress - var/port = sqlport - - dbcon_old.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]") - . = dbcon_old.IsConnected() - if ( . ) - failed_old_db_connections = 0 //If this connection succeeded, reset the failed connections counter. - else - failed_old_db_connections++ //If it failed, increase the failed connections counter. - world.log << dbcon.ErrorMsg() - - return . - -//This proc ensures that the connection to the feedback database (global variable dbcon) is established -proc/establish_old_db_connection() - if(failed_old_db_connections > FAILED_DB_CONNECTION_CUTOFF) - return 0 - - if(!dbcon_old || !dbcon_old.IsConnected()) - return setup_old_database_connection() - else - return 1 - -#undef FAILED_DB_CONNECTION_CUTOFF \ No newline at end of file diff --git a/data/mode.txt b/data/mode.txt index ef18df98..7953115d 100644 --- a/data/mode.txt +++ b/data/mode.txt @@ -1 +1 @@ -extended +nuclear diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index bfa8b57d..f4167629 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -8054,2783 +8054,2782 @@ "cYT" = (/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access_txt = "150"; tag_chamber_sensor = "vox_east_sensor"},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) "cYU" = (/obj/machinery/portable_atmospherics/pump,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "cYV" = (/obj/machinery/mech_bay_recharge_port,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"cYW" = (/obj/mecha/exoskeleton/exoskeletonother,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"cYX" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/projectile/shotgun/pump/combat{pixel_y = -7},/obj/item/weapon/gun/projectile/shotgun/pump/combat{pixel_y = -4},/obj/item/weapon/gun/projectile/shotgun/pump/combat{pixel_y = -1},/obj/item/weapon/gun/projectile/shotgun/pump/combat{pixel_y = 2},/obj/item/weapon/gun/projectile/shotgun/pump/combat{pixel_y = 4},/obj/item/weapon/gun/projectile/shotgun/pump/combat{pixel_y = 7},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cYY" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southwest_lock"; locked = 1; req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cYZ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access_txt = "150"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) -"cZa" = (/obj/machinery/door/airlock/hatch{req_access_txt = "150"},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cZb" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; req_one_access_txt = "150"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) -"cZc" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_southeast_lock"; locked = 1; req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cZd" = (/obj/machinery/computer/mech_bay_power_console,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"cZe" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/projectile/shotgun/pump{pixel_y = -7},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_y = -4},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_y = -1},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_y = 2},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_y = 5},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_y = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZf" = (/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cZg" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"cZh" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/projectile/pistol{pixel_y = -7},/obj/item/weapon/gun/projectile/pistol{pixel_y = -4},/obj/item/weapon/gun/projectile/pistol{pixel_y = -1},/obj/item/weapon/gun/projectile/pistol{pixel_y = 2},/obj/item/weapon/gun/projectile/pistol{pixel_y = 5},/obj/item/weapon/gun/projectile/pistol{pixel_y = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cZj" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZk" = (/obj/structure/window/basic{dir = 1},/obj/structure/table,/obj/item/robot_parts/chest,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZl" = (/obj/structure/window/basic{dir = 1},/obj/structure/table,/obj/item/weed_extract,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZm" = (/obj/structure/window/basic{dir = 1},/obj/structure/table,/obj/machinery/bot/floorbot,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZn" = (/obj/structure/window/basic{dir = 1},/obj/structure/table,/obj/item/broken_device,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZo" = (/obj/structure/table/reinforced,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/firstaid/toxin,/obj/structure/window/basic{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZp" = (/obj/structure/table/reinforced,/obj/item/weapon/scalpel,/obj/item/weapon/cable_coil,/obj/item/weapon/storage/firstaid/regular,/obj/structure/window/basic{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZq" = (/obj/structure/table/reinforced,/obj/item/weapon/circular_saw,/obj/structure/window/basic{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZr" = (/obj/machinery/optable,/obj/item/brain,/obj/structure/window/basic{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZs" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray{pixel_y = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZt" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/rifle/sniperrifle,/obj/item/weapon/gun/energy/rifle/sniperrifle,/obj/item/weapon/gun/energy/rifle/sniperrifle{pixel_y = 5},/obj/item/weapon/gun/energy/rifle/sniperrifle{pixel_y = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZu" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/projectile/detective/semiauto{pixel_y = -7},/obj/item/weapon/gun/projectile/detective/semiauto{pixel_y = -4},/obj/item/weapon/gun/projectile/detective/semiauto{pixel_y = -1},/obj/item/weapon/gun/projectile/deagle{pixel_y = 2},/obj/item/weapon/gun/projectile/deagle{pixel_y = 5},/obj/item/weapon/gun/projectile/deagle{pixel_y = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZv" = (/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZw" = (/obj/item/weapon/organ/r_arm,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZx" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/rifle/laser,/obj/item/weapon/gun/energy/rifle/laser{pixel_y = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZy" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/rifle/lasercannon,/obj/item/weapon/gun/energy/rifle/lasercannon{pixel_y = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZz" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_y = -4},/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_y = -1},/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_y = 2},/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_y = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZA" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZB" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZC" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZD" = (/obj/structure/rack,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZE" = (/obj/structure/rack,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZF" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/carapace,/obj/item/clothing/head/helmet/space/vox/carapace,/obj/item/clothing/mask/breath/vox,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZG" = (/obj/structure/rack,/obj/item/weapon/gun/dartgun/vox/raider,/obj/item/weapon/gun/dartgun/vox/medical,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/obj/item/weapon/dart_cartridge,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZH" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZI" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZJ" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZK" = (/obj/machinery/body_scanconsole{known_implants = list(/obj/item/weapon/implant/cortical)},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZL" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/rifle/pulse_rifle/destroyer,/obj/item/weapon/gun/energy/rifle/pulse_rifle/destroyer{pixel_y = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZM" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/weapon/gun/grenadelauncher{pixel_y = -3},/obj/item/weapon/gun/grenadelauncher,/obj/item/weapon/gun/grenadelauncher{pixel_y = 3},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"cZN" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/vox/station) -"cZO" = (/obj/structure/shuttle/engine/heater,/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cZP" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/medic,/obj/item/clothing/head/helmet/space/vox/medic,/obj/item/clothing/mask/breath/vox,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZQ" = (/obj/structure/rack,/obj/item/weapon/storage/pneumatic,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZR" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/vox/station) -"cZS" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox/station) -"cZT" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/mask/breath/vox,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZU" = (/obj/structure/rack,/obj/item/weapon/crossbow,/obj/item/weapon/arrow,/obj/item/weapon/arrow,/obj/item/weapon/arrow,/obj/item/weapon/arrow,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZV" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/stealth,/obj/item/clothing/head/helmet/space/vox/stealth,/obj/item/clothing/mask/breath/vox,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"cZW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cZX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cZY" = (/obj/machinery/door/airlock/hatch{req_access_txt = "150"; req_one_access = null; req_one_access_txt = "0"},/turf/simulated/shuttle/plating,/area/shuttle/vox/station) -"cZZ" = (/obj/item/clothing/head/bowler,/obj/item/weapon/broken_bottle,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"daa" = (/obj/item/clothing/head/bearpelt,/obj/item/xenos_claw,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"dab" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"dac" = (/obj/item/clothing/head/collectable/xenom,/obj/item/clothing/head/chicken,/obj/item/weapon/aiModule/syndicate,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"dad" = (/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c500,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"dae" = (/obj/item/weapon/spacecash/c50,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"daf" = (/obj/structure/AIcore,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"dag" = (/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50,/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"dah" = (/obj/structure/jungle_plant,/turf/simulated/shuttle/floor4,/area/shuttle/vox/station) -"dai" = (/turf/unsimulated/wall,/area/wizard_station) -"daj" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"dak" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"dal" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"dam" = (/obj/machinery/librarycomp,/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"dan" = (/obj/machinery/vending/magivend,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"dao" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"dap" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/wizard_station) -"daq" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station) -"dar" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/rd,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/wizard_station) -"das" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station) -"dat" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station) -"dau" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station) -"dav" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daw" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"dax" = (/obj/structure/table/woodentable,/obj/item/weapon/paper{info = "

    LIST OF SPELLS AVAILABLE

    Magic Missile:
    This spell fires several, slow moving, magic projectiles at nearby targets. If they hit a target, it is paralyzed and takes minor damage.

    Fireball:
    This spell fires a fireball at a target and does not require wizard garb. Be careful not to fire it at people that are standing next to you.

    Disintegrate:
    This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown.

    Disable Technology:
    This spell disables all weapons, cameras and most other technology in range.

    Smoke:
    This spell spawns a cloud of choking smoke at your location and does not require wizard garb.

    Blind:
    This spell temporarly blinds a single person and does not require wizard garb.

    Forcewall:
    This spell creates an unbreakable wall that lasts for 30 seconds and does not require wizard garb.

    Blink:
    This spell randomly teleports you a short distance. Useful for evasion or getting into areas if you have patience.

    Teleport:
    This spell teleports you to a type of area of your selection. Very useful if you are in danger, but has a decent cooldown, and is unpredictable.

    Mutate:
    This spell causes you to turn into a hulk, and gain telekinesis for a short while.

    Ethereal Jaunt:
    This spell creates your ethereal form, temporarily making you invisible and able to pass through walls.

    Knock:
    This spell opens nearby doors and does not require wizard garb.

    "; name = "List of Available Spells (READ)"},/obj/item/trash/tray,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/wizard_station) -"day" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) -"daz" = (/obj/structure/table/woodentable,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) -"daA" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daB" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"daC" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daD" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daE" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daF" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daG" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"daH" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"daI" = (/obj/structure/table/woodentable,/obj/item/trash/cheesie,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daJ" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash/c1,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daK" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"daL" = (/obj/structure/rack,/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"daM" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) -"daN" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/wizard_station) -"daO" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/wizard_station) -"daP" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/wizard_station) -"daQ" = (/obj/item/trash/raisins,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"daS" = (/obj/structure/showcase,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"daT" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"daU" = (/obj/structure/table/reinforced,/obj/structure/kitchenspike,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"daV" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/showcase,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"daW" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"daX" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"daY" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/wizard_station) -"daZ" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) -"dba" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"dbb" = (/mob/living/carbon/monkey,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) -"dbc" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"dbd" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"dbe" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station) -"dbf" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station) -"dbg" = (/obj/effect/decal/cleanable/molten_item,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"dbh" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station) -"dbi" = (/obj/item/trash/chips,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"dbj" = (/obj/structure/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) -"dbk" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station) -"dbl" = (/obj/structure/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station) -"dbm" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/derelict/ship) -"dbn" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/derelict/ship) -"dbo" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/derelict/ship) -"dbp" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/derelict/ship) -"dbq" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/derelict/ship) -"dbr" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbs" = (/obj/machinery/sleeper,/obj/machinery/light{dir = 1},/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbt" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbu" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/derelict/ship) -"dbv" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/derelict/ship) -"dbw" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 8},/turf/space,/area/derelict/ship) -"dbx" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/derelict/ship) -"dby" = (/obj/machinery/computer/med_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbz" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbA" = (/turf/simulated/shuttle/wall{icon_state = "swall15"; dir = 2},/area/derelict/ship) -"dbB" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/derelict/ship) -"dbC" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/ship) -"dbD" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/space,/area/derelict/ship) -"dbE" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/derelict/ship) -"dbF" = (/obj/item/weapon/scalpel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbG" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/derelict/ship) -"dbH" = (/turf/simulated/shuttle/plating,/area/derelict/ship) -"dbI" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/derelict/ship) -"dbK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/derelict/ship) -"dbL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/derelict/ship) -"dbM" = (/obj/machinery/door/airlock/glass{name = "Hibernation Pods"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbO" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbP" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/derelict/ship) -"dbQ" = (/obj/item/device/multitool,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbR" = (/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbS" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plating,/area/derelict/ship) -"dbT" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/derelict/ship) -"dbU" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 8},/turf/space,/area/derelict/ship) -"dbV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/derelict/ship) -"dbW" = (/obj/structure/table,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbX" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/derelict/ship) -"dbY" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dbZ" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dca" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/derelict/ship) -"dcc" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcd" = (/obj/machinery/door/window,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dce" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcf" = (/obj/structure/table,/obj/item/weapon/gun/energy/laser/retro,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/derelict/ship) -"dch" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dci" = (/obj/structure/table,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/derelict/ship) -"dck" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcl" = (/obj/structure/table,/obj/item/device/analyzer,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcm" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcn" = (/obj/machinery/door/airlock/glass{name = "Living Module"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dco" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcp" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area) -"dcq" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area) -"dcr" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area) -"dcs" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area) -"dct" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area) -"dcu" = (/obj/machinery/door/window/northright,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcv" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcw" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcx" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area) -"dcy" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/derelict/ship) -"dcz" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/derelict/ship) -"dcA" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area) -"dcB" = (/obj/item/weapon/table_parts,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area) -"dcC" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area) -"dcD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/derelict/ship) -"dcE" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcF" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area) -"dcG" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcH" = (/obj/item/weapon/shard,/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcI" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcJ" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcK" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/weapon/cable_coil/cut,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcL" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcM" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcN" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcO" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcP" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcQ" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/derelict/ship) -"dcR" = (/obj/item/trash/cheesie,/turf/space,/area) -"dcS" = (/obj/machinery/door/poddoor{id = "oldship_gun"; name = "Pod Bay Door"},/turf/simulated/shuttle/plating,/area/derelict/ship) -"dcT" = (/obj/machinery/mass_driver{dir = 8; icon_state = "mass_driver"; id = "oldship_gun"},/turf/simulated/shuttle/plating,/area/derelict/ship) -"dcU" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/plating,/area/derelict/ship) -"dcV" = (/obj/machinery/door/airlock/glass{name = "Pod Bay"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcW" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcX" = (/turf/simulated/shuttle/plating,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/derelict/ship) -"dcY" = (/obj/machinery/computer/pod{id = "oldship_gun"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dcZ" = (/obj/structure/table,/obj/item/weapon/screwdriver,/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"dda" = (/obj/structure/table,/obj/item/device/radio/off,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"ddb" = (/obj/machinery/power/solar/fake,/turf/simulated/floor{icon_state = "solarpanel"},/area) -"ddc" = (/obj/machinery/camera{c_tag = "North Solars"; dir = 8; network = list("Tcomsat")},/turf/space,/area) -"ddd" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area) -"dde" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomsat) -"ddf" = (/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"ddg" = (/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"ddh" = (/turf/space,/area/turret_protected/tcomsat) -"ddi" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/camera{c_tag = "West Wing North"; dir = 2; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) -"ddj" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddk" = (/obj/machinery/power/apc{dir = 1; name = "Telecoms Sat. APC"; pixel_x = 1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddm" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddn" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddo" = (/obj/item/weapon/coin/clown,/turf/simulated/floor/engine,/area/tcommsat/computer) -"ddp" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/turf/simulated/floor,/area/tcommsat/computer) -"ddq" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/tcommsat/computer) -"ddr" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor,/area/tcommsat/computer) -"dds" = (/obj/machinery/camera{c_tag = "Lounge"; dir = 2; network = list("Tcomsat")},/turf/simulated/floor,/area/tcommsat/computer) -"ddt" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/red,/turf/simulated/floor,/area/tcommsat/computer) -"ddu" = (/turf/simulated/floor,/area/tcommsat/computer) -"ddv" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/turret_protected/tcomsat) -"ddw" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/meter,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddA" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddB" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) -"ddC" = (/obj/structure/filingcabinet,/turf/simulated/floor,/area/tcommsat/computer) -"ddD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; on = 1; pressure_checks = 0},/obj/machinery/camera{c_tag = "Main Computer Room"; dir = 2; network = list("Tcomsat")},/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/tcommsat/computer) -"ddE" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/tcommsat/computer) -"ddF" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor,/area/tcommsat/computer) -"ddG" = (/obj/item/weapon/syntiflesh{name = "Cuban Pete-Meat"},/turf/simulated/floor/engine,/area/tcommsat/computer) -"ddH" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -29; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/computer) -"ddI" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/turret_protected/tcomsat) -"ddJ" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddK" = (/obj/machinery/atmospherics/valve/digital{pipe_color = "cyan"; icon_state = "valve1"; name = "Mixed Air Outlet Valve"; open = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddL" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/closet,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddN" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) -"ddO" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/tcommsat/computer) -"ddP" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/simulated/floor,/area/tcommsat/computer) -"ddQ" = (/obj/machinery/computer/telecomms/monitor{network = list("tcommsat")},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; name = "General Listening Channel"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/computer) -"ddR" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/tcommsat/computer) -"ddS" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"ddT" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/space,/area/turret_protected/tcomsat) -"ddU" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"ddV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/turret_protected/tcomsat) -"ddW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/turret_protected/tcomsat) -"ddX" = (/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) -"ddY" = (/obj/structure/sign/securearea,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"ddZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"dea" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/tcommsat/computer) -"deb" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"dec" = (/obj/machinery/computer/telecomms/server{network = list("tcommsat")},/turf/simulated/floor,/area/tcommsat/computer) -"ded" = (/obj/item/weapon/syntiflesh{name = "Cuban Pete-Meat"},/obj/item/weapon/spacecash/c1,/turf/simulated/floor/engine,/area/tcommsat/computer) -"dee" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/tcommsat/computer) -"def" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/tcommsat/computer) -"deg" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"deh" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor,/area/tcommsat/computer) -"dei" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/tcommsat/computer) -"dej" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dek" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"del" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dem" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"den" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; dir = 9; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/hatch{name = "Telecoms Control Room"; req_access_txt = "61"},/turf/simulated/floor,/area/tcommsat/computer) -"deo" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/tcommsat/computer) -"dep" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/tcommsat/computer) -"deq" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/tcommsat/computer) -"der" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/tcommsat/computer) -"des" = (/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact-f"; initialize_directions = 10},/obj/machinery/power/apc{dir = 4; name = "Telecoms Sat. Control APC"; pixel_x = 25},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/tcommsat/computer) -"det" = (/turf/simulated/wall/r_wall,/area/tcommsat/chamber) -"deu" = (/obj/machinery/vending/snack,/turf/simulated/floor,/area/tcommsat/computer) -"dev" = (/obj/machinery/vending/cola,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcommsat/computer) -"dew" = (/obj/item/weapon/cigbutt,/obj/machinery/light,/turf/simulated/floor,/area/tcommsat/computer) -"dex" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/tcommsat/computer) -"dey" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor,/area/tcommsat/computer) -"dez" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"deA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area) -"deB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area) -"deC" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating/airless,/area) -"deD" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"deE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/turret_protected/tcomsat) -"deF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/light,/turf/space,/area/turret_protected/tcomsat) -"deG" = (/obj/structure/window/reinforced{dir = 1},/turf/space,/area/turret_protected/tcomsat) -"deH" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light{dir = 8},/obj/structure/table,/obj/item/device/multitool,/obj/structure/sign/electricshock{pixel_x = -32},/turf/simulated/floor,/area/tcommsat/computer) -"deI" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 1; on = 1},/turf/simulated/floor,/area/tcommsat/computer) -"deJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/tcommsat/computer) -"deK" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/tcommsat/computer) -"deL" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/eastleft{req_access_txt = "61"},/obj/machinery/door/window/westleft{req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) -"deM" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) -"deN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/tcommsat/computer) -"deO" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Lounge"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/computer) -"deP" = (/obj/machinery/turret{lasers = 1; lasertype = 2},/turf/simulated/floor/plating/airless,/area/turret_protected/tcomsat) -"deQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"deR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"deS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"deT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"deU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"deV" = (/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact-f"; initialize_directions = 10},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) -"deW" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Telecoms Server Access"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) -"deX" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) -"deY" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"deZ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dfa" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"dfb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; dir = 5; icon_state = "intact-b-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dfc" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; dir = 10; icon_state = "intact-b-f"; initialize_directions = 10; level = 1; name = "pipe"},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"dfd" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfe" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Telecoms Sat. Central Compartment APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dff" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfh" = (/obj/machinery/camera{c_tag = "Central Compartment North"; dir = 2; network = list("Tcomsat")},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfi" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfj" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfk" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dfl" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"dfm" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dfp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dfq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dfr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; dir = 6; icon_state = "intact-b-f"; initialize_directions = 6; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dfs" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; dir = 9; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"dft" = (/obj/machinery/telecomms/server/presets/supply,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfv" = (/obj/machinery/telecomms/server/presets/common,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfw" = (/obj/machinery/telecomms/server/presets/engineering,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dfy" = (/obj/structure/table,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/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/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dfz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/camera{c_tag = "Telecoms Storage"; network = list("Tcomsat")},/turf/simulated/floor,/area/turret_protected/tcomsat) -"dfA" = (/obj/structure/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dfB" = (/obj/machinery/camera{c_tag = "West Solars"; dir = 8; network = list("Tcomsat")},/turf/space,/area) -"dfC" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dfD" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera{c_tag = "West Wing Middle"; dir = 8; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) -"dfE" = (/obj/machinery/telecomms/broadcaster/preset_left,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfF" = (/obj/machinery/telecomms/broadcaster/preset_right,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfG" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"dfH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dfI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) -"dfJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dfK" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dfL" = (/turf/simulated/floor,/area/turret_protected/tcomsat) -"dfM" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dfN" = (/obj/machinery/camera{c_tag = "East Solars"; dir = 4; network = list("Tcomsat")},/turf/space,/area) -"dfO" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{pipe_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dfP" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 4},/turf/space,/area/turret_protected/tcomsat) -"dfQ" = (/obj/structure/sign/nosmoking_2{pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfR" = (/obj/machinery/telecomms/processor/preset_two,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfS" = (/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfT" = (/obj/machinery/telecomms/relay/preset/telecomms,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/telecomms/hub/preset,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfV" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/telecomms/relay/preset/station,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfW" = (/obj/machinery/telecomms/processor/preset_four,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfX" = (/obj/machinery/telecomms/bus/preset_four,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfY" = (/obj/structure/sign/nosmoking_2{pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dfZ" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/turret_protected/tcomsat) -"dga" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dgb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dgc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/door/airlock/maintenance_hatch{name = "Telecoms Storage"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dgd" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomsat) -"dge" = (/obj/machinery/telecomms/bus/preset_one,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgf" = (/obj/machinery/telecomms/processor/preset_one,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgg" = (/obj/machinery/telecomms/receiver/preset_left,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgh" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgi" = (/obj/machinery/telecomms/bus/preset_three,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgj" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgk" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) -"dgl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dgm" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dgn" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dgo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dgp" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dgq" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dgr" = (/obj/structure/table,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor,/area/turret_protected/tcomsat) -"dgs" = (/obj/machinery/telecomms/server/presets/science,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgt" = (/obj/machinery/telecomms/server/presets/medical,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgu" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgv" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgw" = (/obj/machinery/telecomms/server/presets/command,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgx" = (/obj/machinery/telecomms/server/presets/security,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dgz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dgA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dgB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; on = 1; pressure_checks = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgC" = (/obj/machinery/camera{c_tag = "Central Compartment South"; dir = 1; network = list("Tcomsat")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"dgE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) -"dgF" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dgG" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) -"dgH" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) -"dgI" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) -"dgJ" = (/obj/machinery/turret{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"dgK" = (/obj/machinery/power/apc{dir = 1; name = "Telecoms Sat. Foyer APC"; pixel_x = 1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) -"dgL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/turret_protected/tcomfoyer) -"dgM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/turretid{ailock = 1; control_area = "\improper Telecoms Satellite"; desc = "A firewall prevents AIs from interacting with this device."; icon_state = "motion1"; lethal = 1; name = "Telecoms lethal turret control"; pixel_y = 29; req_access = list(61)},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Telecoms Foyer"; dir = 2; network = list("Tcomsat")},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"dgN" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) -"dgO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/turret_protected/tcomfoyer) -"dgP" = (/obj/machinery/turret{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"dgQ" = (/obj/structure/window/reinforced,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) -"dgR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) -"dgS" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dgT" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dgU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecoms West Wing"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) -"dgV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"dgW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dgX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dgY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dgZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dha" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dhb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"dhc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecoms East Wing"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) -"dhd" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dhe" = (/obj/machinery/camera{c_tag = "East Wing South"; dir = 8; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) -"dhf" = (/obj/machinery/camera{c_tag = "West Wing South"; dir = 4; network = list("Tcomsat")},/turf/space,/area/turret_protected/tcomsat) -"dhg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"dhh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"dhi" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/turret_protected/tcomfoyer) -"dhj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dhk" = (/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dhl" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/turret_protected/tcomfoyer) -"dhm" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'LETHAL TURRETS'. Enter at your own risk!"; name = "LETHAL TURRETS"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/turret_protected/tcomfoyer) -"dhn" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"dho" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) -"dhp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access_txt = "61"},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dhq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"dhr" = (/obj/machinery/power/smes/magical,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhs" = (/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) -"dht" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"dhu" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/tcommsat/entrance) -"dhw" = (/obj/machinery/turretid{ailock = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; icon_state = "motion3"; lethal = 0; name = "Telecoms Foyer turret control"; pixel_y = 29; req_access = list(61)},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/tcommsat/entrance) -"dhx" = (/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"dhy" = (/turf/simulated/floor,/area/tcommsat/entrance) -"dhz" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/monitor{name = "telecoms power monitoring"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "bot"},/area/tcommsat/entrance) -"dhA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"dhB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) -"dhC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance) -"dhD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera{c_tag = "Power Room West"; dir = 1; network = list("Tcomsat")},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/tcommsat/entrance) -"dhE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/tcommsat/entrance) -"dhH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera{c_tag = "Power Room East"; dir = 1; network = list("Tcomsat")},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/tcommsat/entrance) -"dhI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhJ" = (/obj/structure/sign/securearea,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"dhK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/hatch{name = "Telecoms Satellite"; req_access_txt = "61"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhL" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"dhM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) -"dhN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/tcommsat/entrance) -"dhO" = (/obj/machinery/camera{c_tag = "Entrance North"; dir = 2; network = list("Tcomsat")},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/tcommsat/entrance) -"dhP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/tcommsat/entrance) -"dhQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhR" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/tcommsat/entrance) -"dhS" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/tcommsat/entrance) -"dhT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor,/area/tcommsat/entrance) -"dhU" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhV" = (/obj/machinery/power/apc{dir = 1; name = "Telecoms Sat. Teleporter APC"; pixel_x = 1; pixel_y = 26},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/tcommsat/entrance) -"dhW" = (/obj/structure/sign/vacuum,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"dhX" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) -"dhY" = (/obj/item/weapon/cell,/turf/simulated/floor,/area/tcommsat/entrance) -"dhZ" = (/obj/structure/closet/malf/suits,/turf/simulated/floor,/area/tcommsat/entrance) -"dia" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area) -"dib" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_outer"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"dic" = (/obj/machinery/camera/xray{c_tag = "External Airlock"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"did" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"die" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance) -"dif" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/tcommsat/entrance) -"dig" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/entrance) -"dih" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless,/area) -"dii" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance) -"dij" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/tcommsat/entrance) -"dik" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/machinery/camera{c_tag = "Entrance South"; dir = 1; network = list("Tcomsat")},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance) -"dil" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/tcommsat/entrance) -"dim" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/tcommsat/entrance) -"din" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/tcommsat/entrance) -"dio" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/tcommsat/entrance) -"dip" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/tcommsat/entrance) -"diq" = (/obj/machinery/camera{c_tag = "South Solars"; dir = 4; network = list("Tcomsat")},/turf/space,/area) -"dir" = (/turf/space,/area/syndicate_station/commssat) -"dis" = (/turf/simulated/wall/r_wall,/area/AIsattele) -"dit" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) -"diu" = (/obj/machinery/teleport/station,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/AIsattele) -"div" = (/turf/simulated/floor/plating/airless,/area/AIsattele) -"diw" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/AIsattele) -"dix" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/AIsattele) -"diy" = (/obj/structure/rack,/obj/item/clothing/gloves/yellow,/turf/simulated/floor/plating/airless,/area/AIsattele) -"diz" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/AIsattele) -"diA" = (/obj/item/weapon/cell,/turf/simulated/floor/plating/airless,/area/AIsattele) -"diB" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/AIsattele) -"diC" = (/turf/space,/area/AIsattele) -"diD" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plating/airless,/area/AIsattele) -"diE" = (/obj/structure/lattice,/turf/space,/area/AIsattele) -"diF" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/AIsattele) -"diG" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/AIsattele) -"diH" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/AIsattele) -"diI" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele) -"diJ" = (/obj/machinery/power/solar/fake,/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation/solars) -"diK" = (/turf/simulated/floor/plating/airless,/area/djstation/solars) -"diL" = (/turf/simulated/wall,/area/djstation) -"diM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"diN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/djstation) -"diO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"diP" = (/turf/simulated/floor/plating,/area/djstation) -"diQ" = (/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/djstation) -"diR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"diS" = (/obj/machinery/power/terminal,/turf/simulated/floor/plating,/area/djstation) -"diT" = (/obj/item/device/multitool,/turf/simulated/floor/plating,/area/djstation) -"diU" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/simulated/floor/plating,/area/djstation) -"diV" = (/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/djstation) -"diW" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"},/turf/simulated/floor/plating,/area/djstation) -"diX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation) -"diY" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/simulated/floor/plating,/area/djstation) -"diZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/djstation) -"dja" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/djstation) -"djb" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/djstation) -"djc" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"},/turf/simulated/floor/plating,/area/djstation) -"djd" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"dje" = (/obj/machinery/vending/snack,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djf" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djg" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djh" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"dji" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) -"djj" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"djk" = (/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"djl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) -"djm" = (/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"djn" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"djo" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"djp" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"djq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"djr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) -"djs" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"djt" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"dju" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djv" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djw" = (/obj/machinery/door/airlock/glass{name = "Cabin"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djx" = (/obj/machinery/sleeper,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"djy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation) -"djz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/djstation) -"djA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"djB" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"djC" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/djstation) -"djD" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djE" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djF" = (/obj/structure/table,/obj/item/weapon/paper/djstation{info = "Welcome new owner!

    You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:
    1. Equip yourself with a multi-tool
    2. Use the multitool on each machine, that is the broadcaster, receiver and the relay.
    3. Turn all the machines on, it has already been configured for you to listen on.
    Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.