mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Conflicts: README.txt SQL/tgstation_schema.sql baystation12.dme code/ATMOSPHERICS/components/unary/vent_pump.dm code/ATMOSPHERICS/pipes.dm code/FEA/FEA_airgroup.dm code/FEA/FEA_fire.dm code/FEA/FEA_gas_mixture.dm code/FEA/FEA_turf_tile.dm code/TriDimension/Pipes.dm code/WorkInProgress/buildmode.dm code/WorkInProgress/organs/organs.dm code/WorkInProgress/virus2/Disease2/analyser.dm code/WorkInProgress/virus2/Disease2/biohazard destroyer.dm code/WorkInProgress/virus2/Disease2/cureimplanter.dm code/WorkInProgress/virus2/Disease2/diseasesplicer.dm code/WorkInProgress/virus2/Disease2/dishincubator.dm code/WorkInProgress/virus2/Disease2/isolator.dm code/WorkInProgress/virus2/Disease2/monkeydispensor.dm code/WorkInProgress/virus2/analyser.dm code/WorkInProgress/virus2/antibodies.dm code/WorkInProgress/virus2/base.dm code/WorkInProgress/virus2/biohazard destroyer.dm code/WorkInProgress/virus2/cureimplanter.dm code/WorkInProgress/virus2/curer.dm code/WorkInProgress/virus2/diseasesplicer.dm code/WorkInProgress/virus2/dishincubator.dm code/WorkInProgress/virus2/isolator.dm code/WorkInProgress/virus2/monkeydispensor.dm code/datums/ai_laws.dm code/datums/configuration.dm code/datums/datumvars.dm code/datums/diseases/alien_embryo.dm code/datums/diseases/appendicitis.dm code/datums/diseases/robotic_transformation.dm code/datums/diseases/xeno_transformation.dm code/datums/helper_datums/getrev.dm code/datums/helper_datums/teleport.dm code/datums/helper_datums/tension.dm code/datums/mind.dm code/datums/mixed.dm code/datums/shuttle_controller.dm code/datums/spell.dm code/datums/spells/ethereal_jaunt.dm code/datums/spells/genetic.dm code/datums/spells/wizard.dm code/defines/area/Space Station 13 areas.dm code/defines/atom.dm code/defines/global.dm code/defines/mob/dead/observer.dm code/defines/mob/living/carbon/alien.dm code/defines/mob/living/carbon/alien_humanoid.dm code/defines/mob/living/carbon/carbon.dm code/defines/mob/living/carbon/metroid.dm code/defines/mob/living/carbon/monkey.dm code/defines/mob/living/living.dm code/defines/mob/living/silicon/ai.dm code/defines/mob/living/silicon/robot.dm code/defines/obj.dm code/defines/obj/closet.dm code/defines/obj/clothing.dm code/defines/obj/clothing/costume.dm code/defines/obj/computer.dm code/defines/obj/costume.dm code/defines/obj/decal.dm code/defines/obj/door.dm code/defines/obj/hydro.dm code/defines/obj/machinery.dm code/defines/obj/storage.dm code/defines/obj/supplypacks.dm code/defines/obj/toy.dm code/defines/obj/vending.dm code/defines/obj/weapon.dm code/defines/procs/AStar.dm code/defines/procs/command_name.dm code/defines/procs/dbcore.dm code/defines/procs/forum_activation.dm code/defines/procs/gamehelpers.dm code/defines/procs/helpers.dm code/defines/procs/icon_procs.dm code/defines/procs/station_name.dm code/defines/procs/statistics.dm code/defines/turf.dm code/game/algorithm.dm code/game/area/areas.dm code/game/asteroid/artifacts.dm code/game/atom_procs.dm code/game/cellautomata.dm code/game/dna.dm code/game/events/EventProcs/clang.dm code/game/events/EventProcs/dust.dm code/game/events/EventProcs/ninja_abilities.dm code/game/events/EventProcs/ninja_equipment.dm code/game/events/EventProcs/space_ninja.dm code/game/events/EventProcs/spacevines.dm code/game/gamemodes/blob/blob.dm code/game/gamemodes/blob/blob_finish.dm code/game/gamemodes/blob/blob_report.dm code/game/gamemodes/blob/theblob.dm code/game/gamemodes/changeling/changeling.dm code/game/gamemodes/changeling/changeling_powers.dm code/game/gamemodes/changeling/modularchangling.dm code/game/gamemodes/changeling/traitor_chan.dm code/game/gamemodes/cult/cult.dm code/game/gamemodes/cult/cult_items.dm code/game/gamemodes/cult/cult_structures.dm code/game/gamemodes/events.dm code/game/gamemodes/events/black_hole.dm code/game/gamemodes/events/miniblob.dm code/game/gamemodes/factions.dm code/game/gamemodes/game_mode.dm code/game/gamemodes/gameticker.dm code/game/gamemodes/malfunction/malfunction.dm code/game/gamemodes/meteor/meteor.dm code/game/gamemodes/meteor/meteors.dm code/game/gamemodes/nuclear/nuclear.dm code/game/gamemodes/nuclear/nuclearbomb.dm code/game/gamemodes/nuclear/pinpointer.dm code/game/gamemodes/objective.dm code/game/gamemodes/revolution/revolution.dm code/game/gamemodes/sandbox/h_sandbox.dm code/game/gamemodes/sandbox/sandbox.dm code/game/gamemodes/setupgame.dm code/game/gamemodes/traitor/traitor.dm code/game/gamemodes/wizard/rightandwrong.dm code/game/gamemodes/wizard/soulstone.dm code/game/gamemodes/wizard/spellbook.dm code/game/gamemodes/wizard/spells.dm code/game/gamemodes/wizard/veilrender.dm code/game/gamemodes/wizard/wizard.dm code/game/hud.dm code/game/jobs/access.dm code/game/jobs/job/captain.dm code/game/jobs/job/civilian.dm code/game/jobs/job/civilian_chaplain.dm code/game/jobs/job/engineering.dm code/game/jobs/job/job.dm code/game/jobs/job/medical.dm code/game/jobs/job/science.dm code/game/jobs/job/security.dm code/game/jobs/job/silicon.dm code/game/jobs/job_controller.dm code/game/jobs/jobs.dm code/game/machinery/Beacon.dm code/game/machinery/OpTable.dm code/game/machinery/Sleeper.dm code/game/machinery/alarm.dm code/game/machinery/atmo_control.dm code/game/machinery/atmoalter/area_atmos_computer.dm code/game/machinery/autolathe.dm code/game/machinery/biogenerator.dm code/game/machinery/bots/bots.dm code/game/machinery/bots/cleanbot.dm code/game/machinery/bots/ed209bot.dm code/game/machinery/bots/floorbot.dm code/game/machinery/bots/medbot.dm code/game/machinery/bots/mulebot.dm code/game/machinery/camera.dm code/game/machinery/cell_charger.dm code/game/machinery/cloning.dm code/game/machinery/computer/HolodeckControl.dm code/game/machinery/computer/Operating.dm code/game/machinery/computer/ai_core.dm code/game/machinery/computer/arcade.dm code/game/machinery/computer/atmos_alert.dm code/game/machinery/computer/buildandrepair.dm code/game/machinery/computer/card.dm code/game/machinery/computer/cloning.dm code/game/machinery/computer/communications.dm code/game/machinery/computer/computer.dm code/game/machinery/computer/crew.dm code/game/machinery/computer/hologram.dm code/game/machinery/computer/law.dm code/game/machinery/computer/medical.dm code/game/machinery/computer/message.dm code/game/machinery/computer/pod.dm code/game/machinery/computer/power.dm code/game/machinery/computer/prisoner.dm code/game/machinery/computer/robot.dm code/game/machinery/computer/security.dm code/game/machinery/computer/shuttle.dm code/game/machinery/constructable_frame.dm code/game/machinery/deployable.dm code/game/machinery/door_control.dm code/game/machinery/doors/airlock.dm code/game/machinery/doors/airlock_electronics.dm code/game/machinery/doors/brigdoors.dm code/game/machinery/doors/door.dm code/game/machinery/doors/firedoor.dm code/game/machinery/doors/poddoor.dm code/game/machinery/doors/unpowered.dm code/game/machinery/doors/windowdoor.dm code/game/machinery/flasher.dm code/game/machinery/gateway.dm code/game/machinery/hologram.dm code/game/machinery/hydroponics.dm code/game/machinery/kitchen/gibber.dm code/game/machinery/morgue.dm code/game/machinery/newscaster.dm code/game/machinery/pipe/construction.dm code/game/machinery/pipe/pipe_dispenser.dm code/game/machinery/portable_turret.dm code/game/machinery/recharger.dm code/game/machinery/rechargestation.dm code/game/machinery/requests_console.dm code/game/machinery/shieldgen.dm code/game/machinery/spaceheater.dm code/game/machinery/suit_storage_unit.dm code/game/machinery/syndicatebeacon.dm code/game/machinery/telecomms/broadcaster.dm code/game/machinery/telecomms/logbrowser.dm code/game/machinery/telecomms/machine_interactions.dm code/game/machinery/telecomms/telemonitor.dm code/game/machinery/telecomms/traffic_control.dm code/game/machinery/teleporter.dm code/game/machinery/turrets.dm code/game/machinery/vending.dm code/game/magic/cultist/ritual.dm code/game/magic/cultist/runes.dm code/game/magic/library.dm code/game/magic/musician.dm code/game/master_controller.dm code/game/mecha/combat/combat.dm code/game/mecha/combat/gygax.dm code/game/mecha/equipment/mecha_equipment.dm code/game/mecha/equipment/tools/tools.dm code/game/mecha/equipment/weapons/weapons.dm code/game/mecha/mech_fabricator.dm code/game/mecha/mecha.dm code/game/mecha/mecha_construction_paths.dm code/game/mecha/mecha_wreckage.dm code/game/mecha/medical/medical.dm code/game/mecha/medical/odysseus.dm code/game/mecha/working/ripley.dm code/game/objects/alien/facehugger.dm code/game/objects/alien/resin.dm code/game/objects/bodybag.dm code/game/objects/closets.dm code/game/objects/closets/emergency.dm code/game/objects/closets/extinguisher.dm code/game/objects/closets/fireaxe.dm code/game/objects/closets/firecloset.dm code/game/objects/closets/fitnesscloset.dm code/game/objects/closets/janitor.dm code/game/objects/closets/kitchen.dm code/game/objects/closets/nuclear.dm code/game/objects/closets/secure/bar.dm code/game/objects/closets/secure/cargo.dm code/game/objects/closets/secure/engineering.dm code/game/objects/closets/secure/hydroponics.dm code/game/objects/closets/secure/medical.dm code/game/objects/closets/secure/personal.dm code/game/objects/closets/secure/scientist.dm code/game/objects/closets/secure/secure_closets.dm code/game/objects/closets/secure/security.dm code/game/objects/closets/syndicate.dm code/game/objects/closets/wardrobe.dm code/game/objects/contraband.dm code/game/objects/crates.dm code/game/objects/devices/PDA/PDA.dm code/game/objects/devices/PDA/cart.dm code/game/objects/devices/PDA/chatroom.dm code/game/objects/devices/aicard.dm code/game/objects/devices/flash.dm code/game/objects/devices/flashlight.dm code/game/objects/devices/paicard.dm code/game/objects/devices/scanners.dm code/game/objects/devices/taperecorder.dm code/game/objects/devices/traitordevices.dm code/game/objects/door_assembly.dm code/game/objects/effect_system.dm code/game/objects/electricchair.dm code/game/objects/explosion.dm code/game/objects/gibs.dm code/game/objects/grille.dm code/game/objects/items.dm code/game/objects/items/blueprints.dm code/game/objects/items/candle.dm code/game/objects/items/clothing.dm code/game/objects/items/food.dm code/game/objects/items/helper_procs.dm code/game/objects/items/item.dm code/game/objects/items/robot_items.dm code/game/objects/items/robot_parts.dm code/game/objects/items/tk_grab.dm code/game/objects/items/weapons/AI_modules.dm code/game/objects/items/weapons/RCD.dm code/game/objects/items/weapons/RSF.dm code/game/objects/items/weapons/cameras.dm code/game/objects/items/weapons/cards_ids.dm code/game/objects/items/weapons/cigs_lighters.dm code/game/objects/items/weapons/clown_items.dm code/game/objects/items/weapons/dna_injector.dm code/game/objects/items/weapons/explosives.dm code/game/objects/items/weapons/flamethrower.dm code/game/objects/items/weapons/grenades.dm code/game/objects/items/weapons/hand_lablers.dm code/game/objects/items/weapons/hydroponics.dm code/game/objects/items/weapons/implants/implant.dm code/game/objects/items/weapons/implants/implantcase.dm code/game/objects/items/weapons/implants/implantchair.dm code/game/objects/items/weapons/implants/implanter.dm code/game/objects/items/weapons/implants/implantfreedom.dm code/game/objects/items/weapons/implants/implantnanoaug.dm code/game/objects/items/weapons/implants/implantpad.dm code/game/objects/items/weapons/kitchen.dm code/game/objects/items/weapons/manuals.dm code/game/objects/items/weapons/medical.dm code/game/objects/items/weapons/mops_cleaners.dm code/game/objects/items/weapons/papers_bins.dm code/game/objects/items/weapons/stunbaton.dm code/game/objects/items/weapons/surgery_tools.dm code/game/objects/items/weapons/swords_axes_etc.dm code/game/objects/items/weapons/table_rack_parts.dm code/game/objects/items/weapons/tools.dm code/game/objects/items/weapons/twohanded.dm code/game/objects/items/weapons/wrappingpaper.dm code/game/objects/mineral_doors.dm code/game/objects/radio/beacon.dm code/game/objects/radio/electropack.dm code/game/objects/radio/encryptionkey.dm code/game/objects/radio/headset.dm code/game/objects/radio/intercom.dm code/game/objects/radio/radio.dm code/game/objects/secstorage/sbriefcase.dm code/game/objects/secstorage/ssafe.dm code/game/objects/stacks/glass.dm code/game/objects/stacks/metal.dm code/game/objects/stacks/stack.dm code/game/objects/stacks/wood.dm code/game/objects/stool.dm code/game/objects/storage/backpack.dm code/game/objects/storage/belt.dm code/game/objects/storage/bible.dm code/game/objects/storage/briefcase.dm code/game/objects/storage/lockbox.dm code/game/objects/storage/storage.dm code/game/objects/storage/uplink_kits.dm code/game/objects/structures.dm code/game/objects/tables_racks.dm code/game/objects/tank.dm code/game/objects/tanks/emergency.dm code/game/objects/tanks/jetpack.dm code/game/objects/toys.dm code/game/objects/transfer_valve.dm code/game/objects/uplinks.dm code/game/objects/watercloset.dm code/game/objects/weapons.dm code/game/objects/windoor_assembly.dm code/game/objects/window.dm code/game/prisonshuttle.dm code/game/smoothwall.dm code/game/sound.dm code/game/step_triggers.dm code/game/structure/structure.dm code/game/supplyshuttle.dm code/game/throwing.dm code/game/topic.dm code/game/turf.dm code/game/vehicles/airtight/airtight.dm code/game/vehicles/airtight/land.dm code/game/vehicles/airtight/space.dm code/game/vehicles/vehicle.dm code/game/verbs/ooc.dm code/game/verbs/sound.dm code/game/verbs/suicide.dm code/game/verbs/who.dm code/game/vote.dm code/modules/admin/IsBanned.dm code/modules/admin/NewBan.dm code/modules/admin/admin.dm code/modules/admin/admin_investigate.dm code/modules/admin/admin_memo.dm code/modules/admin/admin_verbs.dm code/modules/admin/banjob.dm code/modules/admin/create_mob.dm code/modules/admin/create_object.dm code/modules/admin/create_turf.dm code/modules/admin/player_panel.dm code/modules/admin/verbs/MC.dm code/modules/admin/verbs/adminhelp.dm code/modules/admin/verbs/adminjump.dm code/modules/admin/verbs/adminpm.dm code/modules/admin/verbs/adminsay.dm code/modules/admin/verbs/atmosdebug.dm code/modules/admin/verbs/cinematic.dm code/modules/admin/verbs/deadsay.dm code/modules/admin/verbs/debug.dm code/modules/admin/verbs/diagnostics.dm code/modules/admin/verbs/getlogs.dm code/modules/admin/verbs/mapping.dm code/modules/admin/verbs/massmodvar.dm code/modules/admin/verbs/modifyvariables.dm code/modules/admin/verbs/onlyone.dm code/modules/admin/verbs/playsound.dm code/modules/admin/verbs/possess.dm code/modules/admin/verbs/pray.dm code/modules/admin/verbs/randomverbs.dm code/modules/admin/verbs/striketeam.dm code/modules/admin/verbs/striketeam_syndicate.dm code/modules/assembly/assembly.dm code/modules/assembly/signaler.dm code/modules/chemical/Chemistry-Machinery.dm code/modules/chemical/Chemistry-Tools.dm code/modules/client/client defines.dm code/modules/client/client procs.dm code/modules/clothing/costume.dm code/modules/clothing/gimmick.dm code/modules/clothing/glasses.dm code/modules/clothing/glasses/glasses.dm code/modules/clothing/glasses/hud.dm code/modules/clothing/gloves.dm code/modules/clothing/head/hardhat.dm code/modules/clothing/jumpsuit.dm code/modules/clothing/mask.dm code/modules/clothing/shoes.dm code/modules/clothing/spacesuit.dm code/modules/clothing/spacesuits/captain.dm code/modules/clothing/spacesuits/miscellaneous.dm code/modules/clothing/spacesuits/ninja.dm code/modules/clothing/spacesuits/rig.dm code/modules/clothing/spacesuits/syndi.dm code/modules/clothing/spacesuits/void.dm code/modules/clothing/suit.dm code/modules/clothing/suits/armor.dm code/modules/clothing/suits/bio.dm code/modules/clothing/suits/bomb.dm code/modules/clothing/suits/detective.dm code/modules/clothing/suits/fire.dm code/modules/clothing/suits/heavy.dm code/modules/clothing/suits/hos.dm code/modules/clothing/suits/labcoat.dm code/modules/clothing/suits/miscellaneous.dm code/modules/clothing/suits/wiz_robe.dm code/modules/clothing/uniforms/lawyer.dm code/modules/critters/critter.dm code/modules/critters/critter_AI.dm code/modules/critters/critters.dm code/modules/critters/hivebots/hivebot.dm code/modules/flufftext/Dreaming.dm code/modules/flufftext/Hallucination.dm code/modules/flufftext/TextFilters.dm code/modules/food/food.dm code/modules/food/meat.dm code/modules/food/recipes_microwave.dm code/modules/maps/SwapMaps.dm code/modules/maps/dmm_suite.dm code/modules/maps/fromdmp.dm code/modules/maps/randomZlevel.dm code/modules/maps/reader.dm code/modules/maps/writer.dm code/modules/mining/machine_processing.dm code/modules/mining/machine_stacking.dm code/modules/mining/machine_unloading.dm code/modules/mining/mine_items.dm code/modules/mining/mine_turfs.dm code/modules/mining/mint.dm code/modules/mining/ores_materials_coins.dm code/modules/mining/satchel_ore_boxdm.dm code/modules/mob/dead/death.dm code/modules/mob/dead/observer/observer.dm code/modules/mob/death.dm code/modules/mob/living/blob/blob.dm code/modules/mob/living/carbon/alien/alien.dm code/modules/mob/living/carbon/alien/death.dm code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm code/modules/mob/living/carbon/alien/humanoid/death.dm code/modules/mob/living/carbon/alien/humanoid/hud.dm code/modules/mob/living/carbon/alien/humanoid/humanoid.dm code/modules/mob/living/carbon/alien/humanoid/life.dm code/modules/mob/living/carbon/alien/humanoid/login.dm code/modules/mob/living/carbon/alien/humanoid/queen.dm code/modules/mob/living/carbon/alien/larva/death.dm code/modules/mob/living/carbon/alien/larva/hud.dm code/modules/mob/living/carbon/alien/larva/larva.dm code/modules/mob/living/carbon/alien/larva/life.dm code/modules/mob/living/carbon/alien/larva/login.dm code/modules/mob/living/carbon/alien/larva/powers.dm code/modules/mob/living/carbon/alien/special/_main.dm code/modules/mob/living/carbon/alien/special/snakeman.dm code/modules/mob/living/carbon/brain/MMI.dm code/modules/mob/living/carbon/brain/brain.dm code/modules/mob/living/carbon/brain/death.dm code/modules/mob/living/carbon/brain/hud.dm code/modules/mob/living/carbon/brain/life.dm code/modules/mob/living/carbon/brain/say.dm code/modules/mob/living/carbon/carbon.dm code/modules/mob/living/carbon/human/death.dm code/modules/mob/living/carbon/human/emote.dm code/modules/mob/living/carbon/human/examine.dm code/modules/mob/living/carbon/human/hud.dm code/modules/mob/living/carbon/human/human.dm code/modules/mob/living/carbon/human/human_attackalien.dm code/modules/mob/living/carbon/human/human_attackhand.dm code/modules/mob/living/carbon/human/human_damage.dm code/modules/mob/living/carbon/human/human_defense.dm code/modules/mob/living/carbon/human/life.dm code/modules/mob/living/carbon/human/login.dm code/modules/mob/living/carbon/human/say.dm code/modules/mob/living/carbon/human/whisper.dm code/modules/mob/living/carbon/metroid/death.dm code/modules/mob/living/carbon/metroid/examine.dm code/modules/mob/living/carbon/metroid/life.dm code/modules/mob/living/carbon/metroid/login.dm code/modules/mob/living/carbon/metroid/metroid.dm code/modules/mob/living/carbon/metroid/powers.dm code/modules/mob/living/carbon/monkey/death.dm code/modules/mob/living/carbon/monkey/examine.dm code/modules/mob/living/carbon/monkey/hud.dm code/modules/mob/living/carbon/monkey/life.dm code/modules/mob/living/carbon/monkey/login.dm code/modules/mob/living/carbon/monkey/monkey.dm code/modules/mob/living/carbon/monkey/powers.dm code/modules/mob/living/damage_procs.dm code/modules/mob/living/living.dm code/modules/mob/living/living_defense.dm code/modules/mob/living/login.dm code/modules/mob/living/say.dm code/modules/mob/living/silicon/ai/ai.dm code/modules/mob/living/silicon/ai/death.dm code/modules/mob/living/silicon/ai/examine.dm code/modules/mob/living/silicon/ai/life.dm code/modules/mob/living/silicon/ai/login.dm code/modules/mob/living/silicon/ai/move.dm code/modules/mob/living/silicon/death.dm code/modules/mob/living/silicon/decoy/death.dm code/modules/mob/living/silicon/pai/death.dm code/modules/mob/living/silicon/pai/hud.dm code/modules/mob/living/silicon/pai/pai.dm code/modules/mob/living/silicon/pai/recruit.dm code/modules/mob/living/silicon/pai/software.dm code/modules/mob/living/silicon/robot/death.dm code/modules/mob/living/silicon/robot/emote.dm code/modules/mob/living/silicon/robot/examine.dm code/modules/mob/living/silicon/robot/hud.dm code/modules/mob/living/silicon/robot/life.dm code/modules/mob/living/silicon/robot/login.dm code/modules/mob/living/silicon/robot/robot.dm code/modules/mob/living/silicon/robot/robot_modules.dm code/modules/mob/living/silicon/robot/say.dm code/modules/mob/living/silicon/robot/wires.dm code/modules/mob/living/silicon/say.dm code/modules/mob/living/simple_animal/life.dm code/modules/mob/login.dm code/modules/mob/logout.dm code/modules/mob/mob.dm code/modules/mob/mob_cleanup.dm code/modules/mob/mob_defines.dm code/modules/mob/mob_grab.dm code/modules/mob/mob_helpers.dm code/modules/mob/mob_movement.dm code/modules/mob/mob_transformation_simple.dm code/modules/mob/new_player/login.dm code/modules/mob/new_player/new_player.dm code/modules/mob/new_player/preferences.dm code/modules/mob/new_player/preferences_setup.dm code/modules/mob/new_player/savefile.dm code/modules/mob/new_player/sprite_accessories.dm code/modules/mob/organ/organ.dm code/modules/mob/organ/organ_external.dm code/modules/mob/organ/pain.dm code/modules/mob/say.dm code/modules/mob/screen.dm code/modules/mob/simple_animal/crab.dm code/modules/mob/transform_procs.dm code/modules/paperwork/clipboard.dm code/modules/paperwork/filingcabinet.dm code/modules/paperwork/folders.dm code/modules/paperwork/handlabeler.dm code/modules/paperwork/paper.dm code/modules/paperwork/paperbin.dm code/modules/paperwork/pen.dm code/modules/paperwork/photocopier.dm code/modules/paperwork/stamps.dm code/modules/power/antimatter/computer.dm code/modules/power/antimatter/engine.dm code/modules/power/antimatter/fuel.dm code/modules/power/apc.dm code/modules/power/cable.dm code/modules/power/cable_heavyduty.dm code/modules/power/cell.dm code/modules/power/generator.dm code/modules/power/generator_type2.dm code/modules/power/gravitygenerator.dm code/modules/power/lighting.dm code/modules/power/port_gen.dm code/modules/power/sd_DynamicAreaLighting.dm code/modules/power/singularity/collector.dm code/modules/power/singularity/containment_field.dm code/modules/power/singularity/emitter.dm code/modules/power/singularity/field_generator.dm code/modules/power/singularity/generator.dm code/modules/power/singularity/investigate.dm code/modules/power/singularity/particle_accelerator/particle.dm code/modules/power/singularity/particle_accelerator/particle_accelerator.dm code/modules/power/singularity/particle_accelerator/particle_chamber.dm code/modules/power/singularity/particle_accelerator/particle_control.dm code/modules/power/singularity/particle_accelerator/particle_emitter.dm code/modules/power/singularity/particle_accelerator/particle_power.dm code/modules/power/singularity/singularity.dm code/modules/power/smes.dm code/modules/power/solar.dm code/modules/power/switch.dm code/modules/power/turbine.dm code/modules/projectiles/ammunition.dm code/modules/projectiles/gun.dm code/modules/projectiles/guns/energy.dm code/modules/projectiles/guns/energy/laser.dm code/modules/projectiles/guns/energy/nuclear.dm code/modules/projectiles/guns/energy/pulse.dm code/modules/projectiles/guns/energy/special.dm code/modules/projectiles/guns/energy/stun.dm code/modules/projectiles/guns/projectile.dm code/modules/projectiles/guns/projectile/pistol.dm code/modules/projectiles/guns/projectile/revolver.dm code/modules/projectiles/guns/projectile/shotgun.dm code/modules/projectiles/projectile.dm code/modules/projectiles/projectile/beams.dm code/modules/projectiles/projectile/bullets.dm code/modules/projectiles/projectile/change.dm code/modules/projectiles/projectile/special.dm code/modules/reagents/Chemistry-Holder.dm code/modules/reagents/Chemistry-Reagents.dm code/modules/reagents/Chemistry-Recipes.dm code/modules/recycling/conveyor2.dm code/modules/recycling/disposal-construction.dm code/modules/recycling/disposal.dm code/modules/recycling/sortingmachinery.dm code/modules/research/designs.dm code/modules/research/destructive_analyzer.dm code/modules/research/message_server.dm code/modules/research/protolathe.dm code/modules/research/rdconsole.dm code/modules/research/rdmachines.dm code/modules/research/research.dm code/modules/research/server.dm code/modules/scripting/AST/Operators/Binary Operators.dm code/modules/scripting/Implementations/Telecomms.dm code/modules/scripting/Parser/Keywords.dm code/modules/scripting/Scanner/Tokens.dm code/modules/scripting/stack.dm code/modules/security levels/keycard authentication.dm code/modules/security levels/security levels.dm code/setup.dm code/stylesheet.dm code/unused/AI_Visibility.dm code/unused/Ultralight.dm code/unused/airtunnel.dm code/unused/beast/bodypart.dm code/unused/conveyor.dm code/unused/disease2/analyser.dm code/unused/disease2/base.dm code/unused/disease2/biohazard destroyer.dm code/unused/disease2/cureimplanter.dm code/unused/disease2/curer.dm code/unused/disease2/diseasesplicer.dm code/unused/disease2/dishincubator.dm code/unused/disease2/isolator.dm code/unused/disease2/monkeydispensor.dm code/unused/dna.dm code/unused/gamemodes/deathmatch.dm code/unused/jobs.dm code/unused/mining/datum_processing_recipe.dm code/unused/mining/spaceship_builder_unused.dm code/unused/new_year.dm code/unused/spacecraft/manufacturing.dm code/unused/spacecraft/shipcore.dm config/README feedback.txt config/admins.txt config/config.txt config/rules.html data/mode.txt html/add-to-changelog.html html/archivedchangelog.html html/changelog.css html/changelog.html html/changelog.js icons/effects/blood.dmi icons/effects/genetics.dmi icons/misc/fullscreen.dmi icons/mob/AI.dmi icons/mob/alien.dmi icons/mob/animal.dmi icons/mob/back.dmi icons/mob/belt.dmi icons/mob/blob.dmi icons/mob/critter.dmi icons/mob/dam_human.dmi icons/mob/eyes.dmi icons/mob/feet.dmi icons/mob/hands.dmi icons/mob/head.dmi icons/mob/human.dmi icons/mob/human_face.dmi icons/mob/items_lefthand.dmi icons/mob/items_righthand.dmi icons/mob/livestock.dmi icons/mob/mask.dmi icons/mob/mecha.dmi icons/mob/mob.dmi icons/mob/monkey.dmi icons/mob/robots.dmi icons/mob/screen1.dmi icons/mob/screen1_Midnight.dmi icons/mob/screen1_Orange.dmi icons/mob/screen1_alien.dmi icons/mob/screen1_old.dmi icons/mob/suit.dmi icons/mob/uniform.dmi icons/mob/zone_sel.dmi icons/obj/Cryogenic2.dmi icons/obj/aibots.dmi icons/obj/ammo.dmi icons/obj/atmos.dmi icons/obj/bureaucracy.dmi icons/obj/card.dmi icons/obj/cigarettes.dmi icons/obj/closet.dmi icons/obj/clothing/glasses.dmi icons/obj/clothing/gloves.dmi icons/obj/clothing/hats.dmi icons/obj/clothing/masks.dmi icons/obj/clothing/shoes.dmi icons/obj/clothing/suits.dmi icons/obj/clothing/uniforms.dmi icons/obj/computer.dmi icons/obj/contraband.dmi icons/obj/decals.dmi icons/obj/device.dmi icons/obj/doors/DoorHazard.dmi icons/obj/doors/door_assembly.dmi icons/obj/drinks.dmi icons/obj/engine.dmi icons/obj/food.dmi icons/obj/grenade.dmi icons/obj/gun.dmi icons/obj/harvest.dmi icons/obj/hydroponics.dmi icons/obj/items.dmi icons/obj/janitor.dmi icons/obj/library.dmi icons/obj/lighting.dmi icons/obj/machines/field_generator.dmi icons/obj/machines/gateway.dmi icons/obj/machines/mining_machines.dmi icons/obj/machines/particle_accelerator.dmi icons/obj/meter.dmi icons/obj/mining.dmi icons/obj/objects.dmi icons/obj/paper.dmi icons/obj/pda.dmi icons/obj/pipes/disposal.dmi icons/obj/plants.dmi icons/obj/power.dmi icons/obj/projectiles.dmi icons/obj/robotics.dmi icons/obj/seeds.dmi icons/obj/singularity.dmi icons/obj/stationobjs.dmi icons/obj/stock_parts.dmi icons/obj/storage.dmi icons/obj/structures.dmi icons/obj/surgery.dmi icons/obj/syringe.dmi icons/obj/tank.dmi icons/obj/terminals.dmi icons/obj/toy.dmi icons/obj/vending.dmi icons/obj/watercloset.dmi icons/obj/weapons.dmi icons/obj/wizard.dmi icons/turf/areas.dmi icons/turf/floors.dmi icons/turf/walls.dmi interface/interface.dm interface/skin.dmf maps/Antiqua.dmm maps/RandomZLevels/assistantChamber.dmm maps/RandomZLevels/fileList.txt maps/tgstation.2.0.9.dmm sound/AI/animes.ogg sound/AI/newroundsexy.ogg sound/AI/newroundsexy2.ogg sound/effects/adminhelp.ogg tools/UnstandardnessTestForDM/UnstandardnessTestForDM.sln tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Form1.Designer.cs tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Form1.cs tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Form1.resx tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Program.cs tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties/AssemblyInfo.cs tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties/Resources.Designer.cs tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties/Resources.resx tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties/Settings.Designer.cs tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties/Settings.settings tools/UnstandardnessTestForDM/UnstandardnessTestForDM/UnstandardnessTestForDM.csproj tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin/Debug/UnstandardnessTestForDM.vshost.exe.manifest tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug/UnstandardnessTestForDM.csproj.FileListAbsolute.txt tools/expand_filedir_paths.py tools/readme.txt Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
962 lines
32 KiB
Plaintext
962 lines
32 KiB
Plaintext
/proc/scram(n)
|
|
var/t = ""
|
|
var/p = null
|
|
p = 1
|
|
while(p <= n)
|
|
t = text("[][]", t, rand(1, 9))
|
|
p++
|
|
return t
|
|
|
|
/obj/machinery/computer/dna
|
|
name = "DNA operations computer"
|
|
desc = "A Computer used to advanced DNA stuff."
|
|
icon_state = "dna"
|
|
var/obj/item/weapon/card/data/scan = null
|
|
var/obj/item/weapon/card/data/modify = null
|
|
var/obj/item/weapon/card/data/modify2 = null
|
|
var/mode = null
|
|
var/temp = null
|
|
|
|
/obj/machinery/computer/dna/attack_ai(mob/user as mob)
|
|
return src.attack_hand(user)
|
|
|
|
/obj/machinery/computer/dna/attack_paw(mob/user as mob)
|
|
return src.attack_hand(user)
|
|
|
|
/obj/machinery/computer/dna/attack_hand(mob/user as mob)
|
|
if(..())
|
|
return
|
|
user.machine = src
|
|
if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai))
|
|
var/dat = text("<I>Please Insert the cards into the slots</I><BR>\n\t\t\t\tFunction Disk: <A href='?src=\ref[];scan=1'>[]</A><BR>\n\t\t\t\tTarget Disk: <A href='?src=\ref[];modify=1'>[]</A><BR>\n\t\t\t\tAux. Data Disk: <A href='?src=\ref[];modify2=1'>[]</A><BR>\n\t\t\t\t\t(Not always used!)<BR>\n\t\t\t\t[]", src, (src.scan ? text("[]", src.scan.name) : "----------"), src, (src.modify ? text("[]", src.modify.name) : "----------"), src, (src.modify2 ? text("[]", src.modify2.name) : "----------"), (src.scan ? text("<A href='?src=\ref[];execute=1'>Execute Function</A>", src) : "No function disk inserted!"))
|
|
if (src.temp)
|
|
dat = text("[]<BR><BR><A href='?src=\ref[];clear=1'>Clear Message</A>", src.temp, src)
|
|
user << browse(dat, "window=dna_comp")
|
|
onclose(user, "dna_comp")
|
|
else
|
|
var/dat = text("<I>[]</I><BR>\n\t\t\t\t[] <A href='?src=\ref[];scan=1'>[]</A><BR>\n\t\t\t\t[] <A href='?src=\ref[];modify=1'>[]</A><BR>\n\t\t\t\t[] <A href='?src=\ref[];modify2=1'>[]</A><BR>\n\t\t\t\t\t(Not always used!)<BR>\n\t\t\t\t[]", stars("Please Insert the cards into the slots"), stars("Function Disk:"), src, (src.scan ? text("[]", src.scan.name) : "----------"), stars("Target Disk:"), src, (src.modify ? text("[]", src.modify.name) : "----------"), stars("Aux. Data Disk:"), src, (src.modify2 ? text("[]", src.modify2.name) : "----------"), (src.scan ? text("<A href='?src=\ref[];execute=1'>[]</A>", src, stars("Execute Function")) : stars("No function disk inserted!")))
|
|
if (src.temp)
|
|
dat = text("[]<BR><BR><A href='?src=\ref[];clear=1'>[]", stars(src.temp), src, stars("Clear Message</A>"))
|
|
user << browse(dat, "window=dna_comp")
|
|
onclose(user, "dna_comp")
|
|
return
|
|
|
|
/obj/machinery/computer/dna/Topic(href, href_list)
|
|
if(..())
|
|
return
|
|
if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1 || usr.telekinesis == 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
|
|
usr.machine = src
|
|
if (href_list["modify"])
|
|
if (src.modify)
|
|
src.modify.loc = src.loc
|
|
src.modify = null
|
|
src.mode = null
|
|
else
|
|
var/obj/item/I = usr.equipped()
|
|
if (istype(I, /obj/item/weapon/card/data))
|
|
usr.drop_item()
|
|
I.loc = src
|
|
src.modify = I
|
|
src.mode = null
|
|
if (href_list["modify2"])
|
|
if (src.modify2)
|
|
src.modify2.loc = src.loc
|
|
src.modify2 = null
|
|
src.mode = null
|
|
else
|
|
var/obj/item/I = usr.equipped()
|
|
if (istype(I, /obj/item/weapon/card/data))
|
|
usr.drop_item()
|
|
I.loc = src
|
|
src.modify2 = I
|
|
src.mode = null
|
|
if (href_list["scan"])
|
|
if (src.scan)
|
|
src.scan.loc = src.loc
|
|
src.scan = null
|
|
src.mode = null
|
|
else
|
|
var/obj/item/I = usr.equipped()
|
|
if (istype(I, /obj/item/weapon/card/data))
|
|
usr.drop_item()
|
|
I.loc = src
|
|
src.scan = I
|
|
src.mode = null
|
|
if (href_list["clear"])
|
|
src.temp = null
|
|
if (href_list["execute"])
|
|
if ((src.scan && src.scan.function))
|
|
switch(src.scan.function)
|
|
if("data_mutate")
|
|
if (src.modify)
|
|
if (!( findtext(src.scan.data, "-", 1, null) ))
|
|
if ((src.modify.data && src.scan.data && length(src.modify.data) >= length(src.scan.data)))
|
|
src.modify.data = text("[][]", src.scan.data, (length(src.modify.data) > length(src.scan.data) ? copytext(src.modify.data, length(src.scan.data) + 1, length(src.modify.data) + 1) : null))
|
|
else
|
|
src.temp = "Disk Failure: Cannot examine data! (Null or wrong format)"
|
|
else
|
|
var/d = findtext(src.modify.data, "-", 1, null)
|
|
var/t = copytext(src.modify.data, d + 1, length(src.modify.data) + 1)
|
|
d = text2num(copytext(1, d, null))
|
|
if ((d && t && src.modify.data && src.scan.data && length(src.modify.data) >= (length(t) + d - 1) ))
|
|
src.modify.data = text("[][][]", copytext(src.modify.data, 1, d), t, (length(src.modify.data) > length(t) + d ? copytext(src.modify.data, length(t) + d, length(src.modify.data) + 1) : null))
|
|
else
|
|
src.temp = "Disk Failure: Cannot examine data! (Null or wrong format)"
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
if("dna_seq")
|
|
src.temp = "<TT>DNA Systems Help:\nHuman DNA sequences: (Compressed in *.dna format version 10.76)\n\tSpecies Identification Marker: (28 chromosomes)\n\t\t5BDFE293BA5500F9FFFD500AAFFE\n\tStructural Enzymes:\n\t\tCDE375C9A6C25A7DBDA50EC05AC6CEB63\n\t\tNote: The first id set is used for DNA clean up operations.\n\tUsed Enzymes:\n\t\t493DB249EB6D13236100A37000800AB71\n\tSpecies/Genus Classification: <I>Homo Sapien</I>\n\nMonkey DNA sequences: (Compressed in *.dna format version 10.76)\n\tSpecies Identification Marker: (16 chromosomes)\n\t\t2B6696D2B127E5A4\n\tStructural Enzymes:\n\t\tCDEAF5B90AADBC6BA8033DB0A7FD613FA\n\t\tNote: The first id set is used for DNA clean up operations.\n\tUsed Enzymes:\n\t\tC8FFFE7EC09D80AEDEDB9A5A0B4085B61\n\tSpecies/Genus Classification: Generic Monkey\n</TT>>"
|
|
if("dna_help")
|
|
src.temp = "<TT>DNA Systems Help:\nThe DNA systems consists 3 systems.\nI. DNA Scanner/Implanter - This system is slightly advanced to use. It accepts\n\t1 disk. Before you wish to run a function/program you must implant the\n\tdisk data into the temporary memory. Note that once this is done the disk can\n\tbe removed to place a data disk in.\nII. DNA computer - This is a simple yet fast computer that basically operates on data.\nIII. Restructurer - This device reorganizes the anatomical structure of the subject\n\taccording to the DNA sequences. Please note that it is illegal to perform a\n\ttransfer from one species to or from the <I>Homo sapiens</I> species but\n\thuman to human is acceptable under UNSD guidlines.\n\tNote: This machine is programmed to operate on specific preprogrammed species with\n\tspecialized anatomical blueprints hard coded into its databanks. It cannot operate\n\ton other species. (Current: Human, Monkey)\n\nData Disks:\n\tThese run on 2 (or 3) types: DNA scanner program disks and data modification\nfunctions (and disk modification functions)\n\nDisk-Copy\n\tThis erases the target disk and completely copies the data from the aux. disk.\nDisk-Erase\n\tThis erases everything on the target disk.\nData-Clear\n\tThis erases (clears) only the data.\n\nData-Trunicate\n\tThis removes data from the target disk (parameters gathered from data slot on target\n\tdisk). This fuction has 4 modes (a,b,c,default) defined by this way. (mode id)(#)\n\ta - This cuts # data from the end. (ex a1 on ABCD = ABC)\n\tb - This cuts # data from the beginning. (ex b1 on ABCD = BCD)\n\tc - This limits the data from the end. (ex c1 on ABCD = A)\n\tdefault - This limits the data from the end. (ex 1 on ABCD = D)\nData-Add\n\tThis adds thedata on the aux. disk to the data on the target disk.\nData-Sramble\n\tThis scrambles the data on the target disk. The length is equal to\n\tthe length of the original data.\nData-Input\n\tThis lets you input data into the data slot of any data disk.\n\tNote: This doesn't work only on storage.\nData-Mutate\n\tThis basically inserts text. You follow this format:\n\tpos-text (or just text for automatic pos 1)\n\tie 2-IVE on FOUR yields FIVE\n</TT>"
|
|
if("data_add")
|
|
if (src.modify)
|
|
if (src.modify2)
|
|
if ((src.modify.data && src.modify2.data))
|
|
src.modify.data += src.modify2.data
|
|
src.temp = text("Done!<BR>New Data:<BR>[]", src.modify.data)
|
|
else
|
|
src.temp = "Cannot read data! (may be null)"
|
|
else
|
|
src.temp = "Disk Failure: Cannot read aux. data disk!"
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
if("data_scramble")
|
|
if (src.modify)
|
|
if (length(text("[]", src.modify.data)) >= 1)
|
|
src.modify.data = scram(length(text("[]", src.modify.data)))
|
|
src.temp = text("Data scrambled: []", src.modify.data)
|
|
else
|
|
src.temp = "No data to scramble"
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
if("data_input")
|
|
if (src.modify)
|
|
var/dat = input(usr, ">", text("[]", src.name), null) as text
|
|
var/s = src.scan
|
|
var/m = src.modify
|
|
if ((usr.stat || usr.restrained() || src.modify != m || src.scan != s))
|
|
return
|
|
if (((get_dist(src, usr) <= 1 || usr.telekinesis == 1) && istype(src.loc, /turf)))
|
|
src.modify.data = dat
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
if("disk_copy")
|
|
if (src.modify)
|
|
if (src.modify2)
|
|
src.modify.function = src.modify2.function
|
|
src.modify.data = src.modify2.data
|
|
src.modify.special = src.modify2.special
|
|
src.temp = "All disk data/programs copied."
|
|
else
|
|
src.temp = "Disk Failure: Cannot read aux. data disk!"
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
if("disk_dis")
|
|
if (src.modify)
|
|
src.temp = text("Function: [][]<BR>Data: []", src.modify.function, (src.modify.special ? text("-[]", src.modify.special) : null), src.modify.data)
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
if("disk_erase")
|
|
if (src.modify)
|
|
src.modify.data = null
|
|
src.modify.function = "storage"
|
|
src.modify.special = null
|
|
src.temp = "All Disk contents deleted."
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
if("data_clear")
|
|
if (src.modify)
|
|
src.modify.data = null
|
|
src.temp = "Disk data cleared."
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
if("data_trun")
|
|
if (src.modify)
|
|
if ((src.modify.data && src.scan.data))
|
|
var/l1 = length(src.modify.data)
|
|
var/l2 = max(round(text2num(src.scan.data)), 1)
|
|
switch(copytext(src.modify.data, 1, 2))
|
|
if("a")
|
|
if (l1 > l2)
|
|
src.modify.data = copytext(src.modify.data, 1, (l1 - l2) + 1)
|
|
else
|
|
src.modify.data = ""
|
|
src.temp = text("Done!<BR>New Data:<BR>[]", src.modify.data)
|
|
if("b")
|
|
if (l1 > l2)
|
|
src.modify.data = copytext(src.modify.data, l2, l1 + 1)
|
|
else
|
|
src.modify.data = ""
|
|
src.temp = text("Done!<BR>New Data:<BR>[]", src.modify.data)
|
|
if("c")
|
|
if (l1 >= l2)
|
|
src.modify.data = copytext(src.modify.data, l1 - l2, l1 + 1)
|
|
src.temp = text("Done!<BR>New Data:<BR>[]", src.modify.data)
|
|
else
|
|
if (l1 >= l2)
|
|
src.modify.data = copytext(src.modify.data, 1, l2 + 1)
|
|
src.temp = text("Done!<BR>New Data:<BR>[]", src.modify.data)
|
|
else
|
|
src.temp = "Cannot read data! (may be null and note that function data slot is used instead of aux disk!!)"
|
|
else
|
|
src.temp = "Disk Failure: Cannot read target disk!"
|
|
else
|
|
else
|
|
src.temp = "System Failure: Cannot read disk function!"
|
|
src.add_fingerprint(usr)
|
|
src.updateUsrDialog()
|
|
return
|
|
|
|
/obj/machinery/computer/dna/ex_act(severity)
|
|
switch(severity)
|
|
if(1.0)
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
if(2.0)
|
|
if (prob(50))
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
else
|
|
return
|
|
|
|
/obj/machinery/dna_scanner/allow_drop()
|
|
return 0
|
|
|
|
/obj/machinery/dna_scanner/relaymove(mob/user as mob)
|
|
if (user.stat)
|
|
return
|
|
src.go_out()
|
|
return
|
|
|
|
/obj/machinery/dna_scanner/verb/eject()
|
|
set src in oview(1)
|
|
|
|
if (usr.stat != 0)
|
|
return
|
|
src.go_out()
|
|
add_fingerprint(usr)
|
|
return
|
|
|
|
/obj/machinery/dna_scanner/verb/move_inside()
|
|
set src in oview(1)
|
|
|
|
if (usr.stat != 0)
|
|
return
|
|
if (src.occupant)
|
|
usr << "\blue <B>The scanner is already occupied!</B>"
|
|
return
|
|
if (usr.abiotic())
|
|
usr << "\blue <B>Subject cannot have abiotic items on.</B>"
|
|
return
|
|
usr.stop_pulling()
|
|
usr.client.perspective = EYE_PERSPECTIVE
|
|
usr.client.eye = src
|
|
usr.loc = src
|
|
src.occupant = usr
|
|
src.icon_state = "scanner_1"
|
|
for(var/obj/O in src)
|
|
//O = null
|
|
del(O)
|
|
//Foreach goto(124)
|
|
src.add_fingerprint(usr)
|
|
return
|
|
|
|
/obj/machinery/dna_scanner/attackby(obj/item/weapon/grab/G as obj, user as mob)
|
|
if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) )))
|
|
return
|
|
if (src.occupant)
|
|
user << "\blue <B>The scanner is already occupied!</B>"
|
|
return
|
|
if (G.affecting.abiotic())
|
|
user << "\blue <B>Subject cannot have abiotic items on.</B>"
|
|
return
|
|
var/mob/M = G.affecting
|
|
if (M.client)
|
|
M.client.perspective = EYE_PERSPECTIVE
|
|
M.client.eye = src
|
|
M.loc = src
|
|
src.occupant = M
|
|
src.icon_state = "scanner_1"
|
|
for(var/obj/O in src)
|
|
O.loc = src.loc
|
|
//Foreach goto(154)
|
|
src.add_fingerprint(user)
|
|
//G = null
|
|
del(G)
|
|
return
|
|
|
|
/obj/machinery/dna_scanner/proc/go_out()
|
|
if ((!( src.occupant ) || src.locked))
|
|
return
|
|
for(var/obj/O in src)
|
|
O.loc = src.loc
|
|
//Foreach goto(30)
|
|
if (src.occupant.client)
|
|
src.occupant.client.eye = src.occupant.client.mob
|
|
src.occupant.client.perspective = MOB_PERSPECTIVE
|
|
src.occupant.loc = src.loc
|
|
src.occupant = null
|
|
src.icon_state = "scanner_0"
|
|
return
|
|
|
|
/obj/machinery/dna_scanner/ex_act(severity)
|
|
switch(severity)
|
|
if(1.0)
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
ex_act(severity)
|
|
//Foreach goto(35)
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
if(2.0)
|
|
if (prob(50))
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
ex_act(severity)
|
|
//Foreach goto(108)
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
if(3.0)
|
|
if (prob(25))
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
ex_act(severity)
|
|
//Foreach goto(181)
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
else
|
|
return
|
|
|
|
|
|
/obj/machinery/dna_scanner/blob_act()
|
|
if(prob(75))
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
del(src)
|
|
|
|
/obj/machinery/scan_console/ex_act(severity)
|
|
|
|
switch(severity)
|
|
if(1.0)
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
if(2.0)
|
|
if (prob(50))
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
else
|
|
return
|
|
|
|
/obj/machinery/scan_console/blob_act()
|
|
|
|
if(prob(75))
|
|
del(src)
|
|
|
|
/obj/machinery/scan_console/power_change()
|
|
if(stat & BROKEN)
|
|
icon_state = "broken"
|
|
else if(powered())
|
|
icon_state = initial(icon_state)
|
|
stat &= ~NOPOWER
|
|
else
|
|
spawn(rand(0, 15))
|
|
src.icon_state = "c_unpowered"
|
|
stat |= NOPOWER
|
|
|
|
/obj/machinery/scan_console/New()
|
|
..()
|
|
spawn( 5 )
|
|
src.connected = locate(/obj/machinery/dna_scanner, get_step(src, WEST))
|
|
return
|
|
return
|
|
|
|
/obj/machinery/scan_console/process()
|
|
if(stat & (NOPOWER|BROKEN))
|
|
return
|
|
use_power(250)
|
|
|
|
var/mob/M
|
|
if (!( src.status ))
|
|
return
|
|
if (!( src.func ))
|
|
src.temp = "No function loaded into memory core!"
|
|
src.status = null
|
|
if ((src.connected && src.connected.occupant))
|
|
M = src.connected.occupant
|
|
if (src.status == "load")
|
|
src.prog_p1 = null
|
|
src.prog_p2 = null
|
|
src.prog_p3 = null
|
|
src.prog_p4 = null
|
|
switch(src.func)
|
|
if("dna_trun")
|
|
if (src.data)
|
|
src.prog_p1 = copytext(src.data, 1, 2)
|
|
src.prog_p2 = text2num(src.data)
|
|
src.prog_p3 = src.special
|
|
src.status = "dna_trun"
|
|
src.temp = "Executing trunication function on occupant."
|
|
else
|
|
src.temp = "No data implanted in core memory."
|
|
src.status = null
|
|
if("dna_scan")
|
|
if (src.special)
|
|
if (src.scan)
|
|
if (istype(M, /mob))
|
|
switch(src.special)
|
|
if("UI")
|
|
src.temp = text("Scan Complete:<BR>Data downloaded to disk!<BR>Unique Identifier: []", M.primary.uni_identity)
|
|
src.scan.data = M.primary.uni_identity
|
|
if("SE")
|
|
src.temp = text("Scan Complete:<BR>Data downloaded to disk!<BR>Structural Enzymes: []", M.primary.struc_enzyme)
|
|
src.scan.data = M.primary.struc_enzyme
|
|
if("UE")
|
|
src.temp = text("Scan Complete:<BR>Data downloaded to disk!<BR>Used Enzynmes: []", M.primary.use_enzyme)
|
|
src.scan.data = M.primary.use_enzyme
|
|
if("SI")
|
|
src.temp = text("Scan Complete:<BR>Data downloaded to disk!<BR>Species Identifier: []", M.primary.spec_identity)
|
|
src.scan.data = M.primary.spec_identity
|
|
else
|
|
else
|
|
src.temp = "No occupant to scan!"
|
|
else
|
|
src.temp = "Error: No disk to upload data to."
|
|
else
|
|
src.temp = "Error: Function program errors."
|
|
src.status = null
|
|
if("dna_replace")
|
|
if ((src.data && src.special))
|
|
src.prog_p1 = src.special
|
|
src.prog_p2 = src.data
|
|
src.status = "dna_replace"
|
|
src.temp = "Executing repalcement function on occupant."
|
|
else
|
|
src.temp = "Error: No DNA data loaded into core or function program errors."
|
|
src.status = null
|
|
if("dna_add")
|
|
if ((src.data && src.special))
|
|
src.prog_p1 = src.special
|
|
src.prog_p2 = src.data
|
|
src.status = "dna_add"
|
|
src.temp = "Executing addition function on occupant."
|
|
else
|
|
src.temp = "Error: No DNA data loaded into core or function program errors."
|
|
src.status = null
|
|
else
|
|
src.temp = "Cannot execute program!"
|
|
src.status = null
|
|
else
|
|
if (src.status == "dna_trun")
|
|
if (istype(M, /mob))
|
|
var/t = null
|
|
switch(src.prog_p3)
|
|
if("UI")
|
|
t = M.primary.uni_identity
|
|
if("SE")
|
|
t = M.primary.struc_enzyme
|
|
if("UE")
|
|
t = M.primary.use_enzyme
|
|
if("SI")
|
|
t = M.primary.spec_identity
|
|
else
|
|
if (!( src.prog_p4 ))
|
|
switch(src.prog_p1)
|
|
if("a")
|
|
src.prog_p4 = length(t)
|
|
if("b")
|
|
src.prog_p4 = 1
|
|
else
|
|
else
|
|
if (src.prog_p1 == "a")
|
|
src.prog_p4--
|
|
else
|
|
if (src.prog_p1 == "b")
|
|
src.prog_p4--
|
|
switch(src.prog_p1)
|
|
if("a")
|
|
if (src.prog_p4 <= 0)
|
|
src.temp = "Trunication complete"
|
|
src.status = null
|
|
else
|
|
t = copytext(t, 1, length(t))
|
|
src.temp = text("Trunicating []'s DNA sequence...<BR>[]<BR>Status: [] units left.<BR><BR><A href='?src=\ref[];abort=1'>Emergency Abort</A>", M.name, t, src.prog_p4, src)
|
|
if("b")
|
|
if (src.prog_p4 <= 0)
|
|
src.temp = "Trunication complete"
|
|
src.status = null
|
|
else
|
|
t = copytext(t, 2, length(t) + 1)
|
|
src.temp = text("Trunicating []'s DNA sequence...<BR>[]<BR>Status: [] units left.<BR><BR><A href='?src=\ref[];abort=1'>Emergency Abort</A>", M.name, t, src.prog_p4, src)
|
|
if("c")
|
|
if (length(t) <= src.prog_p2)
|
|
src.temp = "Limitation complete"
|
|
src.status = null
|
|
else
|
|
t = copytext(t, 1, length(t))
|
|
src.temp = text("Limiting []'s DNA sequence...<BR>[]<BR>Status: [] units converting to [] units.<BR><BR><A href='?src=\ref[];abort=1'>Emergency Abort</A>", M.name, t, length(t), src.prog_p2, src)
|
|
else
|
|
if (length(t) <= src.prog_p2)
|
|
src.temp = "Limitation complete"
|
|
src.status = null
|
|
else
|
|
t = copytext(t, 2, length(t) + 1)
|
|
src.temp = text("Limiting []'s DNA sequence...<BR>[]<BR>Status: [] units converting to [] units.<BR><BR><A href='?src=\ref[];abort=1'>Emergency Abort</A>", M.name, t, length(t), src.prog_p2, src)
|
|
switch(src.prog_p3)
|
|
if("UI")
|
|
M.primary.uni_identity = t
|
|
if("SE")
|
|
M.primary.struc_enzyme = t
|
|
if("UE")
|
|
M.primary.use_enzyme = t
|
|
if("SI")
|
|
M.primary.spec_identity = t
|
|
else
|
|
else
|
|
src.temp = "Process terminated due to lack of occupant in DNA chamber."
|
|
src.status = null
|
|
else
|
|
if (src.status == "dna_replace")
|
|
if (istype(M, /mob))
|
|
var/t = null
|
|
switch(src.prog_p1)
|
|
if("UI")
|
|
t = M.primary.uni_identity
|
|
if("SE")
|
|
t = M.primary.struc_enzyme
|
|
if("UE")
|
|
t = M.primary.use_enzyme
|
|
if("SI")
|
|
t = M.primary.spec_identity
|
|
else
|
|
if (!( src.prog_p4 ))
|
|
src.prog_p4 = 1
|
|
else
|
|
src.prog_p4++
|
|
if ((src.prog_p4 > length(t) || src.prog_p4 > length(src.prog_p2)))
|
|
src.temp = "Replacement complete"
|
|
src.status = null
|
|
else
|
|
t = text("[][][]", copytext(t, 1, src.prog_p4), copytext(src.prog_p2, src.prog_p4, src.prog_p4 + 1), (src.prog_p4 < length(t) ? copytext(t, src.prog_p4 + 1, length(t) + 1) : null))
|
|
src.temp = text("Replacing []'s DNA sequence...<BR>[]<BR>Target: []<BR>Status: At position []<BR><BR><A href='?src=\ref[];abort=1'>Emergency Abort</A>", M.name, t, src.prog_p2, src.prog_p4, src)
|
|
switch(src.prog_p1)
|
|
if("UI")
|
|
M.primary.uni_identity = t
|
|
if("SE")
|
|
M.primary.struc_enzyme = t
|
|
if("UE")
|
|
M.primary.use_enzyme = t
|
|
if("SI")
|
|
M.primary.spec_identity = t
|
|
else
|
|
else
|
|
src.temp = "Process terminated due to lack of occupant in DNA chamber."
|
|
src.status = null
|
|
else
|
|
if (src.status == "dna_add")
|
|
if (istype(M, /mob))
|
|
var/t = null
|
|
switch(src.prog_p1)
|
|
if("UI")
|
|
t = M.primary.uni_identity
|
|
if("SE")
|
|
t = M.primary.struc_enzyme
|
|
if("UE")
|
|
t = M.primary.use_enzyme
|
|
if("SI")
|
|
t = M.primary.spec_identity
|
|
else
|
|
if (!( src.prog_p4 ))
|
|
src.prog_p4 = 1
|
|
else
|
|
src.prog_p4++
|
|
if (src.prog_p4 > length(src.prog_p2))
|
|
src.temp = "Addition complete"
|
|
src.status = null
|
|
else
|
|
t = text("[][]", t, copytext(src.prog_p2, src.prog_p4, src.prog_p4 + 1))
|
|
src.temp = text("Adding to []'s DNA sequence...<BR>[]<BR>Adding: []<BR>Position: []<BR><BR><A href='?src=\ref[];abort=1'>Emergency Abort</A>", M.name, t, src.prog_p2, src.prog_p4, src)
|
|
switch(src.prog_p1)
|
|
if("UI")
|
|
M.primary.uni_identity = t
|
|
if("SE")
|
|
M.primary.struc_enzyme = t
|
|
if("UE")
|
|
M.primary.use_enzyme = t
|
|
if("SI")
|
|
M.primary.spec_identity = t
|
|
else
|
|
else
|
|
src.temp = "Process terminated due to lack of occupant in DNA chamber."
|
|
src.status = null
|
|
else
|
|
src.status = null
|
|
src.temp = "Unknown system error."
|
|
src.updateDialog()
|
|
return
|
|
|
|
/obj/machinery/scan_console/attack_paw(user as mob)
|
|
return src.attack_hand(user)
|
|
|
|
/obj/machinery/scan_console/attack_ai(user as mob)
|
|
return src.attack_hand(user)
|
|
|
|
/obj/machinery/scan_console/attack_hand(user as mob)
|
|
if(..())
|
|
return
|
|
var/dat
|
|
if (src.temp)
|
|
dat = text("[]<BR><BR><A href='?src=\ref[];clear=1'>Clear Message</A>", src.temp, src)
|
|
else
|
|
if (src.connected)
|
|
var/mob/occupant = src.connected.occupant
|
|
dat = "<font color='blue'><B>Occupant Statistics:</B></FONT><BR>"
|
|
if (occupant)
|
|
var/t1
|
|
switch(occupant.stat)
|
|
if(0)
|
|
t1 = "Conscious"
|
|
if(1)
|
|
t1 = "Unconscious"
|
|
else
|
|
t1 = "*dead*"
|
|
dat += text("[]\tHealth %: [] ([])</FONT><BR><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1)
|
|
else
|
|
dat += "The scanner is empty.<BR>"
|
|
if (!( src.connected.locked ))
|
|
dat += text("<A href='?src=\ref[];locked=1'>Lock (Unlocked)</A><BR>", src)
|
|
else
|
|
dat += text("<A href='?src=\ref[];locked=1'>Unlock (Locked)</A><BR>", src)
|
|
dat += text("Disk: <A href='?src=\ref[];scan=1'>[]</A><BR>\n[]<BR>\n[]<BR>", src,
|
|
(src.scan ? text("[]", src.scan.name) : "----------"),
|
|
(src.scan ? text("<A href='?src=\ref[];u_dat=1'>Upload Data</A>", src) : "No disk to upload"),
|
|
((src.data || src.func || src.special) ? text("<A href='?src=\ref[];c_dat=1'>Clear Data</A><BR><A href='?src=\ref[];e_dat=1'>Execute Data</A><BR>Function Type: [][]<BR>Data: []", src, src, src.func, (src.special ? text("-[]", src.special) : null), src.data) : "No data uploaded"))
|
|
dat += text("<BR><BR><A href='?src=\ref[];mach_close=scanner'>Close</A>", user)
|
|
user << browse(dat, "window=scanner;size=400x500")
|
|
onclose(user, "scanner")
|
|
return
|
|
|
|
/obj/machinery/scan_console/Topic(href, href_list)
|
|
if(..())
|
|
return
|
|
if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 || usr.telekinesis == 1) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon/ai)))
|
|
usr.machine = src
|
|
if (href_list["locked"])
|
|
if ((src.connected && src.connected.occupant))
|
|
src.connected.locked = !( src.connected.locked )
|
|
if (href_list["scan"])
|
|
if (src.scan)
|
|
src.scan.loc = src.loc
|
|
src.scan = null
|
|
else
|
|
var/obj/item/I = usr.equipped()
|
|
if (istype(I, /obj/item/weapon/card/data))
|
|
usr.drop_item()
|
|
I.loc = src
|
|
src.scan = I
|
|
if (href_list["u_dat"])
|
|
if ((src.scan && !( src.status )))
|
|
if ((src.scan.function && src.scan.function != "storage"))
|
|
src.func = src.scan.function
|
|
src.special = src.scan.special
|
|
if (src.scan.data)
|
|
src.data = src.scan.data
|
|
else
|
|
src.temp = "No disk found or core data access lock out!"
|
|
if (href_list["c_dat"])
|
|
if (!src.status)
|
|
src.func = null
|
|
src.data = null
|
|
src.special = null
|
|
else
|
|
src.temp = "No disk found or core data access lock out!"
|
|
if (href_list["clear"])
|
|
src.temp = null
|
|
if (href_list["abort"])
|
|
src.status = null
|
|
if (href_list["e_dat"])
|
|
if (!( src.status ))
|
|
src.status = "load"
|
|
src.temp = "Loading..."
|
|
src.add_fingerprint(usr)
|
|
src.updateUsrDialog()
|
|
return
|
|
|
|
/obj/machinery/restruct/allow_drop()
|
|
return 0
|
|
|
|
/obj/machinery/restruct/verb/eject()
|
|
set src in oview(1)
|
|
|
|
if (usr.stat != 0)
|
|
return
|
|
src.go_out()
|
|
add_fingerprint(usr)
|
|
return
|
|
|
|
/obj/machinery/restruct/verb/operate()
|
|
set src in oview(1)
|
|
|
|
src.add_fingerprint(usr)
|
|
if ((src.occupant && src.occupant.primary))
|
|
switch(src.occupant.primary.spec_identity)
|
|
if("5BDFE293BA5500F9FFFD500AAFFE")
|
|
if (!istype(src.occupant, /mob/living/carbon/human))
|
|
for(var/obj/O in src.occupant)
|
|
del(O)
|
|
|
|
var/mob/living/carbon/human/O = new /mob/living/carbon/human( src )
|
|
if(ticker.killer == src.occupant)
|
|
O.memory = src.occupant.memory
|
|
ticker.killer = O
|
|
var/mob/M = src.occupant
|
|
O.start = 1
|
|
O.primary = M.primary
|
|
M.primary = null
|
|
var/t1 = hex2num(copytext(O.primary.uni_identity, 25, 28))
|
|
if (t1 < 125)
|
|
O.gender = MALE
|
|
else
|
|
O.gender = FEMALE
|
|
M << "Genetic Transversal Complete!"
|
|
if (M.client)
|
|
M << "Transferring..."
|
|
M.client.mob = O
|
|
O << "Neural Sequencing Complete!"
|
|
O.loc = src
|
|
src.occupant = O
|
|
//M = null
|
|
del(M)
|
|
src.occupant = O
|
|
src.occupant << "Done!"
|
|
if("2B6696D2B127E5A4")
|
|
if (!istype(src.occupant, /mob/living/carbon/monkey))
|
|
for(var/obj/O in src.occupant)
|
|
del(O)
|
|
var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey(src)
|
|
if(ticker.killer == src.occupant)
|
|
O.memory = src.occupant.memory
|
|
ticker.killer = O
|
|
var/mob/M = src.occupant
|
|
O.start = 1
|
|
O.primary = M.primary
|
|
M.primary = null
|
|
M << "Genetic Transversal Complete!"
|
|
if (M.client)
|
|
M << "Transferring..."
|
|
M.client.mob = O
|
|
O << "Neural Sequencing Complete!"
|
|
O.loc = src
|
|
O << "Genetic Transversal Complete!"
|
|
src.occupant = O
|
|
del(M)
|
|
O.name = text("monkey ([])", copytext(md5(src.occupant.primary.uni_identity), 2, 6))
|
|
src.occupant << "Done!"
|
|
else
|
|
if (istype(src.occupant, /mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = src.occupant
|
|
|
|
var/speak = (length(H.primary.struc_enzyme) >= 25 ? hex2num(copytext(H.primary.struc_enzyme, 22, 25)) : 9999)
|
|
var/ears = (length(H.primary.struc_enzyme) >= 10 ? hex2num(copytext(H.primary.struc_enzyme, 7, 10)) : 9999)
|
|
var/vision = (length(H.primary.struc_enzyme) >= 16 ? hex2num(copytext(H.primary.struc_enzyme, 13, 16)) : 1)
|
|
var/mental1 = (length(H.primary.struc_enzyme) >= 31 ? hex2num(copytext(H.primary.struc_enzyme, 28, 31)) : 1)
|
|
var/mental2 = (length(H.primary.struc_enzyme) >= 28 ? hex2num(copytext(H.primary.struc_enzyme, 25, 28)) : 1)
|
|
var/speak2 = (length(H.primary.struc_enzyme) >= 22 ? hex2num(copytext(H.primary.struc_enzyme, 19, 22)) : 1)
|
|
H.sdisabilities = 0
|
|
H.disabilities = 0
|
|
if (speak < 3776)
|
|
H.disabilities = H.disabilities | 4
|
|
else
|
|
if (speak > 3776)
|
|
H.sdisabilities = H.sdisabilities | 2
|
|
if (speak2 < 2640)
|
|
H.disabilities = H.disabilities | 16
|
|
if (ears > 3226)
|
|
H.sdisabilities = H.sdisabilities | 4
|
|
if (vision < 1447)
|
|
H.sdisabilities = H.sdisabilities | 1
|
|
else
|
|
if (vision > 1447)
|
|
H.disabilities = H.disabilities | 1
|
|
if (mental1 < 1742)
|
|
H.disabilities = H.disabilities | 2
|
|
if (mental2 < 1452)
|
|
H.disabilities = H.disabilities | 8
|
|
var/t1 = null
|
|
if (length(H.primary.uni_identity) >= 20)
|
|
t1 = copytext(H.primary.uni_identity, 19, 21)
|
|
if (hex2num(t1) > 127)
|
|
H.gender = FEMALE
|
|
else
|
|
H.gender = MALE
|
|
else
|
|
H.gender = NEUTER
|
|
if (length(H.primary.uni_identity) >= 18)
|
|
t1 = copytext(H.primary.uni_identity, 17, 19)
|
|
H.ns_tone = hex2num(t1)
|
|
H.ns_tone = -H.ns_tone + 35
|
|
else
|
|
H.ns_tone = 1
|
|
H.ns_tone = -H.ns_tone + 35
|
|
if (length(H.primary.uni_identity) >= 16)
|
|
t1 = copytext(H.primary.uni_identity, 15, 17)
|
|
H.b_eyes = hex2num(t1)
|
|
else
|
|
H.b_eyes = 255
|
|
if (length(H.primary.uni_identity) >= 14)
|
|
t1 = copytext(H.primary.uni_identity, 13, 15)
|
|
H.g_eyes = hex2num(t1)
|
|
else
|
|
H.g_eyes = 255
|
|
if (length(H.primary.uni_identity) >= 12)
|
|
t1 = copytext(H.primary.uni_identity, 11, 13)
|
|
H.r_eyes = hex2num(t1)
|
|
else
|
|
H.r_eyes = 255
|
|
if (length(H.primary.uni_identity) >= 10)
|
|
t1 = copytext(H.primary.uni_identity, 9, 11)
|
|
H.nb_hair = hex2num(t1)
|
|
else
|
|
H.nb_hair = 255
|
|
if (length(H.primary.uni_identity) >= 8)
|
|
t1 = copytext(H.primary.uni_identity, 7, 9)
|
|
H.ng_hair = hex2num(t1)
|
|
else
|
|
H.ng_hair = 255
|
|
if (length(H.primary.uni_identity) >= 6)
|
|
t1 = copytext(H.primary.uni_identity, 5, 7)
|
|
H.nr_hair = hex2num(t1)
|
|
else
|
|
H.nr_hair = 255
|
|
H.r_hair = H.nr_hair
|
|
H.g_hair = H.ng_hair
|
|
H.b_hair = H.nb_hair
|
|
H.s_tone = H.ns_tone
|
|
H.update_face()
|
|
H.update_body()
|
|
|
|
if (reg_dna[H.primary.uni_identity])
|
|
H.real_name = reg_dna[H.primary.uni_identity]
|
|
else
|
|
var/i
|
|
while (!i)
|
|
var/randomname
|
|
if (src.gender == MALE)
|
|
randomname = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names)))
|
|
else
|
|
randomname = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names)))
|
|
if (findname(randomname))
|
|
continue
|
|
else
|
|
H.real_name = randomname
|
|
i++
|
|
reg_dna[H.primary.uni_identity] = H.real_name
|
|
H << text("\red <B>Your name is now [].</B>", H.real_name)
|
|
return
|
|
|
|
/obj/machinery/restruct/verb/move_inside()
|
|
set src in oview(1)
|
|
|
|
if (usr.stat != 0)
|
|
return
|
|
if (src.occupant)
|
|
usr << "\blue <B>The scanner is already occupied!</B>"
|
|
return
|
|
if (usr.abiotic())
|
|
usr << "\blue <B>Subject cannot have abiotic items on.</B>"
|
|
return
|
|
usr.stop_pulling()
|
|
usr.client.perspective = EYE_PERSPECTIVE
|
|
usr.client.eye = src
|
|
usr.loc = src
|
|
src.occupant = usr
|
|
src.icon_state = "restruct_1"
|
|
for(var/obj/O in src)
|
|
//O = null
|
|
del(O)
|
|
//Foreach goto(124)
|
|
src.add_fingerprint(usr)
|
|
return
|
|
|
|
/obj/machinery/restruct/relaymove(mob/user as mob)
|
|
if (user.stat)
|
|
return
|
|
src.go_out()
|
|
return
|
|
|
|
/obj/machinery/restruct/attackby(obj/item/weapon/grab/G as obj, user as mob)
|
|
if(..())
|
|
return
|
|
if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) )))
|
|
return
|
|
if (src.occupant)
|
|
user << "\blue <B>The machine is already occupied!</B>"
|
|
return
|
|
if (G.affecting.abiotic())
|
|
user << "\blue <B>Subject cannot have abiotic items on.</B>"
|
|
return
|
|
var/mob/M = G.affecting
|
|
if (M.client)
|
|
M.client.perspective = EYE_PERSPECTIVE
|
|
M.client.eye = src
|
|
M.loc = src
|
|
src.occupant = M
|
|
src.icon_state = "restruct_1"
|
|
for(var/obj/O in src)
|
|
O.loc = src.loc
|
|
//Foreach goto(154)
|
|
src.add_fingerprint(user)
|
|
//G = null
|
|
del(G)
|
|
return
|
|
|
|
/obj/machinery/restruct/proc/go_out()
|
|
if ((!( src.occupant ) || src.locked))
|
|
return
|
|
for(var/obj/O in src)
|
|
O.loc = src.loc
|
|
//Foreach goto(30)
|
|
if (src.occupant.client)
|
|
src.occupant.client.eye = src.occupant.client.mob
|
|
src.occupant.client.perspective = MOB_PERSPECTIVE
|
|
src.occupant.loc = src.loc
|
|
src.occupant = null
|
|
src.icon_state = "restruct_0"
|
|
return
|
|
|
|
/obj/machinery/restruct/ex_act(severity)
|
|
switch(severity)
|
|
if(1.0)
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
ex_act(severity)
|
|
del(src)
|
|
return
|
|
if(2.0)
|
|
if (prob(50))
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
ex_act(severity)
|
|
del(src)
|
|
return
|
|
if(3.0)
|
|
if (prob(25))
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
ex_act(severity)
|
|
del(src)
|
|
return
|
|
else
|
|
return
|
|
|
|
/obj/machinery/restruct/blob_act()
|
|
if(prob(75))
|
|
for(var/atom/movable/A as mob|obj in src)
|
|
A.loc = src.loc
|
|
del(src) |