From 46a7143e3a7983eec88eac3b68153306075020c7 Mon Sep 17 00:00:00 2001 From: "mport2004@gmail.com" Date: Tue, 11 Oct 2011 07:52:30 +0000 Subject: [PATCH] Energy projectiles work again. Rewrote the job selection system to use bitflags and the jobs are now objects. Fixed a path conflict with effect which caused a few things to be unable to be clicked on. Commented out the job.txt, Urist if you still want it to load from the .txt give me a yell and I can update it to work with the job objects. Fixed up the bits that were missing the slightly updated mob organ attack code. Moved the traps file into unused. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2340 316c924e-a436-60f5-8080-3fe189b3f50e --- code/ATMOSPHERICS/pipes.dm | 2 +- code/WorkInProgress/explosion_particles.dm | 2 +- code/datums/spell.dm | 6 +- code/datums/spells/ethereal_jaunt.dm | 2 +- code/defines/global.dm | 3 +- code/defines/mob/living/silicon/robot.dm | 4 +- code/defines/mob/mob.dm | 8 - code/defines/obj.dm | 2 +- code/defines/obj/toy.dm | 4 +- code/defines/obj/weapon.dm | 5 +- code/game/atom_procs.dm | 25 +- code/game/chemistry.dm | 8 +- code/game/dna.dm | 2 +- code/game/gamemodes/events.dm | 2 +- code/game/gamemodes/events/ninja_abilities.dm | 2 +- code/game/gamemodes/events/ninja_equipment.dm | 8 +- code/game/gamemodes/gameticker.dm | 23 +- code/game/gamemodes/traitor/traitor.dm | 2 +- code/game/gamemodes/wizard/spells.dm | 12 +- code/game/gamemodes/wizard/wizard.dm | 206 ----- code/game/jobs/job/assistant.dm | 14 + code/game/jobs/job/captian.dm | 50 ++ code/game/jobs/job/civilian.dm | 259 +++++++ code/game/jobs/job/civilian_chaplain.dm | 152 ++++ code/game/jobs/job/engineering.dm | 88 +++ code/game/jobs/job/job.dm | 94 +++ code/game/jobs/job/medical.dm | 94 +++ code/game/jobs/job/science.dm | 61 ++ code/game/jobs/job/security.dm | 124 +++ code/game/jobs/job/silicon.dm | 27 + code/game/jobs/job_controller.dm | 222 ++++++ code/game/jobs/jobprocs.dm | 694 +---------------- code/game/jobs/jobs.dm | 84 +-- code/game/machinery/ai_slipper.dm | 2 +- code/game/machinery/autolathe.dm | 2 +- code/game/machinery/bots/cleanbot.dm | 2 +- code/game/machinery/bots/ed209bot.dm | 2 +- code/game/machinery/bots/floorbot.dm | 2 +- code/game/machinery/bots/medbot.dm | 2 +- code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/bots/secbot.dm | 2 +- code/game/machinery/camera.dm | 2 +- code/game/machinery/computer/computer.dm | 6 +- code/game/machinery/deployable.dm | 8 +- code/game/machinery/doors/airlock.dm | 4 +- code/game/machinery/doors/door.dm | 4 +- code/game/machinery/doors/windowdoor.dm | 2 +- code/game/machinery/igniter.dm | 2 +- code/game/machinery/kitchen/microwave.dm | 2 +- code/game/machinery/portable_turret.dm | 4 +- code/game/machinery/teleporter.dm | 4 +- code/game/machinery/turrets.dm | 4 +- code/game/machinery/vending.dm | 2 +- code/game/magic/cultist/runes.dm | 5 +- code/game/master_controller.dm | 13 +- code/game/mecha/combat/combat.dm | 5 +- code/game/mecha/combat/marauder.dm | 2 +- code/game/mecha/equipment/tools/tools.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/game/objects/blood.dm | 2 +- code/game/objects/closets.dm | 13 +- code/game/objects/closets/secure/personal.dm | 2 +- code/game/objects/devices/chameleonproj.dm | 2 +- code/game/objects/devices/flash.dm | 2 +- code/game/objects/devices/flashlight.dm | 2 +- code/game/objects/devices/scanners.dm | 2 +- code/game/objects/effect_system.dm | 186 ++--- code/game/objects/gibs.dm | 2 +- code/game/objects/grille.dm | 2 +- code/game/objects/items.dm | 4 +- code/game/objects/items/item.dm | 12 +- code/game/objects/items/weapons/RCD.dm | 4 +- code/game/objects/items/weapons/grenades.dm | 4 +- .../game/objects/items/weapons/hydroponics.dm | 8 +- code/game/objects/items/weapons/kitchen.dm | 8 +- .../game/objects/items/weapons/papers_bins.dm | 2 +- .../objects/items/weapons/surgery_tools.dm | 24 +- .../objects/items/weapons/swords_axes_etc.dm | 15 +- code/game/objects/items/weapons/tools.dm | 2 +- code/game/objects/new_year.dm | 8 +- code/game/objects/radio/electropack.dm | 2 +- code/game/objects/radio/newradio.dm | 48 ++ code/game/objects/secstorage/sbriefcase.dm | 2 +- code/game/objects/secstorage/secstorage.dm | 2 +- code/game/objects/secure_closets.dm | 2 +- code/game/objects/stacks/glass.dm | 2 +- code/game/objects/stool.dm | 2 +- code/game/objects/storage/bible.dm | 21 +- code/game/objects/storage/briefcase.dm | 2 +- code/game/objects/storage/lockbox.dm | 2 +- code/game/objects/tables_racks.dm | 6 +- code/game/objects/tank.dm | 6 +- code/game/objects/weapons.dm | 14 +- code/game/vials.dm | 4 +- code/modules/admin/verbs/randomverbs.dm | 6 +- code/modules/chemical/Chemistry-Reagents.dm | 8 +- code/modules/chemical/Chemistry-Recipes.dm | 18 +- code/modules/chemical/Chemistry-Tools.dm | 8 +- code/modules/clothing/spacesuits/ninja.dm | 2 +- code/modules/critters/critter_AI.dm | 19 +- code/modules/critters/hivebots/hivebot.dm | 4 +- .../living/carbon/alien/humanoid/humanoid.dm | 2 +- .../mob/living/carbon/alien/humanoid/life.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 172 +---- .../living/carbon/human/human_attackhand.dm | 3 +- .../living/carbon/human/human_attackpaw.dm | 6 +- .../mob/living/carbon/human/human_damage.dm | 22 +- .../mob/living/carbon/human/human_defense.dm | 20 +- code/modules/mob/living/carbon/human/life.dm | 2 +- code/modules/mob/living/carbon/monkey/life.dm | 2 +- .../mob/living/carbon/monkey/monkey.dm | 2 +- code/modules/mob/living/living.dm | 7 +- .../modules/mob/living/silicon/robot/robot.dm | 4 +- code/modules/mob/new_player/new_player.dm | 238 ++---- code/modules/mob/new_player/preferences.dm | 705 ++++++------------ .../mob/new_player/preferences_setup.dm | 306 ++++++++ code/modules/mob/new_player/savefile.dm | 118 ++- code/modules/mob/screen.dm | 2 +- code/modules/mob/transform_procs.dm | 11 +- code/modules/power/apc.dm | 14 +- code/modules/power/cable.dm | 2 +- code/modules/power/lighting.dm | 6 +- .../power/singularity/containment_field.dm | 4 +- code/modules/power/singularity/emitter.dm | 2 +- code/modules/power/smes.dm | 6 +- code/modules/projectiles/gun.dm | 2 +- code/modules/projectiles/guns/energy.dm | 2 +- .../projectiles/guns/energy/nuclear.dm | 1 + code/modules/projectiles/guns/energy/stun.dm | 6 +- code/modules/projectiles/projectile/energy.dm | 4 +- code/modules/research/rdmachines.dm | 2 +- code/setup.dm | 21 +- code/{game/objects => unused}/traps.dm | 0 icons/changelog.html | 6 +- maps/tgstation.2.0.8.dmm | 232 +++--- tgstation.dme | 16 +- 138 files changed, 2459 insertions(+), 2361 deletions(-) create mode 100644 code/game/jobs/job/assistant.dm create mode 100644 code/game/jobs/job/captian.dm create mode 100644 code/game/jobs/job/civilian.dm create mode 100644 code/game/jobs/job/civilian_chaplain.dm create mode 100644 code/game/jobs/job/engineering.dm create mode 100644 code/game/jobs/job/job.dm create mode 100644 code/game/jobs/job/medical.dm create mode 100644 code/game/jobs/job/science.dm create mode 100644 code/game/jobs/job/security.dm create mode 100644 code/game/jobs/job/silicon.dm create mode 100644 code/game/jobs/job_controller.dm create mode 100644 code/game/objects/radio/newradio.dm create mode 100644 code/modules/mob/new_player/preferences_setup.dm rename code/{game/objects => unused}/traps.dm (100%) diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm index ca699cd125..8964822c2f 100644 --- a/code/ATMOSPHERICS/pipes.dm +++ b/code/ATMOSPHERICS/pipes.dm @@ -160,7 +160,7 @@ obj/machinery/atmospherics/pipe proc/burst() src.visible_message("\red \bold [src] bursts!"); playsound(src.loc, 'bang.ogg', 25, 1) - var/datum/effect/system/harmless_smoke_spread/smoke = new + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new smoke.set_up(1,0, src.loc, 0) smoke.start() del(src) diff --git a/code/WorkInProgress/explosion_particles.dm b/code/WorkInProgress/explosion_particles.dm index e47ab0face..ba59cc6377 100644 --- a/code/WorkInProgress/explosion_particles.dm +++ b/code/WorkInProgress/explosion_particles.dm @@ -65,6 +65,6 @@ P.set_up(10,location) P.start() spawn(5) - var/datum/effect/system/harmless_smoke_spread/S = new/datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/S = new/datum/effect/effect/system/harmless_smoke_spread() S.set_up(5,0,location,null) S.start() \ No newline at end of file diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 6724489ece..03a334e7e9 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -145,16 +145,16 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin if(istype(target,/mob) && message) target << text("[message]") if(sparks_spread) - var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is sparks.start() if(smoke_spread) if(smoke_spread == 1) - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is smoke.start() else if(smoke_spread == 2) - var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread() + var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread() smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is smoke.start() diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index 0a32c7940a..46c15db0aa 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -28,7 +28,7 @@ flick("liquify",animation) target.loc = holder target.client.eye = holder - var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread() + var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() steam.set_up(10, 0, mobloc) steam.start() sleep(jaunt_duration) diff --git a/code/defines/global.dm b/code/defines/global.dm index a709b1d498..9aa15f3bcf 100644 --- a/code/defines/global.dm +++ b/code/defines/global.dm @@ -73,8 +73,7 @@ var guests_allowed = 1 shuttle_frozen = 0 shuttle_left = 0 - tinted_weldhelh = 1 //as soon as the thing is sprited, we'll code in the toggle verb, bot for now, it should stay on by default. -errorage //Until you have the actual functionality for it, don't set this on by default. You're putting the cart before the horse. --DH - lawyer = 0//Checks for a lawyer + tinted_weldhelh = 1 list/jobMax = list() list/bombers = list( ) diff --git a/code/defines/mob/living/silicon/robot.dm b/code/defines/mob/living/silicon/robot.dm index 0dcfa85ad9..ebcf1457b6 100644 --- a/code/defines/mob/living/silicon/robot.dm +++ b/code/defines/mob/living/silicon/robot.dm @@ -42,8 +42,8 @@ var/modtype = null var/lower_mod = 0 var/jetpack = 0 - var/datum/effect/system/ion_trail_follow/ion_trail = null - var/datum/effect/system/spark_spread/spark_system//So they can initialize sparks whenever/N + var/datum/effect/effect/system/ion_trail_follow/ion_trail = null + var/datum/effect/effect/system/spark_spread/spark_system//So they can initialize sparks whenever/N var/jeton = 0 var/borgwires = 15 var/killswitch = 0 diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index 92f72fd33e..d1bf9e743d 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -226,14 +226,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i // var/obj/effect/organstructure/organStructure = null //for dem organs -/mob/proc/Delete(atom/A in view()) - set category = "Debug" - switch (alert("Are you sure you wish to delete \the [A.name] at ([A.x],[A.y],[A.z]) ?", "Admin Delete Object","Yes","No")) - if("Yes") - log_admin("[usr.key] deleted [A.name] at ([A.x],[A.y],[A.z])") - - - /mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1) // world << "Contract_disease called by [src] with virus [virus]" if(stat >=2) return diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 1ea86a6c65..0bd140df58 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -66,7 +66,7 @@ unacidable = 1 density = 0 anchored = 1 - var/datum/effect/system/harmless_smoke_spread/smoke + var/datum/effect/effect/system/harmless_smoke_spread/smoke diff --git a/code/defines/obj/toy.dm b/code/defines/obj/toy.dm index 20bb3931ff..7f7fffb76c 100644 --- a/code/defines/obj/toy.dm +++ b/code/defines/obj/toy.dm @@ -266,7 +266,7 @@ throw_impact(atom/hit_atom) ..() - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() new /obj/effect/decal/ash(src.loc) @@ -280,7 +280,7 @@ if(M.m_intent == "run") M << "\red You step on the snap pop!" - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 0, src) s.start() new /obj/effect/decal/ash(src.loc) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 74cb097fb6..63bc6aefed 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -26,6 +26,9 @@ m_amt = 1000 origin_tech = "materials=2" + IsShield() + return 1 + /obj/item/weapon/sord name = "SORD" desc = "This thing is so unspeakably shitty you are having a hard time even holding it." @@ -228,7 +231,7 @@ throw_range = 1 w_class = 4.0//So you can't hide it in your pocket or some such. flags = FPRINT | TABLEPASS | NOSHIELD - var/datum/effect/system/spark_spread/spark_system + var/datum/effect/effect/system/spark_spread/spark_system /obj/item/weapon/bananapeel name = "Banana Peel" diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index b112c4d168..ba5ab8d69f 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -765,40 +765,21 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl C.oxyloss = max(0, C.oxyloss-25) C.toxloss = max(0, C.toxloss-25) - if (istype(C, /mob/living/carbon/human)) + if(istype(C, /mob/living/carbon/human)) // ------- YOUR TARGET IS HUMAN ------- var/mob/living/carbon/human/H = C - var/datum/organ/external/affecting = H.organs["chest"] - - var/t = usr:zone_sel:selecting - - if (t in list("eyes", "mouth")) - t = "head" - - if (H.organs[t]) - affecting = H.organs[t] - - if (affecting.heal_damage(25, 25)) + var/datum/organ/external/affecting = H.get_organ(check_zone(usr:zone_sel:selecting)) + if(affecting && affecting.heal_damage(25, 25)) H.UpdateDamageIcon() - else - H.UpdateDamage() - C.updatehealth() else C.heal_organ_damage(25, 25) - C.cloneloss = max(0, C.cloneloss-25) - C.stunned = max(0, C.stunned-5) C.paralysis = max(0, C.paralysis-5) C.stuttering = max(0, C.stuttering-5) C.drowsyness = max(0, C.drowsyness-5) C.weakened = max(0, C.weakened-5) - - if(C.client) - C.updatehealth() - C:handle_regular_hud_updates() usr:nutrition -= rand(1,10) - usr:handle_regular_hud_updates() usr.next_move = world.time + 6 else // ------- PERSON YOU'RE TOUCHING IS ALREADY DEAD ------- diff --git a/code/game/chemistry.dm b/code/game/chemistry.dm index 0e228ca0b9..cc8b8291d0 100644 --- a/code/game/chemistry.dm +++ b/code/game/chemistry.dm @@ -12,7 +12,7 @@ throw_speed = 4 throw_range = 20 flags = FPRINT | TABLEPASS | ONBELT | USEDELAY - var/datum/effect/system/bad_smoke_spread/smoke + var/datum/effect/effect/system/bad_smoke_spread/smoke /obj/item/weapon/mustardbomb desc = "It is set to detonate in 4 seconds." @@ -26,17 +26,17 @@ throw_speed = 4 throw_range = 20 flags = FPRINT | TABLEPASS | CONDUCT | ONBELT - var/datum/effect/system/mustard_gas_spread/mustard_gas + var/datum/effect/effect/system/mustard_gas_spread/mustard_gas /obj/item/weapon/smokebomb/New() ..() - src.smoke = new /datum/effect/system/bad_smoke_spread/ + src.smoke = new /datum/effect/effect/system/bad_smoke_spread/ src.smoke.attach(src) src.smoke.set_up(10, 0, usr.loc) /obj/item/weapon/mustardbomb/New() ..() - src.mustard_gas = new /datum/effect/system/mustard_gas_spread/ + src.mustard_gas = new /datum/effect/effect/system/mustard_gas_spread/ src.mustard_gas.attach(src) src.mustard_gas.set_up(5, 0, usr.loc) diff --git a/code/game/dna.dm b/code/game/dna.dm index d6594aed8c..e9243daad0 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -321,7 +321,7 @@ M << "\red You start coughing." if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),6)) M << "\red You feel lightheaded." - M.mutations |= CLOWN + M.mutations |= CLUMSY if (isblockon(getblock(M.dna.struc_enzymes, 7,3),7)) M.disabilities |= 8 M << "\red You twitch." diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 4cc896eeca..26b440ad89 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -86,7 +86,7 @@ /obj/effect/bhole/New() - src.smoke = new /datum/effect/system/harmless_smoke_spread() + src.smoke = new /datum/effect/effect/system/harmless_smoke_spread() src.smoke.set_up(5, 0, src) src.smoke.attach(src) src:life() diff --git a/code/game/gamemodes/events/ninja_abilities.dm b/code/game/gamemodes/events/ninja_abilities.dm index 88fb058ed3..c7b1521d05 100644 --- a/code/game/gamemodes/events/ninja_abilities.dm +++ b/code/game/gamemodes/events/ninja_abilities.dm @@ -57,7 +57,7 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo if(!ninjacost(,2)) var/mob/living/carbon/human/U = affecting U << "\blue There are [s_bombs] smoke bombs remaining." - var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread() + var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread() smoke.set_up(10, 0, U.loc) smoke.start() playsound(U.loc, 'bamf.ogg', 50, 2) diff --git a/code/game/gamemodes/events/ninja_equipment.dm b/code/game/gamemodes/events/ninja_equipment.dm index c7e2d5d9f3..bd35e12229 100644 --- a/code/game/gamemodes/events/ninja_equipment.dm +++ b/code/game/gamemodes/events/ninja_equipment.dm @@ -948,7 +948,7 @@ ________________________________________________________________________________ if("APC") var/obj/machinery/power/apc/A = target if(A.cell&&A.cell.charge) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, A.loc) while(G.candrain&&A.cell.charge>0&&!maxcapacity) drain = rand(G.mindrain,G.maxdrain) @@ -976,7 +976,7 @@ ________________________________________________________________________________ if("SMES") var/obj/machinery/power/smes/A = target if(A.charge) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, A.loc) while(G.candrain&&A.charge>0&&!maxcapacity) drain = rand(G.mindrain,G.maxdrain) @@ -1018,7 +1018,7 @@ ________________________________________________________________________________ var/obj/machinery/A = target if(A.powered())//If powered. - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, A.loc) var/obj/machinery/power/apc/B = A.loc.loc:get_apc()//Object.turf.area find APC @@ -1360,7 +1360,7 @@ It is possible to destroy the net by the occupant or someone else. M << "\red You appear in a strange place!" spawn(0) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, M.loc) spark_system.start() playsound(M.loc, 'phasein.ogg', 25, 1) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index c10fe51bb4..c2223f9d17 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -54,7 +54,7 @@ var/global/datum/controller/gameticker/ticker var/datum/game_mode/M = config.pick_mode(secret_force_mode) if(M.can_start()) src.mode = config.pick_mode(secret_force_mode) - ResetOccupations() + job_master.ResetOccupations() if(!src.mode) src.mode = pickweight(runnable_modes) if(src.mode) @@ -67,18 +67,18 @@ var/global/datum/controller/gameticker/ticker world << "Unable to start [mode.name]. Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby." del(mode) current_state = GAME_STATE_PREGAME - ResetOccupations() + job_master.ResetOccupations() return 0 //Configure mode and assign player to special mode stuff - DivideOccupations() //Distribute jobs + job_master.DivideOccupations() //Distribute jobs var/can_continue = src.mode.pre_setup()//Setup special modes if(!can_continue) del(mode) current_state = GAME_STATE_PREGAME world << "Error setting up [master_mode]. Reverting to pre-game lobby." - ResetOccupations() + job_master.ResetOccupations() return 0 if(hide_mode) @@ -143,15 +143,12 @@ var/global/datum/controller/gameticker/ticker proc/equip_characters() var/captainless=1 for(var/mob/living/carbon/human/player in world) - if(player) - if(player.mind) - if(player.mind.assigned_role) - if(player.mind.assigned_role == "Captain") - captainless=0 - if(player.mind.assigned_role != "MODE") - player.Equip_Rank(player.mind.assigned_role) - - if (captainless) + if(player && player.mind && player.mind.assigned_role) + if(player.mind.assigned_role == "Captain") + captainless=0 + if(player.mind.assigned_role != "MODE") + job_master.EquipRank(player, player.mind.assigned_role, 0) + if(captainless) world << "Captainship not forced on anyone." diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index f953e03f75..f491818969 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -192,7 +192,7 @@ if (traitor_mob.mind) if (traitor_mob.mind.assigned_role == "Clown") traitor_mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself." - traitor_mob.mutations &= ~CLOWN + traitor_mob.mutations &= ~CLUMSY // find a radio! toolbox(es), backpack, belt, headset var/loc = "" diff --git a/code/game/gamemodes/wizard/spells.dm b/code/game/gamemodes/wizard/spells.dm index 920ca87c51..bbc1e54c33 100644 --- a/code/game/gamemodes/wizard/spells.dm +++ b/code/game/gamemodes/wizard/spells.dm @@ -101,7 +101,7 @@ usr.verbs -= /client/proc/smokecloud spawn(120) usr.verbs += /client/proc/smokecloud - var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread() + var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread() smoke.set_up(10, 0, usr.loc) smoke.start() @@ -244,7 +244,7 @@ usr.say("EI NATH") usr.spellvoice() - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(4, 1, M) s.start() @@ -287,7 +287,7 @@ if(T.y>world.maxy-4 || T.y<4) continue turfs += T if(!turfs.len) turfs += pick(/turf in orange(6)) - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(10, 0, usr.loc) smoke.start() var/turf/picked = pick(turfs) @@ -330,7 +330,7 @@ usr.say("SCYAR NILA [uppertext(A)]") usr.spellvoice() - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(5, 0, usr.loc) smoke.attach(usr) smoke.start() @@ -360,7 +360,7 @@ A = input("Area to jump to", "BOOYEA", A) in teleportlocs var/area/thearea = teleportlocs[A] - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(5, 0, usr.loc) smoke.attach(usr) smoke.start() @@ -410,7 +410,7 @@ flick("liquify",animation) H.loc = holder H.client.eye = holder - var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread() + var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() steam.set_up(10, 0, mobloc) steam.start() sleep(time) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 42440b1027..ca48e48201 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -295,209 +295,3 @@ Made a proc here so it's not repeated several times.*/ // playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1) // else // playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1) - - - - - - - - - - - - - - - - - - -//UNUSED/OLD CODE - -// for (var/obj/effect/landmark/A in world) -// if (A.name == "Teleport-Scroll") -// new /obj/item/weapon/teleportation_scroll(A.loc) -// del(A) -// continue -//Scroll now starts in the wizard's inventory. - -// if (wizard_mob.mind.assigned_role == "Clown") -// wizard_mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself." -// wizard_mob.mutations &= ~CLOWN No more clowns as wizarrrddsss - -/*Creates random numbers/codes for the uplink. - var/freq = 1441 - var/list/freqlist = list() - while (freq <= 1489) - if (freq < 1451 || freq > 1459) - freqlist += freq - freq += 2 - if ((freq % 2) == 0) - freq += 1 - freq = freqlist[rand(1, freqlist.len)] - // generate a passcode if the uplink is hidden in a PDA - var/pda_pass = "[rand(100,999)] [pick("Morgan","Circe","Prospero","Elminister","Raistlin","Tzeentch","Saruman","Khelben","Dumbledor","Gandalf","Houdini","Teferi","Urza","Tenser","Zagyg","Mystryl","Boccob","Merlin")]" -No longer used because wizards begin with a spell book.*/ - -/*Checks where to spawn the swf uplink. - var/loc = "" - var/obj/item/device/R = null //Hide the uplink in a PDA if available, otherwise radio - if (!R && istype(wizard_mob.belt, /obj/item/device/pda)) - R = wizard_mob.belt - loc = "on your belt" - if (!R && istype(wizard_mob.l_hand, /obj/item/weapon/storage)) - var/obj/item/weapon/storage/S = wizard_mob.l_hand - var/list/L = S.return_inv() - for (var/obj/item/device/radio/foo in L) - R = foo - loc = "in the [S.name] in your left hand" - break - if (!R && istype(wizard_mob.r_hand, /obj/item/weapon/storage)) - var/obj/item/weapon/storage/S = wizard_mob.r_hand - var/list/L = S.return_inv() - for (var/obj/item/device/radio/foo in L) - R = foo - loc = "in the [S.name] in your right hand" - break - if (!R && istype(wizard_mob.back, /obj/item/weapon/storage)) - var/obj/item/weapon/storage/S = wizard_mob.back - var/list/L = S.return_inv() - for (var/obj/item/device/radio/foo in L) - R = foo - loc = "in the [S.name] on your back" - break - if (!R && wizard_mob.w_uniform && istype(wizard_mob.belt, /obj/item/device/radio)) - R = wizard_mob.belt - loc = "on your belt" - if (!R && istype(wizard_mob.ears, /obj/item/device/radio)) - R = wizard_mob.ears - loc = "on your head" - if (!R) - wizard_mob << "Unfortunately, the Space Wizards Federation wasn't able to get you a radio." - else - if (istype(R, /obj/item/device/radio)) - var/obj/item/weapon/SWF_uplink/T = new /obj/item/weapon/SWF_uplink(R) - R:traitorradio = T - R:traitor_frequency = freq - T.name = R.name - T.icon_state = R.icon_state - T.origradio = R - wizard_mob << "The Space Wizards Federation have cunningly disguised a spell book as your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock it's hidden features." - wizard_mob.mind.store_memory("Radio Freq: [format_frequency(freq)] ([R.name] [loc]).") - else if (istype(R, /obj/item/device/pda)) - var/obj/item/weapon/integrated_uplink/SWF/T = new /obj/item/weapon/integrated_uplink/SWF(R) - R:uplink = T - T.lock_code = pda_pass - T.hostpda = R - wizard_mob << "The Space Wizards Federation have cunningly enchanted a spellbook into your PDA [loc]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features." - wizard_mob.mind.store_memory("Uplink Passcode: [pda_pass] ([R.name] [loc]).") -No longer used because wizards begin with a spell book.*/ - -/*Code which works for intergrated uplinks, like those in PDAs. -/obj/item/weapon/integrated_uplink/SWF - name = "enchanted uplink" - uses = 4 - var/temp = null - -/obj/item/weapon/integrated_uplink/SWF/generate_menu() - src.menu_message = "Wizarding Uplink Console:
" - src.menu_message += "Tele-Crystals left: [src.uses]
" - src.menu_message += "
" - - if(src.temp) - src.menu_message += "[src.temp]
" - else //Nice empty space for it to appear in. - src.menu_message += "
" - src.menu_message += "Request item:
" - src.menu_message += "Each item costs 1 telecrystal. The number afterwards is the cooldown time.
" - src.menu_message += "Magic Missile (10)
" - src.menu_message += "Fireball (10)
" - src.menu_message += "Disintegrate (60)
" - src.menu_message += "Disable Technology (60)
" - src.menu_message += "Smoke (10)
" - src.menu_message += "Blind (30)
" - src.menu_message += "Forcewall (10)
" - src.menu_message += "Blink (2)
" - src.menu_message += "Teleport (30)
" - src.menu_message += "Mutate (60)
" - src.menu_message += "Ethereal Jaunt (60)
" - src.menu_message += "Knock (10)
" - src.menu_message += "
" - return - -/obj/item/weapon/integrated_uplink/SWF/Topic(href, href_list) - if ((isnull(src.hostpda)) || (!src.active)) - return - - if (usr.stat || usr.restrained() || !in_range(src.hostpda, usr)) - return - - if (href_list["buy_spell"]) - switch(href_list["buy_spell"]) - if("magicmissile") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/magicmissile - src.temp = "This spell fires several, slow moving, magic projectiles at nearby targets. If they hit a target, it is paralyzed and takes minor damage." - if("fireball") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/fireball - src.temp = "This spell fires a fireball at a target and does not require wizard garb. Be careful not to fire it at people that are standing next to you." - if("disintegrate") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /mob/proc/kill - src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown." - if("emp") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /mob/proc/tech - src.temp = "This spell disables all weapons, cameras and most other technology in range." - if("smoke") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/smokecloud - src.temp = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb." - if("blind") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/blind - src.temp = "This spell temporarly blinds a single person and does not require wizard garb." - if("forcewall") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/forcewall - src.temp = "This spell creates an unbreakable wall that lasts for 30 seconds and does not require wizard garb." - if("blink") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/blink - src.temp = "This spell randomly teleports you a short distance. Useful for evasion or getting into areas if you have patience." - if("teleport") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /mob/proc/teleport - src.temp = "This spell teleports you to a type of area of your selection. Very useful if you are in danger, but has a decent cooldown, and is unpredictable." - if("mutate") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/mutate - src.temp = "This spell causes you to turn into a hulk, and gain telekinesis for a short while." - if("jaunt") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/jaunt - src.temp = "This spell creates your ethereal form, temporarily making you invisible and able to pass through walls." - if("knock") - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /client/proc/knock - src.temp = "This spell opens nearby doors and does not require wizard garb." - src.generate_menu() - src.print_to_host(src.menu_message) - return - - return -No longer used because wizards begin with a spell book.*/ \ No newline at end of file diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm new file mode 100644 index 0000000000..84513bef21 --- /dev/null +++ b/code/game/jobs/job/assistant.dm @@ -0,0 +1,14 @@ +/datum/job/assistant + title = "Assistant" + flag = ASSISTANT + department_flag = CIVILIAN + faction = "Station" + total_positions = -1 + spawn_positions = -1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/clothing/under/color/grey(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + return 1 diff --git a/code/game/jobs/job/captian.dm b/code/game/jobs/job/captian.dm new file mode 100644 index 0000000000..c21bec3d2e --- /dev/null +++ b/code/game/jobs/job/captian.dm @@ -0,0 +1,50 @@ +/datum/job/captain + title = "Captain" + flag = CAPTAIN + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/captain(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/device/pda/captain(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/armor/captain(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/clothing/head/caphat(H), H.slot_head) + H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(H), H.slot_glasses) + H.equip_if_possible(new /obj/item/weapon/storage/id_kit(H), H.slot_in_backpack) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + world << "[src] is the captain!" + return 1 + + + +/datum/job/hop + title = "Head of Personnel" + flag = HOP + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/heads/hop(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/head_of_personnel(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/heads/hop(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/head/helmet(H), H.slot_head) + H.equip_if_possible(new /obj/item/weapon/storage/id_kit(H), H.slot_in_backpack) + return 1 diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm new file mode 100644 index 0000000000..5a1271e0ea --- /dev/null +++ b/code/game/jobs/job/civilian.dm @@ -0,0 +1,259 @@ + + + + + +//Food +/datum/job/bartender + title = "Bartender" + flag = BARTENDER + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/bartender(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(H), H.slot_in_backpack) + return 1 + + + +/datum/job/chef + title = "Chef" + flag = CHEF + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/clothing/under/rank/chef(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/suit/chef(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/clothing/head/chefhat(H), H.slot_head) + return 1 + + + +/datum/job/hydro + title = "Botanist" + flag = BOTANIST + department_flag = CIVILIAN + faction = "Station" + total_positions = 3 + spawn_positions = 2 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/clothing/under/rank/hydroponics(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/clothing/gloves/botanic_leather(H), H.slot_gloves) + H.equip_if_possible(new /obj/item/clothing/suit/apron(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/device/analyzer/plant_analyzer(H), H.slot_s_store) + return 1 + + + +//Cargo +/datum/job/qm + title = "Quartermaster" + flag = QUARTERMASTER + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/heads/qm(H), H.slot_ears) + H.equip_if_possible(new /obj/item/clothing/under/rank/cargo(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/quartermaster(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(H), H.slot_glasses) + H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_l_hand) + return 1 + + + +/datum/job/cargo_tech + title = "Cargo Technician" + flag = CARGOTECH + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 2 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_cargo(H), H.slot_ears) + H.equip_if_possible(new /obj/item/clothing/under/rank/cargo(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/quartermaster(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + return 1 + + + +/datum/job/mining + title = "Shaft Miner" + flag = MINER + department_flag = CIVILIAN + faction = "Station" + total_positions = 3 + spawn_positions = 3 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_mine (H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/engineer(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/miner(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + H.equip_if_possible(new /obj/item/weapon/crowbar(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/weapon/satchel(H), H.slot_in_backpack) + return 1 + + + +//Griff +/datum/job/clown + title = "Clown" + flag = CLOWN + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/weapon/storage/backpack/clown(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/clown(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/clown_shoes(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/clown(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/mask/gas/clown_hat(H), H.slot_wear_mask) + H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/weapon/bikehorn(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/weapon/stamp/clown(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/toy/crayon/rainbow(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/toy/crayonbox(H), H.slot_in_backpack) + H.mutations |= CLOWN + return 1 + + + +/datum/job/mime + title = "Mime" + flag = MIME + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/mime(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/mime(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/gloves/white(H), H.slot_gloves) + H.equip_if_possible(new /obj/item/clothing/mask/gas/mime(H), H.slot_wear_mask) + H.equip_if_possible(new /obj/item/clothing/head/beret(H), H.slot_head) + H.equip_if_possible(new /obj/item/clothing/suit/suspenders(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/toy/crayon/mime(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), H.slot_in_backpack) + H.verbs += /client/proc/mimespeak + H.verbs += /client/proc/mimewall + H.mind.special_verbs += /client/proc/mimespeak + H.mind.special_verbs += /client/proc/mimewall + H.miming = 1 + return 1 + + + +/datum/job/janitor + title = "Janitor" + flag = JANITOR + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/clothing/under/rank/janitor(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/janitor(H), H.slot_belt) + return 1 + + + +//More or less assistants +/datum/job/librarian + title = "Librarian" + flag = LIBRARIAN + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/clothing/under/suit_jacket/red(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/weapon/barcodescanner(H), H.slot_l_hand) + return 1 + + + +var/global/lawyer = 0//Checks for another lawyer +/datum/job/lawyer + title = "Lawyer" + flag = LAWYER + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 2 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + if(!lawyer) + lawyer = 1 + H.equip_if_possible(new /obj/item/clothing/under/lawyer/bluesuit(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/suit/lawyer/bluejacket(H), H.slot_wear_suit) + else + H.equip_if_possible(new /obj/item/clothing/under/lawyer/purpsuit(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/suit/lawyer/purpjacket(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/lawyer(H), H.slot_belt) + H.equip_if_possible(new /obj/item/device/detective_scanner(H), H.slot_in_backpack)//Why do they even get this? + H.equip_if_possible(new /obj/item/weapon/storage/briefcase(H), H.slot_l_hand) + return 1 + + diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm new file mode 100644 index 0000000000..5a84c6a855 --- /dev/null +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -0,0 +1,152 @@ +//Due to how large this one is it gets its own file +/datum/job/chaplain + title = "Chaplain" + flag = CHAPLAIN + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + + var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(H) + H.equip_if_possible(B, H.slot_l_hand) + H.equip_if_possible(new /obj/item/device/pda/chaplain(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/under/rank/chaplain(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + spawn(0) + var/religion_name = "Christianity" + var/new_religion = input(H, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name) + + if ((length(new_religion) == 0) || (new_religion == "Christianity")) + new_religion = religion_name + + if (new_religion) + if (length(new_religion) >= 26) + new_religion = copytext(new_religion, 1, 26) + new_religion = dd_replacetext(new_religion, ">", "'") + switch(lowertext(new_religion)) + if("christianity") + B.name = pick("The Holy Bible","The Dead Sea Scrolls") + if("satanism") + B.name = "The Unholy Bible" + if("cthulu") + B.name = "The Necronomicon" + if("islam") + B.name = "Quran" + if("scientology") + B.name = pick("The Biography of L. Ron Hubbard","Dianetics") + if("chaos") + B.name = "The Book of Lorgar" + if("imperium") + B.name = "Uplifting Primer" + if("toolboxia") + B.name = "Toolbox Manifesto" + if("homosexuality") + B.name = "Guys Gone Wild" + if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks") + B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition") + H.brainloss = 100 // starts off retarded as fuck + if("science") + B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition") + else + B.name = "The Holy Book of [new_religion]" + + spawn(1) + var/deity_name = "Space Jesus" + var/new_deity = input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name) + + if ((length(new_deity) == 0) || (new_deity == "Space Jesus") ) + new_deity = deity_name + + if(new_deity) + if (length(new_deity) >= 26) + new_deity = copytext(new_deity, 1, 26) + new_deity = dd_replacetext(new_deity, ">", "'") + B.deity_name = new_deity + + var/accepted = 0 + var/outoftime = 0 + spawn(200) // 20 seconds to choose + outoftime = 1 + while(!accepted) + if(!B) break // prevents possible runtime errors + + switch(input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Daederic Scroll", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon")) + if("Koran") + B.icon_state = "koran" + B.item_state = "koran" + for(var/area/chapel/main/A in world) + for(var/turf/T in A.contents) + if(T.icon_state == "carpetsymbol") + T.dir = 4 + if("Scrapbook") + B.icon_state = "scrapbook" + B.item_state = "scrapbook" + if("Daederic Scroll") + B.icon_state = "daederic_scroll" + B.item_state = "daederic" + if("Creeper") + B.icon_state = "creeper" + B.item_state = "syringe_kit" + if("White Bible") + B.icon_state = "white" + B.item_state = "syringe_kit" + if("Holy Light") + B.icon_state = "holylight" + B.item_state = "syringe_kit" + if("Athiest") + B.icon_state = "athiest" + B.item_state = "syringe_kit" + for(var/area/chapel/main/A in world) + for(var/turf/T in A.contents) + if(T.icon_state == "carpetsymbol") + T.dir = 10 + if("Tome") + B.icon_state = "tome" + B.item_state = "syringe_kit" + if("The King in Yellow") + B.icon_state = "kingyellow" + B.item_state = "kingyellow" + if("Ithaqua") + B.icon_state = "ithaqua" + B.item_state = "ithaqua" + if("Scientology") + B.icon_state = "scientology" + B.item_state = "scientology" + for(var/area/chapel/main/A in world) + for(var/turf/T in A.contents) + if(T.icon_state == "carpetsymbol") + T.dir = 8 + if("the bible melts") + B.icon_state = "melted" + B.item_state = "melted" + if("Necronomicon") + B.icon_state = "necronomicon" + B.item_state = "necronomicon" + else + // if christian bible, revert to default + B.icon_state = "bible" + B.item_state = "bible" + for(var/area/chapel/main/A in world) + for(var/turf/T in A.contents) + if(T.icon_state == "carpetsymbol") + T.dir = 2 + + H:update_clothing() // so that it updates the bible's item_state in his hand + + switch(input(H,"Look at your bible - is this what you want?") in list("Yes","No")) + if("Yes") + accepted = 1 + if("No") + if(outoftime) + H << "Welp, out of time, buddy. You're stuck. Next time choose faster." + accepted = 1 + + if(ticker) + ticker.Bible_icon_state = B.icon_state + ticker.Bible_item_state = B.item_state + ticker.Bible_name = B.name + return 1 \ No newline at end of file diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm new file mode 100644 index 0000000000..21378012d2 --- /dev/null +++ b/code/game/jobs/job/engineering.dm @@ -0,0 +1,88 @@ +/datum/job/chief_engineer + title = "Chief Engineer" + flag = CHIEF + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/heads/ce(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/engineer(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/chief_engineer(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/device/pda/heads/ce(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat/white(H), H.slot_head) + H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_l_hand) + H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + return 1 + + + +/datum/job/engineer + title = "Station Engineer" + flag = ENGINEER + department_flag = ENGSEC + faction = "Station" + total_positions = 5 + spawn_positions = 5 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_eng(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/engineer(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/engineer(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/orange(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat(H), H.slot_head) + H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_l_hand) + H.equip_if_possible(new /obj/item/device/t_scanner(H), H.slot_r_store) + return 1 + + + +/datum/job/atmos + title = "Atmospheric Technician" + flag = ATMOSTECH + department_flag = ENGSEC + faction = "Station" + total_positions = 3 + spawn_positions = 2 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_eng(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/atmospheric_technician(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt) + H.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(H), H.slot_l_hand) + return 1 + + + +/datum/job/roboticist + title = "Roboticist" + flag = ROBOTICIST + department_flag = ENGSEC + faction = "Station" + total_positions = 2 + spawn_positions = 1 + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_eng(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/roboticist(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + return 1 \ No newline at end of file diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm new file mode 100644 index 0000000000..1931a97679 --- /dev/null +++ b/code/game/jobs/job/job.dm @@ -0,0 +1,94 @@ +/datum/job + var + //The name of the job + title = "NOPE" + //Bitflags for the job + flag = 0 + department_flag = 0 + //Players will be allowed to spawn in as jobs that are set to "Station" + faction = "None" + //How many players can be this job + total_positions = 0 + //How many players can spawn in as this job + spawn_positions = 0 + //How many players have this job + current_positions = 0 + + + proc/equip(var/mob/living/carbon/human/H) + return 1 + + +var/datum/jobs/jobs = new/datum/jobs() + +/datum/jobs + var/list/datum/job/all_jobs = list() + + proc/get_all_jobs() + return all_jobs + + //This proc returns all the jobs which are NOT admin only + proc/get_normal_jobs() +// var/list/datum/job/normal_jobs = list() +// for(var/datum/job/J in all_jobs) +// if(!J.admin_only) +// normal_jobs += J +// return normal_jobs + + //This proc returns all the jobs which are admin only + proc/get_admin_jobs() +// var/list/datum/job/admin_jobs = list() +// for(var/datum/job/J in all_jobs) +// if(J.admin_only) +// admin_jobs += J +// return admin_jobs + + //This proc returns the job datum of the job with the alias or job title given as the argument. Returns an empty string otherwise. + proc/get_job(var/alias) +// for(var/datum/job/J in all_jobs) +// if(J.is_job_alias(alias)) +// return J + return "" + + //This proc returns a string with the default job title for the job with the given alias. Returns an empty string otherwise. + proc/get_job_title(var/alias) +// for(var/datum/job/J in all_jobs) +// if(J.is_job_alias(alias)) +// return J.title + return "" +/* + //This proc returns all the job datums of the workers whose boss has the alias provided. (IE Engineer under Chief Engineer, etc.) + proc/get_jobs_under(var/boss_alias) + var/boss_title = get_job_title(boss_alias) + var/list/datum/job/employees = list() + for(var/datum/job/J in all_jobs) + if(boss_title in J.bosses) + employees += J + return employees*/ + + //This proc returns the chosen vital and high priority jobs that the person selected. It goes from top to bottom of the list, until it finds a job which does not have such priority. + //Example: Choosing (in this order): CE, Captain, Engineer, RD will only return CE and Captain, as RD is assumed as being an unwanted choice. + //This proc is used in the allocation algorithm when deciding vital and high priority jobs. +/* proc/get_prefered_high_priority_jobs() + var/list/datum/job/hp_jobs = list() + for(var/datum/job/J in all_jobs) + if(J.assignment_priority == HIGH_PRIORITY_JOB || J.assignment_priority == VITAL_PRIORITY_JOB) + hp_jobs += J + else + break + return hp_jobs + + //If only priority is given, it will return the jobs of only that priority, if end_priority is set it will return the jobs with their priority higher or equal to var/priority and lower or equal to end_priority. end_priority must be higher than 0. + proc/get_jobs_by_priority(var/priority, var/end_priority = 0) + var/list/datum/job/priority_jobs = list() + if(end_priority) + if(end_priority < priority) + return + for(var/datum/job/J in all_jobs) + if(J.assignment_priority >= priority && J.assignment_priority <= end_priority) + priority_jobs += J + else + for(var/datum/job/J in all_jobs) + if(J.assignment_priority == priority) + priority_jobs += J + return priority_jobs*/ \ No newline at end of file diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm new file mode 100644 index 0000000000..24096fcdb1 --- /dev/null +++ b/code/game/jobs/job/medical.dm @@ -0,0 +1,94 @@ +/datum/job/cmo + title = "Chief Medical Officer" + flag = CMO + department_flag = MEDSCI + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/heads/cmo(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/chief_medical_officer(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/heads/cmo(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/labcoat/cmo(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(H), H.slot_l_hand) + H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store) + return 1 + + + +/datum/job/doctor + title = "Medical Doctor" + flag = DOCTOR + department_flag = MEDSCI + faction = "Station" + total_positions = 5 + spawn_positions = 3 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_med(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/medical(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/labcoat(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(H), H.slot_l_hand) + H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store) + return 1 + + + +/datum/job/geneticist + title = "Geneticist" + flag = GENETICIST + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/geneticist(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/labcoat/genetics(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store) + return 1 + + + +/datum/job/virologist + title = "Virologist" + flag = VIROLOGIST + department_flag = MEDSCI + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_med(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/medical(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/mask/surgical(H), H.slot_wear_mask) + H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/clothing/suit/labcoat/virologist(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store) + return 1 + + diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm new file mode 100644 index 0000000000..f9afec98a7 --- /dev/null +++ b/code/game/jobs/job/science.dm @@ -0,0 +1,61 @@ +/datum/job/rd + title = "Research Director" + flag = RD + department_flag = MEDSCI + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/heads/rd(H), H.slot_ears) + H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/clothing/under/rank/research_director(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/device/pda/heads/rd(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/labcoat(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_l_hand) + H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_r_hand) + return 1 + + + +/datum/job/scientist + title = "Scientist" + flag = SCIENTIST + department_flag = MEDSCI + faction = "Station" + total_positions = 5 + spawn_positions = 3 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_sci(H), H.slot_ears) + H.equip_if_possible(new /obj/item/clothing/under/rank/scientist(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/toxins(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/labcoat/science(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/mask/gas(H), H.slot_wear_mask) + H.equip_if_possible(new /obj/item/weapon/tank/oxygen(H), H.slot_l_hand) + return 1 + + + +/datum/job/chemist + title = "Chemist" + flag = CHEMIST + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci(H), H.slot_ears) + H.equip_if_possible(new /obj/item/clothing/under/rank/chemist(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/toxins(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/labcoat/chemist(H), H.slot_wear_suit) + return 1 diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm new file mode 100644 index 0000000000..dfc90deeca --- /dev/null +++ b/code/game/jobs/job/security.dm @@ -0,0 +1,124 @@ +/datum/job/hos + title = "Head of Security" + flag = HOS + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/weapon/storage/backpack/security (H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/device/radio/headset/heads/hos(H), H.slot_ears) + H.equip_if_possible(new /obj/item/clothing/under/rank/head_of_security(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/heads/hos(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/armor/hos(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + H.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(H), H.slot_head) + H.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(H), H.slot_wear_mask) + H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses) + H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/weapon/gun/energy/gun(H), H.slot_s_store) + H.equip_if_possible(new /obj/item/device/flash(H), H.slot_l_store) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + return 1 + + + +/datum/job/warden + title = "Warden" + flag = WARDEN + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_sec(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/security(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/warden(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/security(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/head/helmet/warden(H), H.slot_head) + H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses) + H.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(H), H.slot_wear_mask) + H.equip_if_possible(new /obj/item/weapon/gun/energy/taser(H), H.slot_s_store) + H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/device/flash(H), H.slot_l_store) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + return 1 + + + +/datum/job/detective + title = "Detective" + flag = DETECTIVE + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_sec(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/det(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/detective(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/head/det_hat(H), H.slot_head) + var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H) + CIG.light("") + H.equip_if_possible(CIG, H.slot_wear_mask) + H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + H.equip_if_possible(new /obj/item/weapon/storage/fcard_kit(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/weapon/fcardholder(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/suit/det_suit(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/device/detective_scanner(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/weapon/zippo(H), H.slot_l_store) + H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/candy_corn(H), H.slot_h_store) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + return 1 + + + +/datum/job/officer + title = "Security Officer" + flag = OFFICER + department_flag = ENGSEC + faction = "Station" + total_positions = 5 + spawn_positions = 5 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_if_possible(new /obj/item/device/radio/headset/headset_sec(H), H.slot_ears) + H.equip_if_possible(new /obj/item/weapon/storage/backpack/security(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/under/rank/security(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes) + H.equip_if_possible(new /obj/item/device/pda/security(H), H.slot_belt) + H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/head/helmet(H), H.slot_head) + H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_s_store) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + return 1 diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm new file mode 100644 index 0000000000..f18aa2323f --- /dev/null +++ b/code/game/jobs/job/silicon.dm @@ -0,0 +1,27 @@ +/datum/job/ai + title = "AI" + flag = AI + department_flag = ENGSEC + faction = "Station" + total_positions = 0 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + return 1 + + + +/datum/job/cyborg + title = "Cyborg" + flag = CYBORG + department_flag = ENGSEC + faction = "Station" + total_positions = 0 + spawn_positions = 1 + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + return 1 \ No newline at end of file diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm new file mode 100644 index 0000000000..0f5bd67c08 --- /dev/null +++ b/code/game/jobs/job_controller.dm @@ -0,0 +1,222 @@ +var/global/datum/controller/occupations/job_master + +/datum/controller/occupations + var + //List of all jobs + list/occupations = list() + //Players who need jobs + list/unassigned = list() + + + proc/SetupOccupations(var/faction = "Station") + occupations = list() + var/list/all_jobs = typesof(/datum/job) + if(!all_jobs.len) + world << "\red \b Error setting up jobs, no job datums found" + return 0 + for(var/J in all_jobs) + var/datum/job/job = new J() + if(!job) continue + if(job.faction != faction) continue + occupations += job + return 1 + + + proc/GetJob(var/name) + if(!name) return null + for(var/datum/job/J in occupations) + if(!J) continue + if(J.title == name) return J + return null + + + proc/AssignRole(var/mob/new_player/player, var/job, var/latejoin = 0) + if((player) && (player.mind) && (job)) + var/datum/job/J = GetJob(job) + if(jobban_isbanned(player, job)) return 0 + if(J && ((J.title == "Assistant") || ( (J.current_positions < J.total_positions) || ((J.current_positions < J.spawn_positions) && !latejoin)) )) + player.mind.assigned_role = J.title + unassigned -= player + J.current_positions++ + return 1 + return 0 + + + proc/FindOccupationCandidates(datum/job/job, level, flag) + var/list/candidates = list() + for(var/mob/new_player/player in unassigned) + if(jobban_isbanned(player, job.title)) continue + if(flag && (!player.preferences.be_special & flag)) continue + switch(level) + if(1) + if(job.flag == player.preferences.GetJobDepartment(job, level)) candidates += player + if(2) + if(job.flag == player.preferences.GetJobDepartment(job, level)) candidates += player + if(3) + if(job.flag == player.preferences.GetJobDepartment(job, level)) candidates += player + return candidates + + + proc/ResetOccupations() + for(var/mob/new_player/player in world) + if((player) && (player.mind)) + player.mind.assigned_role = null + player.mind.special_role = null + SetupOccupations() + unassigned = list() + return + + + proc/FillHeadPosition() + for(var/level = 1 to 3) + for(var/command_position in command_positions) + var/datum/job/job = GetJob(command_position) + if(!job) continue + var/list/candidates = FindOccupationCandidates(job, level) + if(!candidates.len) continue + var/mob/new_player/candidate = pick(candidates) + if(AssignRole(candidate, command_position)) + return 1 + return 0 + + + proc/FillAIPosition() + var/ai_selected = 0 + var/datum/job/job = GetJob("AI") + if(!job) return 0 + if((job.title == "AI") && (config) && (!config.allow_ai)) return 0 + + for(var/level = 1 to 3) + var/list/candidates = list() + if(ticker.mode.name == "AI malfunction")//Make sure they want to malf if its malf + candidates = FindOccupationCandidates(job, level, BE_MALF) + else + candidates = FindOccupationCandidates(job, level) + if(candidates.len) + var/mob/new_player/candidate = pick(candidates) + if(AssignRole(candidate, "AI")) + ai_selected++ + break + //Malf NEEDS an AI so force one if we didn't get a player who wanted it + if((ticker.mode.name == "AI malfunction")&&(!ai_selected)) + unassigned = shuffle(unassigned) + for(var/mob/new_player/player in unassigned) + if(jobban_isbanned(player, "AI")) continue + if(AssignRole(player, "AI")) + ai_selected++ + break + if(ai_selected) return 1 + return 0 + + +/** Proc DivideOccupations + * fills var "assigned_role" for all ready players. + * This proc must not have any side effect besides of modifying "assigned_role". + **/ + proc/DivideOccupations() + //Setup new player list and get the jobs list + SetupOccupations() + + //Get the players who are ready + for(var/mob/new_player/player in world) + if((player) && (player.client) && (player.ready) && (player.mind) && (!player.mind.assigned_role)) + unassigned += player + + if(unassigned.len == 0) return 0 + //Shuffle players and jobs + unassigned = shuffle(unassigned) + // occupations = shuffle(occupations) check and see if we can do this one + + //Select one head + FillHeadPosition() + + //Check for an AI + FillAIPosition() + + //Assistants are checked first + var/datum/job/assist = new /datum/job/assistant() + var/list/assistant_candidates = FindOccupationCandidates(assist, 3) + for(var/mob/new_player/player in assistant_candidates) + AssignRole(player, "Assistant") + + //Other jobs are now checked + for(var/level = 1 to 3) + for(var/datum/job/job in occupations) + if(!job) continue + if(!unassigned.len) break + if(job.current_positions >= job.spawn_positions) continue + var/list/candidates = FindOccupationCandidates(unassigned, job, level) + while(candidates.len && (job.current_positions < job.spawn_positions)) + var/mob/new_player/candidate = pick(candidates) + AssignRole(candidate, job) + + for(var/mob/new_player/player in unassigned) + AssignRole(player, "Assistant") + return 1 + + + proc/EquipRank(var/mob/living/carbon/human/H, var/rank, var/joined_late) + if(!H) return 0 + var/datum/job/job = GetJob(rank) + if(job) + job.equip(H) + else + H << "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator." + + spawnId(H,rank) + H << "You are the [rank]." + H.job = rank + if(H.mind) + H.mind.assigned_role = rank + + if(!joined_late && rank != "Tourist") + var/obj/S = null + for(var/obj/effect/landmark/start/sloc in world) + if(sloc.name != rank) continue + if(locate(/mob/living) in sloc.loc) continue + S = sloc + break + if(!S) + S = locate("start*[rank]") // use old stype + if(istype(S, /obj/effect/landmark/start) && istype(S.loc, /turf)) + H.loc = S.loc + + if(H.mind && H.mind.assigned_role == "Cyborg")//This could likely be done somewhere else + H.Robotize() + return 1 + + H.equip_if_possible(new /obj/item/device/radio/headset(H), H.slot_ears) + var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(H) + new /obj/item/weapon/storage/box/survival(BPK) + H.equip_if_possible(BPK, H.slot_back,1) + return 1 + + + proc/spawnId(var/mob/living/carbon/human/H, rank) + if(!H) return 0 + var/obj/item/weapon/card/id/C = null + switch(rank) + if("Cyborg") + return + if("Captain") + C = new /obj/item/weapon/card/id/gold(H) + else + C = new /obj/item/weapon/card/id(H) + if(C) + C.registered = H.real_name + C.assignment = rank + C.name = "[C.registered]'s ID Card ([C.assignment])" + C.access = get_access(C.assignment) + H.equip_if_possible(C, H.slot_wear_id) + H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store) + H.equip_if_possible(new /obj/item/device/pda(H), H.slot_belt) + if(istype(H.belt, /obj/item/device/pda))//I bet this could just use locate + var/obj/item/device/pda/pda = H.belt + pda.owner = H.real_name + pda.ownjob = H.wear_id.assignment + pda.name = "PDA-[H.real_name] ([pda.ownjob])" + + if(rank == "Clown") + spawn(1) + clname(H) + return 1 \ No newline at end of file diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm index 6cd37230d4..38ad667f7d 100644 --- a/code/game/jobs/jobprocs.dm +++ b/code/game/jobs/jobprocs.dm @@ -1,4 +1,7 @@ +/* /proc/SetupJobs(jobsfile) //ran during round setup, reads info from jobs.txt -- Urist + return 1 + var/text = file2text(jobsfile) if(!text) @@ -36,698 +39,9 @@ world << "\red \b Jobs set up!" return - - -/proc/FindOccupationCandidates(list/unassigned, job, level) - var/list/candidates = list() - if((job == "AI") && (config) && (!config.allow_ai)) return candidates - for(var/mob/new_player/player in unassigned) - if(player.preferences.occupation[job] == level) - if(jobban_isbanned(player, job)) - continue - candidates += player - return candidates - - -/proc/ResetOccupations() - for(var/mob/new_player/player in world) - if((player) && (player.mind)) - player.mind.assigned_role = null - player.mind.special_role = null - return - - -/proc/Assign_Role(var/mob/new_player/player, var/job) - if((player) && (player.mind) && (job)) - player.mind.assigned_role = job - return 1 - return 0 - - -/proc/FillHeadPosition(list/unassigned, list/jobs) - for(var/level = 1 to 3) - for(var/command_position in command_positions) - var/list/candidates = FindOccupationCandidates(unassigned, command_position, level) - if(!candidates.len) continue - var/mob/new_player/candidate = pick(candidates) - if(Assign_Role(candidate, command_position)) - unassigned -= candidate - jobs[command_position]-- - return 1 - return 0 - - -/proc/FillAIPosition(list/unassigned, list/jobs) - var/ai_selected = 0 - for(var/level = 1 to 3) - var/list/candidates = FindOccupationCandidates(unassigned, "AI", level) - if(ticker.mode.name == "AI malfunction")//Make sure they want to malf if its malf - for(var/mob/new_player/player in candidates) - if(!player.preferences.be_special & BE_MALF) - candidates -= player - if(candidates.len) - var/mob/new_player/candidate = pick(candidates) - if(Assign_Role(candidate, "AI")) - unassigned -= candidate - jobs["AI"]-- - ai_selected++ - break - //Malf NEEDS an AI so force one if we didn't get a player who wanted it - if((ticker.mode.name == "AI malfunction")&&(!ai_selected)) - unassigned = shuffle(unassigned) - for(var/mob/new_player/player in unassigned) - if(jobban_isbanned(player, "AI")) - continue - if(Assign_Role(player, "AI")) - unassigned -= player - jobs["AI"]-- - ai_selected++ - break - if(ai_selected) return 1 - return 0 - - -/** Proc DivideOccupations - * fills var "assigned_role" for all ready players. - * This proc must not have any side effect besides of modifying "assigned_role". - **/ -/proc/DivideOccupations() - //Setup new player list and get the jobs list - var/list/unassigned = list() - var/list/occupations_available = occupations.Copy() - - //Get the players who are ready - for(var/mob/new_player/player in world) - if((player) && (player.client) && (player.ready) && (player.mind) && (!player.mind.assigned_role)) - unassigned += player - - if(unassigned.len == 0) return 0 - //Shuffle players and jobs - unassigned = shuffle(unassigned) -// occupations_available = shuffle(occupations_available) - - //Select one head - FillHeadPosition(unassigned, occupations_available) - - //Check for an AI - FillAIPosition(unassigned, occupations_available) - - //Assistants are checked first - for(var/mob/new_player/player in unassigned) - if(player.preferences.occupation["Assistant"] == 0) continue - unassigned -= player - Assign_Role(player, "Assistant") - - //Other jobs are now checked - for(var/level = 1 to 3) - for(var/occupation in occupations_available) - if(!unassigned.len) break - if(occupations_available[occupation] == 0) continue - var/list/candidates = FindOccupationCandidates(unassigned, occupation, level) - while(candidates.len && occupations_available[occupation]) - var/mob/new_player/candidate = pick(candidates) - if(Assign_Role(candidate, occupation)) - unassigned -= candidate - occupations_available[occupation]-- - - for(var/mob/new_player/player in unassigned) - Assign_Role(player, "Assistant") - return 1 - - -/mob/living/carbon/human/proc/Equip_Rank(rank, joined_late) - switch(rank) - if ("Chaplain") - var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(src) - src.equip_if_possible(B, slot_l_hand) - src.equip_if_possible(new /obj/item/device/pda/chaplain(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/under/rank/chaplain(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - //if(prob(15)) - // src.see_invisible = 15 -- Doesn't work as see_invisible is reset every world cycle. -- Skie - //The two procs below allow the Chaplain to choose their religion. All it really does is change their bible. - spawn(0) - var/religion_name = "Christianity" - var/new_religion = input(src, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name) - - if ((length(new_religion) == 0) || (new_religion == "Christianity")) - new_religion = religion_name - - if (new_religion) - if (length(new_religion) >= 26) - new_religion = copytext(new_religion, 1, 26) - new_religion = dd_replacetext(new_religion, ">", "'") - switch(lowertext(new_religion)) - if("christianity") - B.name = pick("The Holy Bible","The Dead Sea Scrolls") - if("satanism") - B.name = "The Unholy Bible" - if("cthulu") - B.name = "The Necronomicon" - if("islam") - B.name = "Quran" - if("scientology") - B.name = pick("The Biography of L. Ron Hubbard","Dianetics") - if("chaos") - B.name = "The Book of Lorgar" - if("imperium") - B.name = "Uplifting Primer" - if("toolboxia") - B.name = "Toolbox Manifesto" - if("homosexuality") - B.name = "Guys Gone Wild" - if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks") - B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition") - brainloss = 100 // starts off retarded as fuck - if("science") - B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition") - else - B.name = "The Holy Book of [new_religion]" - - spawn(1) - var/deity_name = "Space Jesus" - var/new_deity = input(src, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name) - - if ( (length(new_deity) == 0) || (new_deity == "Space Jesus") ) - new_deity = deity_name - - if(new_deity) - if (length(new_deity) >= 26) - new_deity = copytext(new_deity, 1, 26) - new_deity = dd_replacetext(new_deity, ">", "'") - B.deity_name = new_deity - - var/accepted = 0 - var/outoftime = 0 - spawn(200) // 20 seconds to choose - outoftime = 1 - while(!accepted) - if(!B) break // prevents possible runtime errors - - switch(input(src,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Daederic Scroll", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon")) - if("Koran") - B.icon_state = "koran" - B.item_state = "koran" - for(var/area/chapel/main/A in world) - for(var/turf/T in A.contents) - if(T.icon_state == "carpetsymbol") - T.dir = 4 - if("Scrapbook") - B.icon_state = "scrapbook" - B.item_state = "scrapbook" - if("Daederic Scroll") - B.icon_state = "daederic_scroll" - B.item_state = "daederic" - if("Creeper") - B.icon_state = "creeper" - B.item_state = "syringe_kit" - if("White Bible") - B.icon_state = "white" - B.item_state = "syringe_kit" - if("Holy Light") - B.icon_state = "holylight" - B.item_state = "syringe_kit" - if("Athiest") - B.icon_state = "athiest" - B.item_state = "syringe_kit" - for(var/area/chapel/main/A in world) - for(var/turf/T in A.contents) - if(T.icon_state == "carpetsymbol") - T.dir = 10 - if("Tome") - B.icon_state = "tome" - B.item_state = "syringe_kit" - if("The King in Yellow") - B.icon_state = "kingyellow" - B.item_state = "kingyellow" - if("Ithaqua") - B.icon_state = "ithaqua" - B.item_state = "ithaqua" - if("Scientology") - B.icon_state = "scientology" - B.item_state = "scientology" - for(var/area/chapel/main/A in world) - for(var/turf/T in A.contents) - if(T.icon_state == "carpetsymbol") - T.dir = 8 - if("the bible melts") - B.icon_state = "melted" - B.item_state = "melted" - if("Necronomicon") - B.icon_state = "necronomicon" - B.item_state = "necronomicon" - else - // if christian bible, revert to default - B.icon_state = "bible" - B.item_state = "bible" - for(var/area/chapel/main/A in world) - for(var/turf/T in A.contents) - if(T.icon_state == "carpetsymbol") - T.dir = 2 - - src:update_clothing() // so that it updates the bible's item_state in his hand - - switch(input(src,"Look at your bible - is this what you want?") in list("Yes","No")) - if("Yes") - accepted = 1 - if("No") - if(outoftime) - src << "Welp, out of time, buddy. You're stuck. Next time choose faster." - accepted = 1 - - if(ticker) - ticker.Bible_icon_state = B.icon_state - ticker.Bible_item_state = B.item_state - ticker.Bible_name = B.name - - - if ("Geneticist") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/clothing/under/rank/geneticist(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt) - src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/suit/labcoat/genetics(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store) - - if ("Chemist") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/clothing/under/rank/chemist(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/toxins(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/suit/labcoat/chemist(src), slot_wear_suit) - - if ("Janitor") - src.equip_if_possible(new /obj/item/clothing/under/rank/janitor(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/janitor(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - - if ("Clown") - src.equip_if_possible(new /obj/item/weapon/storage/backpack/clown (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/rank/clown(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/clown(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/shoes/clown_shoes(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask) - src.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/bikehorn(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/stamp/clown(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/toy/crayon/rainbow(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/toy/crayonbox(src), slot_in_backpack) - src.mutations |= CLOWN - - if ("Mime") - src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/mime(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/mime(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/gloves/white(src), slot_gloves) - src.equip_if_possible(new /obj/item/clothing/mask/gas/mime(src), slot_wear_mask) - src.equip_if_possible(new /obj/item/clothing/head/beret(src), slot_head) - src.equip_if_possible(new /obj/item/clothing/suit/suspenders(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/toy/crayon/mime(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(src), slot_in_backpack) - src.verbs += /client/proc/mimespeak - src.verbs += /client/proc/mimewall - src.mind.special_verbs += /client/proc/mimespeak - src.mind.special_verbs += /client/proc/mimewall - src.miming = 1 - - if ("Station Engineer") - src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/engineer(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/device/radio/headset/headset_eng (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/clothing/under/rank/engineer(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/engineering(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/shoes/orange(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat(src), slot_head) - src.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(src), slot_l_hand) - src.equip_if_possible(new /obj/item/device/t_scanner(src), slot_r_store) - - if ("Shaft Miner") - src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/engineer(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/device/radio/headset/headset_mine (src), slot_ears) - src.equip_if_possible(new /obj/item/clothing/under/rank/miner(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/weapon/crowbar(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/satchel(src), slot_in_backpack) - - if ("Assistant") - src.equip_if_possible(new /obj/item/clothing/under/color/grey(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - - if ("Detective") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/det(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/detective(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/head/det_hat(src), slot_head) - var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(src) - CIG.light("") - src.equip_if_possible(CIG, slot_wear_mask) // sorry, no more cigar - src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/weapon/storage/fcard_kit(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/fcardholder(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/suit/det_suit(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/device/detective_scanner(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/zippo(src), slot_l_store) - src.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/candy_corn(src), slot_h_store) - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src) - L.imp_in = src - L.implanted = 1 - - if ("Medical Doctor") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_med (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/rank/medical(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt) - src.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(src), slot_l_hand) - src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store) - - if ("Captain") - src.equip_if_possible(new /obj/item/device/radio/headset/heads/captain (src), slot_ears) - src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/rank/captain(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/captain(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/suit/armor/captain(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/head/caphat(src), slot_head) - src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses) - src.equip_if_possible(new /obj/item/weapon/storage/id_kit(src), slot_in_backpack) - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src) - L.imp_in = src - L.implanted = 1 - - if ("Security Officer") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/rank/security(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/security(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/clothing/head/helmet(src), slot_head) - src.equip_if_possible(new /obj/item/clothing/shoes/jackboots(src), slot_shoes) - src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_s_store) - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src) - L.imp_in = src - L.implanted = 1 - - if ("Warden") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/rank/warden(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/security(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/clothing/head/helmet/warden(src), slot_head) - src.equip_if_possible(new /obj/item/clothing/shoes/jackboots(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses) - src.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(src), slot_wear_mask) - src.equip_if_possible(new /obj/item/weapon/gun/energy/taser(src), slot_s_store) - src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/device/flash(src), slot_l_store) - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src) - L.imp_in = src - L.implanted = 1 - - if ("Scientist") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_sci (src), slot_ears) - src.equip_if_possible(new /obj/item/clothing/under/rank/scientist(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/toxins(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/suit/labcoat/science(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/mask/gas(src), slot_wear_mask) - src.equip_if_possible(new /obj/item/weapon/tank/oxygen(src), slot_l_hand) - - if ("Head of Security") //ready to come in game and kick ass - Microwave - src.equip_if_possible(new /obj/item/device/radio/headset/heads/hos (src), slot_ears) - src.equip_if_possible(new /obj/item/clothing/under/rank/head_of_security(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/heads/hos(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/suit/armor/hos(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/clothing/shoes/jackboots(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(src), slot_head) - src.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(src), slot_wear_mask) - src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses) - src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/weapon/gun/energy(src), slot_s_store) - src.equip_if_possible(new /obj/item/device/flash(src), slot_l_store) - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src) - L.imp_in = src - L.implanted = 1 - - if ("Head of Personnel") - src.equip_if_possible(new /obj/item/device/radio/headset/heads/hop (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/rank/head_of_personnel(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/heads/hop(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/head/helmet(src), slot_head) - src.equip_if_possible(new /obj/item/weapon/storage/id_kit(src), slot_in_backpack) - - if ("Atmospheric Technician") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_eng (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/clothing/under/rank/atmospheric_technician(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(src), slot_l_hand) - - if ("Bartender") - src.equip_if_possible(new /obj/item/clothing/under/rank/bartender(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack) - - if ("Chef") - src.equip_if_possible(new /obj/item/clothing/under/rank/chef(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/suit/chef(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/head/chefhat(src), slot_head) - - if ("Roboticist") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_rob (src), slot_ears) // -- DH - src.equip_if_possible(new /obj/item/clothing/under/rank/roboticist(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/engineering(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(src), slot_l_hand) - - if ("Botanist") //slot_s_store will free the hands of the working class - src.equip_if_possible(new /obj/item/clothing/under/rank/hydroponics(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/gloves/botanic_leather(src), slot_gloves) - src.equip_if_possible(new /obj/item/clothing/suit/apron(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/device/analyzer/plant_analyzer(src), slot_s_store) - - if ("Librarian") - src.equip_if_possible(new /obj/item/clothing/under/suit_jacket/red(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/weapon/barcodescanner(src), slot_l_hand) - - if ("Lawyer") - if(!lawyer) - lawyer = 1 - src.equip_if_possible(new /obj/item/clothing/under/lawyer/bluesuit(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/suit/lawyer/bluejacket(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/device/pda/lawyer(src), slot_belt) - else - src.equip_if_possible(new /obj/item/clothing/under/lawyer/purpsuit(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/clothing/suit/lawyer/purpjacket(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/device/pda/lawyer(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) - src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/device/detective_scanner(src), slot_in_backpack)//Why do they even get this? - src.equip_if_possible(new /obj/item/weapon/storage/briefcase(src), slot_l_hand) - - if ("Quartermaster") - src.equip_if_possible(new /obj/item/device/radio/headset/heads/qm (src), slot_ears) - src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/under/rank/cargo(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/quartermaster(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses) - src.equip_if_possible(new /obj/item/weapon/clipboard(src), slot_l_hand) - - if ("Cargo Technician") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_cargo(src), slot_ears) - src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/under/rank/cargo(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/quartermaster(src), slot_belt) - - if ("Chief Engineer") - src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/engineer(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/device/radio/headset/heads/ce (src), slot_ears) - src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves) - src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat/white(src), slot_head) - src.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(src), slot_l_hand) - var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(src) - CIG.light("") - src.equip_if_possible(CIG, slot_wear_mask) - src.equip_if_possible(new /obj/item/clothing/under/rank/chief_engineer(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/heads/ce(src), slot_belt) - - if ("Research Director") - src.equip_if_possible(new /obj/item/device/radio/headset/heads/rd (src), slot_ears) - src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/under/rank/research_director(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/heads/rd(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit) - //src.equip_if_possible(new /obj/item/weapon/pen(src), slot_l_hand) - src.equip_if_possible(new /obj/item/weapon/clipboard(src), slot_r_hand) - src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store) - - if ("Chief Medical Officer") - src.equip_if_possible(new /obj/item/device/radio/headset/heads/cmo (src), slot_ears) - src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/under/rank/chief_medical_officer(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/heads/cmo(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/suit/labcoat/cmo(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(src), slot_l_hand) - src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store) - - if ("Virologist") - src.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci (src), slot_ears) // -- TLE - src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back) - src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack) - src.equip_if_possible(new /obj/item/clothing/under/rank/medical(src), slot_w_uniform) - src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt) - src.equip_if_possible(new /obj/item/clothing/mask/surgical(src), slot_wear_mask) - src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes) - src.equip_if_possible(new /obj/item/clothing/suit/labcoat/virologist(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store) - - if ("Cyborg") -// Robotize() - - else - src << "RUH ROH! Your job is [rank] and the game just can't handle it! Please report this bug to an administrator." - - spawnId(rank) - if(rank == "Captain") - world << "[src] is the captain!" - src << "You are the [rank]." - src.job = rank - if(src.mind) - src.mind.assigned_role = rank - - if (!joined_late && rank != "Tourist") - var/obj/S = null - for(var/obj/effect/landmark/start/sloc in world) - if (sloc.name != rank) - continue - if (locate(/mob) in sloc.loc) - continue - S = sloc - break - if (!S) - S = locate("start*[rank]") // use old stype - if (istype(S, /obj/effect/landmark/start) && istype(S.loc, /turf)) - src.loc = S.loc -// if(S.name == "Cyborg") -// src.Robotize() - /*else - var/list/L = list() - for(var/area/arrival/start/S in world) - L += S - if(L.len < 1) // Added this check to stop the empty list bug -- TLE - return // ** - var/A = pick(L) - var/list/NL = list() - for(var/turf/T in A) - if(!T.density) - var/clear = 1 - for(var/obj/O in T) - if(O.density) - clear = 0 - break - if(clear) - NL += T - src.loc = pick(NL) - */ - if(src.mind) - if(src.mind.assigned_role == "Cyborg") - src << "YOU ARE GETTING BORGED NOW" - src.Robotize() - return - src.equip_if_possible(new /obj/item/device/radio/headset(src), slot_ears) - var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(src) - new /obj/item/weapon/storage/box/survival(BPK) - src.equip_if_possible(BPK, slot_back,1) - /* - spawn(10) - var/obj/item/weapon/camera_test/CT = new/obj/item/weapon/camera_test(src.loc) - CT.afterattack(src, src, 10) - var/obj/item/weapon/photo/PH - PH = locate(/obj/item/weapon/photo,src.loc) - if(PH) - PH.layer = 3 - src.equip_if_possible(PH, slot_in_backpack) - del(CT)*/ //--For another day - errorage - return - - -/mob/living/carbon/human/proc/spawnId(rank) - var/obj/item/weapon/card/id/C = null - switch(rank) - if("Cyborg") - return - if("Captain") - C = new /obj/item/weapon/card/id/gold(src) - else - C = new /obj/item/weapon/card/id(src) - if(C) - C.registered = src.real_name - C.assignment = rank - C.name = "[C.registered]'s ID Card ([C.assignment])" - C.access = get_access(C.assignment) - src.equip_if_possible(C, slot_wear_id) - src.equip_if_possible(new /obj/item/weapon/pen(src), slot_r_store) - //src.equip_if_possible(new /obj/item/device/radio/signaler(src), slot_belt) - src.equip_if_possible(new /obj/item/device/pda(src), slot_belt) - if (istype(src.belt, /obj/item/device/pda)) - var/obj/item/device/pda/pda = src.belt - pda.owner = src.real_name - pda.ownjob = src.wear_id.assignment - pda.name = "PDA-[src.real_name] ([pda.ownjob])" -/* - if (istype(src.r_store, /obj/item/device/pda)) //damned mime PDAs not starting in belt slot - var/obj/item/device/pda/pda = src.r_store - pda.owner = src.real_name - pda.ownjob = src.wear_id.assignment - pda.name = "PDA-[src.real_name] ([pda.ownjob])" */ - if (rank == "Clown") - spawn clname(src) +//TODO: put these somewhere else /client/proc/mimewall() set category = "Mime" set name = "Invisible wall" diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index fac6eeac19..b60b6357cd 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -1,58 +1,48 @@ -var/list/occupations = list( - "Assistant" = -1, - "Captain" = 1, +var/const + ENGSEC =(1<<0) - //civilian - "Head of Personnel" = 1, - - "Bartender" = 1, - "Botanist" = 2, - "Chef" = 1, - "Janitor" = 1, - "Librarian" = 1, - "Quartermaster" = 1, - "Cargo Technician" = 3, - "Shaft Miner" = 3, - "Lawyer" = 2, - "Chaplain" = 1, - "Clown" = 1, - "Mime" = 1, + CAPTAIN =(1<<0) + HOS =(1<<1) + WARDEN =(1<<2) + DETECTIVE =(1<<3) + OFFICER =(1<<4) + CHIEF =(1<<5) + ENGINEER =(1<<6) + ATMOSTECH =(1<<7) + ROBOTICIST =(1<<8) + AI =(1<<9) + CYBORG =(1<<10) - //engineering - "Chief Engineer" = 1, + MEDSCI =(1<<1) - "Station Engineer" = 5, - "Atmospheric Technician"= 4, - "Roboticist" = 1, - - //medical - "Chief Medical Officer" = 1, - - "Medical Doctor" = 5, - "Geneticist" = 2, - "Virologist" = 1, + RD =(1<<0) + SCIENTIST =(1<<1) + CHEMIST =(1<<2) + CMO =(1<<3) + DOCTOR =(1<<4) + GENETICIST =(1<<5) + VIROLOGIST =(1<<6) - //science - "Research Director" = 1, + CIVILIAN =(1<<2) - "Scientist" = 3, - "Chemist" = 2, + HOP =(1<<0) + BARTENDER =(1<<1) + BOTANIST =(1<<2) + CHEF =(1<<3) + JANITOR =(1<<4) + LIBRARIAN =(1<<5) + QUARTERMASTER =(1<<6) + CARGOTECH =(1<<7) + MINER =(1<<8) + LAWYER =(1<<9) + CHAPLAIN =(1<<10) + CLOWN =(1<<11) + MIME =(1<<12) + ASSISTANT =(1<<13) - - //security - "Head of Security" = 1, - - "Warden" = 1, - "Detective" = 1, - "Security Officer" = 5, - - - //silicon - "AI" = 1, - "Cyborg" = 1 -) +var/list/occupations = list() var/list/assistant_occupations = list( diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index d43f381fa7..f73e2be7fb 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -96,7 +96,7 @@ if(cooldown_on || disabled) return else - new /obj/effect/foam(src.loc) + new /obj/effect/effect/foam(src.loc) src.uses-- cooldown_on = 1 cooldown_time = world.timeofday + 100 diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 288950e1be..d1f4c52b1e 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -315,7 +315,7 @@ var/global/list/autolathe_recipes_hidden = list( \ return 0 if(!prob(prb)) return 0 - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() if (electrocute_mob(user, get_area(src), src, 0.7)) diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 96937e958a..f6cbab2523 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -247,7 +247,7 @@ text("[src.oddbutton ? "Yes" : "No" if (prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() del(src) diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 78b273263f..0e4f95eabb 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -696,7 +696,7 @@ Auto Patrol: []"}, if (prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm index 3b7ceb766c..37d8c28d0c 100644 --- a/code/game/machinery/bots/floorbot.dm +++ b/code/game/machinery/bots/floorbot.dm @@ -355,7 +355,7 @@ if (amount) new /obj/item/stack/tile/steel(Tsec) // only one tile, yes - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() del(src) diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index a16eb184b7..827a7548bf 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -474,7 +474,7 @@ if (prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() del(src) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index e451dabdf8..d04d4575e7 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -957,7 +957,7 @@ cell.update_icon() cell = null - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 1cbf5e4c7e..384a628737 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -677,7 +677,7 @@ Auto Patrol: []"}, if (prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/machinery/camera.dm b/code/game/machinery/camera.dm index b71e00d9bc..f373d91f7d 100644 --- a/code/game/machinery/camera.dm +++ b/code/game/machinery/camera.dm @@ -322,7 +322,7 @@ src.bugged = 1 else if(istype(W, /obj/item/weapon/melee/energy/blade))//Putting it here last since it's a special case. I wonder if there is a better way to do these than type casting. deactivate(user,2)//Here so that you can disconnect anyone viewing the camera, regardless if it's on or off. - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, loc) spark_system.start() playsound(loc, 'blade1.ogg', 50, 1) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 5efb6eb72a..d1a78b3738 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -15,7 +15,7 @@ Pod/Blast Doors computer for(var/x in verbs) verbs -= x set_broken() - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(5, 0, src) smoke.start() return @@ -244,7 +244,7 @@ Pod/Blast Doors computer carddesc += "" carddesc += "Assignment: " - jobs = "[target_rank]" + jobs = "[target_rank]" //CHECK THIS var/accesses = "" if(istype(src,/obj/machinery/computer/card/centcom)) @@ -271,7 +271,7 @@ Pod/Blast Doors computer accesses += "
" accesses += "" accesses += "" - body = "[carddesc]
[jobs]

[accesses]" + body = "[carddesc]
[jobs]

[accesses]" //CHECK THIS else body = "{Log in}

" body += "Access Crew Manifest" diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index e171a17399..f05d34a3fd 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -179,7 +179,7 @@ for reference: user << "Barrier lock toggled off." return else - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, src) s.start() for(var/mob/O in viewers(src, null)) @@ -191,7 +191,7 @@ for reference: src.emagged = 1 src.req_access = null user << "You break the ID authentication lock on the [src]." - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, src) s.start() for(var/mob/O in viewers(src, null)) @@ -200,7 +200,7 @@ for reference: else if (src.emagged == 1) src.emagged = 2 user << "You short out the anchoring mechanism on the [src]." - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, src) s.start() for(var/mob/O in viewers(src, null)) @@ -270,7 +270,7 @@ for reference: /* var/obj/item/stack/rods/ =*/ new /obj/item/stack/rods(Tsec) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index d2144c54ba..9ac7e268a6 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -404,7 +404,7 @@ About the new airlock wires panel: return 0 if(!prob(prb)) return 0 //you lucked out, no shock for you - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() //sparks always. if (electrocute_mob(user, get_area(src), src)) @@ -599,7 +599,7 @@ About the new airlock wires panel: if(!istype(H.head, /obj/item/clothing/head/helmet)) for(var/mob/M in viewers(src, null)) M << "\red [user] headbutts the airlock." - var/datum/organ/external/affecting = H.organs["head"] + var/datum/organ/external/affecting = H.get_organ("head") affecting.take_damage(10, 0) H.stunned = 8 H.weakened = 5 diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 7160995489..fc73044345 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -139,7 +139,7 @@ src.operating = -1 if(istype(I, /obj/item/weapon/melee/energy/blade)) if(istype(src, /obj/machinery/door/airlock)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) @@ -232,7 +232,7 @@ del(src) if(3.0) if(prob(80)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, src) s.start() diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 9b9a1cf8a8..d91c2b56bc 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -123,7 +123,7 @@ if (src.density && (istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade))) src.operating = -1 if(istype(I, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, "sparks", 50, 1) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 65d833806f..41be21bae5 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -88,7 +88,7 @@ flick("[base_state]-spark", src) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, src) s.start() src.last_spark = world.time diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index 2a7cfda27e..525a0d6154 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -329,7 +329,7 @@ src.updateUsrDialog() /obj/machinery/microwave/proc/broke() - var/datum/effect/system/spark_spread/s = new + var/datum/effect/effect/system/spark_spread/s = new s.set_up(2, 1, src) s.start() src.icon_state = "mwb" // Make it look all busted up and shit diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 26ea1e78ce..4e07cd66a5 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -46,12 +46,12 @@ var/emagged = 0 // 1: emagged, 0: not emagged var/on = 1 // determines if the turret is on - var/datum/effect/system/spark_spread/spark_system // the spark system, used for generating... sparks? + var/datum/effect/effect/system/spark_spread/spark_system // the spark system, used for generating... sparks? New() ..() // Sets up a spark system - spark_system = new /datum/effect/system/spark_spread + spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) Del() diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 613aa21abb..b7ff8c2d9f 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -132,7 +132,7 @@ else do_teleport(M, com.locked, 0) //dead-on precision else - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() for(var/mob/B in hearers(src, null)) @@ -219,7 +219,7 @@ M.loc = tmploc sleep(2) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, M) s.start() return diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index f37548c985..60b8d6933c 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -57,7 +57,7 @@ var/wasvalid = 0 var/lastfired = 0 var/shot_delay = 30 //3 seconds between shots - var/datum/effect/system/spark_spread/spark_system + var/datum/effect/effect/system/spark_spread/spark_system use_power = 1 idle_power_usage = 50 active_power_usage = 300 @@ -68,7 +68,7 @@ /obj/machinery/turret/New() - spark_system = new /datum/effect/system/spark_spread + spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) // targets = new diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 1dd6ea9320..74dfd1b5ca 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -443,7 +443,7 @@ return 0 if(!prob(prb)) return 0 - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() if (electrocute_mob(user, get_area(src), src, 0.7)) diff --git a/code/game/magic/cultist/runes.dm b/code/game/magic/cultist/runes.dm index 18d51d8ab3..241b13ba0d 100644 --- a/code/game/magic/cultist/runes.dm +++ b/code/game/magic/cultist/runes.dm @@ -271,10 +271,7 @@ var/list/sacrificed = list() corpse_to_raise.mind.key = ghost.key corpse_to_raise.key = ghost.key del(ghost) - for(var/A in corpse_to_raise.organs) - var/datum/organ/external/affecting = corpse_to_raise.organs[A] - if(!istype(affecting)) - continue + for(var/datum/organ/external/affecting in corpse_to_raise.organs) affecting.heal_damage(1000, 1000) corpse_to_raise.toxloss = 0 corpse_to_raise.oxyloss = 0 diff --git a/code/game/master_controller.dm b/code/game/master_controller.dm index c8d7c20b6b..414ccaf849 100644 --- a/code/game/master_controller.dm +++ b/code/game/master_controller.dm @@ -19,6 +19,11 @@ datum/controller/game_controller air_master = new /datum/controller/air_system() air_master.setup() + if(!job_master) + job_master = new /datum/controller/occupations() + if(job_master.SetupOccupations()) + world << "\red \b Job setup complete" + if(!tension_master) tension_master = new /datum/tension() @@ -28,9 +33,8 @@ datum/controller/game_controller setupgenetics() - SetupJobs("config/jobs.txt") +// SetupJobs("config/jobs.txt") - //setupcorpses() Not used any more. syndicate_code_phrase = generate_code_phrase()//Sets up code phrase for traitors, for the round. syndicate_code_response = generate_code_phrase() @@ -62,11 +66,6 @@ datum/controller/game_controller for(var/obj/machinery/atmospherics/unary/vent_scrubber/T in world) T.broadcast_status() - /*world << "\red \b Initializing atmos machinery" - sleep(-1) - - find_air_alarms()*/ - world << "\red \b Initializations complete." diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 6fd1583feb..353e40c2b1 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -55,9 +55,8 @@ var/mob/living/carbon/human/H = target // if (M.health <= 0) return - var/dam_zone = pick("chest", "chest", "chest", "head", "groin") - if (istype(H.organs[dam_zone], /datum/organ/external)) - var/datum/organ/external/temp = H.organs[dam_zone] + var/datum/organ/external/temp = H.get_organ(pick("chest", "chest", "chest", "head")) + if(temp) switch(damtype) if("brute") H.paralysis += 1 diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 1596bc76e3..47ff4e6a98 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -12,7 +12,7 @@ var/smoke = 5 var/smoke_ready = 1 var/smoke_cooldown = 100 - var/datum/effect/system/harmless_smoke_spread/smoke_system = new + var/datum/effect/effect/system/harmless_smoke_spread/smoke_system = new operation_req_access = list(access_cent_specops) wreckage = "/obj/effect/decal/mecha_wreckage/marauder" add_req_access = 0 diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index b62a7a76f8..653fb8d244 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -134,7 +134,7 @@ var/list/the_targets = list(T,T1,T2) spawn(0) for(var/a=0, a<5, a++) - var/obj/effect/water/W = new /obj/effect/water(get_turf(chassis)) + var/obj/effect/effect/water/W = new /obj/effect/effect/water(get_turf(chassis)) if(!W) return var/turf/my_target = pick(the_targets) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 92c01e9c2b..ad6eacc5b2 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -32,7 +32,7 @@ var/add_req_access = 1 var/dna //dna-locking the mech var/list/proc_res = list() //stores proc owners, like proc_res["functionname"] = owner reference - var/datum/effect/system/spark_spread/spark_system = new + var/datum/effect/effect/system/spark_spread/spark_system = new var/lights = 0 var/lights_power = 6 diff --git a/code/game/objects/blood.dm b/code/game/objects/blood.dm index c660cafc02..da37b28f3d 100644 --- a/code/game/objects/blood.dm +++ b/code/game/objects/blood.dm @@ -47,7 +47,7 @@ /*var/obj/effect/decal/cleanable/oil/o =*/ new /obj/effect/decal/cleanable/oil/streak(src.loc) else if (prob(10)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() if (step_to(src, get_step(src, direction), 0)) diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm index 250696eb4a..b4cbf555d1 100644 --- a/code/game/objects/closets.dm +++ b/code/game/objects/closets.dm @@ -3,8 +3,7 @@ /obj/structure/closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(air_group || (height==0 || wall_mounted)) return 1 - - return opened + return (!density) /obj/structure/closet/proc/can_open() if (src.welded) @@ -44,6 +43,7 @@ src.icon_state = src.icon_opened src.opened = 1 playsound(src.loc, 'click.ogg', 15, 1, -3) + density = 0 return 1 /obj/structure/closet/proc/close() @@ -74,6 +74,7 @@ src.icon_state = src.icon_closed src.opened = 0 playsound(src.loc, 'click.ogg', 15, 1, -3) + density = 1 return 1 /obj/structure/closet/proc/toggle() @@ -188,17 +189,19 @@ return /obj/structure/closet - var/lastbang + var/lastbang = 0 /obj/structure/closet/relaymove(mob/user as mob) if (user.stat) return if (!src.open()) user << "\blue It won't budge!" - if (world.time > lastbang+5) - lastbang = world.time + if(!lastbang) + lastbang = 1 for (var/mob/M in hearers(src, null)) M << text("BANG, bang!", max(0, 5 - get_dist(src, M))) + spawn(30) + lastbang = 0 /obj/structure/closet/Move() ..() diff --git a/code/game/objects/closets/secure/personal.dm b/code/game/objects/closets/secure/personal.dm index 9cfe7784e8..9072b405d6 100644 --- a/code/game/objects/closets/secure/personal.dm +++ b/code/game/objects/closets/secure/personal.dm @@ -45,7 +45,7 @@ desc = "It appears to be broken." icon_state = src.icon_broken if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) diff --git a/code/game/objects/devices/chameleonproj.dm b/code/game/objects/devices/chameleonproj.dm index 2efe2bf108..c08ffa32e7 100644 --- a/code/game/objects/devices/chameleonproj.dm +++ b/code/game/objects/devices/chameleonproj.dm @@ -93,7 +93,7 @@ proc/disrupt() if(active_dummy) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) spark_system.start() diff --git a/code/game/objects/devices/flash.dm b/code/game/objects/devices/flash.dm index bd3fdcb2db..185f80a256 100644 --- a/code/game/objects/devices/flash.dm +++ b/code/game/objects/devices/flash.dm @@ -154,7 +154,7 @@ clown_check(var/mob/user) - if((user.mutations & CLOWN) && prob(50)) + if((user.mutations & CLUMSY) && prob(50)) user << "\red The Flash slips out of your hand." user.drop_item() return 0 diff --git a/code/game/objects/devices/flashlight.dm b/code/game/objects/devices/flashlight.dm index e79b645ff9..d75b661f8c 100644 --- a/code/game/objects/devices/flashlight.dm +++ b/code/game/objects/devices/flashlight.dm @@ -28,7 +28,7 @@ attack(mob/M as mob, mob/user as mob) src.add_fingerprint(user) if(src.on && user.zone_sel.selecting == "eyes") - if ((user.mutations & CLOWN || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly + if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly return ..()//just hit them in the head if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")//don't have dexterity diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/devices/scanners.dm index 468d92f9e5..ec37ca8e23 100644 --- a/code/game/objects/devices/scanners.dm +++ b/code/game/objects/devices/scanners.dm @@ -180,7 +180,7 @@ MASS SPECTROMETER origin_tech = "magnets=1;biotech=1" /obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob) - if ((user.mutations & CLOWN || user.brainloss >= 60) && prob(50)) + if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50)) user << text("\red You try to analyze the floor's vitals!") for(var/mob/O in viewers(M, null)) O.show_message(text("\red [user] has analyzed the floor's vitals!"), 1) diff --git a/code/game/objects/effect_system.dm b/code/game/objects/effect_system.dm index 8dc006f256..9cc0356d0f 100644 --- a/code/game/objects/effect_system.dm +++ b/code/game/objects/effect_system.dm @@ -6,14 +6,14 @@ would spawn and follow the beaker, even if it is carried or thrown. */ -/obj/effect +/obj/effect/effect name = "effect" icon = 'effects.dmi' mouse_opacity = 0 unacidable = 1//So effect are not targeted by alien acid. flags = TABLEPASS -/obj/effect/water +/obj/effect/effect/water name = "water" icon = 'effects.dmi' icon_state = "extinguish" @@ -21,7 +21,7 @@ would spawn and follow the beaker, even if it is carried or thrown. flags = 2.0 mouse_opacity = 0 -/obj/effect/smoke +/obj/effect/effect/smoke name = "smoke" icon = 'water.dmi' icon_state = "smoke" @@ -31,7 +31,7 @@ would spawn and follow the beaker, even if it is carried or thrown. var/amount = 8.0 -/obj/effect/water/New() +/obj/effect/effect/water/New() ..() //var/turf/T = src.loc //if (istype(T, /turf)) @@ -41,14 +41,14 @@ would spawn and follow the beaker, even if it is carried or thrown. return return -/obj/effect/water/Del() +/obj/effect/effect/water/Del() //var/turf/T = src.loc //if (istype(T, /turf)) // T.firelevel = 0 //TODO: FIX ..() return -/obj/effect/water/Move(turf/newloc) +/obj/effect/effect/water/Move(turf/newloc) //var/turf/T = src.loc //if (istype(T, /turf)) // T.firelevel = 0 //TODO: FIX @@ -59,7 +59,7 @@ would spawn and follow the beaker, even if it is carried or thrown. return 0 .=..() -/obj/effect/water/Bump(atom/A) +/obj/effect/effect/water/Bump(atom/A) if(reagents) reagents.reaction(A) return ..() @@ -79,35 +79,35 @@ OPTIONAL: steam.attach(mob) steam.start() -- spawns the effect */ ///////////////////////////////////////////// -/obj/effect/steam +/obj/effect/effect/steam name = "steam" icon = 'effects.dmi' icon_state = "extinguish" density = 0 -/datum/effect/system/steam_spread +/datum/effect/effect/system/steam_spread var/number = 3 var/cardinals = 0 var/turf/location var/atom/holder -/datum/effect/system/steam_spread/proc/set_up(n = 3, c = 0, turf/loc) +/datum/effect/effect/system/steam_spread/proc/set_up(n = 3, c = 0, turf/loc) if(n > 10) n = 10 number = n cardinals = c location = loc -/datum/effect/system/steam_spread/proc/attach(atom/atom) +/datum/effect/effect/system/steam_spread/proc/attach(atom/atom) holder = atom -/datum/effect/system/steam_spread/proc/start() +/datum/effect/effect/system/steam_spread/proc/start() var/i = 0 for(i=0, i 10) n = 10 number = n @@ -180,10 +180,10 @@ steam.start() -- spawns the effect else location = get_turf(loca) -/datum/effect/system/spark_spread/proc/attach(atom/atom) +/datum/effect/effect/system/spark_spread/proc/attach(atom/atom) holder = atom -/datum/effect/system/spark_spread/proc/start() +/datum/effect/effect/system/spark_spread/proc/start() var/i = 0 for(i=0, i 20) @@ -191,7 +191,7 @@ steam.start() -- spawns the effect spawn(0) if(holder) src.location = get_turf(holder) - var/obj/effect/sparks/sparks = new /obj/effect/sparks(src.location) + var/obj/effect/effect/sparks/sparks = new /obj/effect/effect/sparks(src.location) src.total_sparks++ var/direction if(src.cardinals) @@ -219,7 +219,7 @@ steam.start() -- spawns the effect ///////////////////////////////////////////// -/obj/effect/harmless_smoke +/obj/effect/effect/harmless_smoke name = "smoke" icon_state = "smoke" opacity = 1 @@ -231,17 +231,17 @@ steam.start() -- spawns the effect pixel_x = -32 pixel_y = -32 -/obj/effect/harmless_smoke/New() +/obj/effect/effect/harmless_smoke/New() ..() spawn (100) del(src) return -/obj/effect/harmless_smoke/Move() +/obj/effect/effect/harmless_smoke/Move() ..() return -/datum/effect/system/harmless_smoke_spread +/datum/effect/effect/system/harmless_smoke_spread var/number = 3 var/cardinals = 0 var/turf/location @@ -249,7 +249,7 @@ steam.start() -- spawns the effect var/total_smoke = 0 // To stop it being spammed and lagging! var/direction -/datum/effect/system/harmless_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct) +/datum/effect/effect/system/harmless_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct) if(n > 10) n = 10 number = n @@ -262,10 +262,10 @@ steam.start() -- spawns the effect direction = direct -/datum/effect/system/harmless_smoke_spread/proc/attach(atom/atom) +/datum/effect/effect/system/harmless_smoke_spread/proc/attach(atom/atom) holder = atom -/datum/effect/system/harmless_smoke_spread/proc/start() +/datum/effect/effect/system/harmless_smoke_spread/proc/start() var/i = 0 for(i=0, i 20) @@ -273,7 +273,7 @@ steam.start() -- spawns the effect spawn(0) if(holder) src.location = get_turf(holder) - var/obj/effect/harmless_smoke/smoke = new /obj/effect/harmless_smoke(src.location) + var/obj/effect/effect/harmless_smoke/smoke = new /obj/effect/effect/harmless_smoke(src.location) src.total_smoke++ var/direction = src.direction if(!direction) @@ -298,7 +298,7 @@ steam.start() -- spawns the effect // Bad smoke ///////////////////////////////////////////// -/obj/effect/bad_smoke +/obj/effect/effect/bad_smoke name = "smoke" icon_state = "smoke" opacity = 1 @@ -310,13 +310,13 @@ steam.start() -- spawns the effect pixel_x = -32 pixel_y = -32 -/obj/effect/bad_smoke/New() +/obj/effect/effect/bad_smoke/New() ..() spawn (200+rand(10,30)) del(src) return -/obj/effect/bad_smoke/Move() +/obj/effect/effect/bad_smoke/Move() ..() for(var/mob/living/carbon/M in get_turf(src)) if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS)) @@ -331,7 +331,7 @@ steam.start() -- spawns the effect return -/obj/effect/bad_smoke/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/effect/effect/bad_smoke/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(air_group || (height==0)) return 1 if(istype(mover, /obj/item/projectile/beam)) var/obj/item/projectile/beam/B = mover @@ -339,7 +339,7 @@ steam.start() -- spawns the effect return 1 -/obj/effect/bad_smoke/HasEntered(mob/living/carbon/M as mob ) +/obj/effect/effect/bad_smoke/HasEntered(mob/living/carbon/M as mob ) ..() if(istype(M, /mob/living/carbon)) if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS)) @@ -354,7 +354,7 @@ steam.start() -- spawns the effect M.coughedtime = 0 return -/datum/effect/system/bad_smoke_spread +/datum/effect/effect/system/bad_smoke_spread var/number = 3 var/cardinals = 0 var/turf/location @@ -362,7 +362,7 @@ steam.start() -- spawns the effect var/total_smoke = 0 // To stop it being spammed and lagging! var/direction -/datum/effect/system/bad_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct) +/datum/effect/effect/system/bad_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct) if(n > 20) n = 20 number = n @@ -375,10 +375,10 @@ steam.start() -- spawns the effect direction = direct -/datum/effect/system/bad_smoke_spread/proc/attach(atom/atom) +/datum/effect/effect/system/bad_smoke_spread/proc/attach(atom/atom) holder = atom -/datum/effect/system/bad_smoke_spread/proc/start() +/datum/effect/effect/system/bad_smoke_spread/proc/start() var/i = 0 for(i=0, i 20) @@ -386,7 +386,7 @@ steam.start() -- spawns the effect spawn(0) if(holder) src.location = get_turf(holder) - var/obj/effect/bad_smoke/smoke = new /obj/effect/bad_smoke(src.location) + var/obj/effect/effect/bad_smoke/smoke = new /obj/effect/effect/bad_smoke(src.location) src.total_smoke++ var/direction = src.direction if(!direction) @@ -407,7 +407,7 @@ steam.start() -- spawns the effect ///////////////////////////////////////////// -/obj/effect/chem_smoke +/obj/effect/effect/chem_smoke name = "smoke" opacity = 1 anchored = 0.0 @@ -418,7 +418,7 @@ steam.start() -- spawns the effect pixel_x = -32 pixel_y = -32 -/obj/effect/chem_smoke/New() +/obj/effect/effect/chem_smoke/New() ..() var/datum/reagents/R = new/datum/reagents(500) reagents = R @@ -428,20 +428,20 @@ steam.start() -- spawns the effect del(src) return -/obj/effect/chem_smoke/Move() +/obj/effect/effect/chem_smoke/Move() ..() for(var/atom/A in view(1, src)) reagents.reaction(A) return -/obj/effect/chem_smoke/HasEntered(mob/living/carbon/M as mob ) +/obj/effect/effect/chem_smoke/HasEntered(mob/living/carbon/M as mob ) ..() reagents.reaction(M) return -/datum/effect/system/chem_smoke_spread +/datum/effect/effect/system/chem_smoke_spread var/number = 3 var/cardinals = 0 var/turf/location @@ -456,7 +456,7 @@ steam.start() -- spawns the effect chemholder.reagents = R R.my_atom = chemholder -/datum/effect/system/chem_smoke_spread/proc/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct) +/datum/effect/effect/system/chem_smoke_spread/proc/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct) if(n > 20) n = 20 number = n @@ -471,10 +471,10 @@ steam.start() -- spawns the effect direction = direct -/datum/effect/system/chem_smoke_spread/proc/attach(atom/atom) +/datum/effect/effect/system/chem_smoke_spread/proc/attach(atom/atom) holder = atom -/datum/effect/system/chem_smoke_spread/proc/start() +/datum/effect/effect/system/chem_smoke_spread/proc/start() var/i = 0 // Calculate the smokes' color @@ -505,7 +505,7 @@ steam.start() -- spawns the effect spawn(0) if(holder) src.location = get_turf(holder) - var/obj/effect/chem_smoke/smoke = new /obj/effect/chem_smoke(src.location) + var/obj/effect/effect/chem_smoke/smoke = new /obj/effect/effect/chem_smoke(src.location) src.total_smoke++ var/direction = src.direction if(!direction) @@ -537,7 +537,7 @@ steam.start() -- spawns the effect // Sleep smoke ///////////////////////////////////////////// -/obj/effect/sleep_smoke +/obj/effect/effect/sleep_smoke name = "smoke" icon_state = "smoke" opacity = 1 @@ -549,13 +549,13 @@ steam.start() -- spawns the effect pixel_x = -32 pixel_y = -32 -/obj/effect/sleep_smoke/New() +/obj/effect/effect/sleep_smoke/New() ..() spawn (200+rand(10,30)) del(src) return -/obj/effect/sleep_smoke/Move() +/obj/effect/effect/sleep_smoke/Move() ..() for(var/mob/living/carbon/M in get_turf(src)) if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS)) @@ -570,7 +570,7 @@ steam.start() -- spawns the effect M.coughedtime = 0 return -/obj/effect/sleep_smoke/HasEntered(mob/living/carbon/M as mob ) +/obj/effect/effect/sleep_smoke/HasEntered(mob/living/carbon/M as mob ) ..() if(istype(M, /mob/living/carbon)) if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS)) @@ -586,7 +586,7 @@ steam.start() -- spawns the effect M.coughedtime = 0 return -/datum/effect/system/sleep_smoke_spread +/datum/effect/effect/system/sleep_smoke_spread var/number = 3 var/cardinals = 0 var/turf/location @@ -594,7 +594,7 @@ steam.start() -- spawns the effect var/total_smoke = 0 // To stop it being spammed and lagging! var/direction -/datum/effect/system/sleep_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct) +/datum/effect/effect/system/sleep_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct) if(n > 20) n = 20 number = n @@ -607,10 +607,10 @@ steam.start() -- spawns the effect direction = direct -/datum/effect/system/sleep_smoke_spread/proc/attach(atom/atom) +/datum/effect/effect/system/sleep_smoke_spread/proc/attach(atom/atom) holder = atom -/datum/effect/system/sleep_smoke_spread/proc/start() +/datum/effect/effect/system/sleep_smoke_spread/proc/start() var/i = 0 for(i=0, i 20) @@ -618,7 +618,7 @@ steam.start() -- spawns the effect spawn(0) if(holder) src.location = get_turf(holder) - var/obj/effect/sleep_smoke/smoke = new /obj/effect/sleep_smoke(src.location) + var/obj/effect/effect/sleep_smoke/smoke = new /obj/effect/effect/sleep_smoke(src.location) src.total_smoke++ var/direction = src.direction if(!direction) @@ -638,7 +638,7 @@ steam.start() -- spawns the effect ///////////////////////////////////////////// -/obj/effect/mustard_gas +/obj/effect/effect/mustard_gas name = "mustard gas" icon_state = "mustard" opacity = 1 @@ -646,13 +646,13 @@ steam.start() -- spawns the effect mouse_opacity = 0 var/amount = 6.0 -/obj/effect/mustard_gas/New() +/obj/effect/effect/mustard_gas/New() ..() spawn (100) del(src) return -/obj/effect/mustard_gas/Move() +/obj/effect/effect/mustard_gas/Move() ..() for(var/mob/living/carbon/human/R in get_turf(src)) if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor))) @@ -666,7 +666,7 @@ steam.start() -- spawns the effect R.updatehealth() return -/obj/effect/mustard_gas/HasEntered(mob/living/carbon/human/R as mob ) +/obj/effect/effect/mustard_gas/HasEntered(mob/living/carbon/human/R as mob ) ..() if (istype(R, /mob/living/carbon/human)) if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor))) @@ -680,7 +680,7 @@ steam.start() -- spawns the effect R.updatehealth() return -/datum/effect/system/mustard_gas_spread +/datum/effect/effect/system/mustard_gas_spread var/number = 3 var/cardinals = 0 var/turf/location @@ -688,7 +688,7 @@ steam.start() -- spawns the effect var/total_smoke = 0 // To stop it being spammed and lagging! var/direction -/datum/effect/system/mustard_gas_spread/proc/set_up(n = 5, c = 0, loca, direct) +/datum/effect/effect/system/mustard_gas_spread/proc/set_up(n = 5, c = 0, loca, direct) if(n > 20) n = 20 number = n @@ -700,10 +700,10 @@ steam.start() -- spawns the effect if(direct) direction = direct -/datum/effect/system/mustard_gas_spread/proc/attach(atom/atom) +/datum/effect/effect/system/mustard_gas_spread/proc/attach(atom/atom) holder = atom -/datum/effect/system/mustard_gas_spread/proc/start() +/datum/effect/effect/system/mustard_gas_spread/proc/start() var/i = 0 for(i=0, i 20) @@ -711,7 +711,7 @@ steam.start() -- spawns the effect spawn(0) if(holder) src.location = get_turf(holder) - var/obj/effect/mustard_gas/smoke = new /obj/effect/mustard_gas(src.location) + var/obj/effect/effect/mustard_gas/smoke = new /obj/effect/effect/mustard_gas(src.location) src.total_smoke++ var/direction = src.direction if(!direction) @@ -737,22 +737,22 @@ steam.start() -- spawns the effect /// and don't call start() in a loop that will be repeated otherwise it'll get spammed! ///////////////////////////////////////////// -/obj/effect/ion_trails +/obj/effect/effect/ion_trails name = "ion trails" icon_state = "ion_trails" anchored = 1.0 -/datum/effect/system/ion_trail_follow +/datum/effect/effect/system/ion_trail_follow var/atom/holder var/turf/oldposition var/processing = 1 var/on = 1 -/datum/effect/system/ion_trail_follow/proc/set_up(atom/atom) +/datum/effect/effect/system/ion_trail_follow/proc/set_up(atom/atom) holder = atom oldposition = get_turf(atom) -/datum/effect/system/ion_trail_follow/proc/start() +/datum/effect/effect/system/ion_trail_follow/proc/start() if(!src.on) src.on = 1 src.processing = 1 @@ -762,7 +762,7 @@ steam.start() -- spawns the effect var/turf/T = get_turf(src.holder) if(T != src.oldposition) if(istype(T, /turf/space)) - var/obj/effect/ion_trails/I = new /obj/effect/ion_trails(src.oldposition) + var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition) src.oldposition = T I.dir = src.holder.dir flick("ion_fade", I) @@ -779,7 +779,7 @@ steam.start() -- spawns the effect src.processing = 1 src.start() -/datum/effect/system/ion_trail_follow/proc/stop() +/datum/effect/effect/system/ion_trail_follow/proc/stop() src.processing = 0 src.on = 0 @@ -792,18 +792,18 @@ steam.start() -- spawns the effect // even if it's carried of thrown. ///////////////////////////////////////////// -/datum/effect/system/steam_trail_follow +/datum/effect/effect/system/steam_trail_follow var/atom/holder var/turf/oldposition var/processing = 1 var/on = 1 var/number -/datum/effect/system/steam_trail_follow/proc/set_up(atom/atom) +/datum/effect/effect/system/steam_trail_follow/proc/set_up(atom/atom) holder = atom oldposition = get_turf(atom) -/datum/effect/system/steam_trail_follow/proc/start() +/datum/effect/effect/system/steam_trail_follow/proc/start() if(!src.on) src.on = 1 src.processing = 1 @@ -811,7 +811,7 @@ steam.start() -- spawns the effect src.processing = 0 spawn(0) if(src.number < 3) - var/obj/effect/steam/I = new /obj/effect/steam(src.oldposition) + var/obj/effect/effect/steam/I = new /obj/effect/effect/steam(src.oldposition) src.number++ src.oldposition = get_turf(holder) I.dir = src.holder.dir @@ -828,7 +828,7 @@ steam.start() -- spawns the effect src.processing = 1 src.start() -/datum/effect/system/steam_trail_follow/proc/stop() +/datum/effect/effect/system/steam_trail_follow/proc/stop() src.processing = 0 src.on = 0 @@ -838,7 +838,7 @@ steam.start() -- spawns the effect // Similar to smoke, but spreads out more // metal foams leave behind a foamed metal wall -/obj/effect/foam +/obj/effect/effect/foam name = "foam" icon_state = "foam" opacity = 0 @@ -852,7 +852,7 @@ steam.start() -- spawns the effect var/metal = 0 -/obj/effect/foam/New(loc, var/ismetal=0) +/obj/effect/effect/foam/New(loc, var/ismetal=0) ..(loc) icon_state = "[ismetal ? "m":""]foam" metal = ismetal @@ -874,7 +874,7 @@ steam.start() -- spawns the effect return // on delete, transfer any reagents to the floor -/obj/effect/foam/Del() +/obj/effect/effect/foam/Del() if(!metal && reagents) for(var/atom/A in oview(0,src)) if(A == src) @@ -882,7 +882,7 @@ steam.start() -- spawns the effect reagents.reaction(A, 1, 1) ..() -/obj/effect/foam/process() +/obj/effect/effect/foam/process() if(--amount < 0) return @@ -899,7 +899,7 @@ steam.start() -- spawns the effect if(!T.Enter(src)) continue - var/obj/effect/foam/F = locate() in T + var/obj/effect/effect/foam/F = locate() in T if(F) continue @@ -914,7 +914,7 @@ steam.start() -- spawns the effect // foam disolves when heated // except metal foams -/obj/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(!metal && prob(max(0, exposed_temperature - 475))) flick("[icon_state]-disolve", src) @@ -922,7 +922,7 @@ steam.start() -- spawns the effect del(src) -/obj/effect/foam/HasEntered(var/atom/movable/AM) +/obj/effect/effect/foam/HasEntered(var/atom/movable/AM) if(metal) return @@ -938,7 +938,7 @@ steam.start() -- spawns the effect M.weakened = 2 -/datum/effect/system/foam_spread +/datum/effect/effect/system/foam_spread var/amount = 5 // the size of the foam spread. var/turf/location var/list/carried_reagents // the IDs of reagents present when the foam was mixed @@ -947,7 +947,7 @@ steam.start() -- spawns the effect -/datum/effect/system/foam_spread/proc/set_up(amt=5, loca, var/datum/reagents/carry = null, var/metalfoam = 0) +/datum/effect/effect/system/foam_spread/proc/set_up(amt=5, loca, var/datum/reagents/carry = null, var/metalfoam = 0) amount = round(amt/5, 1) if(istype(loca, /turf/)) location = loca @@ -967,9 +967,9 @@ steam.start() -- spawns the effect for(var/datum/reagent/R in carry.reagent_list) carried_reagents += R.id -/datum/effect/system/foam_spread/proc/start() +/datum/effect/effect/system/foam_spread/proc/start() spawn(0) - var/obj/effect/foam/F = locate() in location + var/obj/effect/effect/foam/F = locate() in location if(F) F.amount += amount return @@ -1117,13 +1117,13 @@ steam.start() -- spawns the effect return 1 -/datum/effect/system/reagents_explosion +/datum/effect/effect/system/reagents_explosion var/amount // TNT equivalent var/turf/location var/flashing = 0 // does explosion creates flash effect? var/flashing_factor = 0 // factor of how powerful the flash effect relatively to the explosion -/datum/effect/system/reagents_explosion/proc/set_up (amt, loc, flash = 0, flash_fact = 0) +/datum/effect/effect/system/reagents_explosion/proc/set_up (amt, loc, flash = 0, flash_fact = 0) amount = amt if(istype(loc, /turf/)) location = loc @@ -1135,9 +1135,9 @@ steam.start() -- spawns the effect return -/datum/effect/system/reagents_explosion/proc/start() +/datum/effect/effect/system/reagents_explosion/proc/start() if (amount <= 2) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, location) s.start() diff --git a/code/game/objects/gibs.dm b/code/game/objects/gibs.dm index 629a99e7f9..15dcb69af2 100644 --- a/code/game/objects/gibs.dm +++ b/code/game/objects/gibs.dm @@ -33,7 +33,7 @@ del(D) if(sparks) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, location) s.start() diff --git a/code/game/objects/grille.dm b/code/game/objects/grille.dm index ccf6ce7a0f..6c89401cdc 100644 --- a/code/game/objects/grille.dm +++ b/code/game/objects/grille.dm @@ -150,7 +150,7 @@ var/obj/structure/cable/C = T.get_cable_node() if(C) if (electrocute_mob(user, C, src)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() return 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index cb53bc3bdd..a41fcfe687 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -27,7 +27,7 @@ M.handcuffed = new /obj/item/weapon/handcuffs(M) else - if ((usr.mutations & CLOWN) && prob(50)) + if ((usr.mutations & CLUMSY) && prob(50)) usr << "\red Uh ... how do those things work?!" if (istype(M, /mob/living/carbon/human)) var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) @@ -123,7 +123,7 @@ for(var/a=0, a<5, a++) spawn(0) - var/obj/effect/water/W = new /obj/effect/water( get_turf(src) ) + var/obj/effect/effect/water/W = new /obj/effect/effect/water( get_turf(src) ) var/turf/my_target = pick(the_targets) var/datum/reagents/R = new/datum/reagents(5) if(!W) return diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm index 72ddbbf44b..c8d5e17084 100644 --- a/code/game/objects/items/item.dm +++ b/code/game/objects/items/item.dm @@ -99,7 +99,7 @@ if(5.0) t = "huge" else - if ((usr.mutations & CLOWN) && prob(50)) t = "funny-looking" + if ((usr.mutations & CLUMSY) && prob(50)) t = "funny-looking" usr << text("This is a []\icon[][]. It is a [] item.", !src.blood_DNA ? "" : "bloody ",src, src.name, t) if(src.desc) usr << src.desc @@ -330,6 +330,12 @@ src.add_fingerprint(user) return 1 + +/obj/item/proc/IsShield() + return 0 + + + /obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob) var/mob/living/carbon/human/H = M @@ -358,7 +364,7 @@ M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" src.add_fingerprint(user) - //if((user.mutations & CLOWN) && prob(50)) + //if((user.mutations & CLUMSY) && prob(50)) // M = user /* M << "\red You stab yourself in the eye." @@ -377,7 +383,7 @@ "\red You stab yourself in the eyes with [src]!" \ ) if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(7) else M.take_organ_damage(7) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 323d285931..69416e53c0 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -19,7 +19,7 @@ RCD m_amt = 50000 origin_tech = "engineering=4;materials=2" var - datum/effect/system/spark_spread/spark_system + datum/effect/effect/system/spark_spread/spark_system matter = 0 working = 0 mode = 1 @@ -28,7 +28,7 @@ RCD New() desc = "A RCD. It currently holds [matter]/30 matter-units." - src.spark_system = new /datum/effect/system/spark_spread + src.spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) return diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm index 6086c4292a..28090a66ec 100644 --- a/code/game/objects/items/weapons/grenades.dm +++ b/code/game/objects/items/weapons/grenades.dm @@ -65,7 +65,7 @@ FLASHBANG clown_check(var/mob/living/user) - if((user.mutations & CLOWN) && prob(50)) + if((user.mutations & CLUMSY) && prob(50)) user << "\red Huh? How does this thing work?!" src.active = 1 src.icon_state = "empar" @@ -242,7 +242,7 @@ FLASHBANG clown_check(var/mob/living/user) - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red Huh? How does this thing work?!" src.active = 1 src.icon_state = "flashbang1" diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm index b7a5b5aee0..26486b4b2a 100644 --- a/code/game/objects/items/weapons/hydroponics.dm +++ b/code/game/objects/items/weapons/hydroponics.dm @@ -77,8 +77,8 @@ Deathnettle if(!user.gloves) user << "\red The nettle burns your bare hand!" if(istype(user, /mob/living/carbon/human)) - var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm") - var/datum/organ/external/affecting = user.organs[organ] + var/organ = ((user.hand ? "l_":"r_") + "arm") + var/datum/organ/external/affecting = user.get_organ(organ) affecting.take_damage(0,force) else user.take_organ_damage(0,force) @@ -96,8 +96,8 @@ Deathnettle /obj/item/weapon/grown/deathnettle/pickup(mob/living/carbon/human/user as mob) if(!user.gloves) if(istype(user, /mob/living/carbon/human)) - var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm") - var/datum/organ/external/affecting = user.organs[organ] + var/organ = ((user.hand ? "l_":"r_") + "arm") + var/datum/organ/external/affecting = user.get_organ(organ) affecting.take_damage(0,force) else user.take_organ_damage(0,force) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 937e256bbb..70aaa51329 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -37,7 +37,7 @@ KNIFE src.icon_state = "fork" return else - if((user.mutations & CLOWN) && prob(50)) + if((user.mutations & CLUMSY) && prob(50)) M = user return eyestab(M,user) @@ -47,7 +47,7 @@ KNIFE // ROLLING PIN /obj/item/weapon/kitchen/rollingpin/attack(mob/M as mob, mob/living/user as mob) - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red The [src] slips out of your hand and hits your head." user.take_organ_damage(10) user.paralysis += 2 @@ -84,7 +84,7 @@ KNIFE // KNIFE /obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob) - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red You accidentally cut yourself with the [src]." user.take_organ_damage(20) return @@ -107,7 +107,7 @@ KNIFE sleep(rand(2,4)) - if((user.mutations & CLOWN) && prob(50)) //What if he's a clown? + if((user.mutations & CLUMSY) && prob(50)) //What if he's a clown? M << "\red You accidentally slam yourself with the [src]!" M.weakened += 1 user.take_organ_damage(2) diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm index a2ba05b3da..afc69a3a54 100644 --- a/code/game/objects/items/weapons/papers_bins.dm +++ b/code/game/objects/items/weapons/papers_bins.dm @@ -180,7 +180,7 @@ CLIPBOARDS set category = "Object" set src in usr - if ((usr.mutations & CLOWN) && prob(50)) + if ((usr.mutations & CLUMSY) && prob(50)) usr << text("\red You cut yourself on the paper.") return var/n_name = input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index b73b508df4..e402842e3f 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -68,7 +68,7 @@ CIRCULAR SAW if(M == user && prob(25)) user << "\red You mess up!" if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(15) M.updatehealth() else @@ -154,7 +154,7 @@ CIRCULAR SAW if(M == user && prob(25)) user << "\red You mess up!" if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(15) M.updatehealth() else @@ -229,7 +229,7 @@ CIRCULAR SAW if(M == user && prob(25)) user << "\red You mess up!" if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(15) M.updatehealth() else @@ -253,7 +253,7 @@ CIRCULAR SAW if(!istype(M)) return ..() - if((user.mutations & CLOWN) && prob(50)) + if((user.mutations & CLUMSY) && prob(50)) M = user return eyestab(M,user) @@ -325,13 +325,13 @@ CIRCULAR SAW if(M == user && prob(25)) user << "\red You mess up!" if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(15) else M.take_organ_damage(15) if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(7) else M.take_organ_damage(7) @@ -370,13 +370,13 @@ CIRCULAR SAW if(M == user && prob(25)) user << "\red You nick an artery!" if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(75) else M.take_organ_damage(75) if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(7) else M.take_organ_damage(7) @@ -425,7 +425,7 @@ CIRCULAR SAW if(M == user && prob(25)) user << "\red You mess up!" if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(15) else M.take_organ_damage(15) @@ -450,7 +450,7 @@ CIRCULAR SAW if(!istype(M)) return ..() - if((user.mutations & CLOWN) && prob(50)) + if((user.mutations & CLUMSY) && prob(50)) M = user return eyestab(M,user) @@ -494,14 +494,14 @@ CIRCULAR SAW if(M == user && prob(25)) user << "\red You mess up!" if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(40) M.updatehealth() else M.take_organ_damage(40) if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(7) else M.take_organ_damage(7) diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index c3b76293ee..6a29f44c74 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -10,6 +10,11 @@ STUN BATON // SWORD +/obj/item/weapon/melee/energy/sword/IsShield() + if(active) + return 1 + return 0 + /obj/item/weapon/melee/energy/sword/attack(target as mob, mob/user as mob) ..() @@ -17,7 +22,7 @@ STUN BATON color = pick("red","blue","green","purple") /obj/item/weapon/melee/energy/sword/attack_self(mob/living/user as mob) - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red You accidentally cut yourself with [src]." user.take_organ_damage(5,5) active = !active @@ -55,7 +60,7 @@ STUN BATON //Most of the other special functions are handled in their own files. /obj/item/weapon/melee/energy/blade/New() - spark_system = new /datum/effect/system/spark_spread() + spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) return @@ -98,7 +103,7 @@ STUN BATON /obj/item/weapon/melee/baton/attack_self(mob/user as mob) src.status = !( src.status ) - if ((usr.mutations & CLOWN) && prob(50)) + if ((usr.mutations & CLUMSY) && prob(50)) usr << "\red You grab the stunbaton on the wrong side." usr.paralysis += 60 return @@ -114,7 +119,7 @@ STUN BATON return /obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob) - if ((usr.mutations & CLOWN) && prob(50)) + if ((usr.mutations & CLUMSY) && prob(50)) usr << "\red You grab the stunbaton on the wrong side." usr.weakened += 30 return @@ -186,7 +191,7 @@ STUN BATON charges -= 5 /obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob) - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red You club yourself over the head." user.weakened = max(3 * force, user.weakened) if(ishuman(user)) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index bbc3d98838..ade36179d4 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -39,7 +39,7 @@ WELDINGTOOOL if(!istype(M)) return ..() if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head") return ..() - if((user.mutations & CLOWN) && prob(50)) + if((user.mutations & CLUMSY) && prob(50)) M = user return eyestab(M,user) diff --git a/code/game/objects/new_year.dm b/code/game/objects/new_year.dm index 72fc742aeb..c6394eb112 100644 --- a/code/game/objects/new_year.dm +++ b/code/game/objects/new_year.dm @@ -59,7 +59,7 @@ /obj/item/weapon/firbang/afterattack(atom/target as mob|obj|turf|area, mob/user as mob) if (user.equipped() == src) - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red Huh? How does this thing work?!" src.state = 1 src.icon_state = "flashbang1" @@ -94,11 +94,11 @@ playsound(src.loc, 'bang.ogg', 25, 1) var/turf/T = get_turf(src) if(T) - var/datum/effect/system/harmless_smoke_spread/smoke = new + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new smoke.set_up(3, 0, src.loc) smoke.attach(src) smoke.start() - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() new /obj/effect/new_year_tree(T) @@ -107,7 +107,7 @@ /obj/item/weapon/firbang/attack_self(mob/user as mob) if (!src.state) - if (user.mutations & CLOWN) + if (user.mutations & CLUMSY) user << "\red Huh? How does this thing work?!" spawn( 5 ) prime() diff --git a/code/game/objects/radio/electropack.dm b/code/game/objects/radio/electropack.dm index 082c29848f..3920b0ab35 100644 --- a/code/game/objects/radio/electropack.dm +++ b/code/game/objects/radio/electropack.dm @@ -134,7 +134,7 @@ if (M.moved_recently && M.last_move) step(M, M.last_move) M.show_message("\red You feel a sharp shock!") - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, M) s.start() diff --git a/code/game/objects/radio/newradio.dm b/code/game/objects/radio/newradio.dm new file mode 100644 index 0000000000..fc80055b94 --- /dev/null +++ b/code/game/objects/radio/newradio.dm @@ -0,0 +1,48 @@ +/obj/item/device/Nradio + icon = 'radio.dmi' + name = "station bounced radio" + suffix = "\[3\]" + icon_state = "walkietalkie" + item_state = "walkietalkie" + + flags = 450//FFFF what does this even mean likely conduct+onbelt+someothershit + throw_speed = 2 + throw_range = 9 + w_class = 2 + g_amt = 25 + m_amt = 75 + + var + //General things + frequency = 1459 //Default freq + broadcasting = 0 //Mike + listening = 1 //Speaker + secured = 0 //Can you see our wires + freerange = 0 // 0 - Sanitize frequencies, 1 - Full range + + datum/radio_frequency/radio_connection = null + list/datum/radio_frequency/secure_radio_connections = new + + //Internal things + obj/item/weapon/syndicate_uplink/uplink = null //If we have an uplink one of our freqs will activate it + wires = WIRE_RECEIVE | WIRE_TRANSMIT //Active wires + + list/channels = list() //see communications.dm for full list. First channes is a "default" for :h +// "Example" = FREQ_LISTENING|FREQ_BROADCASTING + + last_transmission //What is this + obj/item/device/radio/patch_link = null //What is this + + var/const + WIRE_TRANSMIT = 1 //sends a signal, like to set off a bomb or electrocute someone, or talk + WIRE_RECEIVE = 2 //we can hear things + TRANSMISSION_DELAY = 5 // only 2/second/radio antispam protection + FREQ_LISTENING = 1 + + + proc + set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) + diff --git a/code/game/objects/secstorage/sbriefcase.dm b/code/game/objects/secstorage/sbriefcase.dm index cdec94b4f7..3362984a60 100644 --- a/code/game/objects/secstorage/sbriefcase.dm +++ b/code/game/objects/secstorage/sbriefcase.dm @@ -16,7 +16,7 @@ new /obj/item/weapon/pen(src) /obj/item/weapon/secstorage/sbriefcase/attack(mob/M as mob, mob/living/user as mob) - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red The [src] slips out of your hand and hits your head." user.take_organ_damage(10) user.paralysis += 2 diff --git a/code/game/objects/secstorage/secstorage.dm b/code/game/objects/secstorage/secstorage.dm index 724529eb35..864bb1f631 100644 --- a/code/game/objects/secstorage/secstorage.dm +++ b/code/game/objects/secstorage/secstorage.dm @@ -102,7 +102,7 @@ overlays += image('storage.dmi', icon_locking) locked = 0 if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) diff --git a/code/game/objects/secure_closets.dm b/code/game/objects/secure_closets.dm index 64837bd705..e5ffb53268 100644 --- a/code/game/objects/secure_closets.dm +++ b/code/game/objects/secure_closets.dm @@ -164,7 +164,7 @@ desc = "It appears to be broken." icon_state = src.icon_broken if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) diff --git a/code/game/objects/stacks/glass.dm b/code/game/objects/stacks/glass.dm index 107edfa856..6665ffcf75 100644 --- a/code/game/objects/stacks/glass.dm +++ b/code/game/objects/stacks/glass.dm @@ -168,7 +168,7 @@ SHARDS if(ishuman(M)) var/mob/living/carbon/human/H = M if(!H.shoes) - var/datum/organ/external/affecting = H.organs[pick("l_foot", "r_foot")] + var/datum/organ/external/affecting = H.get_organ(pick("l_leg", "r_leg")) H.weakened = max(3, H.weakened) affecting.take_damage(5, 0) H.UpdateDamageIcon() diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm index 4cd21ddea6..5f1214fc8d 100644 --- a/code/game/objects/stool.dm +++ b/code/game/objects/stool.dm @@ -189,7 +189,7 @@ flick("e_chairs", src) flick("e_chairos", src.overl) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(12, 1, src) s.start() for(var/mob/living/M in src.loc) diff --git a/code/game/objects/storage/bible.dm b/code/game/objects/storage/bible.dm index cc77a59a9f..7230ea9d55 100644 --- a/code/game/objects/storage/bible.dm +++ b/code/game/objects/storage/bible.dm @@ -7,17 +7,14 @@ new /obj/item/weapon/spacecash(src) /obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob) - var/mob/living/carbon/human/H = M - var/heal_amt = 10 - for(var/A in H.organs) - var/datum/organ/external/affecting = null - if(!H.organs[A]) continue - affecting = H.organs[A] - if(!istype(affecting, /datum/organ/external)) continue - if(affecting.heal_damage(heal_amt, heal_amt)) - H.UpdateDamageIcon() - else - H.UpdateDamage() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/heal_amt = 10 + for(var/datum/organ/external/affecting in H.organs) + if(affecting.heal_damage(heal_amt, heal_amt)) + H.UpdateDamageIcon() + else + H.UpdateDamage() return /obj/item/weapon/storage/bible/attack(mob/M as mob, mob/living/user as mob) @@ -38,7 +35,7 @@ user.take_organ_damage(0,10) return - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red The [src] slips out of your hand and hits your head." user.take_organ_damage(10) user.paralysis += 20 diff --git a/code/game/objects/storage/briefcase.dm b/code/game/objects/storage/briefcase.dm index 3cbdc43412..d29aa0c830 100644 --- a/code/game/objects/storage/briefcase.dm +++ b/code/game/objects/storage/briefcase.dm @@ -11,7 +11,7 @@ /obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/living/user as mob) //..() - if ((user.mutations & CLOWN) && prob(50)) + if ((user.mutations & CLUMSY) && prob(50)) user << "\red The [src] slips out of your hand and hits your head." user.take_organ_damage(10) user.paralysis += 2 diff --git a/code/game/objects/storage/lockbox.dm b/code/game/objects/storage/lockbox.dm index bc618e454c..49b9d3b3fd 100644 --- a/code/game/objects/storage/lockbox.dm +++ b/code/game/objects/storage/lockbox.dm @@ -39,7 +39,7 @@ desc = "It appears to be broken." icon_state = src.icon_broken if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) diff --git a/code/game/objects/tables_racks.dm b/code/game/objects/tables_racks.dm index db9eaf1de3..5ca6acab85 100644 --- a/code/game/objects/tables_racks.dm +++ b/code/game/objects/tables_racks.dm @@ -144,7 +144,7 @@ TABLE AND RACK OBJECT INTERATIONS return if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) @@ -186,7 +186,7 @@ TABLE AND RACK OBJECT INTERATIONS if(isrobot(user)) return if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) @@ -256,7 +256,7 @@ TABLE AND RACK OBJECT INTERATIONS return if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) diff --git a/code/game/objects/tank.dm b/code/game/objects/tank.dm index 0d59e73b09..71c68278d0 100644 --- a/code/game/objects/tank.dm +++ b/code/game/objects/tank.dm @@ -29,7 +29,7 @@ var/on = 0.0 w_class = 4.0 item_state = "jetpack" - var/datum/effect/system/ion_trail_follow/ion_trail + var/datum/effect/effect/system/ion_trail_follow/ion_trail distribute_pressure = ONE_ATMOSPHERE*O2STANDARD //volume = 140 //jetpack sould be larger, but then it will never deplete -rastaf0 @@ -400,7 +400,7 @@ /obj/item/weapon/tank/jetpack/New() ..() - src.ion_trail = new /datum/effect/system/ion_trail_follow() + src.ion_trail = new /datum/effect/effect/system/ion_trail_follow() src.ion_trail.set_up(src) src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) return @@ -424,7 +424,7 @@ /obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob) if (!( src.on )) return 0 - if ((num < 0.01 || src.air_contents.total_moles() < num)) + if ((num < 0.005 || src.air_contents.total_moles() < num)) src.ion_trail.stop() return 0 diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm index dd7eb83bde..c7552ec1e8 100644 --- a/code/game/objects/weapons.dm +++ b/code/game/objects/weapons.dm @@ -5,7 +5,7 @@ user << " You have BANNED [M]" /obj/effect/mine/proc/triggerrad(obj) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() obj:radiation += 50 @@ -16,7 +16,7 @@ /obj/effect/mine/proc/triggerstun(obj) obj:stunned += 30 - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() spawn(0) @@ -60,7 +60,7 @@ del(src) /obj/effect/mine/proc/triggerkick(obj) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() del(obj:client) @@ -129,11 +129,11 @@ switch(type) if("feet") if(!H.shoes) - affecting = H.organs[pick("l_foot", "r_foot")] + affecting = H.get_organ(pick("l_leg", "r_leg")) H.weakened = max(3, H.weakened) if("l_hand", "r_hand") if(!H.gloves) - affecting = H.organs[type] + affecting = H.get_organ(type) H.stunned = max(3, H.stunned) if(affecting) affecting.take_damage(1, 0) @@ -153,7 +153,7 @@ user << "\blue You arm the mousetrap." else icon_state = "mousetrap" - if((user.brainloss >= 60 || user.mutations & CLOWN) && prob(50)) + if((user.brainloss >= 60 || user.mutations & CLUMSY) && prob(50)) var/which_hand = "l_hand" if(!user.hand) which_hand = "r_hand" @@ -170,7 +170,7 @@ /obj/item/weapon/mousetrap/attack_hand(mob/user as mob) if(armed) - if((user.brainloss >= 60 || user.mutations & CLOWN) && prob(50)) + if((user.brainloss >= 60 || user.mutations & CLUMSY) && prob(50)) var/which_hand = "l_hand" if(!user.hand) which_hand = "r_hand" diff --git a/code/game/vials.dm b/code/game/vials.dm index d6366ea0e7..f7f4483f24 100644 --- a/code/game/vials.dm +++ b/code/game/vials.dm @@ -186,7 +186,7 @@ var/i for(i=0, i<10, i++) spawn(0) - var/obj/effect/water/water1 = new /obj/effect/water( mobloc ) + var/obj/effect/effect/water/water1 = new /obj/effect/effect/water( mobloc ) var/direction = pick(alldirs) water1.name = "water" water1.density = 0 @@ -210,7 +210,7 @@ var/c for(c=0, c= 30) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") if(affecting) affecting.take_damage(25, 0) M:UpdateDamage() @@ -691,7 +691,7 @@ datum del (M:head) M << "\red Your helmet melts into uselessness!" return - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(35, 0) M:UpdateDamage() M:UpdateDamageIcon() @@ -706,7 +706,7 @@ datum M.take_organ_damage(min(15, volume * 4)) // same deal as sulphuric acid else if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M:organs["head"] + var/datum/organ/external/affecting = M:get_organ("head") affecting.take_damage(30, 0) M:UpdateDamage() M:UpdateDamageIcon() diff --git a/code/modules/chemical/Chemistry-Recipes.dm b/code/modules/chemical/Chemistry-Recipes.dm index 1db8354831..1f1b79a469 100644 --- a/code/modules/chemical/Chemistry-Recipes.dm +++ b/code/modules/chemical/Chemistry-Recipes.dm @@ -28,7 +28,7 @@ datum result_amount = 2 on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/system/reagents_explosion/e = new() + var/datum/effect/effect/system/reagents_explosion/e = new() e.set_up(round (created_volume/10, 1), location, 0, 0) e.start() @@ -277,7 +277,7 @@ datum result_amount = 2 on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/system/reagents_explosion/e = new() + var/datum/effect/effect/system/reagents_explosion/e = new() e.set_up(round (created_volume/2, 1), location, 0, 0) e.start() @@ -299,7 +299,7 @@ datum result_amount = null on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(2, 1, location) s.start() for(var/mob/living/carbon/M in viewers(world.view, location)) @@ -378,7 +378,7 @@ datum secondary = 1 on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/system/chem_smoke_spread/S = new /datum/effect/system/chem_smoke_spread + var/datum/effect/effect/system/chem_smoke_spread/S = new /datum/effect/effect/system/chem_smoke_spread S.attach(location) S.set_up(holder, 10, 0, location) playsound(location, 'smoke.ogg', 50, 1, -3) @@ -438,7 +438,7 @@ datum //for(var/datum/reagent/R in holder.reagent_list) // world << "[R.name] = [R.volume]" - var/datum/effect/system/foam_spread/s = new() + var/datum/effect/effect/system/foam_spread/s = new() s.set_up(created_volume, location, holder, 0) s.start() holder.clear_reagents() @@ -460,7 +460,7 @@ datum for(var/mob/M in viewers(5, location)) M << "\red The solution spews out a metalic foam!" - var/datum/effect/system/foam_spread/s = new() + var/datum/effect/effect/system/foam_spread/s = new() s.set_up(created_volume/2, location, holder, 1) s.start() return @@ -480,7 +480,7 @@ datum for(var/mob/M in viewers(5, location)) M << "\red The solution spews out a metalic foam!" - var/datum/effect/system/foam_spread/s = new() + var/datum/effect/effect/system/foam_spread/s = new() s.set_up(created_volume/2, location, holder, 2) s.start() return @@ -537,7 +537,7 @@ datum required_other = 2 on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/system/reagents_explosion/e = new() + var/datum/effect/effect/system/reagents_explosion/e = new() e.set_up(round (created_volume/10, 1), location, 0, 0) e.start() @@ -759,7 +759,7 @@ datum //for(var/datum/reagent/R in holder.reagent_list) // world << "[R.name] = [R.volume]" - var/datum/effect/system/foam_spread/s = new() + var/datum/effect/effect/system/foam_spread/s = new() s.set_up(created_volume, location, holder, 0) s.start() holder.clear_reagents() diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm index 894e1a0707..8b0cbf183c 100644 --- a/code/modules/chemical/Chemistry-Tools.dm +++ b/code/modules/chemical/Chemistry-Tools.dm @@ -225,7 +225,7 @@ G.reagents.trans_to(src, G.reagents.total_volume) if(src.reagents.total_volume) //The possible reactions didnt use up all reagents. - var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread() + var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() steam.set_up(10, 0, get_turf(src)) steam.attach(src) steam.start() @@ -530,12 +530,12 @@ return if(2.0) if (prob(50)) - new /obj/effect/water(src.loc) + new /obj/effect/effect/water(src.loc) del(src) return if(3.0) if (prob(5)) - new /obj/effect/water(src.loc) + new /obj/effect/effect/water(src.loc) del(src) return else @@ -543,7 +543,7 @@ blob_act() if(prob(50)) - new /obj/effect/water(src.loc) + new /obj/effect/effect/water(src.loc) del(src) diff --git a/code/modules/clothing/spacesuits/ninja.dm b/code/modules/clothing/spacesuits/ninja.dm index b15e1dbe4c..ce028fe46a 100644 --- a/code/modules/clothing/spacesuits/ninja.dm +++ b/code/modules/clothing/spacesuits/ninja.dm @@ -22,7 +22,7 @@ //Important parts of the suit. mob/living/carbon/affecting = null//The wearer. obj/item/weapon/cell/cell//Starts out with a high-capacity cell using New(). - datum/effect/system/spark_spread/spark_system//To create sparks. + datum/effect/effect/system/spark_spread/spark_system//To create sparks. reagent_list[] = list("tricordrazine","dexalinp","spaceacillin","anti_toxin","nutriment","radium","hyronalin")//The reagents ids which are added to the suit at New(). stored_research[]//For stealing station research. obj/item/weapon/disk/tech_disk/t_disk//To copy design onto disk. diff --git a/code/modules/critters/critter_AI.dm b/code/modules/critters/critter_AI.dm index 9703a7d99c..5448e894dd 100644 --- a/code/modules/critters/critter_AI.dm +++ b/code/modules/critters/critter_AI.dm @@ -154,24 +154,13 @@ O.show_message("\red [src] [src.attacktext] [src.target]!", 1) if(ismob(src.target)) - var/damage = rand(melee_damage_lower, melee_damage_upper) if(istype(target, /mob/living/carbon/human)) - var/dam_zone = pick("head", "chest", "l_hand", "r_hand", "l_leg", "r_leg", "groin") - if (dam_zone == "chest") - if ((((target:wear_suit && target:wear_suit.body_parts_covered & UPPER_TORSO) || (target:w_uniform && target:w_uniform.body_parts_covered & LOWER_TORSO)) && prob(10))) - if(prob(20)) - target:show_message("\blue You have been protected from a hit to the chest.") - return - if (istype(target:organs[text("[]", dam_zone)], /datum/organ/external)) - var/datum/organ/external/temp = target:organs[text("[]", dam_zone)] - if (temp.take_damage(damage, 0)) - target:UpdateDamageIcon() - else - target:UpdateDamage() - target:updatehealth() - + var/mob/living/carbon/human/H = target + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") + var/datum/organ/external/affecting = H.get_organ(ran_zone(dam_zone)) + H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee")) else target:bruteloss += damage diff --git a/code/modules/critters/hivebots/hivebot.dm b/code/modules/critters/hivebots/hivebot.dm index 304e928cd8..329660fe24 100644 --- a/code/modules/critters/hivebots/hivebot.dm +++ b/code/modules/critters/hivebots/hivebot.dm @@ -40,7 +40,7 @@ src.visible_message("[src] blows apart!") var/turf/Ts = get_turf(src) new /obj/effect/decal/cleanable/robot_debris(Ts) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() del(src) @@ -198,7 +198,7 @@ New() ..() - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(5, 0, src.loc) smoke.start() for(var/mob/O in viewers(src, null)) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 51a1ea9de3..82c89cca20 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -548,7 +548,7 @@ if (stunned < power) stunned = power - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 8d708a4461..bc0bed6d3e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -212,7 +212,7 @@ breath = loc.remove_air(breath_moles) // Handle chem smoke effect -- Doohl - for(var/obj/effect/chem_smoke/smoke in view(1, src)) + for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) if(smoke.reagents.total_volume) smoke.reagents.reaction(src, INGEST) spawn(5) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index e77b05f5ea..f2535086aa 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -193,7 +193,7 @@ breath = loc.remove_air(breath_moles) // Handle chem smoke effect -- Doohl - for(var/obj/effect/chem_smoke/smoke in view(1, src)) + for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) if(smoke.reagents.total_volume) smoke.reagents.reaction(src, INGEST) spawn(5) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 7e7d60a74f..b9d51ff603 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -19,7 +19,7 @@ var/d = rand(round(I.force / 4), I.force) if(istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/H = src - var/organ = H.organs["chest"] + var/organ = H.get_organ("chest") if (istype(organ, /datum/organ/external)) var/datum/organ/external/temp = organ temp.take_damage(d, 0) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5d62f25011..f093caf2cf 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -264,107 +264,29 @@ if (prob(50) && !shielded) paralysis += 10 - for(var/organ in organs) - var/datum/organ/external/temp = organs[text("[]", organ)] - if (istype(temp, /datum/organ/external)) - switch(temp.name) - if("head") - temp.take_damage(b_loss * 0.2, f_loss * 0.2) - if("chest") - temp.take_damage(b_loss * 0.4, f_loss * 0.4) - if("groin") - temp.take_damage(b_loss * 0.1, f_loss * 0.1) - if("l_arm") - temp.take_damage(b_loss * 0.05, f_loss * 0.05) - if("r_arm") - temp.take_damage(b_loss * 0.05, f_loss * 0.05) -/* if("l_hand") -/ temp.take_damage(b_loss * 0.0225, f_loss * 0.0225) - if("r_hand") - temp.take_damage(b_loss * 0.0225, f_loss * 0.0225)*/ - if("l_leg") - temp.take_damage(b_loss * 0.05, f_loss * 0.05) - if("r_leg") - temp.take_damage(b_loss * 0.05, f_loss * 0.05) -/* if("l_foot") - temp.take_damage(b_loss * 0.0225, f_loss * 0.0225) - if("r_foot") - temp.take_damage(b_loss * 0.0225, f_loss * 0.0225)*/ - + for(var/datum/organ/external/temp in organs) + switch(temp.name) + if("head") + temp.take_damage(b_loss * 0.2, f_loss * 0.2) + if("chest") + temp.take_damage(b_loss * 0.4, f_loss * 0.4) + if("l_arm") + temp.take_damage(b_loss * 0.05, f_loss * 0.05) + if("r_arm") + temp.take_damage(b_loss * 0.05, f_loss * 0.05) + if("l_leg") + temp.take_damage(b_loss * 0.05, f_loss * 0.05) + if("r_leg") + temp.take_damage(b_loss * 0.05, f_loss * 0.05) UpdateDamageIcon() /mob/living/carbon/human/blob_act() - if (stat == 2) - return - var/damage = null - if (stat != 2) - damage = rand(30,40) - + if(stat == 2) return show_message("\red The blob attacks you!") - - var/list/zones = list("head","chest","chest", "groin", "l_arm", "r_arm", "l_leg", "r_leg") - - var/zone = pick(zones) - - var/datum/organ/external/temp = organs["[zone]"] - - switch(zone)//This really needs an update badly - if ("head") - if ((((head && head.body_parts_covered & HEAD) || (wear_mask && wear_mask.body_parts_covered & HEAD)) && prob(99))) - if (prob(20)) - temp.take_damage(damage, 0) - else - show_message("\red You have been protected from a hit to the head.") - return - if (damage > 4.9) - if (weakened < 10) - weakened = rand(10, 15) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red The blob has weakened []!", src), 1, "\red You hear someone fall.", 2) - temp.take_damage(damage) - if ("chest") - if ((((wear_suit && wear_suit.body_parts_covered & UPPER_TORSO) || (w_uniform && w_uniform.body_parts_covered & UPPER_TORSO)) && prob(85))) - show_message("\red You have been protected from a hit to the chest.") - return - if (damage > 4.9) - if (prob(50)) - if (weakened < 5) - weakened = 5 - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red The blob has knocked down []!", src), 1, "\red You hear someone fall.", 2) - else - if (stunned < 5) - stunned = 5 - for(var/mob/O in viewers(src, null)) - if(O.client) O.show_message(text("\red The blob has stunned []!", src), 1) - if(stat != 2) stat = 1 - temp.take_damage(damage) - if ("groin") - if ((((wear_suit && wear_suit.body_parts_covered & LOWER_TORSO) || (w_uniform && w_uniform.body_parts_covered & LOWER_TORSO)) && prob(75))) - show_message("\red You have been protected from a hit to the lower chest.") - return - else - temp.take_damage(damage, 0) - - - if("l_arm") - temp.take_damage(damage, 0) - if("r_arm") - temp.take_damage(damage, 0) - if("l_hand") - temp.take_damage(damage, 0) - if("r_hand") - temp.take_damage(damage, 0) - if("l_leg") - temp.take_damage(damage, 0) - if("r_leg") - temp.take_damage(damage, 0) - if("l_foot") - temp.take_damage(damage, 0) - if("r_foot") - temp.take_damage(damage, 0) - + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") + var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) + apply_damage(rand(30,40), BRUTE, affecting, run_armor_check(affecting, "melee")) UpdateDamageIcon() return @@ -1137,51 +1059,19 @@ */ last_b_state = stat -/mob/living/carbon/human/hand_p(mob/M as mob)//update needed - if (M.a_intent == "hurt") - if (istype(M.wear_mask, /obj/item/clothing/mask/muzzle)) - return - if (health > 0) - if (istype(wear_suit, /obj/item/clothing/suit/space)) - if (prob(25)) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [M.name] has attempted to bite []!", src), 1) - return - else if (istype(wear_suit, /obj/item/clothing/suit/space/santa)) - if (prob(25)) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [M.name] has attempted to bite []!", src), 1) - return - else if (istype(wear_suit, /obj/item/clothing/suit/bio_suit)) - if (prob(25)) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [M.name] has attempted to bite []!", src), 1) - return - else if (istype(wear_suit, /obj/item/clothing/suit/armor)) - if (prob(25)) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [M.name] has attempted to bite []!", src), 1) - return - else - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red [M.name] has bit []!", src), 1) - var/damage = rand(1, 3) - var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg", "groin") - if (istype(organs[text("[]", dam_zone)], /datum/organ/external)) - var/datum/organ/external/temp = organs[text("[]", dam_zone)] - if (temp.take_damage(damage, 0)) - UpdateDamageIcon() - else - UpdateDamage() - updatehealth() +/mob/living/carbon/human/hand_p(mob/M as mob) + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") + var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) + var/armor = run_armor_check(affecting, "melee") + apply_damage(rand(1,2), BRUTE, affecting, armor) + if(armor >= 2) return - for(var/datum/disease/D in M.viruses) - if(istype(D, /datum/disease/jungle_fever)) - var/mob/living/carbon/human/H = src - src = null - src = H.monkeyize() - contract_disease(D,1,0) + for(var/datum/disease/D in M.viruses) + if(istype(D, /datum/disease/jungle_fever)) + var/mob/living/carbon/human/H = src + src = null + src = H.monkeyize() + contract_disease(D,1,0) return @@ -1240,7 +1130,7 @@ if (stunned < power) stunned = power - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 0baebd8db5..44a868b80e 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -90,7 +90,6 @@ visible_message("\red [M] has weakened [src]!") apply_effect(4, WEAKEN, armor_block) UpdateDamageIcon() - updatehealth() if("disarm") @@ -99,7 +98,7 @@ if(w_uniform) w_uniform.add_fingerprint(M) - var/datum/organ/external/affecting = organs[ran_zone(M.zone_sel.selecting)] + var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) var/randn = rand(1, 100) if (randn <= 25) apply_effect(2, WEAKEN, run_armor_check(affecting, "melee")) diff --git a/code/modules/mob/living/carbon/human/human_attackpaw.dm b/code/modules/mob/living/carbon/human/human_attackpaw.dm index 03b1e5f2cb..8d01ca3e8f 100644 --- a/code/modules/mob/living/carbon/human/human_attackpaw.dm +++ b/code/modules/mob/living/carbon/human/human_attackpaw.dm @@ -10,11 +10,9 @@ O.show_message(text("\red [M.name] has bit []!", src), 1) var/damage = rand(1, 3) - var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg", "groin") + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) - var/armor_block = run_armor_check(affecting, "melee") - apply_damage(damage, BRUTE, affecting, armor_block) - UpdateDamageIcon() + apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee")) for(var/datum/disease/D in M.viruses) if(istype(D, /datum/disease/jungle_fever)) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index e1a9a0d8ba..648947082e 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -29,20 +29,14 @@ body_lying = list() UpdateDamage() for(var/datum/organ/external/O in organs) - if(istype(O, /datum/organ/external)) - var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human - DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels - - // world << "[O.icon_name] [O.damage_state] \icon[DI]" - - body_standing += DI - - DI = new /icon('dam_human.dmi', "[O.damage_state]-2") // repeat for lying icons - DI.Blend(new /icon('dam_mask.dmi', "[O.icon_name]2"), ICON_MULTIPLY) - - // world << "[O.r_name]2 [O.d_i_state]-2 \icon[DI]" - - body_lying += DI + var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human + DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels + // world << "[O.icon_name] [O.damage_state] \icon[DI]" + body_standing += DI + DI = new /icon('dam_human.dmi', "[O.damage_state]-2") // repeat for lying icons + DI.Blend(new /icon('dam_mask.dmi', "[O.icon_name]2"), ICON_MULTIPLY) + // world << "[O.r_name]2 [O.d_i_state]-2 \icon[DI]" + body_lying += DI /mob/living/carbon/human/proc/get_organ(var/zone) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index b77604049f..bf7922a094 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -28,9 +28,8 @@ emp_act //If you don't specify a bodypart, it checks ALL your bodyparts for protection, and averages out the values for(var/datum/organ/external/organ in organs) - if(istype(organ)) - armorval += checkarmor(organ, type) - organnum++ + armorval += checkarmor(organ, type) + organnum++ return armorval/max(organnum, 1) @@ -48,14 +47,15 @@ emp_act /mob/living/carbon/human/proc/check_shields(var/damage = 0, var/attack_text = "the attack") - var/list/hand_held_shields = list("/obj/item/weapon/shield/riot","/obj/item/weapon/melee/energy/sword") - if(l_hand && is_type_in_list(l_hand, hand_held_shields))//Current base is the prob(50-d/3) - if(prob(50 - round(damage / 3))) - show_message("\red You block [attack_text] with your [l_hand.name]!", 4) + if(l_hand && istype(l_hand, /obj/item))//Current base is the prob(50-d/3) + var/obj/item/I = l_hand + if(I.IsShield() && (prob(50 - round(damage / 3)))) + visible_message("\red [src] blocks [attack_text] with the [l_hand.name]!") return 1 - if(r_hand && is_type_in_list(r_hand, hand_held_shields)) - if(prob(50 - round(damage / 3))) - show_message("\red You block [attack_text] with your [l_hand.name]!", 4) + if(r_hand && istype(r_hand, /obj/item)) + var/obj/item/I = r_hand + if(I.IsShield() && (prob(50 - round(damage / 3)))) + visible_message("\red [src] blocks [attack_text] with the [r_hand.name]!") return 1 return 0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 7df5a83c22..3f4fa44ed3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -257,7 +257,7 @@ if(!block) - for(var/obj/effect/chem_smoke/smoke in view(1, src)) + for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) if(smoke.reagents.total_volume) smoke.reagents.reaction(src, INGEST) spawn(5) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index eef527db42..5225b5d926 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -211,7 +211,7 @@ if(!block) - for(var/obj/effect/chem_smoke/smoke in view(1, src)) + for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) if(smoke.reagents.total_volume) smoke.reagents.reaction(src, INGEST) spawn(5) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index a51902cfaa..960e9f9104 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -364,7 +364,7 @@ if (stunned < power) stunned = power - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d7fc4ba07a..095dad7d64 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -22,12 +22,9 @@ return 0 var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part var/divided_damage = (burn_amount)/(H.organs.len) - var/datum/organ/external/affecting = null var/extradam = 0 //added to when organ is at max dam - for(var/A in H.organs) - if(!H.organs[A]) continue - affecting = H.organs[A] - if(!istype(affecting, /datum/organ/external)) continue + for(var/datum/organ/external/affecting in H.organs) + if(!affecting) continue if(affecting.take_damage(0, divided_damage+extradam)) extradam = 0 else diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 26aeae9034..d7bd5c6d53 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1,6 +1,6 @@ /mob/living/silicon/robot/New(loc,var/syndie = 0) - spark_system = new /datum/effect/system/spark_spread() + spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) spawn (1) @@ -584,7 +584,7 @@ flick("noise", flash) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 260b384c78..444242f298 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -1,7 +1,8 @@ -mob/new_player - var/datum/preferences/preferences - var/ready = 0 - var/spawning = 0//Referenced when you want to delete the new_player later on in the code. +/mob/new_player + var + datum/preferences/preferences = null + ready = 0 + spawning = 0//Referenced when you want to delete the new_player later on in the code. invisibility = 101 @@ -10,12 +11,8 @@ mob/new_player canmove = 0 anchored = 1 // don't get pushed around -// var/list/jobs_restricted_by_gamemode Login() - //Next line is commented out because seem it does nothing helpful and on the other hand it calls mob/new_player/Move() to EACH turf in the world. --rastaf0 - //..() - if(!preferences) preferences = new @@ -25,8 +22,10 @@ mob/new_player mind.current = src var/starting_loc = pick(newplayer_start) + if(!starting_loc) starting_loc = locate(1,1,1) loc = starting_loc sight |= SEE_TURFS + var/list/watch_locations = list() for(var/obj/effect/landmark/landmark in world) if(landmark.tag == "landmark*new_player") @@ -103,38 +102,27 @@ mob/new_player del(src) return - verb - new_player_panel() - set src = usr - new_player_panel_proc() - - proc + verb/new_player_panel() + set src = usr new_player_panel_proc() - var/output = "New Player Options" - /*output += " | Refresh
" - output += "Name: [preferences.be_random_name ? "Random" :preferences.real_name]"*/ + proc/new_player_panel_proc() + var/output = "New Player Options" + output +="
" + output += "
Setup Character

" - output +="
" + if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) + if(!ready) output += "Declare Ready
" + else output += "You are ready (Cancel)
" - /*output += "Preferred jobs:
" - output += "[preferences.occupation[1]]
" - output += "[preferences.occupation[2]]
" - output += "[preferences.occupation[3]]
"*/ + else + output += "Join Game!
" - output += "
Setup Character

" - if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) - if(!ready) - output += "Declare Ready
" - else - output += "You are ready (Cancel)
" - else - output += "Join Game!
" + output += "
Observe
" - output += "
Observe
" - - src << browse(output,"window=playersetup;size=250x210;can_close=0") + src << browse(output,"window=playersetup;size=250x210;can_close=0") + return Stat() ..() @@ -203,93 +191,37 @@ mob/new_player LateChoices() if(href_list["SelectedJob"]) - if (!usr.client.authenticated) + if(!usr.client.authenticated) src << "You are not authorized to enter the game." return - if (!enter_allowed) + if(!enter_allowed) usr << "\blue There is an administrative lock on entering the game!" return - switch(href_list["SelectedJob"]) - if ("1") - AttemptLateSpawn("Captain") - if ("2") - AttemptLateSpawn("Head of Security") - if ("3") - AttemptLateSpawn("Head of Personnel") - if ("4") - AttemptLateSpawn("Station Engineer") - if ("5") - AttemptLateSpawn("Bartender") - if ("6") - AttemptLateSpawn("Scientist") - if ("7") - AttemptLateSpawn("Chemist") - if ("8") - AttemptLateSpawn("Geneticist") - if ("9") - AttemptLateSpawn("Security Officer") - if ("10") - AttemptLateSpawn("Medical Doctor") - if ("11") - AttemptLateSpawn("Atmospheric Technician") - if ("12") - AttemptLateSpawn("Detective") - if ("13") - AttemptLateSpawn("Chaplain") - if ("14") - AttemptLateSpawn("Janitor") - if ("15") - AttemptLateSpawn("Clown") - if ("16") - AttemptLateSpawn("Chef") - if ("17") - AttemptLateSpawn("Roboticist") - if ("18") - AttemptLateSpawn("Assistant") - if ("19") - AttemptLateSpawn("Quartermaster") - if ("20") - AttemptLateSpawn("Research Director") - if ("21") - AttemptLateSpawn("Chief Engineer") - if ("22") - AttemptLateSpawn("Botanist") - if ("23") - AttemptLateSpawn("Librarian") - if ("24") - AttemptLateSpawn("Virologist") - if ("25") - AttemptLateSpawn("Lawyer") - if ("26") - AttemptLateSpawn("Cargo Technician") - if ("27") - AttemptLateSpawn("Chief Medical Officer") - if ("28") - AttemptLateSpawn("Warden") - if ("29") - AttemptLateSpawn("Shaft Miner") - if ("30") - AttemptLateSpawn("Mime") + AttemptLateSpawn(href_list["SelectedJob"]) + return if(!ready && href_list["preferences"]) preferences.process_link(src, href_list) else if(!href_list["late_join"]) new_player_panel() - proc/IsJobAvailable(rank) - if(((jobMax[rank] < 0) || (countJob(rank) < jobMax[rank])) && !jobban_isbanned(src,rank)) + +/* proc/IsJobAvailable(rank) + if(((occupations[rank] < 0) || (countJob(rank) < occupations[rank])) && !jobban_isbanned(src,rank)) return 1 else - return 0 + return 0*/ - proc/AttemptLateSpawn(rank, maxAllowed) - if(IsJobAvailable(rank, maxAllowed)) + + proc/AttemptLateSpawn(rank) + var/datum/job/job = job_master.GetJob(rank) + if(job && ((job.title == "Assistant") || (job.current_positions < job.total_positions))) var/mob/living/carbon/human/character = create_character() var/icon/char_icon = getFlatIcon(character,0)//We're creating out own cache so it's not needed. - if (character) - character.Equip_Rank(rank, joined_late=1) + if(job_master.AssignRole(character, rank, 1)) + job_master.EquipRank(character, rank, 1) if(character.mind) if(character.mind.assigned_role != "Cyborg") ManifestLateSpawn(character,char_icon) @@ -305,6 +237,7 @@ mob/new_player else src << alert("[rank] is not available. Please try another.") + proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank) if (ticker.current_state == GAME_STATE_PLAYING) var/ailist[] = list() @@ -336,7 +269,7 @@ mob/new_player M.fields["id"] = G.fields["id"] S.fields["name"] = G.fields["name"] S.fields["id"] = G.fields["id"] - if (H.gender == FEMALE) + if(H.gender == FEMALE) G.fields["sex"] = "Female" else G.fields["sex"] = "Male" @@ -381,102 +314,17 @@ mob/new_player data_core.locked += L return -// This fxn creates positions for assistants based on existing positions. This could be more elegant. + proc/LateChoices() var/dat = "" dat += "Choose from the following open positions:
" - if (IsJobAvailable("Captain")) - dat += "Captain
" - - if (IsJobAvailable("Head of Security")) - dat += "Head of Security
" - - if (IsJobAvailable("Head of Personnel")) - dat += "Head of Personnel
" - - if (IsJobAvailable("Research Director")) - dat += "Research Director
" - - if (IsJobAvailable("Chief Engineer")) - dat += "Chief Engineer
" - - if (IsJobAvailable("Station Engineer")) - dat += "Station Engineer
" - - if (IsJobAvailable("Bartender")) - dat += "Bartender
" - - if (IsJobAvailable("Scientist")) - dat += "Scientist
" - - if (IsJobAvailable("Chemist")) - dat += "Chemist
" - - if (IsJobAvailable("Geneticist")) - dat += "Geneticist
" - - if (IsJobAvailable("Security Officer")) - dat += "Security Officer
" - - if (IsJobAvailable("Medical Doctor")) - dat += "Medical Doctor
" - - if (IsJobAvailable("Atmospheric Technician")) - dat += "Atmospheric Technician
" - - if (IsJobAvailable("Detective")) - dat += "Detective
" - - if (IsJobAvailable("Chaplain")) - dat += "Chaplain
" - - if (IsJobAvailable("Janitor")) - dat += "Janitor
" - - if (IsJobAvailable("Clown")) - dat += "Clown
" - - if (IsJobAvailable("Mime")) - dat += "Mime
" - - if (IsJobAvailable("Chef")) - dat += "Chef
" - - if (IsJobAvailable("Roboticist")) - dat += "Roboticist
" - - if (IsJobAvailable("Quartermaster")) - dat += "Quartermaster
" - - if (IsJobAvailable("Botanist")) - dat += "Botanist
" - - if (IsJobAvailable("Librarian")) - dat += "Librarian
" - - if (IsJobAvailable("Virologist")) - dat += "Virologist
" - - if (IsJobAvailable("Lawyer")) - dat += "Lawyer
" - - if (IsJobAvailable("Cargo Technician")) - dat += "Cargo Technician
" - - if (IsJobAvailable("Chief Medical Officer")) - dat += "Chief Medical Officer
" - - if (IsJobAvailable("Warden")) - dat += "Warden
" - - if (IsJobAvailable("Shaft Miner")) - dat += "Shaft Miner
" - - if (!jobban_isbanned(src,"Assistant")) - dat += "Assistant
" + for(var/datum/job/job in job_master.occupations) + if(job && ((job.title == "Assistant") || (job.current_positions < job.total_positions))) + dat += "[job.title]
" src << browse(dat, "window=latechoices;size=300x640;can_close=0") + proc/create_character() spawning = 1 var/mob/living/carbon/human/new_character = new(loc) @@ -489,9 +337,9 @@ mob/new_player mind.transfer_to(new_character) mind.original = new_character - return new_character + Move() return 0 diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 32556a78d6..ad634bade4 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -28,354 +28,83 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set "infested monkey" = ispath(text2path("/datum/game_mode/monkey")), ) */ +var/const + BE_TRAITOR =(1<<0) + BE_OPERATIVE =(1<<1) + BE_CHANGELING=(1<<2) + BE_WIZARD =(1<<3) + BE_MALF =(1<<4) + BE_REV =(1<<5) + BE_ALIEN =(1<<6) + BE_CULTIST =(1<<7) + BE_MONKEY =(1<<8) + BE_PAI =(1<<9) datum/preferences - var/real_name - var/gender = MALE - var/age = 30.0 - var/b_type = "A+" + var + real_name + be_random_name = 0 + gender = MALE + age = 30.0 + b_type = "A+" - var/be_special //bitfields. See defines in setup.dm. --rastaf0 - var/midis = 1 - var/lastchangelog = 0 // size of last seen changelog file -- rastaf0 - var/ooccolor = "#b82e00" - var/be_random_name = 0 - var/underwear = 1 - var/bubbles = 0 // 0 if the player doesn't want bubbles to appear + //Special role selection + be_special = 0 + //Play admin midis + midis = 1 + //Saved changlog filesize to detect if there was a change + lastchangelog = 0 - var/occupation[length(occupations)] - var/datum/jobs/wanted_jobs = list() + //Just like it sounds + ooccolor = "#b82e00" + underwear = 1 - var/h_style = "Short Hair" - var/f_style = "Shaved" + //Hair type + h_style = "Short Hair" + //Hair color + r_hair = 0 + g_hair = 0 + b_hair = 0 - var/r_hair = 0 - var/g_hair = 0 - var/b_hair = 0 + //Face hair type + f_style = "Shaved" + //Face hair color + r_facial = 0 + g_facial = 0 + b_facial = 0 - var/r_facial = 0 - var/g_facial = 0 - var/b_facial = 0 + //Skin color + s_tone = 0 - var/s_tone = 0 - var/r_eyes = 0 - var/g_eyes = 0 - var/b_eyes = 0 + //Eye color + r_eyes = 0 + g_eyes = 0 + b_eyes = 0 - var/UI = UI_OLD // saving the whole .DMI in preferences is not a good idea. --rastaf0 //'screen1_old.dmi' // Skie + //UI style + UI = UI_OLD + + //Mob preview + icon/preview_icon = null + + //Jobs, uses bitflags + job_civilian_high = 0 + job_civilian_med = 0 + job_civilian_low = 0 + + job_medsci_high = 0 + job_medsci_med = 0 + job_medsci_low = 0 + + job_engsec_high = 0 + job_engsec_med = 0 + job_engsec_low = 0 - var/icon/preview_icon = null New() randomize_name() - for(var/n in occupation) - n=0 ..() - //The mob should have a gender you want before running this proc. - proc/randomize_appearance_for(var/mob/living/carbon/human/H) - if(H.gender == MALE) - gender = MALE - else - gender = FEMALE - randomize_skin_tone() - randomize_hair(gender) - randomize_hair_color("hair") - if(gender == MALE)//only for dudes. - randomize_facial() - randomize_hair_color("facial") - randomize_eyes_color() - underwear = pick(0,1) - b_type = pick("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-") - age = rand(19,35) - copy_to(H,1) - - proc/randomize_name() - if (gender == MALE) - real_name = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names))) - else - real_name = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names))) - - proc/randomize_hair(var/gender) - //Women are more likely to have longer hair. - var/temp = gender==FEMALE&&prob(80) ? pick(2,6,8) : rand(1,9) - switch(temp) - if(1) - h_style = "Short Hair" - if(2) - h_style = "Long Hair" - if(3) - h_style = "Cut Hair" - if(4) - h_style = "Mohawk" - if(5) - h_style = "Balding" - if(6) - h_style = "Fag" - if(7) - h_style = "Bedhead" - if(8) - h_style = "Dreadlocks" - else - h_style = "bald" - - proc/randomize_facial() - var/temp = prob(50) ? 14 : rand(1,13)//50% of not having a beard. Otherwise get a random one. - switch(temp) - if(1) - f_style = "Watson" - if(2) - f_style = "Chaplin" - if(3) - f_style = "Selleck" - if(4) - f_style = "Neckbeard" - if(5) - f_style = "Full Beard" - if(6) - f_style = "Long Beard" - if(7) - f_style = "Van Dyke" - if(8) - f_style = "Elvis" - if(9) - f_style = "Abe" - if(10) - f_style = "Chinstrap" - if(11) - f_style = "Hipster" - if(12) - f_style = "Goatee" - if(13) - f_style = "Hogan" - else - f_style = "bald" - - proc/randomize_skin_tone() - var/tone - - var/tmp = pickweight ( list ("caucasian" = 55, "afroamerican" = 15, "african" = 10, "latino" = 10, "albino" = 5, "weird" = 5)) - switch (tmp) - if ("caucasian") - tone = -45 + 35 - if ("afroamerican") - tone = -150 + 35 - if ("african") - tone = -200 + 35 - if ("latino") - tone = -90 + 35 - if ("albino") - tone = -1 + 35 - if ("weird") - tone = -(rand (1, 220)) + 35 - - s_tone = min(max(tone + rand (-25, 25), -185), 34) - - proc/randomize_hair_color(var/target = "hair") - if (prob (75) && target == "facial") // Chance to inherit hair color - r_facial = r_hair - g_facial = g_hair - b_facial = b_hair - return - - var/red - var/green - var/blue - - var/col = pick ("blonde", "black", "chestnut", "copper", "brown", "wheat", "old", "punk") - switch (col) - if ("blonde") - red = 255 - green = 255 - blue = 0 - if ("black") - red = 0 - green = 0 - blue = 0 - if ("chestnut") - red = 153 - green = 102 - blue = 51 - if ("copper") - red = 255 - green = 153 - blue = 0 - if ("brown") - red = 102 - green = 51 - blue = 0 - if ("wheat") - red = 255 - green = 255 - blue = 153 - if ("old") - red = rand (100, 255) - green = red - blue = red - if ("punk") - red = rand (0, 255) - green = rand (0, 255) - blue = rand (0, 255) - - red = max(min(red + rand (-25, 25), 255), 0) - green = max(min(green + rand (-25, 25), 255), 0) - blue = max(min(blue + rand (-25, 25), 255), 0) - - switch (target) - if ("hair") - r_hair = red - g_hair = green - b_hair = blue - if ("facial") - r_facial = red - g_facial = green - b_facial = blue - - proc/randomize_eyes_color() - var/red - var/green - var/blue - - var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino", "weird") - switch (col) - if ("black") - red = 0 - green = 0 - blue = 0 - if ("grey") - red = rand (100, 200) - green = red - blue = red - if ("brown") - red = 102 - green = 51 - blue = 0 - if ("chestnut") - red = 153 - green = 102 - blue = 0 - if ("blue") - red = 51 - green = 102 - blue = 204 - if ("lightblue") - red = 102 - green = 204 - blue = 255 - if ("green") - red = 0 - green = 102 - blue = 0 - if ("albino") - red = rand (200, 255) - green = rand (0, 150) - blue = rand (0, 150) - if ("weird") - red = rand (0, 255) - green = rand (0, 255) - blue = rand (0, 255) - - red = max(min(red + rand (-25, 25), 255), 0) - green = max(min(green + rand (-25, 25), 255), 0) - blue = max(min(blue + rand (-25, 25), 255), 0) - - r_eyes = red - g_eyes = green - b_eyes = blue - - proc/update_preview_icon() - del(preview_icon) - - var/g = "m" - if (gender == MALE) - g = "m" - else if (gender == FEMALE) - g = "f" - - preview_icon = new /icon('human.dmi', "body_[g]_s") - - // Skin tone - if (s_tone >= 0) - preview_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD) - else - preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) - - if (underwear > 0) - preview_icon.Blend(new /icon('human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY) - - var/icon/eyes_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "eyes_s") - eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) - - var/h_style_r = null - switch(h_style) - if("Short Hair") - h_style_r = "hair_a" - if("Long Hair") - h_style_r = "hair_b" - if("Cut Hair") - h_style_r = "hair_c" - if("Mohawk") - h_style_r = "hair_d" - if("Balding") - h_style_r = "hair_e" - if("Fag") - h_style_r = "hair_f" - if("Bedhead") - h_style_r = "hair_bedhead" - if("Dreadlocks") - h_style_r = "hair_dreads" - else - h_style_r = "bald" - - var/f_style_r = null - switch(f_style) - if ("Watson") - f_style_r = "facial_watson" - if ("Chaplin") - f_style_r = "facial_chaplin" - if ("Selleck") - f_style_r = "facial_selleck" - if ("Neckbeard") - f_style_r = "facial_neckbeard" - if ("Full Beard") - f_style_r = "facial_fullbeard" - if ("Long Beard") - f_style_r = "facial_longbeard" - if ("Van Dyke") - f_style_r = "facial_vandyke" - if ("Elvis") - f_style_r = "facial_elvis" - if ("Abe") - f_style_r = "facial_abe" - if ("Chinstrap") - f_style_r = "facial_chin" - if ("Hipster") - f_style_r = "facial_hip" - if ("Goatee") - f_style_r = "facial_gt" - if ("Hogan") - f_style_r = "facial_hogan" - else - f_style_r = "bald" - - var/icon/hair_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "[h_style_r]_s") - hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD) - - var/icon/facial_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "[f_style_r]_s") - facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD) - - var/icon/mouth_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "mouth_[g]_s") - - eyes_s.Blend(hair_s, ICON_OVERLAY) - eyes_s.Blend(mouth_s, ICON_OVERLAY) - eyes_s.Blend(facial_s, ICON_OVERLAY) - - preview_icon.Blend(eyes_s, ICON_OVERLAY) - - del(mouth_s) - del(facial_s) - del(hair_s) - del(eyes_s) proc/ShowChoices(mob/user) update_preview_icon() @@ -394,7 +123,6 @@ datum/preferences dat += "
" dat += "UI Style: [UI == UI_NEW ? "New" : "Old"]
" dat += "Play admin midis: [midis == 1 ? "Yes" : "No"]
" - //dat += "Show chat bubbles: [bubbles == 1 ? "Yes" : "No"]
" if((user.client) && (user.client.holder) && (user.client.holder.rank) && (user.client.holder.rank == "Game Master")) dat += "
OOC
" @@ -440,7 +168,7 @@ datum/preferences src.be_special = 0 dat += "
" - if (!IsGuestKey(user.key)) + if(!IsGuestKey(user.key)) dat += "Load Setup
" dat += "Save Setup
" @@ -453,38 +181,35 @@ datum/preferences var/HTML = "" HTML += "
" HTML += "Choose occupation chances
Unavailable occupations are in red.
" - for(var/job in occupations) - if(!occupation[job]) - occupation[job] = 0 - if(jobban_isbanned(user, job)) - HTML += "[job]
" + for(var/datum/job/job in job_master.occupations) + var/rank = job.title + if(jobban_isbanned(user, rank)) + HTML += "[rank]
" continue - if((occupation["Assistant"] != 0) && (job != "Assistant")) - HTML += "[job]
" + if((job_civilian_low & ASSISTANT) && (rank != "Assistant")) + HTML += "[rank]
" continue - if((job in command_positions) || (job == "AI"))//Bold head jobs - HTML += "[job]" + if((rank in command_positions) || (rank == "AI"))//Bold head jobs + HTML += "[rank]" else - HTML += "[job]" + HTML += "[rank]" - if(job == "Assistant")//Assistant is special - if(occupation[job] != 0) + if(rank == "Assistant")//Assistant is special + if(job_civilian_low & ASSISTANT) HTML += "\[Yes]" else HTML += "\[No]" HTML += "
" continue - switch(occupation[job]) - if(0) - HTML += "\[NEVER]" - if(1) - HTML += "\[High]" - if(2) - HTML += "\[Medium]" - if(3) - HTML += "\[Low]" - else HTML += "*"+occupation[job]+"*" + if(GetJobDepartment(job, 1) & job.flag) + HTML += "\[High]" + else if(GetJobDepartment(job, 2) & job.flag) + HTML += "\[Medium]" + else if(GetJobDepartment(job, 3) & job.flag) + HTML += "\[Low]" + else + HTML += "\[NEVER]" HTML += "
" HTML += "
" @@ -495,37 +220,118 @@ datum/preferences user << browse(HTML, "window=mob_occupation;size=320x600") return - proc/SetJob(mob/user, job="Captain") - if((!(occupations.Find(job)) && !(assistant_occupations.Find(job)) && (job != "No Preference"))) + + proc/SetJob(mob/user, role) + var/datum/job/job = job_master.GetJob(role) + if(!job) user << browse(null, "window=mob_occupation") ShowChoices(user) return - if(job == "Assistant") - if(occupation[job] == 0) - occupation[job] = 4 + if(role == "Assistant") + if(job_civilian_low & job.flag) + job_civilian_low &= ~job.flag else - occupation[job] = 0 + job_civilian_low |= job.flag SetChoices(user) return 1 - if(occupation[job] == 2)//Only one job may be set to "High" - for(var/j in occupation) - if(occupation[j] == 1) - occupation[j] = 2 - - occupation[job] = (occupation[job]-1) - if(occupation[job] < 0) - occupation[job] = 3 + if(GetJobDepartment(job, 1) & job.flag) + SetJobDepartment(job, 1) + else if(GetJobDepartment(job, 2) & job.flag) + SetJobDepartment(job, 2) + else if(GetJobDepartment(job, 3) & job.flag) + SetJobDepartment(job, 3) + else//job = Never + SetJobDepartment(job, 4) SetChoices(user) - return 1 - proc/process_link(mob/user, list/link_tags) - if (link_tags["occ"]) - if (link_tags["cancel"]) + proc/GetJobDepartment(var/datum/job/job, var/level) + if(!job || !level) return 0 + switch(job.department_flag) + if(CIVILIAN) + switch(level) + if(1) + return job_civilian_high + if(2) + return job_civilian_med + if(3) + return job_civilian_low + if(MEDSCI) + switch(level) + if(1) + return job_medsci_high + if(2) + return job_medsci_med + if(3) + return job_medsci_low + if(ENGSEC) + switch(level) + if(1) + return job_engsec_high + if(2) + return job_engsec_med + if(3) + return job_engsec_low + return 0 + + + proc/SetJobDepartment(var/datum/job/job, var/level) + if(!job || !level) return 0 + switch(level) + if(1)//Only one of these should ever be active at once so clear them all here + job_civilian_high = 0 + job_medsci_high = 0 + job_engsec_high = 0 + return 1 + if(2)//Set current highs to med, then reset them + job_civilian_med |= job_civilian_high + job_medsci_med |= job_medsci_high + job_engsec_med |= job_engsec_high + job_civilian_high = 0 + job_medsci_high = 0 + job_engsec_high = 0 + + switch(job.department_flag) + if(CIVILIAN) + switch(level) + if(2) + job_civilian_high = job.flag + job_civilian_med &= ~job.flag + if(3) + job_civilian_med |= job.flag + job_civilian_low &= ~job.flag + else + job_civilian_low |= job.flag + if(MEDSCI) + switch(level) + if(2) + job_medsci_high = job.flag + job_medsci_med &= ~job.flag + if(3) + job_medsci_med |= job.flag + job_medsci_low &= ~job.flag + else + job_medsci_low |= job.flag + if(ENGSEC) + switch(level) + if(2) + job_engsec_high = job.flag + job_engsec_med &= ~job.flag + if(3) + job_engsec_med |= job.flag + job_engsec_low &= ~job.flag + else + job_engsec_low |= job.flag + return 1 + + + proc/process_link(mob/user, list/link_tags) + if(link_tags["occ"]) + if(link_tags["cancel"]) user << browse(null, "window=\ref[user]occupation") return else if(link_tags["job"]) @@ -535,7 +341,7 @@ datum/preferences return 1 - if (link_tags["real_name"]) + if(link_tags["real_name"]) var/new_name switch(link_tags["real_name"]) @@ -556,135 +362,132 @@ datum/preferences new_name = copytext(new_name, 1, 26) real_name = new_name - if (link_tags["age"]) + if(link_tags["age"]) switch(link_tags["age"]) - if ("input") + if("input") var/new_age = input(user, "Please select type in age: 20-45", "Character Generation") as num if(new_age) age = max(min(round(text2num(new_age)), 45), 20) - if ("random") + if("random") age = rand (20, 45) - if (link_tags["b_type"]) + if(link_tags["b_type"]) switch(link_tags["b_type"]) - if ("input") + if("input") var/new_b_type = input(user, "Please select a blood type:", "Character Generation") as null|anything in list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-" ) - if (new_b_type) + if(new_b_type) b_type = new_b_type - if ("random") + if("random") b_type = pickweight ( list ("A+" = 31, "A-" = 7, "B+" = 8, "B-" = 2, "AB+" = 2, "AB-" = 1, "O+" = 40, "O-" = 9)) - if (link_tags["hair"]) + if(link_tags["hair"]) switch(link_tags["hair"]) - if ("input") + if("input") var/new_hair = input(user, "Please select hair color.", "Character Generation") as color if(new_hair) r_hair = hex2num(copytext(new_hair, 2, 4)) g_hair = hex2num(copytext(new_hair, 4, 6)) b_hair = hex2num(copytext(new_hair, 6, 8)) - if ("random") + if("random") randomize_hair_color("hair") - if (link_tags["facial"]) + if(link_tags["facial"]) switch(link_tags["facial"]) - if ("input") + if("input") var/new_facial = input(user, "Please select facial hair color.", "Character Generation") as color if(new_facial) r_facial = hex2num(copytext(new_facial, 2, 4)) g_facial = hex2num(copytext(new_facial, 4, 6)) b_facial = hex2num(copytext(new_facial, 6, 8)) - if ("random") + if("random") randomize_hair_color("facial") - if (link_tags["eyes"]) + if(link_tags["eyes"]) switch(link_tags["eyes"]) - if ("input") + if("input") var/new_eyes = input(user, "Please select eye color.", "Character Generation") as color if(new_eyes) r_eyes = hex2num(copytext(new_eyes, 2, 4)) g_eyes = hex2num(copytext(new_eyes, 4, 6)) b_eyes = hex2num(copytext(new_eyes, 6, 8)) - if ("random") + if("random") randomize_eyes_color() - if (link_tags["s_tone"]) + if(link_tags["s_tone"]) switch(link_tags["s_tone"]) - if ("random") + if("random") randomize_skin_tone() if("input") var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text - if (new_tone) + if(new_tone) s_tone = max(min(round(text2num(new_tone)), 220), 1) s_tone = -s_tone + 35 - if (link_tags["h_style"]) + if(link_tags["h_style"]) switch(link_tags["h_style"]) - if ("random") - if (gender == FEMALE) + if("random") + if(gender == FEMALE) h_style = pickweight ( list ("Cut Hair" = 5, "Short Hair" = 5, "Long Hair" = 5, "Mohawk" = 5, "Balding" = 1, "Fag" = 5, "Bedhead" = 5, "Dreadlocks" = 5, "Bald" = 5)) else h_style = pickweight ( list ("Cut Hair" = 5, "Short Hair" = 5, "Long Hair" = 5, "Mohawk" = 5, "Balding" = 5, "Fag" = 5, "Bedhead" = 5, "Dreadlocks" = 5, "Bald" = 5)) if("input") var/new_style = input(user, "Please select hair style", "Character Generation") as null|anything in list( "Cut Hair", "Short Hair", "Long Hair", "Mohawk", "Balding", "Fag", "Bedhead", "Dreadlocks", "Bald" ) - if (new_style) + if(new_style) h_style = new_style - if (link_tags["ooccolor"]) + if(link_tags["ooccolor"]) var/ooccolor = input(user, "Please select OOC colour.", "OOC colour") as color if(ooccolor) src.ooccolor = ooccolor - if (link_tags["f_style"]) + if(link_tags["f_style"]) switch(link_tags["f_style"]) - if ("random") - if (gender == FEMALE) + if("random") + if(gender == FEMALE) f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Shaved" = 100)) else f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Shaved" = 10)) if("input") var/new_style = input(user, "Please select facial style", "Character Generation") as null|anything in list("Watson", "Chaplin", "Selleck", "Full Beard", "Long Beard", "Neckbeard", "Van Dyke", "Elvis", "Abe", "Chinstrap", "Hipster", "Goatee", "Hogan", "Shaved") - if (new_style) + if(new_style) f_style = new_style - if (link_tags["gender"]) - if (gender == MALE) + if(link_tags["gender"]) + if(gender == MALE) gender = FEMALE else gender = MALE - if (link_tags["UI"]) - if (UI == UI_OLD) + if(link_tags["UI"]) + if(UI == UI_OLD) UI = UI_NEW else UI = UI_OLD - if (link_tags["midis"]) + if(link_tags["midis"]) midis = (midis+1)%2 - if (link_tags["bubbles"]) - bubbles = !bubbles - - if (link_tags["underwear"]) + if(link_tags["underwear"]) if(!IsGuestKey(user.key)) switch(link_tags["underwear"]) - if ("random") - if (prob (75)) + if("random") + if(prob (75)) underwear = 1 else underwear = 0 if("input") - if (underwear == 1) + if(underwear == 1) underwear = 0 else underwear = 1 - if (link_tags["be_special"]) + if(link_tags["be_special"]) src.be_special^=(1<= 0) + preview_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD) + else + preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) + + if (underwear > 0) + preview_icon.Blend(new /icon('human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY) + + var/icon/eyes_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "eyes_s") + eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) + + var/h_style_r = null + switch(h_style) + if("Short Hair") + h_style_r = "hair_a" + if("Long Hair") + h_style_r = "hair_b" + if("Cut Hair") + h_style_r = "hair_c" + if("Mohawk") + h_style_r = "hair_d" + if("Balding") + h_style_r = "hair_e" + if("Fag") + h_style_r = "hair_f" + if("Bedhead") + h_style_r = "hair_bedhead" + if("Dreadlocks") + h_style_r = "hair_dreads" + else + h_style_r = "bald" + + var/f_style_r = null + switch(f_style) + if ("Watson") + f_style_r = "facial_watson" + if ("Chaplin") + f_style_r = "facial_chaplin" + if ("Selleck") + f_style_r = "facial_selleck" + if ("Neckbeard") + f_style_r = "facial_neckbeard" + if ("Full Beard") + f_style_r = "facial_fullbeard" + if ("Long Beard") + f_style_r = "facial_longbeard" + if ("Van Dyke") + f_style_r = "facial_vandyke" + if ("Elvis") + f_style_r = "facial_elvis" + if ("Abe") + f_style_r = "facial_abe" + if ("Chinstrap") + f_style_r = "facial_chin" + if ("Hipster") + f_style_r = "facial_hip" + if ("Goatee") + f_style_r = "facial_gt" + if ("Hogan") + f_style_r = "facial_hogan" + else + f_style_r = "bald" + + var/icon/hair_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "[h_style_r]_s") + hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD) + + var/icon/facial_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "[f_style_r]_s") + facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD) + + var/icon/mouth_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "mouth_[g]_s") + + eyes_s.Blend(hair_s, ICON_OVERLAY) + eyes_s.Blend(mouth_s, ICON_OVERLAY) + eyes_s.Blend(facial_s, ICON_OVERLAY) + + preview_icon.Blend(eyes_s, ICON_OVERLAY) + + del(mouth_s) + del(facial_s) + del(hair_s) + del(eyes_s) \ No newline at end of file diff --git a/code/modules/mob/new_player/savefile.dm b/code/modules/mob/new_player/savefile.dm index 744f436443..1b6561052f 100644 --- a/code/modules/mob/new_player/savefile.dm +++ b/code/modules/mob/new_player/savefile.dm @@ -1,5 +1,5 @@ -#define SAVEFILE_VERSION_MIN 2 -#define SAVEFILE_VERSION_MAX 3 +#define SAVEFILE_VERSION_MIN 3 +#define SAVEFILE_VERSION_MAX 4 datum/preferences/proc/savefile_path(mob/user) return "data/player_saves/[copytext(user.ckey, 1, 2)]/[user.ckey]/preferences.sav" @@ -9,25 +9,31 @@ datum/preferences/proc/savefile_save(mob/user) return 0 var/savefile/F = new /savefile(src.savefile_path(user)) - var/version - F["version"] >> version - - if (!isnull(version) && version<=2) - F["be_syndicate"] << null - F["be_alien"] << null - F["UI"] << null +// var/version +// F["version"] >> version F["version"] << SAVEFILE_VERSION_MAX F["real_name"] << src.real_name + F["name_is_always_random"] << src.be_random_name + F["gender"] << src.gender F["age"] << src.age - for(var/job in uniquelist(occupations + assistant_occupations)) - //world << src.occupation[job] - F["occupation_"+job] << src.occupation[job] - //F["occupation_1"] << src.occupation[1] - //F["occupation_2"] << src.occupation[2] - //F["occupation_3"] << src.occupation[3] + + //Job data + F["job_civilian_high"] << src.job_civilian_high + F["job_civilian_med"] << src.job_civilian_med + F["job_civilian_low"] << src.job_civilian_low + + F["job_medsci_high"] << src.job_medsci_high + F["job_medsci_med"] << src.job_medsci_med + F["job_medsci_low"] << src.job_medsci_low + + F["job_engsec_high"] << src.job_engsec_high + F["job_engsec_med"] << src.job_engsec_med + F["job_engsec_low"] << src.job_engsec_low + + //Body data F["hair_red"] << src.r_hair F["hair_green"] << src.g_hair F["hair_blue"] << src.b_hair @@ -41,17 +47,13 @@ datum/preferences/proc/savefile_save(mob/user) F["eyes_green"] << src.g_eyes F["eyes_blue"] << src.b_eyes F["blood_type"] << src.b_type - //F["be_syndicate"] << src.be_syndicate - F["be_special"] << src.be_special F["underwear"] << src.underwear - F["name_is_always_random"] << src.be_random_name - F["UI"] << src.UI // Skie - //world << "DEBUG: saving UI as [UI]" - //F["be_alien"] << src.be_alien // Urist - F["midis"] << src.midis // Urist - F["bubbles"] << src.bubbles // Doohl - F["ooccolor"] << src.ooccolor // Urist - F["lastchangelog"] << src.lastchangelog // rastaf0 + + F["be_special"] << src.be_special + F["UI"] << src.UI + F["midis"] << src.midis + F["ooccolor"] << src.ooccolor + F["lastchangelog"] << src.lastchangelog return 1 @@ -61,14 +63,11 @@ datum/preferences/proc/savefile_save(mob/user) // returns 1 if loaded (or file was incompatible) // returns 0 if savefile did not exist -datum/preferences/proc/savefile_load(mob/user, var/silent = 1) - if (IsGuestKey(user.key)) - return 0 +datum/preferences/proc/savefile_load(mob/user) + if(IsGuestKey(user.key)) return 0 var/path = savefile_path(user) - - if (!fexists(path)) - return 0 + if(!fexists(path)) return 0 var/savefile/F = new /savefile(path) @@ -77,20 +76,13 @@ datum/preferences/proc/savefile_load(mob/user, var/silent = 1) if (isnull(version) || version < SAVEFILE_VERSION_MIN || version > SAVEFILE_VERSION_MAX) fdel(path) - -// if (!silent) -// alert(user, "Your savefile was incompatible with this version and was deleted.") - + alert(user, "Your savefile was incompatible with this version and was deleted.") return 0 F["real_name"] >> src.real_name F["gender"] >> src.gender F["age"] >> src.age - for(var/job in uniquelist(occupations + assistant_occupations)) - F["occupation_"+job] >> src.occupation[job] - //F["occupation_1"] >> src.occupation[1] - //F["occupation_2"] >> src.occupation[2] - //F["occupation_3"] >> src.occupation[3] + F["hair_red"] >> src.r_hair F["hair_green"] >> src.g_hair F["hair_blue"] >> src.b_hair @@ -106,37 +98,25 @@ datum/preferences/proc/savefile_load(mob/user, var/silent = 1) F["blood_type"] >> src.b_type F["underwear"] >> src.underwear F["name_is_always_random"] >> src.be_random_name - //F["be_alien"] >> src.be_alien // Urist - F["midis"] >> src.midis // Urist - F["bubbles"] >> src.bubbles // Doohl - F["ooccolor"] >> src.ooccolor // Urist - F["lastchangelog"] >> src.lastchangelog // rastaf0 + F["midis"] >> src.midis + F["ooccolor"] >> src.ooccolor + F["lastchangelog"] >> src.lastchangelog + F["UI"] >> src.UI + F["be_special"] >> src.be_special + if(version && (version >= SAVEFILE_VERSION_MAX)) + F["job_civilian_high"] >> src.job_civilian_high + F["job_civilian_med"] >> src.job_civilian_med + F["job_civilian_low"] >> src.job_civilian_low + + F["job_medsci_high"] >> src.job_medsci_high + F["job_medsci_med"] >> src.job_medsci_med + F["job_medsci_low"] >> src.job_medsci_low + + F["job_engsec_high"] >> src.job_engsec_high + F["job_engsec_med"] >> src.job_engsec_med + F["job_engsec_low"] >> src.job_engsec_low - if (version<=2) // migration from old preferences file format --rastaf0 - src.UI = 0 // swithing from storing an image file to storing boolean value --rastaf0 - //world << "DEBUG: loading legacy UI as [UI]" - var/tmp - F["be_syndicate"] >> tmp - if (tmp) - be_special |= BE_TRAITOR - be_special |= BE_OPERATIVE - be_special |= BE_CHANGELING - be_special |= BE_WIZARD - be_special |= BE_MALF - be_special |= BE_REV - F["be_alien"] >> tmp - F["be_pai"] >> tmp - if (tmp) - be_special |= BE_ALIEN - be_special |= BE_PAI - del(F) - fdel(path) - savefile_save(user) - else // /migration end - F["UI"] >> src.UI - F["be_special"] >> src.be_special - //world << "DEBUG: loading new UI as [UI]" return 1 diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index 412931973a..271c808e5a 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -399,7 +399,7 @@ if("hand") usr:swap_hand() if("resist") - if (usr.next_move < world.time) + if(usr.next_move < world.time) return usr.next_move = world.time + 20 if ((!( usr.stat ) && usr.canmove && !( usr.restrained() ))) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 8fe2ad8f13..7c49d288e2 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -11,8 +11,7 @@ icon = null invisibility = 101 for(var/t in organs) - //organs[text("[]", t)] = null - del(organs[text("[]", t)]) + del(t) var/atom/movable/overlay/animation = new /atom/movable/overlay( loc ) animation.icon_state = "blank" animation.icon = 'mob.dmi' @@ -53,7 +52,7 @@ if (monkeyizing) return for(var/t in organs) - del(organs[text("[]", t)]) + del(t) return ..() /mob/living/carbon/AIize() @@ -155,7 +154,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(organs[text("[t]")]) + del(t) if(client) //client.screen -= main_hud1.contents client.screen -= hud_used.contents @@ -218,7 +217,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(organs[t]) + del(t) var/alien_caste = pick("Hunter","Sentinel","Drone") var/mob/living/carbon/alien/humanoid/new_xeno @@ -258,7 +257,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(organs[t]) + del(t) if(reproduce) var/number = pick(2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 68c71fd01a..c95aaf65bc 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -327,7 +327,7 @@ var/turf/T = get_turf_loc(src) var/obj/structure/cable/N = T.get_cable_node() if (prob(50) && electrocute_mob(usr, N, N)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() return @@ -345,7 +345,7 @@ playsound(src.loc, 'Deconstruct.ogg', 50, 1) if(do_after(user, 50)) if (prob(50) && electrocute_mob(usr, terminal.powernet, terminal)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() return @@ -851,11 +851,11 @@ malfai << "Hack complete. The APC is now under your exclusive control. Discharging cell to fuse interface." updateicon() - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(3, 0, src.loc) smoke.attach(src) smoke.start() - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() for(var/mob/M in viewers(src)) @@ -880,11 +880,11 @@ cell.corrupt() src.malfhack = 1 updateicon() - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(3, 0, src.loc) smoke.attach(src) smoke.start() - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() for(var/mob/M in viewers(src)) @@ -1160,7 +1160,7 @@ /obj/machinery/power/apc/proc/shock(mob/user, prb) if(!prob(prb)) return 0 - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() if (electrocute_mob(user, src, src)) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 3028a81905..db06a85fbe 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -193,7 +193,7 @@ if(!prob(prb)) return 0 if (electrocute_mob(user, powernets[src.netnum], src, siemens_coeff)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() return 1 diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index fd11a05ca2..7c24acb92c 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -222,7 +222,7 @@ else if(status == LIGHT_EMPTY) user << "You stick \the [W] into the light socket!" if(has_power() && (W.flags & CONDUCT)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() //if(!user.mutations & COLD_RESISTANCE) @@ -282,7 +282,7 @@ else user << "You try to remove the light [fitting], but you burn your hand on it!" - var/datum/organ/external/affecting = H.organs["[user.hand ? "l" : "r" ]_hand"] + var/datum/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm") affecting.take_damage( 0, 5 ) // 5 burn damage @@ -324,7 +324,7 @@ if(status == LIGHT_OK || status == LIGHT_BURNED) playsound(src.loc, 'Glasshit.ogg', 75, 1) if(on) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() status = LIGHT_BROKEN diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 112525e9fe..f5593cd95e 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -55,7 +55,7 @@ del(src) return 0 if(iscarbon(user)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, user.loc) s.start() var/shock_damage = min(rand(30,40),rand(30,40)) @@ -72,7 +72,7 @@ user.throw_at(target, 200, 4) return else if(issilicon(user)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, user.loc) s.start() var/shock_damage = rand(15,30) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 460d3c947a..336478efb0 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -90,7 +90,7 @@ A.icon_state = "u_laser" playsound(src.loc, 'emitter.ogg', 25, 1) if(prob(35)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() A.dir = src.dir diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 9a6544f583..686bb6e767 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -324,7 +324,7 @@ for(var/mob/M in viewers(src)) M.show_message("\red The [src.name] is making strange noises!", 3, "\red You hear sizzling electronics.", 2) sleep(10*pick(4,5,6,7,10,14)) - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(3, 0, src.loc) smoke.attach(src) smoke.start() @@ -333,7 +333,7 @@ return if(prob(15)) //Power drain world << "\red SMES power drain in [src.loc.loc]" - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() if(prob(50)) @@ -342,7 +342,7 @@ emp_act(2) if(prob(5)) //smoke only world << "\red SMES smoke in [src.loc.loc]" - var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() smoke.set_up(3, 0, src.loc) smoke.attach(src) smoke.start() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 68e93cf23f..b674361086 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -44,7 +44,7 @@ if(istype(user, /mob/living)) var/mob/living/M = user - if ((M.mutations & CLOWN) && prob(50)) + if ((M.mutations & CLUMSY) && prob(50)) M << "\red The [src.name] blows up in your face." M.take_organ_damage(0,20) M.drop_item() diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 45f7c05046..e739ea24bb 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -8,7 +8,7 @@ obj/item/weapon/cell/power_supply //What type of power cell this uses charge_cost = 100 //How much energy is needed to fire. cell_type = "/obj/item/weapon/cell" - projectile_type = "/obj/item/projectile" + projectile_type = "/obj/item/projectile/energy" emp_act(severity) power_supply.use(round(power_supply.maxcharge / severity)) diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index b8947625ca..6e61558aa8 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -6,6 +6,7 @@ charge_cost = 100 //How much energy is needed to fire. projectile_type = "/obj/item/projectile/energy/electrode" + origin_tech = "combat=3;magnets=2" var mode = 0 //0 = stun, 1 = kill diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 95d4dbf7a4..2332c25a28 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -5,7 +5,7 @@ icon_state = "taser" fire_sound = 'Taser.ogg' charge_cost = 100 - projectile_type = "/obj/item/projectile/electrode" + projectile_type = "/obj/item/projectile/energy/electrode" cell_type = "/obj/item/weapon/cell/crap" @@ -30,7 +30,7 @@ fire_sound = 'Gunshot.ogg' origin_tech = "combat=3;materials=3;powerstorage=2" charge_cost = 125 - projectile_type = "/obj/item/projectile/electrode" + projectile_type = "/obj/item/projectile/energy/electrode" cell_type = "/obj/item/weapon/cell" @@ -80,6 +80,6 @@ w_class = 4.0 force = 10 m_amt = 200000 - projectile_type = "/obj/item/projectile/largebolt" + projectile_type = "/obj/item/projectile/energy/bolt/large" diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 3b8d7d429f..07ecdcb710 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -1,16 +1,15 @@ /obj/item/projectile/energy name = "energy" icon_state = "spark" - damage = 0 damage_type = BURN - nodamage = 1 flag = "energy" /obj/item/projectile/energy/electrode name = "electrode" icon_state = "spark" + nodamage = 1 stun = 10 weaken = 10 stutter = 10 @@ -19,6 +18,7 @@ /obj/item/projectile/energy/declone name = "declown" icon_state = "declone" + nodamage = 1 damage_type = CLONE irradiate = 40 diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index e594eb79de..43f92517bf 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -40,7 +40,7 @@ return 0 if(!prob(prb)) return 0 - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() if (electrocute_mob(user, get_area(src), src, 0.7)) diff --git a/code/setup.dm b/code/setup.dm index 771617bd5d..6607e3985a 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -151,7 +151,7 @@ #define COLD_RESISTANCE 2 #define XRAY 4 #define HULK 8 -#define CLOWN 16 +#define CLUMSY 16 #define FAT 32 #define HUSK 64 //changeling-drained #define LASER 128 @@ -185,19 +185,6 @@ var/const GAS_CO2 = 1 << 3 GAS_N2O = 1 << 4 -// bitflags for preferences -#define BE_TRAITOR (1<<0) -#define BE_OPERATIVE (1<<1) -#define BE_CHANGELING (1<<2) -#define BE_WIZARD (1<<3) -#define BE_MALF (1<<4) -#define BE_REV (1<<5) -#define BE_ALIEN (1<<6) -#define BE_CULTIST (1<<7) -#define BE_MONKEY (1<<8) -#define BE_PAI (1<<9) -//#define BE_CIVILIAN (1<<15) //well, I must stop here. --rastaf0 - var/list/accessable_z_levels = list("1" = 10, "3" = 15, "4" = 60, "5" = 15) //This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there. (Exceptions: extended, sandbox and nuke) -Errorage @@ -206,6 +193,8 @@ var/list/accessable_z_levels = list("1" = 10, "3" = 15, "4" = 60, "5" = 15) //Th var/list/global_mutations = list() // list of hidden mutation things +//Bluh shields + //Damage things #define BRUTE "brute" @@ -220,4 +209,6 @@ var/list/global_mutations = list() // list of hidden mutation things #define IRRADIATE "irradiate" #define STUTTER "stutter" #define EYE_BLUR "eye_blur" -#define DROWSY "drowsy" \ No newline at end of file +#define DROWSY "drowsy" + + diff --git a/code/game/objects/traps.dm b/code/unused/traps.dm similarity index 100% rename from code/game/objects/traps.dm rename to code/unused/traps.dm diff --git a/icons/changelog.html b/icons/changelog.html index 4adb0bc90f..9f2b13fe0b 100644 --- a/icons/changelog.html +++ b/icons/changelog.html @@ -66,6 +66,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • Telekenesis now only allows you to pick up objects.
  • Stun gloves ignore intent.
  • Moved the loyalty implants to the HoS' locker.
  • +
  • Job system redone, remember to setup your prefs.
  • @@ -83,11 +84,6 @@ should be listed in the changelog upon commit tho. Thanks. -->
  • Less ponies, gryphons, and Tohou.
  • -
  • Rolan7 updated: -
      -
    • The GREY TIDE is no more.
    • -
    -
  • 1 October 2011: diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm index 6de015e5e8..5dc4c3977b 100644 --- a/maps/tgstation.2.0.8.dmm +++ b/maps/tgstation.2.0.8.dmm @@ -380,7 +380,7 @@ "ahp" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "ahq" = (/turf/simulated/floor/plating,/area/maintenance/fsmaint) "ahr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint) -"ahs" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/table,/obj/item/weapon/storage/body_bag_box,/turf/simulated/floor,/area/security/warden) +"ahs" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/security/warden) "aht" = (/obj/machinery/light,/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/security/warden) "ahu" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/security/warden) "ahv" = (/obj/structure/table,/obj/item/weapon/storage/lockbox,/turf/simulated/floor,/area/security/warden) @@ -402,7 +402,7 @@ "ahL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint) "ahM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "ahN" = (/obj/structure/closet/l3closet/security,/turf/simulated/floor,/area/security/warden) -"ahO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/rack,/obj/item/weapon/storage/trackimp_kit,/obj/item/weapon/storage/chemimp_kit,/obj/item/weapon/storage/handcuff_kit,/turf/simulated/floor,/area/security/warden) +"ahO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/rack,/obj/item/weapon/storage/trackimp_kit,/obj/item/weapon/storage/chemimp_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/body_bag_box,/turf/simulated/floor,/area/security/warden) "ahP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/warden) "ahQ" = (/obj/machinery/door/airlock/security{name = "Warden's Office"; req_access = null; req_access_txt = "3"},/turf/simulated/floor,/area/security/warden) "ahR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/warden) @@ -2599,7 +2599,7 @@ "aXY" = (/obj/machinery/vending/snack,/turf/simulated/floor,/area/crew_quarters/heads) "aXZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/crew_quarters/heads) "aYa" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/heads) -"aYb" = (/obj/machinery/camera{c_tag = "Heads of Staff"; dir = 8; network = "SS13"},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor,/area/crew_quarters/heads) +"aYb" = (/obj/machinery/camera{c_tag = "Heads of Staff"; dir = 8; network = "SS13"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/crew_quarters/heads) "aYc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads) "aYd" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central) "aYe" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Med"; location = "HOP"},/turf/simulated/floor,/area/hallway/primary/central) @@ -5612,23 +5612,23 @@ "cdV" = (/mob/living/silicon/decoy{icon_state = "ai-malf"; name = "GLaDOS"},/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/syndicate_mothership) "cdW" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; freerange = 1; frequency = 1337; listening = 1; name = "Syndicate Ops Intercom"; pixel_y = 0},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "circuit"},/area/syndicate_mothership) "cdX" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "plasma3"},/area/alien) -"cdY" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien) +"cdY" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien) "cdZ" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "plasma1"},/area/alien) "cea" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "ceb" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "cec" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) -"ced" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien) -"cee" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien) +"ced" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien) +"cee" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien) "cef" = (/turf/space,/area/syndicate_mothership/elite_squad) "ceg" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership/elite_squad) -"ceh" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) -"cei" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; freerange = 1; frequency = 1337; listening = 0; name = "Syndicate Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) -"cej" = (/obj/effect/landmark{name = "Syndicate-Commando"; tag = "Commando"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) -"cek" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) -"cel" = (/obj/machinery/mech_bay_recharge_port,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) -"cem" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership) -"cen" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership) -"ceo" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien) +"ceh" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) +"cei" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; freerange = 1; frequency = 1337; listening = 0; name = "Syndicate Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) +"cej" = (/obj/effect/landmark{name = "Syndicate-Commando"; tag = "Commando"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) +"cek" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) +"cel" = (/obj/machinery/mech_bay_recharge_port,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) +"cem" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership) +"cen" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership) +"ceo" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien) "cep" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "plasma2"},/area/alien) "ceq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) "cer" = (/turf/space,/area/shuttle/alien/base) @@ -5638,8 +5638,8 @@ "cev" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "cew" = (/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) "cex" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad) -"cey" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) -"cez" = (/obj/structure/stool/bed/alien,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien) +"cey" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad) +"cez" = (/obj/structure/stool/bed/alien,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien) "ceA" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "ceB" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "ceC" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) @@ -5651,35 +5651,35 @@ "ceI" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) "ceJ" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "ceK" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) -"ceL" = (/obj/structure/table,/obj/machinery/microwave,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceM" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceN" = (/obj/structure/table,/obj/machinery/light/lamp{pixel_x = 4; pixel_y = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceO" = (/obj/machinery/computer/syndicate_station,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceP" = (/obj/structure/table,/obj/item/weapon/pen/sleepypen,/obj/item/weapon/paper,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceQ" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceR" = (/obj/structure/table,/obj/item/weapon/storage/donkpocket_kit{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceS" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceT" = (/obj/structure/table,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"ceU" = (/obj/effect/landmark{name = "Syndicate-Gear-Closet"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceL" = (/obj/structure/table,/obj/machinery/microwave,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceM" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceN" = (/obj/structure/table,/obj/machinery/light/lamp{pixel_x = 4; pixel_y = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceO" = (/obj/machinery/computer/syndicate_station,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceP" = (/obj/structure/table,/obj/item/weapon/pen/sleepypen,/obj/item/weapon/paper,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceQ" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceR" = (/obj/structure/table,/obj/item/weapon/storage/donkpocket_kit{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceS" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceT" = (/obj/structure/table,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceU" = (/obj/effect/landmark{name = "Syndicate-Gear-Closet"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "ceV" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_station/start) -"ceW" = (/obj/machinery/door/window,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceW" = (/obj/machinery/door/window,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "ceX" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_station/start) -"ceY" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"ceY" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "ceZ" = (/turf/unsimulated/wall,/area/centcom) -"cfa" = (/obj/effect/landmark{name = "Nuclear-Closet"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cfa" = (/obj/effect/landmark{name = "Nuclear-Closet"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cfb" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "External Airlock"},/area) "cfc" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom) "cfd" = (/turf/unsimulated/floor{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/centcom) "cfe" = (/turf/unsimulated/floor{name = "plating"},/area/centcom) -"cff" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cff" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cfg" = (/obj/effect/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) -"cfh" = (/obj/machinery/door/poddoor{id = "syndicate"; name = "Outer Airlock"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cfh" = (/obj/machinery/door/poddoor{id = "syndicate"; name = "Outer Airlock"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cfi" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) "cfj" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) "cfk" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "cfl" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) -"cfm" = (/obj/structure/table,/obj/item/device/aicard,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cfn" = (/obj/structure/table,/obj/machinery/computer/pod/old/syndicate{id = "syndicate"; pixel_x = -3; pixel_y = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cfm" = (/obj/structure/table,/obj/item/device/aicard,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cfn" = (/obj/structure/table,/obj/machinery/computer/pod/old/syndicate{id = "syndicate"; pixel_x = -3; pixel_y = 8},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cfo" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) "cfp" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cfq" = (/obj/machinery/vending/cigarette,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) @@ -5687,16 +5687,16 @@ "cfs" = (/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "cft" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/item/device/multitool,/obj/item/weapon/cleaner,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cfu" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"cfv" = (/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cfw" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cfv" = (/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cfw" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cfx" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cfy" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "cfz" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cfA" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/machinery/cell_charger,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cfB" = (/turf/unsimulated/wall,/area/centcom/living) -"cfC" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cfC" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cfD" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/syndicate_station/start) -"cfE" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cfE" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cfF" = (/obj/machinery/door/window/northright,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cfG" = (/obj/structure/table/reinforced{icon_state = "reinf_tabledir"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cfH" = (/obj/structure/table/reinforced{icon_state = "reinf_tabledir"},/obj/item/weapon/zippo,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) @@ -5729,16 +5729,16 @@ "cgi" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/suppy) "cgj" = (/turf/unsimulated/floor{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/centcom/suppy) "cgk" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/suppy) -"cgl" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"cgm" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"cgn" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"cgo" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"cgp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"cgq" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgr" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgs" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/infra,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgt" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgu" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgl" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cgm" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cgn" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cgo" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cgp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cgq" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgr" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgs" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/infra,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgt" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgu" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cgv" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (EAST)"; icon_state = "propulsion_r"; dir = 4},/turf/space,/area/shuttle/administration/centcom) "cgw" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) "cgx" = (/obj/machinery/vending/cola,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living) @@ -5750,26 +5750,26 @@ "cgD" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/supply/dock) "cgE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/supply/dock) "cgF" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/supply/dock) -"cgG" = (/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"cgH" = (/obj/machinery/door/window/westright,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgI" = (/obj/structure/crate/internals,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgG" = (/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cgH" = (/obj/machinery/door/window/westright,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgI" = (/obj/structure/crate/internals,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cgJ" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) "cgK" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cgL" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "cgM" = (/turf/unsimulated/floor{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/centcom) "cgN" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/supply/dock) "cgO" = (/obj/effect/marker/supplymarker,/turf/simulated/shuttle/floor,/area/supply/dock) -"cgP" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"cgQ" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgR" = (/obj/structure/table,/obj/effect/landmark{name = "Syndicate-Bomb"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgP" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cgQ" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgR" = (/obj/structure/table,/obj/effect/landmark{name = "Syndicate-Bomb"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cgS" = (/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living) "cgT" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/supply/dock) -"cgU" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"cgV" = (/obj/item/weapon/weldingtool,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgW" = (/obj/machinery/door/window{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgX" = (/obj/item/weapon/crowbar,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgY" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"cgZ" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgU" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cgV" = (/obj/item/weapon/weldingtool,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgW" = (/obj/machinery/door/window{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgX" = (/obj/item/weapon/crowbar,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgY" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"cgZ" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cha" = (/obj/machinery/dna_scannernew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "chb" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "chc" = (/obj/machinery/clonepod,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) @@ -5782,17 +5782,17 @@ "chj" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "chk" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "chl" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) -"chm" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) -"chn" = (/obj/item/clothing/head/helmet/welding,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"chm" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"chn" = (/obj/item/clothing/head/helmet/welding,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "cho" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "chp" = (/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living) "chq" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "chr" = (/obj/structure/secure_closet/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) "chs" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living) -"cht" = (/obj/structure/crate/medical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) -"chu" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"cht" = (/obj/structure/crate/medical,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) +"chu" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start) "chv" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/syndicate_station/start) -"chw" = (/obj/item/weapon/extinguisher,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) +"chw" = (/obj/item/weapon/extinguisher,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start) "chx" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "chy" = (/obj/structure/table/reinforced,/obj/machinery/librarycomp,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/shuttle/administration/centcom) "chz" = (/obj/structure/bookcase,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/shuttle/administration/centcom) @@ -6062,7 +6062,7 @@ "cmD" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "NTrasen"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "cmE" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) "cmF" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) -"cmG" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control) +"cmG" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'icons/obj/assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control) "cmH" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/shuttle/specops/centcom) "cmI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/unsimulated/floor,/area/shuttle/specops/centcom) "cmJ" = (/obj/effect/landmark{name = "Commando-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) @@ -6106,12 +6106,12 @@ "cnv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) "cnw" = (/obj/structure/table/reinforced{icon_state = "reinf_tabledir"},/obj/machinery/door/window/southleft{name = "Security"; req_access_txt = ""},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "cnx" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control) -"cny" = (/obj{anchored = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom) +"cny" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom) "cnz" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cnA" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cnB" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cnC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"cnD" = (/obj{anchored = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape/centcom) +"cnD" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape/centcom) "cnE" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) "cnF" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom) "cnG" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) @@ -6197,7 +6197,7 @@ "cpi" = (/obj/structure/rack,/obj/item/toy/sword,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "cpj" = (/obj/structure/rack,/obj/item/toy/gun,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "cpk" = (/obj/machinery/computer/arcade,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) -"cpl" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/holding) +"cpl" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/centcom/holding) "cpm" = (/turf/unsimulated/floor{icon = 'beach.dmi'; icon_state = "sand"; name = "sand"},/area/centcom/holding) "cpn" = (/obj/effect/overlay{anchored = 1; icon = 'icons/misc/beach2.dmi'; icon_state = "palm2"; layer = 10; name = "palm tree"},/obj/effect/overlay{anchored = 1; icon = 'beach.dmi'; icon_state = "coconuts"; name = "coconuts"},/turf/unsimulated/floor{icon = 'beach.dmi'; icon_state = "sand"; name = "sand"},/area/centcom/holding) "cpo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control) @@ -6236,7 +6236,7 @@ "cpV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "cpW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "cpX" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"cpY" = (/obj{anchored = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/shuttle/escape/centcom) +"cpY" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/shuttle/escape/centcom) "cpZ" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cqa" = (/obj/structure/rack,/obj/item/toy/crayonbox,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "cqb" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) @@ -6465,69 +6465,69 @@ "cuq" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/derelict/ship) "cur" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/derelict/ship) "cus" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/derelict/ship) -"cut" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/derelict/ship) -"cuu" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cuv" = (/obj/machinery/sleeper,/obj/machinery/light{dir = 1},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cuw" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cux" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/derelict/ship) +"cut" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/derelict/ship) +"cuu" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuv" = (/obj/machinery/sleeper,/obj/machinery/light{dir = 1},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuw" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cux" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/derelict/ship) "cuy" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area/derelict/ship) "cuz" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r (WEST)"; icon_state = "burst_r"; dir = 8},/turf/space,/area/derelict/ship) "cuA" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/derelict/ship) -"cuB" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cuC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuB" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cuD" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"; dir = 2},/area/derelict/ship) "cuE" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/derelict/ship) "cuF" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) "cuG" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (WEST)"; icon_state = "propulsion"; dir = 8},/turf/space,/area/derelict/ship) -"cuH" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/derelict/ship) -"cuI" = (/obj/item/weapon/scalpel,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuH" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/derelict/ship) +"cuI" = (/obj/item/weapon/scalpel,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cuJ" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/derelict/ship) "cuK" = (/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) -"cuL" = (/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuL" = (/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cuM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) "cuN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) "cuO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) "cuP" = (/obj/machinery/door/airlock/glass{name = "Hibernation Pods"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"cuQ" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cuR" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuQ" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuR" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cuS" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/derelict/ship) -"cuT" = (/obj/item/device/multitool,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cuU" = (/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuT" = (/obj/item/device/multitool,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuU" = (/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cuV" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) "cuW" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/derelict/ship) "cuX" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (WEST)"; icon_state = "burst_l"; dir = 8},/turf/space,/area/derelict/ship) "cuY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) -"cuZ" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/derelict/ship) -"cva" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvb" = (/obj/machinery/light_switch{pixel_x = 27},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvc" = (/obj/machinery/portable_atmospherics/scrubber,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cuZ" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/derelict/ship) +"cva" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvb" = (/obj/machinery/light_switch{pixel_x = 27},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvc" = (/obj/machinery/portable_atmospherics/scrubber,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cvd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) -"cve" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvf" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvg" = (/obj/machinery/door/window,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvh" = (/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cve" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvf" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvg" = (/obj/machinery/door/window,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvh" = (/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cvi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) -"cvj" = (/obj/machinery/light/small{dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvk" = (/obj/structure/table,/obj/item/weapon/tank/oxygen,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvj" = (/obj/machinery/light/small{dir = 8},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvk" = (/obj/structure/table,/obj/item/weapon/tank/oxygen,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cvl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) "cvm" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area) "cvn" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area) "cvo" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area) "cvp" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area) -"cvq" = (/obj/structure/table,/obj/item/device/analyzer,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvr" = (/obj/structure/stool/chair{dir = 8},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvs" = (/obj/machinery/light/small{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvq" = (/obj/structure/table,/obj/item/device/analyzer,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvr" = (/obj/structure/stool/chair{dir = 8},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvs" = (/obj/machinery/light/small{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cvt" = (/obj/machinery/door/airlock/glass{name = "Living Module"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"cvu" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvu" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cvv" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area) "cvw" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area) "cvx" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area) "cvy" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area) "cvz" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area) -"cvA" = (/obj/machinery/door/window/northright,/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvB" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvC" = (/obj/machinery/light,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvD" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvA" = (/obj/machinery/door/window/northright,/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvB" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvC" = (/obj/machinery/light,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvD" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cvE" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area) "cvF" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/derelict/ship) "cvG" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area/derelict/ship) @@ -6538,27 +6538,27 @@ "cvL" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area) "cvM" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area) "cvN" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area) -"cvO" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvP" = (/obj/item/weapon/shard,/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvQ" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvR" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvS" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/weapon/cable_coil/cut,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvT" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvU" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvV" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cvW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvO" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvP" = (/obj/item/weapon/shard,/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvQ" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvR" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvS" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/weapon/cable_coil/cut,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvT" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvU" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvV" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cvW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cvX" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/derelict/ship) "cvY" = (/obj/item/weapon/card/data/clown,/turf/space,/area) "cvZ" = (/obj/machinery/door/poddoor{id = "oldship_gun"; name = "Pod Bay Door"},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) "cwa" = (/obj/machinery/mass_driver{dir = 8; icon_state = "mass_driver"; id = "oldship_gun"},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) "cwb" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship) -"cwc" = (/obj/machinery/door/airlock/glass{name = "Pod Bay"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cwd" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cwc" = (/obj/machinery/door/airlock/glass{name = "Pod Bay"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cwd" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cwe" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/derelict/ship) -"cwf" = (/obj/machinery/computer/pod{id = "oldship_gun"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cwg" = (/obj/machinery/light/small,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cwh" = (/obj/structure/table,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) -"cwi" = (/obj/structure/table,/obj/item/device/radio,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cwf" = (/obj/machinery/computer/pod{id = "oldship_gun"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cwg" = (/obj/machinery/light/small,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cwh" = (/obj/structure/table,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) +"cwi" = (/obj/structure/table,/obj/item/device/radio,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship) "cwj" = (/obj/machinery/power/solar/fake,/turf/simulated/floor{icon_state = "solarpanel"},/area) "cwk" = (/turf/space,/area/turret_protected/AIsatextFP) "cwl" = (/turf/space,/area/turret_protected/AIsatextFS) diff --git a/tgstation.dme b/tgstation.dme index ae447ec7a0..f6feeac525 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -44,6 +44,7 @@ #define FILE_DIR "code/game/gamemodes/traitor" #define FILE_DIR "code/game/gamemodes/wizard" #define FILE_DIR "code/game/jobs" +#define FILE_DIR "code/game/jobs/job" #define FILE_DIR "code/game/machinery" #define FILE_DIR "code/game/machinery/atmoalter" #define FILE_DIR "code/game/machinery/bots" @@ -155,7 +156,6 @@ #define FILE_DIR "icons/turf" #define FILE_DIR "interface" #define FILE_DIR "maps" -#define FILE_DIR "maps/backup" #define FILE_DIR "sound" #define FILE_DIR "sound/ambience" #define FILE_DIR "sound/announcer" @@ -386,9 +386,20 @@ #include "code\game\gamemodes\wizard\spells.dm" #include "code\game\gamemodes\wizard\wizard.dm" #include "code\game\jobs\access.dm" +#include "code\game\jobs\job_controller.dm" #include "code\game\jobs\jobprocs.dm" #include "code\game\jobs\jobs.dm" #include "code\game\jobs\whitelist.dm" +#include "code\game\jobs\job\assistant.dm" +#include "code\game\jobs\job\captian.dm" +#include "code\game\jobs\job\civilian.dm" +#include "code\game\jobs\job\civilian_chaplain.dm" +#include "code\game\jobs\job\engineering.dm" +#include "code\game\jobs\job\job.dm" +#include "code\game\jobs\job\medical.dm" +#include "code\game\jobs\job\science.dm" +#include "code\game\jobs\job\security.dm" +#include "code\game\jobs\job\silicon.dm" #include "code\game\machinery\ai_slipper.dm" #include "code\game\machinery\airlock_control.dm" #include "code\game\machinery\alarm.dm" @@ -531,7 +542,6 @@ #include "code\game\objects\tank.dm" #include "code\game\objects\toys.dm" #include "code\game\objects\transfer_valve.dm" -#include "code\game\objects\traps.dm" #include "code\game\objects\washing_machine.dm" #include "code\game\objects\weapons.dm" #include "code\game\objects\window.dm" @@ -849,6 +859,7 @@ #include "code\modules\mob\new_player\hud.dm" #include "code\modules\mob\new_player\new_player.dm" #include "code\modules\mob\new_player\preferences.dm" +#include "code\modules\mob\new_player\preferences_setup.dm" #include "code\modules\mob\new_player\savefile.dm" #include "code\modules\mob\organ\organ.dm" #include "code\modules\mob\organ\organ_external.dm" @@ -916,7 +927,6 @@ #include "code\modules\research\server.dm" #include "code\WorkInProgress\buildmode.dm" #include "code\WorkInProgress\explosion_particles.dm" -#include "code\WorkInProgress\jobs.dm" #include "code\WorkInProgress\mapload\dmm_suite.dm" #include "code\WorkInProgress\mapload\reader.dm" #include "code\WorkInProgress\recycling\conveyor.dm"