mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Initial merge http://code.google.com/p/tgstation13/source/browse/trunk/ rev 4489 (I think) with BS12
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>
This commit is contained in:
@@ -1,235 +1,235 @@
|
||||
/*********************NEW AUTOLATHE / CRAFT LATHE***********************/
|
||||
|
||||
var/list/datum/craftlathe_item/CRAFT_ITEMS = list()
|
||||
var/CRAFT_ITEMS_SETUP = 1 //this should probably be a pre-game thing, but i'll do it so the first lathe2 that's created will set-up the recipes.
|
||||
|
||||
proc/check_craftlathe_recipe(var/list/param_recipe)
|
||||
if(param_recipe.len != 9)
|
||||
return
|
||||
var/i
|
||||
var/match = 0 //this one counts if there is at least one non-"" ingredient.
|
||||
for(var/datum/craftlathe_item/CI in CRAFT_ITEMS)
|
||||
match = 0
|
||||
for(i = 1; i <= 9; i++)
|
||||
if(CI.recipe[i] != param_recipe[i])
|
||||
match = 0 //use this so it passes by the match > 0 check below, otherwise i'd need a new variable to tell the return CI below that the check failed
|
||||
break
|
||||
if(CI.recipe[i] != "")
|
||||
match++
|
||||
if(match > 0)
|
||||
return CI
|
||||
return 0
|
||||
|
||||
/datum/craftlathe_item
|
||||
var/id = "" //must be unique for each item type. used to create recipes
|
||||
var/name = "unknown" //what the lathe will show as it's contents
|
||||
var/list/recipe = list("","","","","","","","","") //the 9 items here represent what items need to be placed in the lathe to produce this item.
|
||||
var/item_type = null //this is used on items like sheets which are added when inserted into the lathe.
|
||||
var/amount = 1
|
||||
var/amount_attackby = 1
|
||||
|
||||
/datum/craftlathe_item/New(var/param_id,var/param_name,var/param_amount,var/param_ammount_per_attackby,var/list/param_recipe,var/param_type = null)
|
||||
..()
|
||||
id = param_id
|
||||
name = param_name
|
||||
recipe = param_recipe
|
||||
item_type = param_type
|
||||
amount = param_amount;
|
||||
amount_attackby = param_ammount_per_attackby
|
||||
return
|
||||
|
||||
//this proc checks the recipe you give in it's parameter with the entire list of available items. If any match, it returns the item from CRAFT_ITEMS. the returned item should not be changed!!
|
||||
|
||||
/obj/machinery/autolathe2
|
||||
name = "Craft lathe"
|
||||
icon_state = "autolathe"
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/datum/craftlathe_item/selected = null
|
||||
var/datum/craftlathe_item/make = null
|
||||
var/list/datum/craftlathe_item/craft_contents = list()
|
||||
var/list/current_recipe = list("","","","","","","","","")
|
||||
|
||||
/obj/machinery/autolathe2/New()
|
||||
..()
|
||||
if(CRAFT_ITEMS_SETUP)
|
||||
CRAFT_ITEMS_SETUP = 0
|
||||
build_recipes()
|
||||
return
|
||||
|
||||
/obj/machinery/autolathe2/attack_hand(mob/user as mob)
|
||||
var/dat
|
||||
dat = text("<h3>Craft Lathe</h3>")
|
||||
dat += text("<table><tr><td valign='top'>")
|
||||
|
||||
dat += text("<b>Materials</b><p>")
|
||||
var/datum/craftlathe_item/CI
|
||||
var/i
|
||||
for(i = 1; i <= craft_contents.len; i++)
|
||||
CI = craft_contents[i]
|
||||
if (CI == selected)
|
||||
dat += text("[CI.name] ([CI.amount])<br>")
|
||||
else
|
||||
dat += text("<A href='?src=\ref[src];select=[i]'>[CI.name]</a> ([CI.amount])<br>")
|
||||
|
||||
dat += text("</td><td valign='top'>")
|
||||
|
||||
dat += text("<b>Crafting Table</b><p>")
|
||||
|
||||
dat += text(" <table bgcolor='#cccccc' cellpadding='4' cellspacing='0'>")
|
||||
|
||||
var/j = 0
|
||||
var/k = 0
|
||||
for (i = 0; i < 3; i++)
|
||||
dat += text(" <tr>")
|
||||
for (j = 1; j <= 3; j++)
|
||||
k = i * 3 + j
|
||||
if (current_recipe[k])
|
||||
dat += text(" <td><A href='?src=\ref[src];remove=[k]'>[current_recipe[k]]</a></td>")
|
||||
else
|
||||
dat += text(" <td><A href='?src=\ref[src];add=[k]'>----</a></td>")
|
||||
dat += text(" </tr>")
|
||||
dat += text(" </table>")
|
||||
|
||||
dat += text("<br><br>")
|
||||
dat += text("<b>Will make: </b>")
|
||||
if (make)
|
||||
dat += text("<A href='?src=\ref[src];make=[1]'>[make.name]</a>")
|
||||
else
|
||||
dat += text("nothing useful")
|
||||
|
||||
dat += text("</td></tr></table>")
|
||||
user << browse("[dat]", "window=craft")
|
||||
|
||||
/obj/machinery/autolathe2/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["remove"])
|
||||
var/n = text2num(href_list["remove"])
|
||||
if(!n || n < 1 || n > 9)
|
||||
return
|
||||
current_recipe[n] = ""
|
||||
if(href_list["select"])
|
||||
var/n = text2num(href_list["select"])
|
||||
if(!n || n < 1 || n > 9)
|
||||
return
|
||||
selected = craft_contents[n]
|
||||
if(href_list["add"])
|
||||
var/n = text2num(href_list["add"])
|
||||
if(!n || n < 1 || n > 9)
|
||||
return
|
||||
if(selected)
|
||||
current_recipe[n] = selected.id
|
||||
if(href_list["make"])
|
||||
var/datum/craftlathe_item/MAKE = check_craftlathe_recipe(src.current_recipe)
|
||||
if(MAKE)
|
||||
for (var/datum/craftlathe_item/CI2 in craft_contents)
|
||||
if(CI2.id == MAKE.id)
|
||||
CI2.amount += CI2.amount_attackby
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
craft_contents += new/datum/craftlathe_item(MAKE.id,MAKE.name,MAKE.amount,MAKE.amount_attackby,MAKE.recipe,MAKE.item_type)
|
||||
var/datum/craftlathe_item/CI = check_craftlathe_recipe(src.current_recipe)
|
||||
if(CI)
|
||||
make = CI
|
||||
else
|
||||
make = null
|
||||
src.updateUsrDialog()
|
||||
|
||||
|
||||
|
||||
/obj/machinery/autolathe2/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
for (var/datum/craftlathe_item/CI in CRAFT_ITEMS)
|
||||
if(W.type == CI.item_type)
|
||||
for (var/datum/craftlathe_item/CI2 in craft_contents)
|
||||
if(CI2.item_type == W.type)
|
||||
CI2.amount += CI2.amount_attackby
|
||||
rmv_item(W)
|
||||
return
|
||||
craft_contents += new/datum/craftlathe_item(CI.id,CI.name,CI.amount,CI.amount_attackby,CI.recipe,CI.item_type)
|
||||
rmv_item(W)
|
||||
return
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/autolathe2/proc/rmv_item(obj/item/W as obj)
|
||||
if(istype(W,/obj/item/stack))
|
||||
var/obj/item/stack/S = W
|
||||
S.amount--
|
||||
if (S.amount <= 0)
|
||||
del(S)
|
||||
else
|
||||
del(W)
|
||||
|
||||
/obj/machinery/autolathe2/proc/build_recipes()
|
||||
//Parameters: ID, Name, Amount, Amount_added_per_attackby, Recipe, Object type
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("METAL","Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/metal)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("R METAL","Reinforced Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/r_metal)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("GLASS","Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("R GLASS","Reinforced Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/rglass)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("GOLD","Gold",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/gold)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SILVER","Silver",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/silver)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("DIAMOND","Diamond",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/diamond)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("PLASMA","Plasma",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/plasma)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("URANIUM","Uranium",1,1,list("","","","","","","","",""),/obj/item/weapon/ore/uranium)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("CLOWN","Bananium",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/clown)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ADMAMANTINE","Adamantine",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/adamantine)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SCREWS","Screws",9,9,list("","","","","METAL","","","METAL",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("COGS","Cogs",9,9,list("","METAL","","METAL","METAL","METAL","","METAL",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SWITCH","Switch",12,12,list("METAL","","METAL","METAL","METAL","","METAL","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("KEYBOARD","Keyboard",1,1,list("","","","SWITCH","SWITCH","SWITCH","SWITCH","SWITCH","SWITCH"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("M PANEL","Metal Panel",10,10,list("","","","","METAL","METAL","","METAL","METAL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("CASE","Equipment Case",1,1,list("M PANEL","M PANEL","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL","M PANEL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("G PANEL","Glass Panel",10,10,list("","","","","GLASS","GLASS","","GLASS","GLASS"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SCREEN","Screen",1,1,list("","GLASS","","GLASS","PLASMA","GLASS","","GLASS",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EL SILVER","Electronics Silver",30,30,list("","","","","SILVER","","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EL GOLD","Electronics Gold",6,6,list("","","","","GOLD","","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("TINTED GL","Tinted Glass",2,2,list("","METAL","","","GLASS","","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("TANK VALVE","Tank Transfer Valuve",1,1,list("","PIPE","","","PIPE","SWITCH","","PIPE",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("PIPE","Pipe",1,1,list("","M PANEL","","","M PANEL","","","M PANEL",""))
|
||||
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("CB FRAME","Circuitboard Frame",1,1,list("","","","M PANEL","G PANEL","M PANEL","G PANEL","M PANEL","G PANEL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ROM","ROM Module",1,1,list("EL SILVER","EL SILVER","EL SILVER","EL SILVER","","EL SILVER","EL SILVER","EL SILVER","EL SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("RAM","RAM Module",1,1,list("EL SILVER","EL SILVER","EL SILVER","EL SILVER","EL GOLD","EL SILVER","EL SILVER","EL SILVER","EL SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("PROCESSOR","Processor",1,1,list("EL GOLD","EL SILVER","EL GOLD","EL SILVER","EL SILVER","EL SILVER","EL SILVER","EL GOLD","EL SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ANTENNA","Antenna",1,1,list("","","EL SILVER","","","EL SILVER","EL SILVER","EL SILVER","EL SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("OP RECEPTOR","Optic Receptor",1,1,list("G PANEL","G PANEL","G PANEL","","EL GOLD","","G PANEL","G PANEL","G PANEL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("THERMAL OP R","Thermal Optic Receptor",1,1,list("","OP RECEPTOR","","ROM","DIAMOND","DIAMOND","","OP RECEPTOR",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("MASON OP R","Mason Optic Receptor",1,1,list("","OP RECEPTOR","","ROM","EL SILVER","EL SILVER","","OP RECEPTOR",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EAR FRAME","Earpiece Frame",1,1,list("M PANEL","M PANEL","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("RADIO M","Radio Module",1,1,list("","ANTENNA","","","ROM","","CB FRAME","CB FRAME","CB FRAME"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EARPIECE","Radio Earpiece",1,1,list("","","","","RADIO M","","","EAR FRAME",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EARMUFFS","Earmuffs",1,1,list("","M PANEL","","EAR FRAME","","EAR FRAME","","",""))
|
||||
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("GLASSES FRAME","Glasses Frame",1,1,list("M PANEL","","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL","M PANEL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("MASONS","Mason Scanners",1,1,list("","","","MASON OP R","GLASSES FRAME","MASON OP R","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("THERMALS","Thermal Scanners",1,1,list("","","","THERMAL OP R","GLASSES FRAME","THERMAL OP R","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SUNGLASSES","Sunglasses",1,1,list("","","","TINTED GL","GLASSES FRAME","TINTED GL","","",""))
|
||||
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HELMET FR","Helmet Frame",1,1,list("METAL","METAL","METAL","METAL","","METAL","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HELMET","Security Helmet",1,1,list("R METAL","R METAL","R METAL","R METAL","HELMET FR","R METAL","","GLASS",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HOS HELMET","HoS Helmet",1,1,list("SILVER","GOLD","SILVER","SILVER","HELMET","SILVER","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HARDHAT","Hardhat",1,1,list("","FLASHLIGHT","","","HELMET FR","","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SWAT HELMET","SWAT Helmet",1,1,list("","","","","HELMET","","R GLASS","R GLASS","R GLASS"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("WELDING HELM","Welding Helmet",1,1,list("","","","","HELMET FR","","TINTED GL","TINTED GL","TINTED GL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SPACE HELMET","Space Helmet",1,1,list("R METAL","SILVER","R METAL","SILVER","HELMET FR","SILVER","R GLASS","R GLASS","R GLASS"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("RIG HELMET","RIG Helmet",1,1,list("R METAL","SILVER","R METAL","SILVER","SPACE HELMET","SILVER","R GLASS","R GLASS","R GLASS"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("GAS MASK","Gas Mask",1,1,list("","","","","HELMET FR","TANK VALVE","","G PANEL",""))
|
||||
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ARMOR FRAME","Armor Frame",1,1,list("R METAL","","R METAL","R METAL","R METAL","R METAL","R METAL","R METAL","R METAL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ARMOR","Armored Vest",1,1,list("R METAL","","R METAL","R METAL","ARMOR FRAME","R METAL","R METAL","R METAL","R METAL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HOS ARMOR","HoS Armor",1,1,list("DIAMOND","","DIAMOND","URANIUM","ARMOR","URANIUM","URANIUM","R METAL","URANIUM"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("CAP ARMOR","Captain Armor",1,1,list("DIAMOND","","DIAMOND","URANIUM","HOS ARMOR","URANIUM","URANIUM","R METAL","URANIUM"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SPACE S FR","Space Suit Frame",1,1,list("SILVER","","SILVER","SILVER","SILVER","SILVER","SILVER","SILVER","SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SPACE SUIT","Space Suit",1,1,list("SILVER","","SILVER","RAM","SPACE S FR","RADIO M","SILVER","SILVEr","SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("RIG SUIT","RIG Suit",1,1,list("SILVER","","SILVER","SILVER","SPACE SUIT","SILVER","SILVER","SILVER","SILVER"))
|
||||
//TODO: Flashlight, type paths
|
||||
return
|
||||
|
||||
|
||||
|
||||
/*********************NEW AUTOLATHE / CRAFT LATHE***********************/
|
||||
|
||||
var/list/datum/craftlathe_item/CRAFT_ITEMS = list()
|
||||
var/CRAFT_ITEMS_SETUP = 1 //this should probably be a pre-game thing, but i'll do it so the first lathe2 that's created will set-up the recipes.
|
||||
|
||||
proc/check_craftlathe_recipe(var/list/param_recipe)
|
||||
if(param_recipe.len != 9)
|
||||
return
|
||||
var/i
|
||||
var/match = 0 //this one counts if there is at least one non-"" ingredient.
|
||||
for(var/datum/craftlathe_item/CI in CRAFT_ITEMS)
|
||||
match = 0
|
||||
for(i = 1; i <= 9; i++)
|
||||
if(CI.recipe[i] != param_recipe[i])
|
||||
match = 0 //use this so it passes by the match > 0 check below, otherwise i'd need a new variable to tell the return CI below that the check failed
|
||||
break
|
||||
if(CI.recipe[i] != "")
|
||||
match++
|
||||
if(match > 0)
|
||||
return CI
|
||||
return 0
|
||||
|
||||
/datum/craftlathe_item
|
||||
var/id = "" //must be unique for each item type. used to create recipes
|
||||
var/name = "unknown" //what the lathe will show as it's contents
|
||||
var/list/recipe = list("","","","","","","","","") //the 9 items here represent what items need to be placed in the lathe to produce this item.
|
||||
var/item_type = null //this is used on items like sheets which are added when inserted into the lathe.
|
||||
var/amount = 1
|
||||
var/amount_attackby = 1
|
||||
|
||||
/datum/craftlathe_item/New(var/param_id,var/param_name,var/param_amount,var/param_ammount_per_attackby,var/list/param_recipe,var/param_type = null)
|
||||
..()
|
||||
id = param_id
|
||||
name = param_name
|
||||
recipe = param_recipe
|
||||
item_type = param_type
|
||||
amount = param_amount;
|
||||
amount_attackby = param_ammount_per_attackby
|
||||
return
|
||||
|
||||
//this proc checks the recipe you give in it's parameter with the entire list of available items. If any match, it returns the item from CRAFT_ITEMS. the returned item should not be changed!!
|
||||
|
||||
/obj/machinery/autolathe2
|
||||
name = "Craft lathe"
|
||||
icon_state = "autolathe"
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/datum/craftlathe_item/selected = null
|
||||
var/datum/craftlathe_item/make = null
|
||||
var/list/datum/craftlathe_item/craft_contents = list()
|
||||
var/list/current_recipe = list("","","","","","","","","")
|
||||
|
||||
/obj/machinery/autolathe2/New()
|
||||
..()
|
||||
if(CRAFT_ITEMS_SETUP)
|
||||
CRAFT_ITEMS_SETUP = 0
|
||||
build_recipes()
|
||||
return
|
||||
|
||||
/obj/machinery/autolathe2/attack_hand(mob/user as mob)
|
||||
var/dat
|
||||
dat = text("<h3>Craft Lathe</h3>")
|
||||
dat += text("<table><tr><td valign='top'>")
|
||||
|
||||
dat += text("<b>Materials</b><p>")
|
||||
var/datum/craftlathe_item/CI
|
||||
var/i
|
||||
for(i = 1; i <= craft_contents.len; i++)
|
||||
CI = craft_contents[i]
|
||||
if (CI == selected)
|
||||
dat += text("[CI.name] ([CI.amount])<br>")
|
||||
else
|
||||
dat += text("<A href='?src=\ref[src];select=[i]'>[CI.name]</a> ([CI.amount])<br>")
|
||||
|
||||
dat += text("</td><td valign='top'>")
|
||||
|
||||
dat += text("<b>Crafting Table</b><p>")
|
||||
|
||||
dat += text(" <table bgcolor='#cccccc' cellpadding='4' cellspacing='0'>")
|
||||
|
||||
var/j = 0
|
||||
var/k = 0
|
||||
for (i = 0; i < 3; i++)
|
||||
dat += text(" <tr>")
|
||||
for (j = 1; j <= 3; j++)
|
||||
k = i * 3 + j
|
||||
if (current_recipe[k])
|
||||
dat += text(" <td><A href='?src=\ref[src];remove=[k]'>[current_recipe[k]]</a></td>")
|
||||
else
|
||||
dat += text(" <td><A href='?src=\ref[src];add=[k]'>----</a></td>")
|
||||
dat += text(" </tr>")
|
||||
dat += text(" </table>")
|
||||
|
||||
dat += text("<br><br>")
|
||||
dat += text("<b>Will make: </b>")
|
||||
if (make)
|
||||
dat += text("<A href='?src=\ref[src];make=[1]'>[make.name]</a>")
|
||||
else
|
||||
dat += text("nothing useful")
|
||||
|
||||
dat += text("</td></tr></table>")
|
||||
user << browse("[dat]", "window=craft")
|
||||
|
||||
/obj/machinery/autolathe2/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["remove"])
|
||||
var/n = text2num(href_list["remove"])
|
||||
if(!n || n < 1 || n > 9)
|
||||
return
|
||||
current_recipe[n] = ""
|
||||
if(href_list["select"])
|
||||
var/n = text2num(href_list["select"])
|
||||
if(!n || n < 1 || n > 9)
|
||||
return
|
||||
selected = craft_contents[n]
|
||||
if(href_list["add"])
|
||||
var/n = text2num(href_list["add"])
|
||||
if(!n || n < 1 || n > 9)
|
||||
return
|
||||
if(selected)
|
||||
current_recipe[n] = selected.id
|
||||
if(href_list["make"])
|
||||
var/datum/craftlathe_item/MAKE = check_craftlathe_recipe(src.current_recipe)
|
||||
if(MAKE)
|
||||
for (var/datum/craftlathe_item/CI2 in craft_contents)
|
||||
if(CI2.id == MAKE.id)
|
||||
CI2.amount += CI2.amount_attackby
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
craft_contents += new/datum/craftlathe_item(MAKE.id,MAKE.name,MAKE.amount,MAKE.amount_attackby,MAKE.recipe,MAKE.item_type)
|
||||
var/datum/craftlathe_item/CI = check_craftlathe_recipe(src.current_recipe)
|
||||
if(CI)
|
||||
make = CI
|
||||
else
|
||||
make = null
|
||||
src.updateUsrDialog()
|
||||
|
||||
|
||||
|
||||
/obj/machinery/autolathe2/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
for (var/datum/craftlathe_item/CI in CRAFT_ITEMS)
|
||||
if(W.type == CI.item_type)
|
||||
for (var/datum/craftlathe_item/CI2 in craft_contents)
|
||||
if(CI2.item_type == W.type)
|
||||
CI2.amount += CI2.amount_attackby
|
||||
rmv_item(W)
|
||||
return
|
||||
craft_contents += new/datum/craftlathe_item(CI.id,CI.name,CI.amount,CI.amount_attackby,CI.recipe,CI.item_type)
|
||||
rmv_item(W)
|
||||
return
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/autolathe2/proc/rmv_item(obj/item/W as obj)
|
||||
if(istype(W,/obj/item/stack))
|
||||
var/obj/item/stack/S = W
|
||||
S.amount--
|
||||
if (S.amount <= 0)
|
||||
del(S)
|
||||
else
|
||||
del(W)
|
||||
|
||||
/obj/machinery/autolathe2/proc/build_recipes()
|
||||
//Parameters: ID, Name, Amount, Amount_added_per_attackby, Recipe, Object type
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("METAL","Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/metal)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("R METAL","Reinforced Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/r_metal)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("GLASS","Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("R GLASS","Reinforced Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/rglass)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("GOLD","Gold",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/gold)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SILVER","Silver",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/silver)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("DIAMOND","Diamond",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/diamond)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("PLASMA","Plasma",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/plasma)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("URANIUM","Uranium",1,1,list("","","","","","","","",""),/obj/item/weapon/ore/uranium)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("CLOWN","Bananium",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/clown)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ADMAMANTINE","Adamantine",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/adamantine)
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SCREWS","Screws",9,9,list("","","","","METAL","","","METAL",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("COGS","Cogs",9,9,list("","METAL","","METAL","METAL","METAL","","METAL",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SWITCH","Switch",12,12,list("METAL","","METAL","METAL","METAL","","METAL","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("KEYBOARD","Keyboard",1,1,list("","","","SWITCH","SWITCH","SWITCH","SWITCH","SWITCH","SWITCH"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("M PANEL","Metal Panel",10,10,list("","","","","METAL","METAL","","METAL","METAL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("CASE","Equipment Case",1,1,list("M PANEL","M PANEL","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL","M PANEL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("G PANEL","Glass Panel",10,10,list("","","","","GLASS","GLASS","","GLASS","GLASS"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SCREEN","Screen",1,1,list("","GLASS","","GLASS","PLASMA","GLASS","","GLASS",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EL SILVER","Electronics Silver",30,30,list("","","","","SILVER","","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EL GOLD","Electronics Gold",6,6,list("","","","","GOLD","","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("TINTED GL","Tinted Glass",2,2,list("","METAL","","","GLASS","","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("TANK VALVE","Tank Transfer Valuve",1,1,list("","PIPE","","","PIPE","SWITCH","","PIPE",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("PIPE","Pipe",1,1,list("","M PANEL","","","M PANEL","","","M PANEL",""))
|
||||
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("CB FRAME","Circuitboard Frame",1,1,list("","","","M PANEL","G PANEL","M PANEL","G PANEL","M PANEL","G PANEL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ROM","ROM Module",1,1,list("EL SILVER","EL SILVER","EL SILVER","EL SILVER","","EL SILVER","EL SILVER","EL SILVER","EL SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("RAM","RAM Module",1,1,list("EL SILVER","EL SILVER","EL SILVER","EL SILVER","EL GOLD","EL SILVER","EL SILVER","EL SILVER","EL SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("PROCESSOR","Processor",1,1,list("EL GOLD","EL SILVER","EL GOLD","EL SILVER","EL SILVER","EL SILVER","EL SILVER","EL GOLD","EL SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ANTENNA","Antenna",1,1,list("","","EL SILVER","","","EL SILVER","EL SILVER","EL SILVER","EL SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("OP RECEPTOR","Optic Receptor",1,1,list("G PANEL","G PANEL","G PANEL","","EL GOLD","","G PANEL","G PANEL","G PANEL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("THERMAL OP R","Thermal Optic Receptor",1,1,list("","OP RECEPTOR","","ROM","DIAMOND","DIAMOND","","OP RECEPTOR",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("MASON OP R","Mason Optic Receptor",1,1,list("","OP RECEPTOR","","ROM","EL SILVER","EL SILVER","","OP RECEPTOR",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EAR FRAME","Earpiece Frame",1,1,list("M PANEL","M PANEL","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("RADIO M","Radio Module",1,1,list("","ANTENNA","","","ROM","","CB FRAME","CB FRAME","CB FRAME"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EARPIECE","Radio Earpiece",1,1,list("","","","","RADIO M","","","EAR FRAME",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("EARMUFFS","Earmuffs",1,1,list("","M PANEL","","EAR FRAME","","EAR FRAME","","",""))
|
||||
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("GLASSES FRAME","Glasses Frame",1,1,list("M PANEL","","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL","M PANEL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("MASONS","Mason Scanners",1,1,list("","","","MASON OP R","GLASSES FRAME","MASON OP R","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("THERMALS","Thermal Scanners",1,1,list("","","","THERMAL OP R","GLASSES FRAME","THERMAL OP R","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SUNGLASSES","Sunglasses",1,1,list("","","","TINTED GL","GLASSES FRAME","TINTED GL","","",""))
|
||||
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HELMET FR","Helmet Frame",1,1,list("METAL","METAL","METAL","METAL","","METAL","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HELMET","Security Helmet",1,1,list("R METAL","R METAL","R METAL","R METAL","HELMET FR","R METAL","","GLASS",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HOS HELMET","HoS Helmet",1,1,list("SILVER","GOLD","SILVER","SILVER","HELMET","SILVER","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HARDHAT","Hardhat",1,1,list("","FLASHLIGHT","","","HELMET FR","","","",""))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SWAT HELMET","SWAT Helmet",1,1,list("","","","","HELMET","","R GLASS","R GLASS","R GLASS"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("WELDING HELM","Welding Helmet",1,1,list("","","","","HELMET FR","","TINTED GL","TINTED GL","TINTED GL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SPACE HELMET","Space Helmet",1,1,list("R METAL","SILVER","R METAL","SILVER","HELMET FR","SILVER","R GLASS","R GLASS","R GLASS"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("RIG HELMET","RIG Helmet",1,1,list("R METAL","SILVER","R METAL","SILVER","SPACE HELMET","SILVER","R GLASS","R GLASS","R GLASS"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("GAS MASK","Gas Mask",1,1,list("","","","","HELMET FR","TANK VALVE","","G PANEL",""))
|
||||
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ARMOR FRAME","Armor Frame",1,1,list("R METAL","","R METAL","R METAL","R METAL","R METAL","R METAL","R METAL","R METAL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("ARMOR","Armored Vest",1,1,list("R METAL","","R METAL","R METAL","ARMOR FRAME","R METAL","R METAL","R METAL","R METAL"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("HOS ARMOR","HoS Armor",1,1,list("DIAMOND","","DIAMOND","URANIUM","ARMOR","URANIUM","URANIUM","R METAL","URANIUM"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("CAP ARMOR","Captain Armor",1,1,list("DIAMOND","","DIAMOND","URANIUM","HOS ARMOR","URANIUM","URANIUM","R METAL","URANIUM"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SPACE S FR","Space Suit Frame",1,1,list("SILVER","","SILVER","SILVER","SILVER","SILVER","SILVER","SILVER","SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("SPACE SUIT","Space Suit",1,1,list("SILVER","","SILVER","RAM","SPACE S FR","RADIO M","SILVER","SILVEr","SILVER"))
|
||||
CRAFT_ITEMS += new/datum/craftlathe_item("RIG SUIT","RIG Suit",1,1,list("SILVER","","SILVER","SILVER","SPACE SUIT","SILVER","SILVER","SILVER","SILVER"))
|
||||
//TODO: Flashlight, type paths
|
||||
return
|
||||
|
||||
|
||||
|
||||
return
|
||||
@@ -1,78 +1,78 @@
|
||||
/**********************Gas extractor**************************/
|
||||
|
||||
/obj/machinery/mineral/gasextractor
|
||||
name = "Gas extractor"
|
||||
desc = "A machine which extracts gasses from ores"
|
||||
icon = 'computer.dmi'
|
||||
icon_state = "aiupload"
|
||||
var/obj/machinery/mineral/input = null
|
||||
var/obj/machinery/mineral/output = null
|
||||
var/message = "";
|
||||
var/processing = 0
|
||||
var/newtoxins = 0
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
|
||||
/obj/machinery/mineral/gasextractor/New()
|
||||
..()
|
||||
spawn( 5 )
|
||||
for (var/dir in cardinal)
|
||||
src.input = locate(/obj/machinery/mineral/input, get_step(src, dir))
|
||||
if(src.input) break
|
||||
for (var/dir in cardinal)
|
||||
src.output = locate(/obj/machinery/mineral/output, get_step(src, dir))
|
||||
if(src.output) break
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/mineral/gasextractor/attack_hand(user as mob)
|
||||
|
||||
if(processing == 1)
|
||||
user << "The machine is processing"
|
||||
return
|
||||
|
||||
var/dat
|
||||
dat = text("input connection status: ")
|
||||
if (input)
|
||||
dat += text("<b><font color='green'>CONNECTED</font></b>")
|
||||
else
|
||||
dat += text("<b><font color='red'>NOT CONNECTED</font></b>")
|
||||
dat += text("<br>output connection status: ")
|
||||
if (output)
|
||||
dat += text("<b><font color='green'>CONNECTED</font></b>")
|
||||
else
|
||||
dat += text("<b><font color='red'>NOT CONNECTED</font></b>")
|
||||
|
||||
dat += text("<br><br><A href='?src=\ref[src];extract=[input]'>Extract gas</A>")
|
||||
|
||||
dat += text("<br><br>Message: [message]")
|
||||
|
||||
user << browse("[dat]", "window=purifier")
|
||||
|
||||
/obj/machinery/mineral/gasextractor/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["extract"])
|
||||
if (src.output)
|
||||
if (locate(/obj/machinery/portable_atmospherics/canister,output.loc))
|
||||
newtoxins = 0
|
||||
processing = 1
|
||||
var/obj/item/weapon/ore/O
|
||||
while(locate(/obj/item/weapon/ore/plasma, input.loc) && locate(/obj/machinery/portable_atmospherics/canister,output.loc))
|
||||
O = locate(/obj/item/weapon/ore/plasma, input.loc)
|
||||
if (istype(O,/obj/item/weapon/ore/plasma))
|
||||
var/obj/machinery/portable_atmospherics/canister/C
|
||||
C = locate(/obj/machinery/portable_atmospherics/canister,output.loc)
|
||||
C.air_contents.toxins += 100
|
||||
newtoxins += 100
|
||||
del(O)
|
||||
sleep(5);
|
||||
processing = 0;
|
||||
message = "Canister filled with [newtoxins] units of toxins"
|
||||
else
|
||||
message = "No canister found"
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
/**********************Gas extractor**************************/
|
||||
|
||||
/obj/machinery/mineral/gasextractor
|
||||
name = "Gas extractor"
|
||||
desc = "A machine which extracts gasses from ores"
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_state = "aiupload"
|
||||
var/obj/machinery/mineral/input = null
|
||||
var/obj/machinery/mineral/output = null
|
||||
var/message = "";
|
||||
var/processing = 0
|
||||
var/newtoxins = 0
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
|
||||
/obj/machinery/mineral/gasextractor/New()
|
||||
..()
|
||||
spawn( 5 )
|
||||
for (var/dir in cardinal)
|
||||
src.input = locate(/obj/machinery/mineral/input, get_step(src, dir))
|
||||
if(src.input) break
|
||||
for (var/dir in cardinal)
|
||||
src.output = locate(/obj/machinery/mineral/output, get_step(src, dir))
|
||||
if(src.output) break
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/mineral/gasextractor/attack_hand(user as mob)
|
||||
|
||||
if(processing == 1)
|
||||
user << "The machine is processing"
|
||||
return
|
||||
|
||||
var/dat
|
||||
dat = text("input connection status: ")
|
||||
if (input)
|
||||
dat += text("<b><font color='green'>CONNECTED</font></b>")
|
||||
else
|
||||
dat += text("<b><font color='red'>NOT CONNECTED</font></b>")
|
||||
dat += text("<br>output connection status: ")
|
||||
if (output)
|
||||
dat += text("<b><font color='green'>CONNECTED</font></b>")
|
||||
else
|
||||
dat += text("<b><font color='red'>NOT CONNECTED</font></b>")
|
||||
|
||||
dat += text("<br><br><A href='?src=\ref[src];extract=[input]'>Extract gas</A>")
|
||||
|
||||
dat += text("<br><br>Message: [message]")
|
||||
|
||||
user << browse("[dat]", "window=purifier")
|
||||
|
||||
/obj/machinery/mineral/gasextractor/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["extract"])
|
||||
if (src.output)
|
||||
if (locate(/obj/machinery/portable_atmospherics/canister,output.loc))
|
||||
newtoxins = 0
|
||||
processing = 1
|
||||
var/obj/item/weapon/ore/O
|
||||
while(locate(/obj/item/weapon/ore/plasma, input.loc) && locate(/obj/machinery/portable_atmospherics/canister,output.loc))
|
||||
O = locate(/obj/item/weapon/ore/plasma, input.loc)
|
||||
if (istype(O,/obj/item/weapon/ore/plasma))
|
||||
var/obj/machinery/portable_atmospherics/canister/C
|
||||
C = locate(/obj/machinery/portable_atmospherics/canister,output.loc)
|
||||
C.air_contents.toxins += 100
|
||||
newtoxins += 100
|
||||
del(O)
|
||||
sleep(5);
|
||||
processing = 0;
|
||||
message = "Canister filled with [newtoxins] units of toxins"
|
||||
else
|
||||
message = "No canister found"
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
@@ -1,88 +1,88 @@
|
||||
/**********************Mineral purifier (not used, replaced with mineral processing unit)**************************/
|
||||
|
||||
/obj/machinery/mineral/purifier
|
||||
name = "Ore Purifier"
|
||||
desc = "A machine which makes building material out of ores"
|
||||
icon = 'computer.dmi'
|
||||
icon_state = "aiupload"
|
||||
var/obj/machinery/mineral/input = null
|
||||
var/obj/machinery/mineral/output = null
|
||||
var/processed = 0
|
||||
var/processing = 0
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
|
||||
/obj/machinery/mineral/purifier/attack_hand(user as mob)
|
||||
|
||||
if(processing == 1)
|
||||
user << "The machine is processing"
|
||||
return
|
||||
|
||||
var/dat
|
||||
dat = text("input connection status: ")
|
||||
if (input)
|
||||
dat += text("<b><font color='green'>CONNECTED</font></b>")
|
||||
else
|
||||
dat += text("<b><font color='red'>NOT CONNECTED</font></b>")
|
||||
dat += text("<br>output connection status: ")
|
||||
if (output)
|
||||
dat += text("<b><font color='green'>CONNECTED</font></b>")
|
||||
else
|
||||
dat += text("<b><font color='red'>NOT CONNECTED</font></b>")
|
||||
|
||||
dat += text("<br><br><A href='?src=\ref[src];purify=[input]'>Purify</A>")
|
||||
|
||||
dat += text("<br><br>found: <font color='green'><b>[processed]</b></font>")
|
||||
user << browse("[dat]", "window=purifier")
|
||||
|
||||
/obj/machinery/mineral/purifier/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["purify"])
|
||||
if (src.output)
|
||||
processing = 1;
|
||||
var/obj/item/weapon/ore/O
|
||||
processed = 0;
|
||||
while(locate(/obj/item/weapon/ore, input.loc))
|
||||
O = locate(/obj/item/weapon/ore, input.loc)
|
||||
if (istype(O,/obj/item/weapon/ore/iron))
|
||||
new /obj/item/stack/sheet/metal(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/diamond))
|
||||
new /obj/item/stack/sheet/diamond(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/plasma))
|
||||
new /obj/item/stack/sheet/plasma(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/gold))
|
||||
new /obj/item/stack/sheet/gold(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/silver))
|
||||
new /obj/item/stack/sheet/silver(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/uranium))
|
||||
new /obj/item/weapon/ore/uranium(output.loc)
|
||||
del(O)
|
||||
/*if (istype(O,/obj/item/weapon/ore/adamantine))
|
||||
new /obj/item/weapon/ore/adamantine(output.loc)
|
||||
del(O)*/ //Dunno what this area does so I'll keep it commented out for now -Durandan
|
||||
processed++
|
||||
sleep(5);
|
||||
processing = 0;
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/mineral/purifier/New()
|
||||
..()
|
||||
spawn( 5 )
|
||||
for (var/dir in cardinal)
|
||||
src.input = locate(/obj/machinery/mineral/input, get_step(src, dir))
|
||||
if(src.input) break
|
||||
for (var/dir in cardinal)
|
||||
src.output = locate(/obj/machinery/mineral/output, get_step(src, dir))
|
||||
if(src.output) break
|
||||
return
|
||||
return
|
||||
/**********************Mineral purifier (not used, replaced with mineral processing unit)**************************/
|
||||
|
||||
/obj/machinery/mineral/purifier
|
||||
name = "Ore Purifier"
|
||||
desc = "A machine which makes building material out of ores"
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_state = "aiupload"
|
||||
var/obj/machinery/mineral/input = null
|
||||
var/obj/machinery/mineral/output = null
|
||||
var/processed = 0
|
||||
var/processing = 0
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
|
||||
/obj/machinery/mineral/purifier/attack_hand(user as mob)
|
||||
|
||||
if(processing == 1)
|
||||
user << "The machine is processing"
|
||||
return
|
||||
|
||||
var/dat
|
||||
dat = text("input connection status: ")
|
||||
if (input)
|
||||
dat += text("<b><font color='green'>CONNECTED</font></b>")
|
||||
else
|
||||
dat += text("<b><font color='red'>NOT CONNECTED</font></b>")
|
||||
dat += text("<br>output connection status: ")
|
||||
if (output)
|
||||
dat += text("<b><font color='green'>CONNECTED</font></b>")
|
||||
else
|
||||
dat += text("<b><font color='red'>NOT CONNECTED</font></b>")
|
||||
|
||||
dat += text("<br><br><A href='?src=\ref[src];purify=[input]'>Purify</A>")
|
||||
|
||||
dat += text("<br><br>found: <font color='green'><b>[processed]</b></font>")
|
||||
user << browse("[dat]", "window=purifier")
|
||||
|
||||
/obj/machinery/mineral/purifier/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["purify"])
|
||||
if (src.output)
|
||||
processing = 1;
|
||||
var/obj/item/weapon/ore/O
|
||||
processed = 0;
|
||||
while(locate(/obj/item/weapon/ore, input.loc))
|
||||
O = locate(/obj/item/weapon/ore, input.loc)
|
||||
if (istype(O,/obj/item/weapon/ore/iron))
|
||||
new /obj/item/stack/sheet/metal(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/diamond))
|
||||
new /obj/item/stack/sheet/diamond(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/plasma))
|
||||
new /obj/item/stack/sheet/plasma(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/gold))
|
||||
new /obj/item/stack/sheet/gold(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/silver))
|
||||
new /obj/item/stack/sheet/silver(output.loc)
|
||||
del(O)
|
||||
if (istype(O,/obj/item/weapon/ore/uranium))
|
||||
new /obj/item/weapon/ore/uranium(output.loc)
|
||||
del(O)
|
||||
/*if (istype(O,/obj/item/weapon/ore/adamantine))
|
||||
new /obj/item/weapon/ore/adamantine(output.loc)
|
||||
del(O)*/ //Dunno what this area does so I'll keep it commented out for now -Durandan
|
||||
processed++
|
||||
sleep(5);
|
||||
processing = 0;
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/mineral/purifier/New()
|
||||
..()
|
||||
spawn( 5 )
|
||||
for (var/dir in cardinal)
|
||||
src.input = locate(/obj/machinery/mineral/input, get_step(src, dir))
|
||||
if(src.input) break
|
||||
for (var/dir in cardinal)
|
||||
src.output = locate(/obj/machinery/mineral/output, get_step(src, dir))
|
||||
if(src.output) break
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,174 +1,174 @@
|
||||
/**********************Random mine generator************************/
|
||||
|
||||
//this item is intended to give the effect of entering the mine, so that light gradually fades
|
||||
/obj/effect/mine_generator
|
||||
name = "Random mine generator"
|
||||
anchored = 1
|
||||
unacidable = 1
|
||||
var/turf/last_loc
|
||||
var/turf/target_loc
|
||||
var/turf/start_loc
|
||||
var/randXParam //the value of these two parameters are generated by the code itself and used to
|
||||
var/randYParam //determine the random XY parameters
|
||||
var/mineDirection = 3
|
||||
/*
|
||||
0 = none
|
||||
1 = N
|
||||
2 = NNW
|
||||
3 = NW
|
||||
4 = WNW
|
||||
5 = W
|
||||
6 = WSW
|
||||
7 = SW
|
||||
8 = SSW
|
||||
9 = S
|
||||
10 = SSE
|
||||
11 = SE
|
||||
12 = ESE
|
||||
13 = E
|
||||
14 = ENE
|
||||
15 = NE
|
||||
16 = NNE
|
||||
*/
|
||||
|
||||
/obj/effect/mine_generator/New()
|
||||
last_loc = src.loc
|
||||
var/i
|
||||
for(i = 0; i < 50; i++)
|
||||
gererateTargetLoc()
|
||||
//target_loc = locate(last_loc.x + rand(5), last_loc.y + rand(5), src.z)
|
||||
fillWithAsteroids()
|
||||
del(src)
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/mine_generator/proc/gererateTargetLoc() //this proc determines where the next square-room will end.
|
||||
switch(mineDirection)
|
||||
if(1)
|
||||
randXParam = 0
|
||||
randYParam = 4
|
||||
if(2)
|
||||
randXParam = 1
|
||||
randYParam = 3
|
||||
if(3)
|
||||
randXParam = 2
|
||||
randYParam = 2
|
||||
if(4)
|
||||
randXParam = 3
|
||||
randYParam = 1
|
||||
if(5)
|
||||
randXParam = 4
|
||||
randYParam = 0
|
||||
if(6)
|
||||
randXParam = 3
|
||||
randYParam = -1
|
||||
if(7)
|
||||
randXParam = 2
|
||||
randYParam = -2
|
||||
if(8)
|
||||
randXParam = 1
|
||||
randYParam = -3
|
||||
if(9)
|
||||
randXParam = 0
|
||||
randYParam = -4
|
||||
if(10)
|
||||
randXParam = -1
|
||||
randYParam = -3
|
||||
if(11)
|
||||
randXParam = -2
|
||||
randYParam = -2
|
||||
if(12)
|
||||
randXParam = -3
|
||||
randYParam = -1
|
||||
if(13)
|
||||
randXParam = -4
|
||||
randYParam = 0
|
||||
if(14)
|
||||
randXParam = -3
|
||||
randYParam = 1
|
||||
if(15)
|
||||
randXParam = -2
|
||||
randYParam = 2
|
||||
if(16)
|
||||
randXParam = -1
|
||||
randYParam = 3
|
||||
target_loc = last_loc
|
||||
if (randXParam > 0)
|
||||
target_loc = locate(target_loc.x+rand(randXParam),target_loc.y,src.z)
|
||||
if (randYParam > 0)
|
||||
target_loc = locate(target_loc.x,target_loc.y+rand(randYParam),src.z)
|
||||
if (randXParam < 0)
|
||||
target_loc = locate(target_loc.x-rand(-randXParam),target_loc.y,src.z)
|
||||
if (randYParam < 0)
|
||||
target_loc = locate(target_loc.x,target_loc.y-rand(-randXParam),src.z)
|
||||
if (mineDirection == 1 || mineDirection == 5 || mineDirection == 9 || mineDirection == 13) //if N,S,E,W, turn quickly
|
||||
if(prob(50))
|
||||
mineDirection += 2
|
||||
else
|
||||
mineDirection -= 2
|
||||
if(mineDirection < 1)
|
||||
mineDirection += 16
|
||||
else
|
||||
if(prob(50))
|
||||
if(prob(50))
|
||||
mineDirection += 1
|
||||
else
|
||||
mineDirection -= 1
|
||||
if(mineDirection < 1)
|
||||
mineDirection += 16
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/mine_generator/proc/fillWithAsteroids()
|
||||
|
||||
if(last_loc)
|
||||
start_loc = last_loc
|
||||
|
||||
if(start_loc && target_loc)
|
||||
var/x1
|
||||
var/y1
|
||||
|
||||
var/turf/line_start = start_loc
|
||||
var/turf/column = line_start
|
||||
|
||||
if(start_loc.x <= target_loc.x)
|
||||
if(start_loc.y <= target_loc.y) //GOING NORTH-EAST
|
||||
for(y1 = start_loc.y; y1 <= target_loc.y; y1++)
|
||||
for(x1 = start_loc.x; x1 <= target_loc.x; x1++)
|
||||
new/turf/simulated/floor/plating/airless/asteroid(column)
|
||||
column = get_step(column,EAST)
|
||||
line_start = get_step(line_start,NORTH)
|
||||
column = line_start
|
||||
last_loc = target_loc
|
||||
return
|
||||
else //GOING NORTH-WEST
|
||||
for(y1 = start_loc.y; y1 >= target_loc.y; y1--)
|
||||
for(x1 = start_loc.x; x1 <= target_loc.x; x1++)
|
||||
new/turf/simulated/floor/plating/airless/asteroid(column)
|
||||
column = get_step(column,WEST)
|
||||
line_start = get_step(line_start,NORTH)
|
||||
column = line_start
|
||||
last_loc = target_loc
|
||||
return
|
||||
else
|
||||
if(start_loc.y <= target_loc.y) //GOING SOUTH-EAST
|
||||
for(y1 = start_loc.y; y1 <= target_loc.y; y1++)
|
||||
for(x1 = start_loc.x; x1 >= target_loc.x; x1--)
|
||||
new/turf/simulated/floor/plating/airless/asteroid(column)
|
||||
column = get_step(column,EAST)
|
||||
line_start = get_step(line_start,SOUTH)
|
||||
column = line_start
|
||||
last_loc = target_loc
|
||||
return
|
||||
else //GOING SOUTH-WEST
|
||||
for(y1 = start_loc.y; y1 >= target_loc.y; y1--)
|
||||
for(x1 = start_loc.x; x1 >= target_loc.x; x1--)
|
||||
new/turf/simulated/floor/plating/airless/asteroid(column)
|
||||
column = get_step(column,WEST)
|
||||
line_start = get_step(line_start,SOUTH)
|
||||
column = line_start
|
||||
last_loc = target_loc
|
||||
return
|
||||
|
||||
|
||||
/**********************Random mine generator************************/
|
||||
|
||||
//this item is intended to give the effect of entering the mine, so that light gradually fades
|
||||
/obj/effect/mine_generator
|
||||
name = "Random mine generator"
|
||||
anchored = 1
|
||||
unacidable = 1
|
||||
var/turf/last_loc
|
||||
var/turf/target_loc
|
||||
var/turf/start_loc
|
||||
var/randXParam //the value of these two parameters are generated by the code itself and used to
|
||||
var/randYParam //determine the random XY parameters
|
||||
var/mineDirection = 3
|
||||
/*
|
||||
0 = none
|
||||
1 = N
|
||||
2 = NNW
|
||||
3 = NW
|
||||
4 = WNW
|
||||
5 = W
|
||||
6 = WSW
|
||||
7 = SW
|
||||
8 = SSW
|
||||
9 = S
|
||||
10 = SSE
|
||||
11 = SE
|
||||
12 = ESE
|
||||
13 = E
|
||||
14 = ENE
|
||||
15 = NE
|
||||
16 = NNE
|
||||
*/
|
||||
|
||||
/obj/effect/mine_generator/New()
|
||||
last_loc = src.loc
|
||||
var/i
|
||||
for(i = 0; i < 50; i++)
|
||||
gererateTargetLoc()
|
||||
//target_loc = locate(last_loc.x + rand(5), last_loc.y + rand(5), src.z)
|
||||
fillWithAsteroids()
|
||||
del(src)
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/mine_generator/proc/gererateTargetLoc() //this proc determines where the next square-room will end.
|
||||
switch(mineDirection)
|
||||
if(1)
|
||||
randXParam = 0
|
||||
randYParam = 4
|
||||
if(2)
|
||||
randXParam = 1
|
||||
randYParam = 3
|
||||
if(3)
|
||||
randXParam = 2
|
||||
randYParam = 2
|
||||
if(4)
|
||||
randXParam = 3
|
||||
randYParam = 1
|
||||
if(5)
|
||||
randXParam = 4
|
||||
randYParam = 0
|
||||
if(6)
|
||||
randXParam = 3
|
||||
randYParam = -1
|
||||
if(7)
|
||||
randXParam = 2
|
||||
randYParam = -2
|
||||
if(8)
|
||||
randXParam = 1
|
||||
randYParam = -3
|
||||
if(9)
|
||||
randXParam = 0
|
||||
randYParam = -4
|
||||
if(10)
|
||||
randXParam = -1
|
||||
randYParam = -3
|
||||
if(11)
|
||||
randXParam = -2
|
||||
randYParam = -2
|
||||
if(12)
|
||||
randXParam = -3
|
||||
randYParam = -1
|
||||
if(13)
|
||||
randXParam = -4
|
||||
randYParam = 0
|
||||
if(14)
|
||||
randXParam = -3
|
||||
randYParam = 1
|
||||
if(15)
|
||||
randXParam = -2
|
||||
randYParam = 2
|
||||
if(16)
|
||||
randXParam = -1
|
||||
randYParam = 3
|
||||
target_loc = last_loc
|
||||
if (randXParam > 0)
|
||||
target_loc = locate(target_loc.x+rand(randXParam),target_loc.y,src.z)
|
||||
if (randYParam > 0)
|
||||
target_loc = locate(target_loc.x,target_loc.y+rand(randYParam),src.z)
|
||||
if (randXParam < 0)
|
||||
target_loc = locate(target_loc.x-rand(-randXParam),target_loc.y,src.z)
|
||||
if (randYParam < 0)
|
||||
target_loc = locate(target_loc.x,target_loc.y-rand(-randXParam),src.z)
|
||||
if (mineDirection == 1 || mineDirection == 5 || mineDirection == 9 || mineDirection == 13) //if N,S,E,W, turn quickly
|
||||
if(prob(50))
|
||||
mineDirection += 2
|
||||
else
|
||||
mineDirection -= 2
|
||||
if(mineDirection < 1)
|
||||
mineDirection += 16
|
||||
else
|
||||
if(prob(50))
|
||||
if(prob(50))
|
||||
mineDirection += 1
|
||||
else
|
||||
mineDirection -= 1
|
||||
if(mineDirection < 1)
|
||||
mineDirection += 16
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/mine_generator/proc/fillWithAsteroids()
|
||||
|
||||
if(last_loc)
|
||||
start_loc = last_loc
|
||||
|
||||
if(start_loc && target_loc)
|
||||
var/x1
|
||||
var/y1
|
||||
|
||||
var/turf/line_start = start_loc
|
||||
var/turf/column = line_start
|
||||
|
||||
if(start_loc.x <= target_loc.x)
|
||||
if(start_loc.y <= target_loc.y) //GOING NORTH-EAST
|
||||
for(y1 = start_loc.y; y1 <= target_loc.y; y1++)
|
||||
for(x1 = start_loc.x; x1 <= target_loc.x; x1++)
|
||||
new/turf/simulated/floor/plating/airless/asteroid(column)
|
||||
column = get_step(column,EAST)
|
||||
line_start = get_step(line_start,NORTH)
|
||||
column = line_start
|
||||
last_loc = target_loc
|
||||
return
|
||||
else //GOING NORTH-WEST
|
||||
for(y1 = start_loc.y; y1 >= target_loc.y; y1--)
|
||||
for(x1 = start_loc.x; x1 <= target_loc.x; x1++)
|
||||
new/turf/simulated/floor/plating/airless/asteroid(column)
|
||||
column = get_step(column,WEST)
|
||||
line_start = get_step(line_start,NORTH)
|
||||
column = line_start
|
||||
last_loc = target_loc
|
||||
return
|
||||
else
|
||||
if(start_loc.y <= target_loc.y) //GOING SOUTH-EAST
|
||||
for(y1 = start_loc.y; y1 <= target_loc.y; y1++)
|
||||
for(x1 = start_loc.x; x1 >= target_loc.x; x1--)
|
||||
new/turf/simulated/floor/plating/airless/asteroid(column)
|
||||
column = get_step(column,EAST)
|
||||
line_start = get_step(line_start,SOUTH)
|
||||
column = line_start
|
||||
last_loc = target_loc
|
||||
return
|
||||
else //GOING SOUTH-WEST
|
||||
for(y1 = start_loc.y; y1 >= target_loc.y; y1--)
|
||||
for(x1 = start_loc.x; x1 >= target_loc.x; x1--)
|
||||
new/turf/simulated/floor/plating/airless/asteroid(column)
|
||||
column = get_step(column,WEST)
|
||||
line_start = get_step(line_start,SOUTH)
|
||||
column = line_start
|
||||
last_loc = target_loc
|
||||
return
|
||||
|
||||
|
||||
return
|
||||
+337
-337
@@ -1,338 +1,338 @@
|
||||
/**********************Rail track**************************/
|
||||
|
||||
/obj/machinery/rail_track
|
||||
name = "Rail track"
|
||||
icon = 'Mining.dmi'
|
||||
icon_state = "rail"
|
||||
dir = 2
|
||||
var/id = null //this is needed for switches to work Set to the same on the whole length of the track
|
||||
anchored = 1
|
||||
|
||||
/**********************Rail intersection**************************/
|
||||
|
||||
/obj/machinery/rail_track/intersections
|
||||
name = "Rail track intersection"
|
||||
icon_state = "rail_intersection"
|
||||
|
||||
/obj/machinery/rail_track/intersections/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (1) dir = 5
|
||||
if (5) dir = 4
|
||||
if (4) dir = 9
|
||||
if (9) dir = 2
|
||||
if (2) dir = 10
|
||||
if (10) dir = 8
|
||||
if (8) dir = 6
|
||||
if (6) dir = 1
|
||||
return
|
||||
|
||||
/obj/machinery/rail_track/intersections/NSE
|
||||
name = "Rail track T intersection"
|
||||
icon_state = "rail_intersection_NSE"
|
||||
dir = 2
|
||||
|
||||
/obj/machinery/rail_track/intersections/NSE/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (1) dir = 5
|
||||
if (2) dir = 5
|
||||
if (5) dir = 9
|
||||
if (9) dir = 2
|
||||
return
|
||||
|
||||
/obj/machinery/rail_track/intersections/SEW
|
||||
name = "Rail track T intersection"
|
||||
icon_state = "rail_intersection_SEW"
|
||||
dir = 8
|
||||
|
||||
/obj/machinery/rail_track/intersections/SEW/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (8) dir = 6
|
||||
if (4) dir = 6
|
||||
if (6) dir = 5
|
||||
if (5) dir = 8
|
||||
return
|
||||
|
||||
/obj/machinery/rail_track/intersections/NSW
|
||||
name = "Rail track T intersection"
|
||||
icon_state = "rail_intersection_NSW"
|
||||
dir = 2
|
||||
|
||||
/obj/machinery/rail_track/intersections/NSW/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (1) dir = 10
|
||||
if (2) dir = 10
|
||||
if (10) dir = 6
|
||||
if (6) dir = 2
|
||||
return
|
||||
|
||||
/obj/machinery/rail_track/intersections/NEW
|
||||
name = "Rail track T intersection"
|
||||
icon_state = "rail_intersection_NEW"
|
||||
dir = 8
|
||||
|
||||
/obj/machinery/rail_track/intersections/NEW/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (4) dir = 9
|
||||
if (8) dir = 9
|
||||
if (9) dir = 10
|
||||
if (10) dir = 8
|
||||
return
|
||||
|
||||
/**********************Rail switch**************************/
|
||||
|
||||
/obj/machinery/rail_switch
|
||||
name = "Rail switch"
|
||||
icon = 'Mining.dmi'
|
||||
icon_state = "rail"
|
||||
dir = 2
|
||||
icon = 'recycling.dmi'
|
||||
icon_state = "switch-off"
|
||||
var/obj/machinery/rail_track/track = null
|
||||
var/id //used for to change the track pieces
|
||||
|
||||
/obj/machinery/rail_switch/New()
|
||||
spawn(10)
|
||||
src.track = locate(/obj/machinery/rail_track, get_step(src, NORTH))
|
||||
if(track)
|
||||
id = track.id
|
||||
return
|
||||
|
||||
/obj/machinery/rail_switch/attack_hand(user as mob)
|
||||
user << "You switch the rail track's direction"
|
||||
for (var/obj/machinery/rail_track/T in world)
|
||||
if (T.id == src.id)
|
||||
var/obj/machinery/rail_car/C = locate(/obj/machinery/rail_car, T.loc)
|
||||
if (C)
|
||||
switch (T.dir)
|
||||
if(1)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "S"
|
||||
if("S") C.direction = "N"
|
||||
if("E") C.direction = "S"
|
||||
if("W") C.direction = "S"
|
||||
if(2)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "S"
|
||||
if("S") C.direction = "N"
|
||||
if("E") C.direction = "S"
|
||||
if("W") C.direction = "S"
|
||||
if(4)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "E"
|
||||
if("S") C.direction = "E"
|
||||
if("E") C.direction = "W"
|
||||
if("W") C.direction = "E"
|
||||
if(8)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "E"
|
||||
if("S") C.direction = "E"
|
||||
if("E") C.direction = "W"
|
||||
if("W") C.direction = "E"
|
||||
if(5)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "S"
|
||||
if("S") C.direction = "E"
|
||||
if("E") C.direction = "S"
|
||||
if("W") C.direction = "S"
|
||||
if(6)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "S"
|
||||
if("S") C.direction = "W"
|
||||
if("E") C.direction = "S"
|
||||
if("W") C.direction = "S"
|
||||
if(9)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "E"
|
||||
if("S") C.direction = "E"
|
||||
if("E") C.direction = "N"
|
||||
if("W") C.direction = "E"
|
||||
if(10)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "W"
|
||||
if("S") C.direction = "W"
|
||||
if("E") C.direction = "W"
|
||||
if("W") C.direction = "N"
|
||||
return
|
||||
|
||||
/**********************Rail car**************************/
|
||||
|
||||
/obj/machinery/rail_car
|
||||
name = "Rail car"
|
||||
icon = 'Storage.dmi'
|
||||
icon_state = "miningcar"
|
||||
var/direction = "S" //S = south, N = north, E = east, W = west. Determines whichw ay it'll look first
|
||||
var/moving = 0;
|
||||
anchored = 1
|
||||
density = 1
|
||||
var/speed = 0
|
||||
var/slowing = 0
|
||||
var/atom/movable/load = null //what it's carrying
|
||||
|
||||
/obj/machinery/rail_car/attack_hand(user as mob)
|
||||
if (moving == 0)
|
||||
processing_items.Add(src)
|
||||
moving = 1
|
||||
else
|
||||
processing_items.Remove(src)
|
||||
moving = 0
|
||||
return
|
||||
|
||||
/*
|
||||
for (var/client/C)
|
||||
C << "Dela."
|
||||
*/
|
||||
|
||||
/obj/machinery/rail_car/MouseDrop_T(var/atom/movable/C, mob/user)
|
||||
|
||||
if(user.stat)
|
||||
return
|
||||
|
||||
if (!istype(C) || C.anchored || get_dist(user, src) > 1 || get_dist(src,C) > 1 )
|
||||
return
|
||||
|
||||
if(ismob(C))
|
||||
load(C)
|
||||
|
||||
|
||||
/obj/machinery/rail_car/proc/load(var/atom/movable/C)
|
||||
|
||||
if(get_dist(C, src) > 1)
|
||||
return
|
||||
//mode = 1
|
||||
|
||||
C.loc = src.loc
|
||||
sleep(2)
|
||||
C.loc = src
|
||||
load = C
|
||||
|
||||
C.pixel_y += 9
|
||||
if(C.layer < layer)
|
||||
C.layer = layer + 0.1
|
||||
overlays += C
|
||||
|
||||
if(ismob(C))
|
||||
var/mob/M = C
|
||||
if(M.client)
|
||||
M.client.perspective = EYE_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
|
||||
//mode = 0
|
||||
//send_status()
|
||||
|
||||
/obj/machinery/rail_car/proc/unload(var/dirn = 0)
|
||||
if(!load)
|
||||
return
|
||||
|
||||
overlays = null
|
||||
|
||||
load.loc = src.loc
|
||||
load.pixel_y -= 9
|
||||
load.layer = initial(load.layer)
|
||||
if(ismob(load))
|
||||
var/mob/M = load
|
||||
if(M.client)
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
|
||||
|
||||
if(dirn)
|
||||
step(load, dirn)
|
||||
|
||||
load = null
|
||||
|
||||
// in case non-load items end up in contents, dump every else too
|
||||
// this seems to happen sometimes due to race conditions
|
||||
// with items dropping as mobs are loaded
|
||||
|
||||
for(var/atom/movable/AM in src)
|
||||
AM.loc = src.loc
|
||||
AM.layer = initial(AM.layer)
|
||||
AM.pixel_y = initial(AM.pixel_y)
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
if(M.client)
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
|
||||
/obj/machinery/rail_car/relaymove(var/mob/user)
|
||||
if(user.stat)
|
||||
return
|
||||
if(load == user)
|
||||
unload(0)
|
||||
return
|
||||
|
||||
/obj/machinery/rail_car/process()
|
||||
if (moving == 1)
|
||||
if (slowing == 1)
|
||||
if (speed > 0)
|
||||
speed--;
|
||||
if (speed == 0)
|
||||
slowing = 0
|
||||
else
|
||||
if (speed < 10)
|
||||
speed++;
|
||||
var/i = 0
|
||||
for (i = 0; i < speed; i++)
|
||||
if (moving == 1)
|
||||
switch (direction)
|
||||
if ("S")
|
||||
for (var/obj/machinery/rail_track/R in locate(src.x,src.y-1,src.z))
|
||||
if (R.dir == 10)
|
||||
direction = "W"
|
||||
if (R.dir == 9)
|
||||
direction = "E"
|
||||
if (R.dir == 2 || R.dir == 1 || R.dir == 10 || R.dir == 9)
|
||||
for (var/mob/living/M in locate(src.x,src.y-1,src.z))
|
||||
step(M,get_dir(src,R))
|
||||
step(src,get_dir(src,R))
|
||||
break
|
||||
else
|
||||
moving = 0
|
||||
speed = 0
|
||||
if ("N")
|
||||
for (var/obj/machinery/rail_track/R in locate(src.x,src.y+1,src.z))
|
||||
if (R.dir == 5)
|
||||
direction = "E"
|
||||
if (R.dir == 6)
|
||||
direction = "W"
|
||||
if (R.dir == 5 || R.dir == 1 || R.dir == 6 || R.dir == 2)
|
||||
for (var/mob/living/M in locate(src.x,src.y+1,src.z))
|
||||
step(M,get_dir(src,R))
|
||||
step(src,get_dir(src,R))
|
||||
break
|
||||
else
|
||||
moving = 0
|
||||
speed = 0
|
||||
if ("E")
|
||||
for (var/obj/machinery/rail_track/R in locate(src.x+1,src.y,src.z))
|
||||
if (R.dir == 6)
|
||||
direction = "S"
|
||||
if (R.dir == 10)
|
||||
direction = "N"
|
||||
if (R.dir == 4 || R.dir == 8 || R.dir == 10 || R.dir == 6)
|
||||
for (var/mob/living/M in locate(src.x+1,src.y,src.z))
|
||||
step(M,get_dir(src,R))
|
||||
step(src,get_dir(src,R))
|
||||
break
|
||||
else
|
||||
moving = 0
|
||||
speed = 0
|
||||
if ("W")
|
||||
for (var/obj/machinery/rail_track/R in locate(src.x-1,src.y,src.z))
|
||||
if (R.dir == 9)
|
||||
direction = "N"
|
||||
if (R.dir == 5)
|
||||
direction = "S"
|
||||
if (R.dir == 8 || R.dir == 9 || R.dir == 5 || R.dir == 4)
|
||||
for (var/mob/living/M in locate(src.x-1,src.y,src.z))
|
||||
step(M,get_dir(src,R))
|
||||
step(src,get_dir(src,R))
|
||||
break
|
||||
else
|
||||
moving = 0
|
||||
speed = 0
|
||||
sleep(1)
|
||||
else
|
||||
processing_items.Remove(src)
|
||||
moving = 0
|
||||
/**********************Rail track**************************/
|
||||
|
||||
/obj/machinery/rail_track
|
||||
name = "Rail track"
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "rail"
|
||||
dir = 2
|
||||
var/id = null //this is needed for switches to work Set to the same on the whole length of the track
|
||||
anchored = 1
|
||||
|
||||
/**********************Rail intersection**************************/
|
||||
|
||||
/obj/machinery/rail_track/intersections
|
||||
name = "Rail track intersection"
|
||||
icon_state = "rail_intersection"
|
||||
|
||||
/obj/machinery/rail_track/intersections/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (1) dir = 5
|
||||
if (5) dir = 4
|
||||
if (4) dir = 9
|
||||
if (9) dir = 2
|
||||
if (2) dir = 10
|
||||
if (10) dir = 8
|
||||
if (8) dir = 6
|
||||
if (6) dir = 1
|
||||
return
|
||||
|
||||
/obj/machinery/rail_track/intersections/NSE
|
||||
name = "Rail track T intersection"
|
||||
icon_state = "rail_intersection_NSE"
|
||||
dir = 2
|
||||
|
||||
/obj/machinery/rail_track/intersections/NSE/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (1) dir = 5
|
||||
if (2) dir = 5
|
||||
if (5) dir = 9
|
||||
if (9) dir = 2
|
||||
return
|
||||
|
||||
/obj/machinery/rail_track/intersections/SEW
|
||||
name = "Rail track T intersection"
|
||||
icon_state = "rail_intersection_SEW"
|
||||
dir = 8
|
||||
|
||||
/obj/machinery/rail_track/intersections/SEW/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (8) dir = 6
|
||||
if (4) dir = 6
|
||||
if (6) dir = 5
|
||||
if (5) dir = 8
|
||||
return
|
||||
|
||||
/obj/machinery/rail_track/intersections/NSW
|
||||
name = "Rail track T intersection"
|
||||
icon_state = "rail_intersection_NSW"
|
||||
dir = 2
|
||||
|
||||
/obj/machinery/rail_track/intersections/NSW/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (1) dir = 10
|
||||
if (2) dir = 10
|
||||
if (10) dir = 6
|
||||
if (6) dir = 2
|
||||
return
|
||||
|
||||
/obj/machinery/rail_track/intersections/NEW
|
||||
name = "Rail track T intersection"
|
||||
icon_state = "rail_intersection_NEW"
|
||||
dir = 8
|
||||
|
||||
/obj/machinery/rail_track/intersections/NEW/attack_hand(user as mob)
|
||||
switch (dir)
|
||||
if (4) dir = 9
|
||||
if (8) dir = 9
|
||||
if (9) dir = 10
|
||||
if (10) dir = 8
|
||||
return
|
||||
|
||||
/**********************Rail switch**************************/
|
||||
|
||||
/obj/machinery/rail_switch
|
||||
name = "Rail switch"
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "rail"
|
||||
dir = 2
|
||||
icon = 'icons/obj/recycling.dmi'
|
||||
icon_state = "switch-off"
|
||||
var/obj/machinery/rail_track/track = null
|
||||
var/id //used for to change the track pieces
|
||||
|
||||
/obj/machinery/rail_switch/New()
|
||||
spawn(10)
|
||||
src.track = locate(/obj/machinery/rail_track, get_step(src, NORTH))
|
||||
if(track)
|
||||
id = track.id
|
||||
return
|
||||
|
||||
/obj/machinery/rail_switch/attack_hand(user as mob)
|
||||
user << "You switch the rail track's direction"
|
||||
for (var/obj/machinery/rail_track/T in world)
|
||||
if (T.id == src.id)
|
||||
var/obj/machinery/rail_car/C = locate(/obj/machinery/rail_car, T.loc)
|
||||
if (C)
|
||||
switch (T.dir)
|
||||
if(1)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "S"
|
||||
if("S") C.direction = "N"
|
||||
if("E") C.direction = "S"
|
||||
if("W") C.direction = "S"
|
||||
if(2)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "S"
|
||||
if("S") C.direction = "N"
|
||||
if("E") C.direction = "S"
|
||||
if("W") C.direction = "S"
|
||||
if(4)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "E"
|
||||
if("S") C.direction = "E"
|
||||
if("E") C.direction = "W"
|
||||
if("W") C.direction = "E"
|
||||
if(8)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "E"
|
||||
if("S") C.direction = "E"
|
||||
if("E") C.direction = "W"
|
||||
if("W") C.direction = "E"
|
||||
if(5)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "S"
|
||||
if("S") C.direction = "E"
|
||||
if("E") C.direction = "S"
|
||||
if("W") C.direction = "S"
|
||||
if(6)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "S"
|
||||
if("S") C.direction = "W"
|
||||
if("E") C.direction = "S"
|
||||
if("W") C.direction = "S"
|
||||
if(9)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "E"
|
||||
if("S") C.direction = "E"
|
||||
if("E") C.direction = "N"
|
||||
if("W") C.direction = "E"
|
||||
if(10)
|
||||
switch(C.direction)
|
||||
if("N") C.direction = "W"
|
||||
if("S") C.direction = "W"
|
||||
if("E") C.direction = "W"
|
||||
if("W") C.direction = "N"
|
||||
return
|
||||
|
||||
/**********************Rail car**************************/
|
||||
|
||||
/obj/machinery/rail_car
|
||||
name = "Rail car"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "miningcar"
|
||||
var/direction = "S" //S = south, N = north, E = east, W = west. Determines whichw ay it'll look first
|
||||
var/moving = 0;
|
||||
anchored = 1
|
||||
density = 1
|
||||
var/speed = 0
|
||||
var/slowing = 0
|
||||
var/atom/movable/load = null //what it's carrying
|
||||
|
||||
/obj/machinery/rail_car/attack_hand(user as mob)
|
||||
if (moving == 0)
|
||||
processing_items.Add(src)
|
||||
moving = 1
|
||||
else
|
||||
processing_items.Remove(src)
|
||||
moving = 0
|
||||
return
|
||||
|
||||
/*
|
||||
for (var/client/C)
|
||||
C << "Dela."
|
||||
*/
|
||||
|
||||
/obj/machinery/rail_car/MouseDrop_T(var/atom/movable/C, mob/user)
|
||||
|
||||
if(user.stat)
|
||||
return
|
||||
|
||||
if (!istype(C) || C.anchored || get_dist(user, src) > 1 || get_dist(src,C) > 1 )
|
||||
return
|
||||
|
||||
if(ismob(C))
|
||||
load(C)
|
||||
|
||||
|
||||
/obj/machinery/rail_car/proc/load(var/atom/movable/C)
|
||||
|
||||
if(get_dist(C, src) > 1)
|
||||
return
|
||||
//mode = 1
|
||||
|
||||
C.loc = src.loc
|
||||
sleep(2)
|
||||
C.loc = src
|
||||
load = C
|
||||
|
||||
C.pixel_y += 9
|
||||
if(C.layer < layer)
|
||||
C.layer = layer + 0.1
|
||||
overlays += C
|
||||
|
||||
if(ismob(C))
|
||||
var/mob/M = C
|
||||
if(M.client)
|
||||
M.client.perspective = EYE_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
|
||||
//mode = 0
|
||||
//send_status()
|
||||
|
||||
/obj/machinery/rail_car/proc/unload(var/dirn = 0)
|
||||
if(!load)
|
||||
return
|
||||
|
||||
overlays = null
|
||||
|
||||
load.loc = src.loc
|
||||
load.pixel_y -= 9
|
||||
load.layer = initial(load.layer)
|
||||
if(ismob(load))
|
||||
var/mob/M = load
|
||||
if(M.client)
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
|
||||
|
||||
if(dirn)
|
||||
step(load, dirn)
|
||||
|
||||
load = null
|
||||
|
||||
// in case non-load items end up in contents, dump every else too
|
||||
// this seems to happen sometimes due to race conditions
|
||||
// with items dropping as mobs are loaded
|
||||
|
||||
for(var/atom/movable/AM in src)
|
||||
AM.loc = src.loc
|
||||
AM.layer = initial(AM.layer)
|
||||
AM.pixel_y = initial(AM.pixel_y)
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
if(M.client)
|
||||
M.client.perspective = MOB_PERSPECTIVE
|
||||
M.client.eye = src
|
||||
|
||||
/obj/machinery/rail_car/relaymove(var/mob/user)
|
||||
if(user.stat)
|
||||
return
|
||||
if(load == user)
|
||||
unload(0)
|
||||
return
|
||||
|
||||
/obj/machinery/rail_car/process()
|
||||
if (moving == 1)
|
||||
if (slowing == 1)
|
||||
if (speed > 0)
|
||||
speed--;
|
||||
if (speed == 0)
|
||||
slowing = 0
|
||||
else
|
||||
if (speed < 10)
|
||||
speed++;
|
||||
var/i = 0
|
||||
for (i = 0; i < speed; i++)
|
||||
if (moving == 1)
|
||||
switch (direction)
|
||||
if ("S")
|
||||
for (var/obj/machinery/rail_track/R in locate(src.x,src.y-1,src.z))
|
||||
if (R.dir == 10)
|
||||
direction = "W"
|
||||
if (R.dir == 9)
|
||||
direction = "E"
|
||||
if (R.dir == 2 || R.dir == 1 || R.dir == 10 || R.dir == 9)
|
||||
for (var/mob/living/M in locate(src.x,src.y-1,src.z))
|
||||
step(M,get_dir(src,R))
|
||||
step(src,get_dir(src,R))
|
||||
break
|
||||
else
|
||||
moving = 0
|
||||
speed = 0
|
||||
if ("N")
|
||||
for (var/obj/machinery/rail_track/R in locate(src.x,src.y+1,src.z))
|
||||
if (R.dir == 5)
|
||||
direction = "E"
|
||||
if (R.dir == 6)
|
||||
direction = "W"
|
||||
if (R.dir == 5 || R.dir == 1 || R.dir == 6 || R.dir == 2)
|
||||
for (var/mob/living/M in locate(src.x,src.y+1,src.z))
|
||||
step(M,get_dir(src,R))
|
||||
step(src,get_dir(src,R))
|
||||
break
|
||||
else
|
||||
moving = 0
|
||||
speed = 0
|
||||
if ("E")
|
||||
for (var/obj/machinery/rail_track/R in locate(src.x+1,src.y,src.z))
|
||||
if (R.dir == 6)
|
||||
direction = "S"
|
||||
if (R.dir == 10)
|
||||
direction = "N"
|
||||
if (R.dir == 4 || R.dir == 8 || R.dir == 10 || R.dir == 6)
|
||||
for (var/mob/living/M in locate(src.x+1,src.y,src.z))
|
||||
step(M,get_dir(src,R))
|
||||
step(src,get_dir(src,R))
|
||||
break
|
||||
else
|
||||
moving = 0
|
||||
speed = 0
|
||||
if ("W")
|
||||
for (var/obj/machinery/rail_track/R in locate(src.x-1,src.y,src.z))
|
||||
if (R.dir == 9)
|
||||
direction = "N"
|
||||
if (R.dir == 5)
|
||||
direction = "S"
|
||||
if (R.dir == 8 || R.dir == 9 || R.dir == 5 || R.dir == 4)
|
||||
for (var/mob/living/M in locate(src.x-1,src.y,src.z))
|
||||
step(M,get_dir(src,R))
|
||||
step(src,get_dir(src,R))
|
||||
break
|
||||
else
|
||||
moving = 0
|
||||
speed = 0
|
||||
sleep(1)
|
||||
else
|
||||
processing_items.Remove(src)
|
||||
moving = 0
|
||||
return
|
||||
@@ -3,7 +3,7 @@
|
||||
/area/shipbuilder
|
||||
requires_power = 0
|
||||
luminosity = 1
|
||||
ul_Lighting = 0
|
||||
sd_lighting = 0
|
||||
|
||||
/area/shipbuilder/station
|
||||
name = "shipbuilder station"
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
/obj/machinery/spaceship_builder
|
||||
name = "Robotic Fabricator"
|
||||
icon = 'surgery.dmi'
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "fab-idle"
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
Reference in New Issue
Block a user