From 6982014a6e3afb2a2c646204d8c5e4e016a3ff71 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 14:19:59 +0100 Subject: [PATCH 01/81] Replace all BYOND text macros --- .travis.yml | 1 + code/__HELPERS/text.dm | 14 +- code/_onclick/item_attack.dm | 2 +- code/datums/cargoprofile.dm | 16 +- code/datums/diseases/cold.dm | 4 +- code/datums/helper_datums/global_iterator.dm | 2 +- code/datums/mind.dm | 62 +++---- code/datums/spells/conjure.dm | 2 +- code/datums/spells/wizard.dm | 4 +- code/datums/wires/mulebot.dm | 10 +- code/datums/wires/nuclearbomb.dm | 4 +- code/game/dna/genes/goon_powers.dm | 2 +- .../game/gamemodes/autotraitor/autotraitor.dm | 2 +- code/game/gamemodes/cult/ritual.dm | 2 +- code/game/gamemodes/game_mode.dm | 2 +- code/game/gamemodes/heist/heist.dm | 10 +- code/game/gamemodes/miniantags/borer/borer.dm | 24 +-- code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/gamemodes/nuclear/nuclearbomb.dm | 20 +-- code/game/gamemodes/vampire/vampire_powers.dm | 4 +- code/game/gamemodes/wizard/raginmages.dm | 6 +- code/game/gamemodes/wizard/spellbook.dm | 2 +- code/game/gamemodes/wizard/wizard.dm | 2 +- code/game/jobs/job_controller.dm | 2 +- code/game/jobs/whitelist.dm | 4 +- code/game/machinery/OpTable.dm | 4 +- code/game/machinery/ai_slipper.dm | 2 +- code/game/machinery/alarm.dm | 4 +- code/game/machinery/atmo_control.dm | 4 +- code/game/machinery/atmoalter/canister.dm | 6 +- code/game/machinery/atmoalter/meter.dm | 4 +- .../atmoalter/portable_atmospherics.dm | 8 +- code/game/machinery/camera/tracking.dm | 12 +- code/game/machinery/cell_charger.dm | 6 +- code/game/machinery/cloning.dm | 4 +- .../machinery/computer/HolodeckControl.dm | 4 +- code/game/machinery/computer/ai_core.dm | 42 ++--- code/game/machinery/computer/card.dm | 2 +- code/game/machinery/computer/computer.dm | 4 +- code/game/machinery/computer/honkputer.dm | 4 +- code/game/machinery/computer/law.dm | 4 +- code/game/machinery/computer/prisoner.dm | 2 +- code/game/machinery/computer/robot.dm | 2 +- code/game/machinery/computer/salvage_ship.dm | 2 +- .../machinery/computer/specops_shuttle.dm | 26 +-- code/game/machinery/computer/store.dm | 4 +- .../computer/syndicate_specops_shuttle.dm | 18 +- code/game/machinery/cryo.dm | 6 +- code/game/machinery/deployable.dm | 14 +- code/game/machinery/doors/airlock.dm | 16 +- code/game/machinery/doors/airlock_control.dm | 2 +- code/game/machinery/firealarm.dm | 4 +- code/game/machinery/flasher.dm | 8 +- code/game/machinery/floodlight.dm | 4 +- code/game/machinery/guestpass.dm | 2 +- code/game/machinery/igniter.dm | 4 +- code/game/machinery/machinery.dm | 18 +- code/game/machinery/pipe/construction.dm | 8 +- code/game/machinery/podmen.dm | 8 +- code/game/machinery/programmable_unloader.dm | 18 +- code/game/machinery/recharger.dm | 6 +- code/game/machinery/shieldgen.dm | 40 ++--- code/game/machinery/spaceheater.dm | 10 +- code/game/machinery/suit_storage_unit.dm | 18 +- code/game/machinery/telecomms/logbrowser.dm | 8 +- code/game/machinery/telecomms/telemonitor.dm | 6 +- .../machinery/telecomms/traffic_control.dm | 6 +- code/game/machinery/teleporter.dm | 2 +- code/game/machinery/vending.dm | 4 +- code/game/machinery/washing_machine.dm | 8 +- code/game/mecha/mecha.dm | 26 +-- code/game/mecha/mecha_wreckage.dm | 2 +- code/game/mecha/working/ripley.dm | 2 +- code/game/objects/effects/effect_system.dm | 6 +- code/game/objects/effects/gibs.dm | 2 +- code/game/objects/items.dm | 12 +- code/game/objects/items/ashtray.dm | 4 +- code/game/objects/items/bodybag.dm | 4 +- code/game/objects/items/devices/autopsy.dm | 6 +- code/game/objects/items/devices/megaphone.dm | 10 +- code/game/objects/items/devices/modkit.dm | 2 +- code/game/objects/items/devices/paicard.dm | 4 +- .../objects/items/devices/radio/beacon.dm | 6 +- .../game/objects/items/devices/radio/radio.dm | 8 +- code/game/objects/items/devices/scanners.dm | 62 +++---- code/game/objects/items/devices/whistle.dm | 2 +- code/game/objects/items/policetape.dm | 10 +- code/game/objects/items/random_items.dm | 2 +- code/game/objects/items/robot/robot_parts.dm | 38 ++--- code/game/objects/items/shooting_range.dm | 2 +- code/game/objects/items/stacks/rods.dm | 6 +- .../game/objects/items/stacks/sheets/glass.dm | 2 +- code/game/objects/items/weapons/AI_modules.dm | 2 +- code/game/objects/items/weapons/caution.dm | 4 +- .../game/objects/items/weapons/clown_items.dm | 2 +- .../objects/items/weapons/dna_injector.dm | 8 +- .../objects/items/weapons/dnascrambler.dm | 2 +- .../objects/items/weapons/extinguisher.dm | 2 +- .../objects/items/weapons/gift_wrappaper.dm | 8 +- .../items/weapons/grenades/clowngrenade.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 6 +- .../objects/items/weapons/storage/bags.dm | 8 +- .../objects/items/weapons/storage/belt.dm | 8 +- .../objects/items/weapons/storage/bible.dm | 14 +- .../objects/items/weapons/storage/storage.dm | 2 +- .../game/objects/items/weapons/tanks/tanks.dm | 8 +- code/game/objects/items/weapons/tools.dm | 4 +- code/game/objects/items/weapons/twohanded.dm | 2 +- code/game/objects/items/weapons/wires.dm | 4 +- code/game/objects/structures.dm | 12 +- .../structures/crates_lockers/closets.dm | 6 +- .../crates_lockers/closets/fireaxe.dm | 34 ++-- .../crates_lockers/closets/secure/personal.dm | 6 +- .../closets/secure/secure_closets.dm | 2 +- .../crates_lockers/closets/statue.dm | 4 +- .../structures/crates_lockers/crates.dm | 4 +- code/game/objects/structures/door_assembly.dm | 26 +-- code/game/objects/structures/flora.dm | 6 +- code/game/objects/structures/girders.dm | 60 +++---- code/game/objects/structures/inflatable.dm | 4 +- code/game/objects/structures/lamarr_cage.dm | 4 +- code/game/objects/structures/lattice.dm | 2 +- code/game/objects/structures/mop_bucket.dm | 4 +- code/game/objects/structures/morgue.dm | 6 +- code/game/objects/structures/tables_racks.dm | 10 +- code/game/objects/structures/window.dm | 4 +- code/game/response_team.dm | 8 +- code/game/turfs/simulated/walls.dm | 6 +- code/game/turfs/simulated/walls_reinforced.dm | 4 +- code/game/verbs/suicide.dm | 2 +- code/modules/admin/DB ban/functions.dm | 14 +- code/modules/admin/IsBanned.dm | 2 +- code/modules/admin/NewBan.dm | 1 - code/modules/admin/admin.dm | 4 +- code/modules/admin/admin_verbs.dm | 4 +- .../admin/permissionverbs/permissionedit.dm | 12 +- code/modules/admin/topic.dm | 156 +++++++++--------- code/modules/admin/verbs/adminpm.dm | 6 +- code/modules/admin/verbs/debug.dm | 12 +- code/modules/admin/verbs/diagnostics.dm | 2 +- code/modules/admin/verbs/freeze.dm | 10 +- code/modules/admin/verbs/honksquad.dm | 6 +- code/modules/admin/verbs/one_click_antag.dm | 6 +- code/modules/admin/verbs/pray.dm | 4 +- code/modules/admin/verbs/randomverbs.dm | 32 ++-- code/modules/admin/verbs/striketeam.dm | 8 +- .../admin/verbs/striketeam_syndicate.dm | 8 +- code/modules/admin/verbs/ticklag.dm | 2 +- code/modules/admin/verbs/tripAI.dm | 4 +- code/modules/assembly/assembly.dm | 6 +- code/modules/assembly/holder.dm | 8 +- code/modules/assembly/proximity.dm | 4 +- code/modules/assembly/timer.dm | 2 +- code/modules/assembly/voice.dm | 2 +- .../awaymissions/mission_code/wildwest.dm | 16 +- code/modules/client/client procs.dm | 2 +- code/modules/client/preference/preferences.dm | 2 +- code/modules/clothing/clothing.dm | 4 +- code/modules/clothing/glasses/glasses.dm | 2 +- code/modules/clothing/masks/gasmask.dm | 12 +- code/modules/clothing/spacesuits/breaches.dm | 6 +- .../clothing/under/accessories/accessory.dm | 8 +- .../clothing/under/accessories/holster.dm | 2 +- code/modules/clothing/under/chameleon.dm | 8 +- code/modules/computer3/bios.dm | 12 +- code/modules/computer3/buildandrepair.dm | 38 ++--- code/modules/computer3/computer.dm | 2 +- .../computer3/computers/HolodeckControl.dm | 2 +- .../computer3/computers/atmos_alert.dm | 4 +- code/modules/computer3/computers/law.dm | 4 +- code/modules/computer3/computers/prisoner.dm | 2 +- code/modules/computer3/computers/robot.dm | 18 +- code/modules/computer3/laptop.dm | 6 +- code/modules/economy/ATM.dm | 14 +- code/modules/economy/POS.dm | 24 +-- code/modules/events/holidays/Holidays.dm | 4 +- .../kitchen_machinery/icecream_vat_2.dm | 2 +- code/modules/garbage_collection/gc_testing.dm | 2 +- code/modules/holiday/holiday.dm | 2 +- code/modules/karma/karma.dm | 10 +- code/modules/mining/coins.dm | 2 +- code/modules/mob/dead/observer/observer.dm | 30 ++-- code/modules/mob/dead/observer/say.dm | 4 +- code/modules/mob/emote.dm | 6 +- .../carbon/alien/humanoid/caste/sentinel.dm | 2 +- .../living/carbon/alien/humanoid/empress.dm | 2 +- .../mob/living/carbon/alien/larva/emote.dm | 2 +- .../mob/living/carbon/alien/larva/powers.dm | 12 +- code/modules/mob/living/carbon/brain/death.dm | 2 +- .../mob/living/carbon/brain/posibrain.dm | 18 +- code/modules/mob/living/carbon/carbon.dm | 10 +- code/modules/mob/living/carbon/human/emote.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 34 ++-- .../living/carbon/human/human_attackhand.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 12 +- .../mob/living/carbon/human/species/apollo.dm | 2 +- .../living/carbon/human/species/plasmaman.dm | 4 +- .../mob/living/carbon/human/update_icons.dm | 4 +- code/modules/mob/living/carbon/slime/emote.dm | 4 +- .../modules/mob/living/carbon/slime/powers.dm | 2 +- code/modules/mob/living/carbon/slime/slime.dm | 2 +- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/living_defense.dm | 4 +- code/modules/mob/living/say.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 16 +- code/modules/mob/living/silicon/pai/life.dm | 2 +- code/modules/mob/living/silicon/pai/pai.dm | 6 +- .../mob/living/silicon/robot/drone/drone.dm | 34 ++-- .../silicon/robot/drone/drone_abilities.dm | 8 +- .../silicon/robot/drone/drone_console.dm | 20 +-- .../silicon/robot/drone/drone_manufacturer.dm | 8 +- code/modules/mob/living/silicon/robot/life.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 28 ++-- .../mob/living/silicon/robot/robot_damage.dm | 8 +- .../mob/living/silicon/robot/robot_items.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 2 +- .../living/simple_animal/friendly/corgi.dm | 4 +- .../mob/living/simple_animal/friendly/crab.dm | 26 +-- .../simple_animal/friendly/farm_animals.dm | 12 +- .../living/simple_animal/friendly/mouse.dm | 2 +- .../simple_animal/friendly/spiderbot.dm | 50 +++--- .../living/simple_animal/hostile/hivebot.dm | 2 +- .../simple_animal/hostile/retaliate/drone.dm | 14 +- .../living/simple_animal/hostile/syndicate.dm | 8 +- .../mob/living/simple_animal/parrot.dm | 2 +- .../mob/living/simple_animal/powers.dm | 4 +- .../modules/mob/living/simple_animal/shade.dm | 6 +- .../mob/living/simple_animal/tribbles.dm | 4 +- code/modules/mob/mob.dm | 30 ++-- code/modules/mob/mob_grab.dm | 2 +- code/modules/mob/mob_movement.dm | 16 +- code/modules/mob/mob_transformation_simple.dm | 4 +- code/modules/mob/new_player/new_player.dm | 10 +- code/modules/mob/new_player/poll.dm | 26 +-- code/modules/paperwork/paper.dm | 2 +- code/modules/paperwork/paper_bundle.dm | 2 +- code/modules/paperwork/photography.dm | 2 +- code/modules/power/cable.dm | 2 +- code/modules/power/cable_heavyduty.dm | 4 +- code/modules/power/cell.dm | 2 +- code/modules/power/lighting.dm | 6 +- code/modules/power/singularity/collector.dm | 12 +- code/modules/power/singularity/emitter.dm | 20 +-- code/modules/power/smes.dm | 2 +- code/modules/power/supermatter/sm_shard.dm | 14 +- code/modules/power/switch.dm | 8 +- .../reagents/chemistry/reagents/toxins.dm | 2 +- .../reagents/reagent_containers/syringes.dm | 50 +++--- code/modules/recycling/disposal.dm | 10 +- code/modules/research/message_server.dm | 2 +- code/modules/research/server.dm | 4 +- .../xenoarchaeology/artifact/artifact.dm | 12 +- .../artifact/artifact_autocloner.dm | 8 +- .../artifact/artifact_gigadrill.dm | 4 +- .../artifact/artifact_replicator.dm | 14 +- .../artifact/artifact_unknown.dm | 2 +- .../xenoarchaeology/artifact/effect.dm | 2 +- .../artifact/effects/unknown_affect_cold.dm | 2 +- .../effects/unknown_effect_cellcharge.dm | 6 +- .../effects/unknown_effect_celldrain.dm | 6 +- .../effects/unknown_effect_dnaswitch.dm | 42 ++--- .../artifact/effects/unknown_effect_heal.dm | 6 +- .../artifact/effects/unknown_effect_heat.dm | 2 +- .../artifact/effects/unknown_effect_hurt.dm | 6 +- .../effects/unknown_effect_roboheal.dm | 6 +- .../effects/unknown_effect_robohurt.dm | 6 +- .../artifact/effects/unknown_effect_sleepy.dm | 12 +- .../artifact/effects/unknown_effect_stun.dm | 8 +- .../research/xenoarchaeology/chemistry.dm | 2 +- .../xenoarchaeology/finds/finds_special.dm | 6 +- .../finds/finds_talkingitem.dm | 4 +- .../xenoarchaeology/genetics/reconstitutor.dm | 26 +-- .../machinery/artifact_harvester.dm | 4 +- .../machinery/geosample_scanner.dm | 8 +- .../tools/ano_device_battery.dm | 14 +- .../xenoarchaeology/tools/bunsen_burner.dm | 12 +- .../tools/suspension_generator.dm | 22 +-- .../tools/tools_coresampler.dm | 18 +- .../tools/tools_depthscanner.dm | 6 +- .../research/xenobiology/xenobiology.dm | 8 +- .../security_levels/keycard authentication.dm | 2 +- code/modules/spacepods/spacepod.dm | 16 +- code/modules/surgery/organs/organ_external.dm | 12 +- code/modules/surgery/organs/pain.dm | 2 +- code/modules/telesci/telesci_computer.dm | 4 +- code/world.dm | 2 +- 286 files changed, 1303 insertions(+), 1311 deletions(-) diff --git a/.travis.yml b/.travis.yml index af2cfc45cc9..c2212aa7fcb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,7 @@ before_script: - chmod +x ./install-byond.sh - ./install-byond.sh script: + - (num=`grep -E '\\\\(red|blue|green|black|italic|bold|b|i[^mc])' **/*.dm | wc -l`; echo "$num BYOND text macros (expecting 0)"; [ $num -le 0 ]) - source $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin/byondsetup - bash dm.sh -M${DM_MAPFILE} paradise.dme diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 84c8ec3656e..4b748e17fbb 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -378,18 +378,10 @@ proc/checkhtml(var/t) return sanitize(replace_characters(input, list(">"=" ","<"=" ", "\""="'")), max_length, encode, trim, extra) -//Replaces \red \blue \green \b etc with span classes for to_chat +//Replace BYOND text macros with span classes for to_chat /proc/replace_text_macro(match, code, rest) - var/regex/text_macro = new("(\\xFF.)(.*)$") - switch(code) - if("\red") - return "[text_macro.Replace(rest, /proc/replace_text_macro)]" - if("\blue", "\green") - return "[text_macro.Replace(rest, /proc/replace_text_macro)]" - if("\b") - return "[text_macro.Replace(rest, /proc/replace_text_macro)]" - else - return text_macro.Replace(rest, /proc/replace_text_macro) + var/regex/text_macro = new("(\\xFF.)(.*)$") + return text_macro.Replace(rest, /proc/replace_text_macro) /proc/macro2html(text) var/static/regex/text_macro = new("(\\xFF.)(.*)$") diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 4c9f57d4e4e..59cbf9c6219 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -84,7 +84,7 @@ if(istype(M, /mob/living/carbon/slime)) var/mob/living/carbon/slime/slime = M if(prob(25)) - to_chat(user, "\red [src] passes right through [M]!") + to_chat(user, "[src] passes right through [M]!") return if(power > 0) diff --git a/code/datums/cargoprofile.dm b/code/datums/cargoprofile.dm index becb3ccee56..7a8b76c7109 100644 --- a/code/datums/cargoprofile.dm +++ b/code/datums/cargoprofile.dm @@ -341,13 +341,13 @@ C:broken = 1 C.open() C.update_icon() - master.visible_message("\red [master] breaks open [C]!") + master.visible_message("[master] breaks open [C]!") else - master.visible_message("\blue [master] is trying to force [C] open!") + master.visible_message("[master] is trying to force [C] open!") master.sleep += 1 // mechanical strain return BIG_OBJECT_WORK - master.visible_message("\blue [master] is trying to open [C], but can't!") + master.visible_message("[master] is trying to open [C], but can't!") master.sleep = 5 return 0 @@ -647,7 +647,7 @@ M.loc = master master.types[M.type] = src M.apply_damage(damage) // todo: ugly - M.visible_message("\red [M.name] gets pulled into the machine!") + M.visible_message("[M.name] gets pulled into the machine!") return MOB_WORK outlet_reaction(var/atom/W,var/turf/D) var/mob/living/M = W @@ -659,7 +659,7 @@ if(bruteloss < 100) // requires tenderization M.apply_damage(rand(5,15),BRUTE) to_chat(M, "The machine is tearing you apart!") - master.visible_message("\red [master] makes a squishy grinding noise.") + master.visible_message("[master] makes a squishy grinding noise.") return M.loc = master.loc M.gib() @@ -700,7 +700,7 @@ M.forceMove(master) master.types[M.type] = src M.apply_damage(damage) // todo: ugly - M.visible_message("\red [M.name] gets pulled into the machine!") + M.visible_message("[M.name] gets pulled into the machine!") return MOB_WORK outlet_reaction(var/atom/W,var/turf/D) @@ -711,7 +711,7 @@ D = get_step(D,master.outdir) // throw attempt eject_speed = rand(0,4) - M.visible_message("\blue [M.name] is ejected from the unloader.") + M.visible_message("[M.name] is ejected from the unloader.") M.throw_at(D,eject_speed,eject_speed) return @@ -752,7 +752,7 @@ if(!damage) playsound(master.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - master.visible_message("\red \The [src] punched at [M], but whiffed!") + master.visible_message("\The [src] punched at [M], but whiffed!") if(maxpunches > 1 && prob(50)) // Follow through on a miss, 50% chance return punch(M,maxpunches - 1) + 1 diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 9e1d350bdc4..975c92b2aef 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -16,7 +16,7 @@ if(2) /* if(affected_mob.sleeping && prob(40)) //removed until sleeping is fixed - to_chat(affected_mob, "\blue You feel better.") + to_chat(affected_mob, "You feel better.") cure() return */ @@ -39,7 +39,7 @@ if(3) /* if(affected_mob.sleeping && prob(25)) //removed until sleeping is fixed - to_chat(affected_mob, "\blue You feel better.") + to_chat(affected_mob, "You feel better.") cure() return */ diff --git a/code/datums/helper_datums/global_iterator.dm b/code/datums/helper_datums/global_iterator.dm index 485dfa3563e..e3f22e2a3e2 100644 --- a/code/datums/helper_datums/global_iterator.dm +++ b/code/datums/helper_datums/global_iterator.dm @@ -139,7 +139,7 @@ Data storage vars: arg_list = arguments return 1 else -// to_chat(world, "\red Invalid arguments supplied for [src.type], ref = \ref[src]") +// to_chat(world, "Invalid arguments supplied for [src.type], ref = \ref[src]") return 0 proc/toggle_null_checks() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 27947b9e608..aeb5f8157c5 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -661,7 +661,7 @@ if(I && I.implanted) I.removed(H) qdel(I) - to_chat(H, "\blue Your mindshield implant has been deactivated.") + to_chat(H, "Your mindshield implant has been deactivated.") log_admin("[key_name(usr)] has deactivated [key_name(current)]'s mindshield implant") message_admins("[key_name_admin(usr)] has deactivated [key_name_admin(current)]'s mindshield implant") if("add") @@ -673,15 +673,15 @@ log_admin("[key_name(usr)] has given [key_name(current)] a mindshield implant") message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] a mindshield implant") - to_chat(H, "\red You somehow have become the recepient of a mindshield transplant, and it just activated!") + to_chat(H, "You somehow have become the recepient of a mindshield transplant, and it just activated!") if(src in ticker.mode.revolutionaries) special_role = null ticker.mode.revolutionaries -= src - to_chat(src, "\red The nanobots in the mindshield implant remove all thoughts about being a revolutionary. Get back to work!") + to_chat(src, "The nanobots in the mindshield implant remove all thoughts about being a revolutionary. Get back to work!") if(src in ticker.mode.head_revolutionaries) special_role = null ticker.mode.head_revolutionaries -=src - to_chat(src, "\red The nanobots in the mindshield implant remove all thoughts about being a revolutionary. Get back to work!") + to_chat(src, "The nanobots in the mindshield implant remove all thoughts about being a revolutionary. Get back to work!") if(src in ticker.mode.cult) ticker.mode.cult -= src ticker.mode.update_cult_icons_removed(src) @@ -689,7 +689,7 @@ var/datum/game_mode/cult/cult = ticker.mode if(istype(cult)) cult.memorize_cult_objectives(src) - to_chat(current, "\red The nanobots in the mindshield implant remove all thoughts about being in a cult. Have a productive day!") + to_chat(current, "The nanobots in the mindshield implant remove all thoughts about being in a cult. Have a productive day!") memory = "" else if(href_list["revolution"]) @@ -698,12 +698,12 @@ if("clear") if(src in ticker.mode.revolutionaries) ticker.mode.revolutionaries -= src - to_chat(current, "\red You have been brainwashed! You are no longer a revolutionary!") + to_chat(current, "You have been brainwashed! You are no longer a revolutionary!") ticker.mode.update_rev_icons_removed(src) special_role = null if(src in ticker.mode.head_revolutionaries) ticker.mode.head_revolutionaries -= src - to_chat(current, "\red You have been brainwashed! You are no longer a head revolutionary!") + to_chat(current, "You have been brainwashed! You are no longer a head revolutionary!") ticker.mode.update_rev_icons_removed(src) special_role = null log_admin("[key_name(usr)] has de-rev'd [key_name(current)]") @@ -713,9 +713,9 @@ if(src in ticker.mode.head_revolutionaries) ticker.mode.head_revolutionaries -= src ticker.mode.update_rev_icons_removed(src) - to_chat(current, "\red Revolution has been disappointed of your leader traits! You are a regular revolutionary now!") + to_chat(current, "Revolution has been disappointed of your leader traits! You are a regular revolutionary now!") else if(!(src in ticker.mode.revolutionaries)) - to_chat(current, "\red You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!") + to_chat(current, " You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!") else return ticker.mode.revolutionaries += src @@ -728,9 +728,9 @@ if(src in ticker.mode.revolutionaries) ticker.mode.revolutionaries -= src ticker.mode.update_rev_icons_removed(src) - to_chat(current, "\red You have proved your devotion to revoltion! Yea are a head revolutionary now!") + to_chat(current, "You have proved your devotion to revoltion! Yea are a head revolutionary now!") else if(!(src in ticker.mode.head_revolutionaries)) - to_chat(current, "\blue You are a member of the revolutionaries' leadership now!") + to_chat(current, "You are a member of the revolutionaries' leadership now!") else return if(ticker.mode.head_revolutionaries.len>0) @@ -758,7 +758,7 @@ if("flash") if(!ticker.mode.equip_revolutionary(current)) - to_chat(usr, "\red Spawning flash failed!") + to_chat(usr, "Spawning flash failed!") log_admin("[key_name(usr)] has given [key_name(current)] a flash") message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] a flash") @@ -766,7 +766,7 @@ var/list/L = current.get_contents() var/obj/item/device/flash/flash = locate() in L if(!flash) - to_chat(usr, "\red Deleting flash failed!") + to_chat(usr, "Deleting flash failed!") qdel(flash) log_admin("[key_name(usr)] has taken [key_name(current)]'s flash") message_admins("[key_name_admin(usr)] has taken [key_name_admin(current)]'s flash") @@ -775,7 +775,7 @@ var/list/L = current.get_contents() var/obj/item/device/flash/flash = locate() in L if(!flash) - to_chat(usr, "\red Repairing flash failed!") + to_chat(usr, "Repairing flash failed!") else flash.broken = 0 log_admin("[key_name(usr)] has repaired [key_name(current)]'s flash") @@ -790,7 +790,7 @@ fail |= !ticker.mode.equip_traitor(current, 1) fail |= !ticker.mode.equip_revolutionary(current) if(fail) - to_chat(usr, "\red Reequipping revolutionary goes wrong!") + to_chat(usr, "Reequipping revolutionary goes wrong!") return log_admin("[key_name(usr)] has equipped [key_name(current)] as a revolutionary") message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a revolutionary") @@ -825,7 +825,7 @@ ) var/where = H.equip_in_one_of_slots(T, slots) if(!where) - to_chat(usr, "\red Spawning tome failed!") + to_chat(usr, "Spawning tome failed!") qdel(T) else to_chat(H, "A tome, a message from your new master, appears in your [where].") @@ -834,7 +834,7 @@ if("equip") if(!ticker.mode.equip_cultist(current)) - to_chat(usr, "\red Spawning equipment failed!") + to_chat(usr, "Spawning equipment failed!") log_admin("[key_name(usr)] has equipped [key_name(current)] as a cultist") message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a cultist") @@ -848,7 +848,7 @@ current.spellremove(current) current.faction = list("Station") ticker.mode.update_wiz_icons_removed(src) - to_chat(current, "\red You have been brainwashed! You are no longer a wizard!") + to_chat(current, "You have been brainwashed! You are no longer a wizard!") log_admin("[key_name(usr)] has de-wizarded [key_name(current)]") message_admins("[key_name_admin(usr)] has de-wizarded [key_name_admin(current)]") if("wizard") @@ -875,7 +875,7 @@ message_admins("[key_name_admin(usr)] has allowed wizard [key_name_admin(current)] to name themselves") if("autoobjectives") ticker.mode.forge_wizard_objectives(src) - to_chat(usr, "\blue The objectives for wizard [key] have been generated. You can edit them and anounce manually.") + to_chat(usr, "The objectives for wizard [key] have been generated. You can edit them and anounce manually.") log_admin("[key_name(usr)] has automatically forged wizard objectives for [key_name(current)]") message_admins("[key_name_admin(usr)] has automatically forged wizard objectives for [key_name_admin(current)]") @@ -904,13 +904,13 @@ if("autoobjectives") ticker.mode.forge_changeling_objectives(src) - to_chat(usr, "\blue The objectives for changeling [key] have been generated. You can edit them and anounce manually.") + to_chat(usr, "The objectives for changeling [key] have been generated. You can edit them and anounce manually.") log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]") message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]") if("initialdna") if(!changeling || !changeling.absorbed_dna.len) - to_chat(usr, "\red Resetting DNA failed!") + to_chat(usr, "Resetting DNA failed!") else current.dna = changeling.absorbed_dna[1] current.real_name = current.dna.real_name @@ -948,7 +948,7 @@ if("autoobjectives") ticker.mode.forge_vampire_objectives(src) - to_chat(usr, "\blue The objectives for vampire [key] have been generated. You can edit them and announce manually.") + to_chat(usr, "The objectives for vampire [key] have been generated. You can edit them and announce manually.") log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]") message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]") @@ -971,7 +971,7 @@ special_role = null for(var/datum/objective/nuclear/O in objectives) objectives-=O - to_chat(current, "\red You have been brainwashed! You are no longer a syndicate operative!") + to_chat(current, "You have been brainwashed! You are no longer a syndicate operative!") log_admin("[key_name(usr)] has de-nuke op'd [key_name(current)]") message_admins("[key_name_admin(usr)] has de-nuke op'd [key_name_admin(current)]") if("nuclear") @@ -983,7 +983,7 @@ else current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]" special_role = SPECIAL_ROLE_NUKEOPS - to_chat(current, "\blue You are a [syndicate_name()] agent!") + to_chat(current, "You are a [syndicate_name()] agent!") ticker.mode.forge_syndicate_objectives(src) ticker.mode.greet_syndicate(src) log_admin("[key_name(usr)] has nuke op'd [key_name(current)]") @@ -1006,7 +1006,7 @@ qdel(H.w_uniform) if(!ticker.mode.equip_syndicate(current)) - to_chat(usr, "\red Equipping a syndicate failed!") + to_chat(usr, "Equipping a syndicate failed!") return log_admin("[key_name(usr)] has equipped [key_name(current)] as a nuclear operative") message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a nuclear operative") @@ -1023,7 +1023,7 @@ log_admin("[key_name(usr)] has given [key_name(current)] the nuclear authorization code") message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] the nuclear authorization code") else - to_chat(usr, "\red No valid nuke found!") + to_chat(usr, "No valid nuke found!") else if(href_list["traitor"]) switch(href_list["traitor"]) @@ -1031,7 +1031,7 @@ if(src in ticker.mode.traitors) ticker.mode.traitors -= src special_role = null - to_chat(current, "\red You have been brainwashed! You are no longer a traitor!") + to_chat(current, "You have been brainwashed! You are no longer a traitor!") log_admin("[key_name(usr)] has de-traitored [key_name(current)]") message_admins("[key_name_admin(usr)] has de-traitored [key_name_admin(current)]") if(isAI(current)) @@ -1061,7 +1061,7 @@ if("autoobjectives") ticker.mode.forge_traitor_objectives(src) - to_chat(usr, "\blue The objectives for traitor [key] have been generated. You can edit them and anounce manually.") + to_chat(usr, "The objectives for traitor [key] have been generated. You can edit them and anounce manually.") log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]") message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]") @@ -1197,14 +1197,14 @@ message_admins("[key_name_admin(usr)] has set [key_name_admin(current)]'s telecrystals to [crystals]") if("uplink") if(!ticker.mode.equip_traitor(current, !(src in ticker.mode.traitors))) - to_chat(usr, "\red Equipping a syndicate failed!") + to_chat(usr, "Equipping a syndicate failed!") return log_admin("[key_name(usr)] has given [key_name(current)] an uplink") message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] an uplink") else if(href_list["obj_announce"]) var/obj_count = 1 - to_chat(current, "\blue Your current objectives:") + to_chat(current, "Your current objectives:") for(var/datum/objective/objective in objectives) to_chat(current, "Objective #[obj_count]: [objective.explanation_text]") obj_count++ @@ -1275,7 +1275,7 @@ current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]" special_role = SPECIAL_ROLE_NUKEOPS assigned_role = "MODE" - to_chat(current, "\blue You are a [syndicate_name()] agent!") + to_chat(current, "You are a [syndicate_name()] agent!") ticker.mode.forge_syndicate_objectives(src) ticker.mode.greet_syndicate(src) diff --git a/code/datums/spells/conjure.dm b/code/datums/spells/conjure.dm index fe0ffd9c1c0..75ca13ad522 100644 --- a/code/datums/spells/conjure.dm +++ b/code/datums/spells/conjure.dm @@ -33,7 +33,7 @@ targets -= spawn_place if(ispath(summoned_object_type,/turf)) if(istype(get_turf(user),/turf/simulated/shuttle)) - to_chat(user, "\red You can't build things on shuttles!") + to_chat(user, "You can't build things on shuttles!") break var/turf/O = spawn_place var/N = summoned_object_type diff --git a/code/datums/spells/wizard.dm b/code/datums/spells/wizard.dm index e3892baac2f..f8394771263 100644 --- a/code/datums/spells/wizard.dm +++ b/code/datums/spells/wizard.dm @@ -45,7 +45,7 @@ clothes_req = 1 invocation = "BIRUZ BENNAR" invocation_type = "shout" - message = "\blue You feel strong! You feel a pressure building behind your eyes!" + message = "You feel strong! You feel a pressure building behind your eyes!" range = -1 include_user = 1 centcom_cancast = 0 @@ -235,7 +235,7 @@ clothes_req = 0 invocation = "STI KALY" invocation_type = "whisper" - message = "\blue Your eyes cry out in pain!" + message = "Your eyes cry out in pain!" cooldown_min = 50 //12 deciseconds reduction per rank starting_spells = list("/obj/effect/proc_holder/spell/targeted/inflict_handler/blind","/obj/effect/proc_holder/spell/targeted/genetic/blind") diff --git a/code/datums/wires/mulebot.dm b/code/datums/wires/mulebot.dm index 7b59479720d..08c95fe95b4 100644 --- a/code/datums/wires/mulebot.dm +++ b/code/datums/wires/mulebot.dm @@ -28,15 +28,15 @@ var/const/WIRE_BEACON_RX = 256 // beacon ping recv /datum/wires/mulebot/UpdatePulsed(var/index) switch(index) if(WIRE_POWER1, WIRE_POWER2) - holder.visible_message("\blue [bicon(holder)] The charge light flickers.") + holder.visible_message("[bicon(holder)] The charge light flickers.") if(WIRE_AVOIDANCE) - holder.visible_message("\blue [bicon(holder)] The external warning lights flash briefly.") + holder.visible_message("[bicon(holder)] The external warning lights flash briefly.") if(WIRE_LOADCHECK) - holder.visible_message("\blue [bicon(holder)] The load platform clunks.") + holder.visible_message("[bicon(holder)] The load platform clunks.") if(WIRE_MOTOR1, WIRE_MOTOR2) - holder.visible_message("\blue [bicon(holder)] The drive motor whines briefly.") + holder.visible_message("[bicon(holder)] The drive motor whines briefly.") else - holder.visible_message("\blue [bicon(holder)] You hear a radio crackle.") + holder.visible_message("[bicon(holder)] You hear a radio crackle.") // HELPER PROCS diff --git a/code/datums/wires/nuclearbomb.dm b/code/datums/wires/nuclearbomb.dm index 0297bea8508..6e3b4e01b8d 100644 --- a/code/datums/wires/nuclearbomb.dm +++ b/code/datums/wires/nuclearbomb.dm @@ -39,12 +39,12 @@ var/const/NUCLEARBOMB_WIRE_SAFETY = 4 if(N.safety == 1) if(!N.is_syndicate) set_security_level(N.previous_level) - N.visible_message("\blue The [N] quiets down.") + N.visible_message("The [N] quiets down.") if(!N.lighthack) if(N.icon_state == "nuclearbomb2") N.icon_state = "nuclearbomb1" else - N.visible_message("\blue The [N] emits a quiet whirling noise!") + N.visible_message("The [N] emits a quiet whirling noise!") /datum/wires/nuclearbomb/UpdateCut(var/index, var/mended) var/obj/machinery/nuclearbomb/N = holder diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index e4c09aeac17..49a5ac8b016 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -180,7 +180,7 @@ C.adjustFireLoss(10) C.ExtinguishMob() - C.visible_message("\red [user] sprays a cloud of fine ice crystals, engulfing [C]!") + C.visible_message("[user] sprays a cloud of fine ice crystals, engulfing [C]!") log_admin("[key_name(user)] has used cryokinesis on [key_name(C)] without internals or a suit") msg_admin_attack("[key_name_admin(user)] has cast cryokinesis on [key_name_admin(C)]") diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index 7c307295dc7..e1f4309598e 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -141,7 +141,7 @@ set_antag_hud(newtraitor, "hudsyndicate") var/obj_count = 1 - to_chat(newtraitor, "\blue Your current objectives:") + to_chat(newtraitor, "Your current objectives:") for(var/datum/objective/objective in newtraitor.mind.objectives) to_chat(newtraitor, "Objective #[obj_count]: [objective.explanation_text]") obj_count++ diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 752e8e353d0..de1618123c3 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -8,7 +8,7 @@ else usr.whisper(pick("Hakkrutju gopoenjim.", "Nherasai pivroiashan.", "Firjji prhiv mazenhor.", "Tanah eh wakantahe.", "Obliyae na oraie.", "Miyf hon vnor'c.", "Wakabai hij fen juswix.")) for (var/mob/V in viewers(src)) - V.show_message("\red The markings pulse with a small burst of light, then fall dark.", 3, "\red You hear a faint fizzle.", 2) + V.show_message("The markings pulse with a small burst of light, then fall dark.", 3, "You hear a faint fizzle.", 2) return /obj/effect/rune/proc/check_icon() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 2a9c9851478..1a53e3032c0 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -425,7 +425,7 @@ proc/get_nt_opposed() if(!player || !player.current) return var/obj_count = 1 - to_chat(player.current, "\blue Your current objectives:") + to_chat(player.current, "Your current objectives:") for(var/datum/objective/objective in player.objectives) to_chat(player.current, "Objective #[obj_count]: [objective.explanation_text]") obj_count++ diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 4819ab20671..d36ac55a4c0 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -178,10 +178,10 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' /datum/game_mode/proc/greet_vox(var/datum/mind/raider) to_chat(raider.current, "You are a Vox Raider, fresh from the Shoal!") - to_chat(raider.current, "\blue The Vox are a race of cunning, sharp-eyed nomadic raiders and traders endemic to the frontier and much of the unexplored galaxy. You and the crew have come to the [station_name()] for plunder, trade or both.") - to_chat(raider.current, "\blue Vox are cowardly and will flee from larger groups, but corner one or find them en masse and they are vicious.") - to_chat(raider.current, "\blue Use :V to voxtalk, :H to talk on your encrypted channel, and don't forget to turn on your nitrogen internals!") - to_chat(raider.current, "\blue Choose to accomplish your objectives by either raiding the crew and taking what you need, or by attempting to trade with them.") + to_chat(raider.current, "The Vox are a race of cunning, sharp-eyed nomadic raiders and traders endemic to the frontier and much of the unexplored galaxy. You and the crew have come to the [station_name()] for plunder, trade or both.") + to_chat(raider.current, "Vox are cowardly and will flee from larger groups, but corner one or find them en masse and they are vicious.") + to_chat(raider.current, "Use :V to voxtalk, :H to talk on your encrypted channel, and don't forget to turn on your nitrogen internals!") + to_chat(raider.current, "Choose to accomplish your objectives by either raiding the crew and taking what you need, or by attempting to trade with them.") spawn(25) show_objectives(raider) @@ -235,7 +235,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' else win_msg += "The Vox Raiders were repelled!" - to_chat(world, "\red [win_type] [win_group] victory!") + to_chat(world, "[win_type] [win_group] victory!") to_chat(world, "[win_msg]") feedback_set_details("round_end_result","heist - [win_type] [win_group]") diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 16f7a4e0847..83d450a7222 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -6,7 +6,7 @@ if(client) if(client.prefs.muted & MUTE_IC) - to_chat(src, "\red You cannot speak in IC (muted).") + to_chat(src, "You cannot speak in IC (muted).") return if(client.handle_spam_prevention(message,MUTE_IC)) return @@ -250,16 +250,16 @@ if(host.reagents.has_reagent("sugar")) if(!docile) if(controlling) - to_chat(host, "\blue You feel the soporific flow of sugar in your host's blood, lulling you into docility.") + to_chat(host, "You feel the soporific flow of sugar in your host's blood, lulling you into docility.") else - to_chat(src, "\blue You feel the soporific flow of sugar in your host's blood, lulling you into docility.") + to_chat(src, "You feel the soporific flow of sugar in your host's blood, lulling you into docility.") docile = TRUE else if(docile) if(controlling) - to_chat(host, "\blue You shake off your lethargy as the sugar leaves your host's blood.") + to_chat(host, "You shake off your lethargy as the sugar leaves your host's blood.") else - to_chat(src, "\blue You shake off your lethargy as the sugar leaves your host's blood.") + to_chat(src, "You shake off your lethargy as the sugar leaves your host's blood.") docile = FALSE if(chemicals < max_chems) @@ -267,7 +267,7 @@ if(controlling) if(docile) - to_chat(host, "\blue You are feeling far too docile to continue controlling your host...") + to_chat(host, "You are feeling far too docile to continue controlling your host...") host.release_control() return @@ -457,11 +457,11 @@ if(!hiding) layer = TURF_LAYER+0.2 - to_chat(src, "\green You are now hiding.") + to_chat(src, "You are now hiding.") hiding = TRUE else layer = MOB_LAYER - to_chat(src, "\green You stop hiding.") + to_chat(src, "You stop hiding.") hiding = FALSE /mob/living/simple_animal/borer/verb/dominate_victim() @@ -499,8 +499,8 @@ to_chat(src, "You cannot dominate someone who is already infested!") return - to_chat(src, "\red You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread.") - to_chat(M, "\red You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.") + to_chat(src, "You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread.") + to_chat(M, "You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.") M.Weaken(3) used_dominate = world.time @@ -519,7 +519,7 @@ return if(docile) - to_chat(src, "\blue You are feeling far too docile to do that.") + to_chat(src, "You are feeling far too docile to do that.") return if(!host || !src) @@ -594,7 +594,7 @@ return if(docile) - to_chat(src, "\blue You are feeling far too docile to do that.") + to_chat(src, "You are feeling far too docile to do that.") return if(bonding) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index a7f3b36fc74..1c43224b820 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -223,7 +223,7 @@ proc/issyndicate(mob/living/M as mob) /datum/game_mode/proc/greet_syndicate(var/datum/mind/syndicate, var/you_are=1) if(you_are) - to_chat(syndicate.current, "\blue You are a [syndicate_name()] agent!") + to_chat(syndicate.current, "You are a [syndicate_name()] agent!") var/obj_count = 1 for(var/datum/objective/objective in syndicate.objectives) to_chat(syndicate.current, "Objective #[obj_count]: [objective.explanation_text]") diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 6e50736e722..dedaa98db35 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -93,7 +93,7 @@ var/bomb_set var/obj/item/weapon/weldingtool/WT = O if(!WT.isOn()) return if(WT.get_fuel() < 5) // uses up 5 fuel. - to_chat(user, "\red You need more fuel to complete this task.") + to_chat(user, "You need more fuel to complete this task.") return user.visible_message("[user] starts cutting loose the anchoring bolt covers on [src].", "You start cutting loose the anchoring bolt covers with [O]...") @@ -120,7 +120,7 @@ var/bomb_set var/obj/item/weapon/weldingtool/WT = O if(!WT.isOn()) return if(WT.get_fuel() < 5) // uses up 5 fuel. - to_chat(user, "\red You need more fuel to complete this task.") + to_chat(user, "You need more fuel to complete this task.") return user.visible_message("[user] starts cutting apart the anchoring system sealant on [src].", "You start cutting apart the anchoring system's sealant with [O]...") @@ -167,9 +167,9 @@ var/bomb_set else if(deployable) if(removal_stage < 5) anchored = 1 - visible_message("\red With a steely snap, bolts slide out of [src] and anchor it to the flooring!") + visible_message("With a steely snap, bolts slide out of [src] and anchor it to the flooring!") else - visible_message("\red \The [src] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.") + visible_message("\The [src] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.") if(!lighthack) flick("nuclearbombc", src) icon_state = "nuclearbomb1" @@ -221,10 +221,10 @@ var/bomb_set return if(deployable) - to_chat(usr, "\red You close several panels to make [src] undeployable.") + to_chat(usr, "You close several panels to make [src] undeployable.") deployable = 0 else - to_chat(usr, "\red You adjust some panels to make [src] deployable.") + to_chat(usr, "You adjust some panels to make [src] deployable.") deployable = 1 return @@ -283,7 +283,7 @@ var/bomb_set nanomanager.update_uis(src) return if(safety) - to_chat(usr, "\red The safety is still on.") + to_chat(usr, "The safety is still on.") nanomanager.update_uis(src) return timing = !(timing) @@ -313,16 +313,16 @@ var/bomb_set if(href_list["anchor"]) if(removal_stage == 5) anchored = 0 - visible_message("\red \The [src] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.") + visible_message("\The [src] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.") nanomanager.update_uis(src) return if(!isinspace()) anchored = !(anchored) if(anchored) - visible_message("\red With a steely snap, bolts slide out of [src] and anchor it to the flooring.") + visible_message("With a steely snap, bolts slide out of [src] and anchor it to the flooring.") else - visible_message("\red The anchoring bolts slide back into the depths of [src].") + visible_message("The anchoring bolts slide back into the depths of [src].") else to_chat(usr, "There is nothing to anchor to!") diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index c38c50ad40a..6ec90dc777c 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -179,7 +179,7 @@ if(do_mob(user, target, 50)) if(!affects(target)) to_chat(user, "Your piercing gaze fails to knock out [target].") - to_chat(target, "\blue [user]'s feeble gaze is ineffective.") + to_chat(target, "[user]'s feeble gaze is ineffective.") else to_chat(user, "Your piercing gaze knocks out [target].") to_chat(target, "You find yourself unable to move and barely able to speak.") @@ -488,7 +488,7 @@ if(!turfs.len) revert_cast(user) - to_chat(user, "\red You cannot find darkness to step to.") + to_chat(user, "You cannot find darkness to step to.") return perform(turfs, user = user) diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm index 489e68acec7..c57b7d531c7 100644 --- a/code/game/gamemodes/wizard/raginmages.dm +++ b/code/game/gamemodes/wizard/raginmages.dm @@ -61,11 +61,11 @@ message_admins("[wizard.current] went into crit in the wizard lair, another wizard is likely camping") end_squabble(get_area(wizard.current)) else - to_chat(wizard.current, "\red The Space Wizard Federation is upset with your performance and have terminated your employment.") + to_chat(wizard.current, "The Space Wizard Federation is upset with your performance and have terminated your employment.") wizard.current.gib() // *REAL* ACTION!! *REAL* DRAMA!! *REAL* BLOODSHED!! continue if(wizard.current.client && wizard.current.client.is_afk() > 10 * 60 * 10) // 10 minutes - to_chat(wizard.current, "\red The Space Wizard Federation is upset with your performance and have terminated your employment.") + to_chat(wizard.current, "The Space Wizard Federation is upset with your performance and have terminated your employment.") wizard.current.gib() // Let's keep the round moving continue if(!wizard.current.client) @@ -181,5 +181,5 @@ /datum/game_mode/wizard/raginmages/declare_completion() if(finished) feedback_set_details("round_end_result","loss - wizard killed") - to_chat(world, "\red The crew has managed to hold off the wizard attack! The Space Wizards Federation has been taught a lesson they will not soon forget!") + to_chat(world, " The crew has managed to hold off the wizard attack! The Space Wizards Federation has been taught a lesson they will not soon forget!") ..(1) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index fd554e03c85..78ea4f30233 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -319,7 +319,7 @@ user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) user.see_in_dark = 8 user.see_invisible = SEE_INVISIBLE_LEVEL_TWO - to_chat(user, "\blue The walls suddenly disappear.") + to_chat(user, "The walls suddenly disappear.") return 1 diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index c00e0436473..c29af281516 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -197,7 +197,7 @@ /datum/game_mode/wizard/declare_completion(var/ragin = 0) if(finished && !ragin) feedback_set_details("round_end_result","loss - wizard killed") - to_chat(world, "\red The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!") + to_chat(world, " The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!") ..() return 1 diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index a770084dbbc..2d51c8d5866 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -17,7 +17,7 @@ var/global/datum/controller/occupations/job_master occupations = list() var/list/all_jobs = subtypesof(/datum/job) if(!all_jobs.len) - to_chat(world, "\red \b Error setting up jobs, no job datums found") + to_chat(world, "Error setting up jobs, no job datums found") return 0 for(var/J in all_jobs) var/datum/job/job = new J() diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm index 2a99414cb0b..0b14960ddac 100644 --- a/code/game/jobs/whitelist.dm +++ b/code/game/jobs/whitelist.dm @@ -24,7 +24,7 @@ var/list/whitelist = list() if(check_rights(R_ADMIN, 0, M)) return 1 if(!dbcon.IsConnected()) - to_chat(usr, "\red Unable to connect to whitelist database. Please try again later.
") + to_chat(usr, "Unable to connect to whitelist database. Please try again later.
") return 0 else var/DBQuery/query = dbcon.NewQuery("SELECT job FROM [format_table_name("whitelist")] WHERE ckey='[M.key]'") @@ -69,7 +69,7 @@ var/list/whitelist = list() if(!alien_whitelist) return 0 if(!dbcon.IsConnected()) - to_chat(usr, "\red Unable to connect to whitelist database. Please try again later.
") + to_chat(usr, "Unable to connect to whitelist database. Please try again later.
") return 0 else var/DBQuery/query = dbcon.NewQuery("SELECT species FROM [format_table_name("whitelist")] WHERE ckey='[M.key]'") diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index eb610c771a7..fdbc8bd7b56 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -55,8 +55,8 @@ /obj/machinery/optable/attack_hand(mob/user as mob) if(HULK in usr.mutations) - to_chat(usr, text("\blue You destroy the table.")) - visible_message("\red [usr] destroys the operating table!") + to_chat(usr, text("You destroy the table.")) + visible_message("[usr] destroys the operating table!") src.density = 0 qdel(src) return diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 6ad0d3f3ecf..042fc56bf1e 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -45,7 +45,7 @@ if(user.machine == src) attack_hand(usr) else - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") return return diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index efa6a1ded81..061d1fdad5e 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -998,10 +998,10 @@ else if(allowed(usr) && !wires.IsIndexCut(AALARM_WIRE_IDSCAN)) locked = !locked - to_chat(user, "\blue You [ locked ? "lock" : "unlock"] the Air Alarm interface.") + to_chat(user, "You [ locked ? "lock" : "unlock"] the Air Alarm interface.") updateUsrDialog() else - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") return diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index f534a86f31c..d00128c51fa 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -76,9 +76,9 @@ obj/machinery/air_sensor to_chat(usr, "The [src] is bolted to the floor! You can't detach it like this.") return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "\blue You begin to unfasten \the [src]...") + to_chat(user, "You begin to unfasten \the [src]...") if(do_after(user, 40, target = src)) - user.visible_message("[user] unfastens \the [src].", "\blue You have unfastened \the [src].", "You hear ratchet.") + user.visible_message("[user] unfastens \the [src].", "You have unfastened \the [src].", "You hear ratchet.") new /obj/item/pipe_gsensor(src.loc) qdel(src) return 1 diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 2ffa9301dd7..d5595185cbf 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -339,14 +339,14 @@ update_flag /obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) if(iswelder(W) && src.destroyed) if(weld(W, user)) - to_chat(user, "\blue You salvage whats left of \the [src]") + to_chat(user, "You salvage whats left of \the [src]") var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(src.loc) M.amount = 3 qdel(src) return if(!istype(W, /obj/item/weapon/wrench) && !istype(W, /obj/item/weapon/tank) && !istype(W, /obj/item/device/analyzer) && !istype(W, /obj/item/device/pda)) - visible_message("\red [user] hits the [src] with a [W]!") + visible_message("[user] hits the [src] with a [W]!") src.health -= W.force src.add_fingerprint(user) healthcheck() @@ -479,7 +479,7 @@ update_flag else name = "canister" else - to_chat(usr, "\red As you attempted to rename it the pressure rose!") + to_chat(usr, "As you attempted to rename it the pressure rose!") if(href_list["choice"] == "Primary color") if(is_a_color(href_list["icon"],"prim")) diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index 51d4ebc595c..7ce0520f62b 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -124,11 +124,11 @@ if(!istype(W, /obj/item/weapon/wrench)) return ..() playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "\blue You begin to unfasten \the [src]...") + to_chat(user, "You begin to unfasten \the [src]...") if(do_after(user, 40, target = src)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ + "You have unfastened \the [src].", \ "You hear ratchet.") new /obj/item/pipe_meter(src.loc) qdel(src) diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index 01f9d022c57..51c6451b7c3 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -95,21 +95,21 @@ else if(istype(W, /obj/item/weapon/wrench)) if(connected_port) disconnect() - to_chat(user, "\blue You disconnect [name] from the port.") + to_chat(user, "You disconnect [name] from the port.") update_icon() return else var/obj/machinery/atmospherics/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/unary/portables_connector/) in loc if(possible_port) if(connect(possible_port)) - to_chat(user, "\blue You connect [name] to the port.") + to_chat(user, "You connect [name] to the port.") update_icon() return else - to_chat(user, "\blue [name] failed to connect to the port.") + to_chat(user, "[name] failed to connect to the port.") return else - to_chat(user, "\blue Nothing happens.") + to_chat(user, "Nothing happens.") return else if((istype(W, /obj/item/device/analyzer)) && get_dist(user, src) <= 1) diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 909d53be265..76a9518c98b 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -56,20 +56,20 @@ loc = sanitize(copytext(loc, 1, MAX_MESSAGE_LEN)) if(!loc) - to_chat(src, "\red Must supply a location name") + to_chat(src, "Must supply a location name") return if(stored_locations.len >= max_locations) - to_chat(src, "\red Cannot store additional locations. Remove one first") + to_chat(src, "Cannot store additional locations. Remove one first") return if(loc in stored_locations) - to_chat(src, "\red There is already a stored location by this name") + to_chat(src, "There is already a stored location by this name") return var/L = get_turf(eyeobj) if(InvalidTurf(get_turf(L))) - to_chat(src, "\red Unable to store this location") + to_chat(src, "Unable to store this location") return stored_locations[loc] = L @@ -84,7 +84,7 @@ set desc = "Returns to the selected camera location" if(!(loc in stored_locations)) - to_chat(src, "\red Location [loc] not found") + to_chat(src, "Location [loc] not found") return var/L = stored_locations[loc] @@ -96,7 +96,7 @@ set desc = "Deletes the selected camera location" if(!(loc in stored_locations)) - to_chat(src, "\red Location [loc] not found") + to_chat(src, "Location [loc] not found") return stored_locations.Remove(loc) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index bca8a6d8aa2..b17ed18b826 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -39,14 +39,14 @@ if(istype(W, /obj/item/weapon/stock_parts/cell) && anchored) if(charging) - to_chat(user, "\red There is already a cell in the charger.") + to_chat(user, "There is already a cell in the charger.") return else var/area/a = loc.loc // Gets our locations location, like a dream within a dream if(!isarea(a)) return if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power! - to_chat(user, "\red The [name] blinks red as you try to insert the cell!") + to_chat(user, "The [name] blinks red as you try to insert the cell!") return user.drop_item() @@ -57,7 +57,7 @@ updateicon() else if(istype(W, /obj/item/weapon/wrench)) if(charging) - to_chat(user, "\red Remove the cell first!") + to_chat(user, "Remove the cell first!") return anchored = !anchored diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index af452dbdbcd..9255c38d3db 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -367,14 +367,14 @@ //Removing cloning pod biomass else if(istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat)) - to_chat(user, "\blue \The [src] processes \the [W].") + to_chat(user, "\The [src] processes \the [W].") biomass += BIOMASS_MEAT_AMOUNT user.drop_item() qdel(W) return else if(istype(W, /obj/item/weapon/wrench)) if(locked && (anchored || occupant)) - to_chat(user, "\red Can not do that while [src] is in use.") + to_chat(user, "Can not do that while [src] is in use.") else if(anchored) anchored = 0 diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index aa834941d78..874588413bd 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -166,7 +166,7 @@ if(!emagged) playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) emagged = 1 - to_chat(user, "\blue You vastly increase projector power and override the safety and security protocols.") + to_chat(user, "You vastly increase projector power and override the safety and security protocols.") to_chat(user, "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call Nanotrasen maintenance and do not use the simulator.") log_game("[key_name(usr)] emagged the Holodeck Control Computer") src.updateUsrDialog() @@ -279,7 +279,7 @@ if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve return for(var/mob/M in range(3,src)) - M.show_message("\b ERROR. Recalibrating projetion apparatus.") + M.show_message("ERROR. Recalibrating projection apparatus.") last_change = world.time return diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 29e315ec001..ff1fe50ec97 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -24,7 +24,7 @@ if(istype(P, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 20, target = src)) - to_chat(user, "\blue You wrench the frame into place.") + to_chat(user, "You wrench the frame into place.") anchored = 1 state = 1 if(istype(P, /obj/item/weapon/weldingtool)) @@ -35,31 +35,31 @@ playsound(loc, 'sound/items/Welder.ogg', 50, 1) if(do_after(user, 20, target = src)) if(!src || !WT.remove_fuel(0, user)) return - to_chat(user, "\blue You deconstruct the frame.") + to_chat(user, "You deconstruct the frame.") new /obj/item/stack/sheet/plasteel(loc, 4) qdel(src) if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 20, target = src)) - to_chat(user, "\blue You unfasten the frame.") + to_chat(user, "You unfasten the frame.") anchored = 0 state = 0 if(istype(P, /obj/item/weapon/circuitboard/aicore) && !circuit) playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) - to_chat(user, "\blue You place the circuit board inside the frame.") + to_chat(user, "You place the circuit board inside the frame.") icon_state = "1" circuit = P user.drop_item() P.loc = src if(istype(P, /obj/item/weapon/screwdriver) && circuit) playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) - to_chat(user, "\blue You screw the circuit board into place.") + to_chat(user, "You screw the circuit board into place.") state = 2 icon_state = "2" if(istype(P, /obj/item/weapon/crowbar) && circuit) playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) - to_chat(user, "\blue You remove the circuit board.") + to_chat(user, "You remove the circuit board.") state = 1 icon_state = "0" circuit.loc = loc @@ -67,7 +67,7 @@ if(2) if(istype(P, /obj/item/weapon/screwdriver) && circuit) playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) - to_chat(user, "\blue You unfasten the circuit board.") + to_chat(user, "You unfasten the circuit board.") state = 1 icon_state = "1" if(istype(P, /obj/item/stack/cable_coil)) @@ -76,7 +76,7 @@ if(do_after(user, 20, target = src)) P:amount -= 5 if(!P:amount) qdel(P) - to_chat(user, "\blue You add cables to the frame.") + to_chat(user, "You add cables to the frame.") state = 3 icon_state = "3" if(3) @@ -85,7 +85,7 @@ to_chat(user, "Get that brain out of there first") else playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1) - to_chat(user, "\blue You remove the cables.") + to_chat(user, "You remove the cables.") state = 2 icon_state = "2" var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) @@ -98,7 +98,7 @@ if(P) P:amount -= 2 if(!P:amount) qdel(P) - to_chat(user, "\blue You put in the glass panel.") + to_chat(user, "You put in the glass panel.") state = 4 icon_state = "4" @@ -122,14 +122,14 @@ if(istype(P, /obj/item/device/mmi) || istype(P, /obj/item/device/mmi/posibrain)) if(!P:brainmob) - to_chat(user, "\red Sticking an empty [P] into the frame would sort of defeat the purpose.") + to_chat(user, "Sticking an empty [P] into the frame would sort of defeat the purpose.") return if(P:brainmob.stat == 2) - to_chat(user, "\red Sticking a dead [P] into the frame would sort of defeat the purpose.") + to_chat(user, "Sticking a dead [P] into the frame would sort of defeat the purpose.") return if(jobban_isbanned(P:brainmob, "AI") || jobban_isbanned(P:brainmob,"nonhumandept")) - to_chat(user, "\red This [P] does not seem to fit.") + to_chat(user, "This [P] does not seem to fit.") return if(istype(P, /obj/item/device/mmi/syndie)) @@ -148,7 +148,7 @@ if(istype(P, /obj/item/weapon/crowbar) && brain) playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) - to_chat(user, "\blue You remove the brain.") + to_chat(user, "You remove the brain.") brain.loc = loc brain = null icon_state = "3" @@ -156,7 +156,7 @@ if(4) if(istype(P, /obj/item/weapon/crowbar)) playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) - to_chat(user, "\blue You remove the glass panel.") + to_chat(user, "You remove the glass panel.") state = 3 if(brain) icon_state = "3b" @@ -198,19 +198,19 @@ card.transfer_ai("INACTIVE","AICARD",src,user) else if(istype(W, /obj/item/weapon/wrench)) if(anchored) - user.visible_message("\blue \The [user] starts to unbolt \the [src] from the plating...") + user.visible_message("\The [user] starts to unbolt \the [src] from the plating...") if(!do_after(user,40, target = src)) - user.visible_message("\blue \The [user] decides not to unbolt \the [src].") + user.visible_message("\The [user] decides not to unbolt \the [src].") return - user.visible_message("\blue \The [user] finishes unfastening \the [src]!") + user.visible_message("\The [user] finishes unfastening \the [src]!") anchored = 0 return else - user.visible_message("\blue \The [user] starts to bolt \the [src] to the plating...") + user.visible_message("\The [user] starts to bolt \the [src] to the plating...") if(!do_after(user,40, target = src)) - user.visible_message("\blue \The [user] decides not to bolt \the [src].") + user.visible_message("\The [user] decides not to bolt \the [src].") return - user.visible_message("\blue \The [user] finishes fastening down \the [src]!") + user.visible_message("\The [user] finishes fastening down \the [src]!") anchored = 1 return else diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 8ccc505f39f..45135203672 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -326,7 +326,7 @@ var/time_last_changed_position = 0 jobdatum = J break if(!jobdatum) - to_chat(usr, "\red No log exists for this job: [t1]") + to_chat(usr, "No log exists for this job: [t1]") return access = jobdatum.get_access() diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 71f9760c0a6..88bde80be07 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -120,12 +120,12 @@ for(var/obj/C in src) C.loc = src.loc if(src.stat & BROKEN) - to_chat(user, "\blue The broken glass falls out.") + to_chat(user, "The broken glass falls out.") new /obj/item/weapon/shard(loc) A.state = 3 A.icon_state = "3" else - to_chat(user, "\blue You disconnect the monitor.") + to_chat(user, "You disconnect the monitor.") A.state = 4 A.icon_state = "4" qdel(src) diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm index 13f07773404..167949be5ec 100644 --- a/code/game/machinery/computer/honkputer.dm +++ b/code/game/machinery/computer/honkputer.dm @@ -104,12 +104,12 @@ for(var/obj/C in src) C.loc = src.loc if(src.stat & BROKEN) - to_chat(user, "\blue The broken glass falls out.") + to_chat(user, "The broken glass falls out.") new /obj/item/weapon/shard( src.loc ) A.state = 3 A.icon_state = "3" else - to_chat(user, "\blue You disconnect the monitor.") + to_chat(user, "You disconnect the monitor.") A.state = 4 A.icon_state = "4" qdel(src) diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 125a5fc06ad..0c81ac958e4 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -22,9 +22,9 @@ opened = !opened if(opened) - to_chat(usr, "\blue The access panel is now open.") + to_chat(usr, "The access panel is now open.") else - to_chat(usr, "\blue The access panel is now closed.") + to_chat(usr, "The access panel is now closed.") return diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index be35a85b7a4..7c647b61e90 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -96,7 +96,7 @@ I.loc = src inserted_id = I else - to_chat(usr, "\red No valid ID.") + to_chat(usr, "No valid ID.") if("1") inserted_id.loc = get_step(src,get_turf(usr)) inserted_id = null diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 5235fffd9ba..ec41de193b8 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -146,7 +146,7 @@ if(!target || !istype(target)) return - message_admins("\blue [key_name_admin(usr)] emagged [key_name_admin(target)] using robotic console!") + message_admins("[key_name_admin(usr)] emagged [key_name_admin(target)] using robotic console!") log_game("[key_name(usr)] emagged [key_name(target)] using robotic console!") target.emagged = 1 to_chat(target, "Failsafe protocols overriden. New tools available.") diff --git a/code/game/machinery/computer/salvage_ship.dm b/code/game/machinery/computer/salvage_ship.dm index 6ee8f750b41..444db205e80 100644 --- a/code/game/machinery/computer/salvage_ship.dm +++ b/code/game/machinery/computer/salvage_ship.dm @@ -46,7 +46,7 @@ /obj/machinery/computer/salvage_ship/attack_hand(mob/user as mob) if(!allowed(user)) - to_chat(user, "\red Access Denied") + to_chat(user, "Access Denied") return user.set_machine(src) diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm index b586fd4194a..d50d0355d5c 100644 --- a/code/game/machinery/computer/specops_shuttle.dm +++ b/code/game/machinery/computer/specops_shuttle.dm @@ -89,7 +89,7 @@ var/specops_shuttle_timeleft = 0 for(var/turf/T in get_area_turfs(end_location) ) var/mob/M = locate(/mob) in T - to_chat(M, "\red You have arrived at Central Command. Operation has ended!") + to_chat(M, "You have arrived at Central Command. Operation has ended!") specops_shuttle_at_station = 0 @@ -137,7 +137,7 @@ var/specops_shuttle_timeleft = 0 if(specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return if(!specops_can_move()) - to_chat(usr, "\red The Special Operations shuttle is unable to leave.") + to_chat(usr, "The Special Operations shuttle is unable to leave.") return //Begin Marauder launchpad. @@ -231,7 +231,7 @@ var/specops_shuttle_timeleft = 0 for(var/turf/T in get_area_turfs(end_location) ) var/mob/M = locate(/mob) in T - to_chat(M, "\red You have arrived to [station_name]. Commence operation!") + to_chat(M, "You have arrived to [station_name]. Commence operation!") for(var/obj/machinery/computer/specops_shuttle/S in world) S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY @@ -247,23 +247,23 @@ var/specops_shuttle_timeleft = 0 return 1 /obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob) - to_chat(user, "\red Access Denied.") + to_chat(user, "Access Denied.") return 1 /obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob, params) if(istype(I,/obj/item/weapon/card/emag)) - to_chat(user, "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals.") + to_chat(user, "The electronic systems in this console are far too advanced for your primitive hacking peripherals.") else return attack_hand(user) /obj/machinery/computer/specops_shuttle/attack_hand(var/mob/user as mob) if(!allowed(user)) - to_chat(user, "\red Access Denied.") + to_chat(user, "Access Denied.") return //Commented out so admins can do shenanigans at their leisure. Also makes the force-spawned admin ERTs able to use the shuttle. // if(sent_strike_team == 0 && send_emergency_team == 0) -// to_chat(usr, "\red The strike team has not yet deployed.") +// to_chat(usr, "The strike team has not yet deployed.") // return if(..()) @@ -294,14 +294,14 @@ var/specops_shuttle_timeleft = 0 if(!specops_shuttle_at_station|| specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return if(!specops_can_move()) - to_chat(usr, "\blue Central Command will not allow the Special Operations shuttle to return yet.") + to_chat(usr, "Central Command will not allow the Special Operations shuttle to return yet.") if(world.timeofday <= specops_shuttle_timereset) if(((world.timeofday - specops_shuttle_timereset)/10) > 60) - to_chat(usr, "\blue [-((world.timeofday - specops_shuttle_timereset)/10)/60] minutes remain!") - to_chat(usr, "\blue [-(world.timeofday - specops_shuttle_timereset)/10] seconds remain!") + to_chat(usr, "[-((world.timeofday - specops_shuttle_timereset)/10)/60] minutes remain!") + to_chat(usr, "[-(world.timeofday - specops_shuttle_timereset)/10] seconds remain!") return - to_chat(usr, "\blue The Special Operations shuttle will arrive at Central Command in [(SPECOPS_MOVETIME/10)] seconds.") + to_chat(usr, "The Special Operations shuttle will arrive at Central Command in [(SPECOPS_MOVETIME/10)] seconds.") temp += "Shuttle departing.

OK" updateUsrDialog() @@ -315,10 +315,10 @@ var/specops_shuttle_timeleft = 0 if(specops_shuttle_at_station || specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return if(!specops_can_move()) - to_chat(usr, "\red The Special Operations shuttle is unable to leave.") + to_chat(usr, "The Special Operations shuttle is unable to leave.") return - to_chat(usr, "\blue The Special Operations shuttle will arrive on [station_name] in [(SPECOPS_MOVETIME/10)] seconds.") + to_chat(usr, "The Special Operations shuttle will arrive on [station_name] in [(SPECOPS_MOVETIME/10)] seconds.") temp += "Shuttle departing.

OK" updateUsrDialog() diff --git a/code/game/machinery/computer/store.dm b/code/game/machinery/computer/store.dm index 31cfb8bfa8c..895bdd6de4a 100644 --- a/code/game/machinery/computer/store.dm +++ b/code/game/machinery/computer/store.dm @@ -140,8 +140,8 @@ td.cost.toomuch { updateUsrDialog() return if(!centcomm_store.PlaceOrder(usr,itemID)) - to_chat(usr, "\red Unable to charge your account.") + to_chat(usr, "Unable to charge your account.") else - to_chat(usr, "\blue You've successfully purchased the item. It should be in your hands or on the floor.") + to_chat(usr, "You've successfully purchased the item. It should be in your hands or on the floor.") src.updateUsrDialog() return diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index bba953b64e1..14a3fdb72ca 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -60,7 +60,7 @@ var/syndicate_elite_shuttle_timeleft = 0 if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return if(!syndicate_elite_can_move()) - to_chat(usr, "\red The Syndicate Elite shuttle is unable to leave.") + to_chat(usr, "The Syndicate Elite shuttle is unable to leave.") return sleep(600) @@ -172,7 +172,7 @@ var/syndicate_elite_shuttle_timeleft = 0 for(var/turf/T in get_area_turfs(end_location) ) var/mob/M = locate(/mob) in T - to_chat(M, "\red You have arrived to [station_name]. Commence operation!") + to_chat(M, "You have arrived to [station_name]. Commence operation!") /proc/syndicate_elite_can_move() if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return 0 @@ -182,22 +182,22 @@ var/syndicate_elite_shuttle_timeleft = 0 return attack_hand(user) /obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob) - to_chat(user, "\red Access Denied.") + to_chat(user, "Access Denied.") return 1 /obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob, params) if(istype(I,/obj/item/weapon/card/emag)) - to_chat(user, "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals.") + to_chat(user, "The electronic systems in this console are far too advanced for your primitive hacking peripherals.") else return attack_hand(user) /obj/machinery/computer/syndicate_elite_shuttle/attack_hand(var/mob/user as mob) if(!allowed(user)) - to_chat(user, "\red Access Denied.") + to_chat(user, "Access Denied.") return // if(sent_syndicate_strike_team == 0) -// to_chat(usr, "\red The strike team has not yet deployed.") +// to_chat(usr, "The strike team has not yet deployed.") // return if(..()) @@ -227,17 +227,17 @@ var/syndicate_elite_shuttle_timeleft = 0 if(href_list["sendtodock"]) if(!syndicate_elite_shuttle_at_station|| syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return - to_chat(usr, "\blue The Syndicate will not allow the Elite Squad shuttle to return.") + to_chat(usr, "The Syndicate will not allow the Elite Squad shuttle to return.") return else if(href_list["sendtostation"]) if(syndicate_elite_shuttle_at_station || syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return if(!specops_can_move()) - to_chat(usr, "\red The Syndicate Elite shuttle is unable to leave.") + to_chat(usr, "The Syndicate Elite shuttle is unable to leave.") return - to_chat(usr, "\blue The Syndicate Elite shuttle will arrive on [station_name] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.") + to_chat(usr, "The Syndicate Elite shuttle will arrive on [station_name] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.") temp = "Shuttle departing.

OK" updateUsrDialog() diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index de5d69c2bbc..91ed79b1304 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -265,7 +265,7 @@ /obj/machinery/atmospherics/unary/cryo_cell/attackby(var/obj/item/weapon/G as obj, var/mob/user as mob, params) if(istype(G, /obj/item/weapon/reagent_containers/glass)) if(beaker) - to_chat(user, "\red A beaker is already loaded into the machine.") + to_chat(user, "A beaker is already loaded into the machine.") return if(!user.drop_item()) to_chat(user, "The [G] is stuck to you!") @@ -415,10 +415,10 @@ to_chat(usr, "The cryo cell is already occupied!") return if(M.abiotic()) - to_chat(usr, "\red Subject may not have abiotic items on.") + to_chat(usr, "Subject may not have abiotic items on.") return if(!node) - to_chat(usr, "\red The cell is not correctly connected to its pipe network!") + to_chat(usr, "The cell is not correctly connected to its pipe network!") return M.stop_pulling() M.forceMove(src) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index b54a2e88a34..1ed19123e52 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -65,11 +65,11 @@ for reference: /obj/structure/barricade/attackby(obj/item/W as obj, mob/user as mob, params) if(istype(W, stacktype)) if(src.health < src.maxhealth) - visible_message("\red [user] begins to repair the [src]!") + visible_message("[user] begins to repair the [src]!") if(do_after(user,20, target = src)) src.health = src.maxhealth W:use(1) - visible_message("\red [user] repairs the [src]!") + visible_message("[user] repairs the [src]!") return else return @@ -189,7 +189,7 @@ for reference: var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(2, 1, src) s.start() - visible_message("\red BZZzZZzZZzZT") + visible_message("BZZzZZzZZzZT") return return else if(istype(W, /obj/item/weapon/wrench)) @@ -197,12 +197,12 @@ for reference: src.health = src.maxhealth src.emagged = 0 src.req_access = list(access_security) - visible_message("\red [user] repairs the [src]!") + visible_message("[user] repairs the [src]!") return else if(src.emagged > 0) src.emagged = 0 src.req_access = list(access_security) - visible_message("\red [user] repairs the [src]!") + visible_message("[user] repairs the [src]!") return return else @@ -224,14 +224,14 @@ for reference: var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(2, 1, src) s.start() - visible_message("\red BZZzZZzZZzZT") + visible_message("BZZzZZzZZzZT") else if(src.emagged == 1) src.emagged = 2 to_chat(user, "You short out the anchoring mechanism on the [src].") var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(2, 1, src) s.start() - visible_message("\red BZZzZZzZZzZT") + visible_message("BZZzZZzZZzZT") ex_act(severity) switch(severity) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 549c99dfbd1..3112fcb93e8 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -327,7 +327,7 @@ About the new airlock wires panel: * An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires. * one wire from the ID scanner. Sending a pulse through this flashes the red light on the door (if the door has power). If you cut this wire, the door will stop recognizing valid IDs. (If the door has 0000 access, it still opens and closes, though) -* two wires for power. Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be \red open, but bolts-raising will not work. Cutting these wires may electrocute the user. +* two wires for power. Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be open, but bolts-raising will not work. Cutting these wires may electrocute the user. * one wire for door bolts. Sending a pulse through this drops door bolts (whether the door is powered or not) or raises them (if it is). Cutting this wire also drops the door bolts, and mending it does not raise them. If the wire is cut, trying to raise the door bolts will not work. * two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user. * one wire for opening the door. Sending a pulse through this while the door has power makes it open the door if no access is required. @@ -658,14 +658,14 @@ About the new airlock wires panel: if(H.getBrainLoss() >= 60) playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) if(!istype(H.head, /obj/item/clothing/head/helmet)) - visible_message("\red [user] headbutts the airlock.") + visible_message("[user] headbutts the airlock.") var/obj/item/organ/external/affecting = H.get_organ("head") H.Stun(5) H.Weaken(5) if(affecting.take_damage(10, 0)) H.UpdateDamageIcon() else - visible_message("\red [user] headbutts the airlock. Good thing they're wearing a helmet.") + visible_message("[user] headbutts the airlock. Good thing they're wearing a helmet.") return if(src.p_open) @@ -835,7 +835,7 @@ About the new airlock wires panel: playsound(loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.") if(do_after(user,40, target = src)) - to_chat(user, "\blue You removed the airlock electronics!") + to_chat(user, "You removed the airlock electronics!") var/obj/structure/door_assembly/da = new assembly_type(loc) da.anchored = 1 @@ -869,9 +869,9 @@ About the new airlock wires panel: qdel(src) return else if(arePowerSystemsOn()) - to_chat(user, "\blue The airlock's motors resist your efforts to force it.") + to_chat(user, "The airlock's motors resist your efforts to force it.") else if(locked) - to_chat(user, "\blue The airlock's bolts prevent it from being forced.") + to_chat(user, "The airlock's bolts prevent it from being forced.") else if( !welded && !operating ) if(density) if(beingcrowbarred == 0) //being fireaxe'd @@ -879,7 +879,7 @@ About the new airlock wires panel: if(F.wielded) spawn(0) open(1) else - to_chat(user, "\red You need to be wielding \the [C] to do that.") + to_chat(user, "You need to be wielding \the [C] to do that.") else spawn(0) open(1) else @@ -888,7 +888,7 @@ About the new airlock wires panel: if(F.wielded) spawn(0) close(1) else - to_chat(user, "\red You need to be wielding \the [C] to do that.") + to_chat(user, "You need to be wielding \the [C] to do that.") else spawn(0) close(1) else diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index 4904c8795fa..254392c1069 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -261,7 +261,7 @@ obj/machinery/access_button/attackby(obj/item/I as obj, mob/user as mob, params) obj/machinery/access_button/attack_hand(mob/user) add_fingerprint(usr) if(!allowed(user)) - to_chat(user, "\red Access Denied") + to_chat(user, "Access Denied") else if(radio_connection) var/datum/signal/signal = new diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 3e77a7548b3..d901947ad40 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -91,9 +91,9 @@ FIRE ALARM if(istype(W, /obj/item/device/multitool)) detecting = !detecting if(detecting) - user.visible_message("\red [user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.") + user.visible_message("[user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.") else - user.visible_message("\red [user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.") + user.visible_message("[user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.") else if(istype(W, /obj/item/weapon/wirecutters)) // cutting the wires out to_chat(user, "You cut the wires!") diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 2cf45577183..1b685f50197 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -43,9 +43,9 @@ add_fingerprint(user) disable = !disable if(disable) - user.visible_message("\red [user] has disconnected the [src]'s flashbulb!", "\red You disconnect the [src]'s flashbulb!") + user.visible_message("[user] has disconnected the [src]'s flashbulb!", "You disconnect the [src]'s flashbulb!") if(!disable) - user.visible_message("\red [user] has connected the [src]'s flashbulb!", "\red You connect the [src]'s flashbulb!") + user.visible_message("[user] has connected the [src]'s flashbulb!", "You connect the [src]'s flashbulb!") //Let the AI trigger them directly. /obj/machinery/flasher/attack_ai(mob/user) @@ -101,11 +101,11 @@ anchored = !anchored if(!anchored) - user.show_message(text("\red [src] can now be moved.")) + user.show_message(text("[src] can now be moved.")) overlays.Cut() else if(anchored) - user.show_message(text("\red [src] is now secured.")) + user.show_message(text("[src] is now secured.")) overlays += "[base_state]-s" // Flasher button diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index cee7706d256..1b5587d9fe4 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -59,7 +59,7 @@ if(on) on = 0 - to_chat(user, "\blue You turn off the light") + to_chat(user, "You turn off the light") set_light(0) else if(!cell) @@ -67,7 +67,7 @@ if(cell.charge <= 0) return on = 1 - to_chat(user, "\blue You turn on the light") + to_chat(user, "You turn on the light") set_light(brightness_on) updateicon() diff --git a/code/game/machinery/guestpass.dm b/code/game/machinery/guestpass.dm index e3f0abad69a..bc70868cf8f 100644 --- a/code/game/machinery/guestpass.dm +++ b/code/game/machinery/guestpass.dm @@ -182,7 +182,7 @@ pass.reason = reason pass.name = "guest pass #[number]" else - to_chat(usr, "\red Cannot issue pass without issuing ID.") + to_chat(usr, "Cannot issue pass without issuing ID.") updateUsrDialog() return diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 7cb51574a60..219f1613d99 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -74,10 +74,10 @@ add_fingerprint(user) src.disable = !src.disable if(src.disable) - user.visible_message("\red [user] has disabled the [src]!", "\red You disable the connection to the [src].") + user.visible_message("[user] has disabled the [src]!", "You disable the connection to the [src].") icon_state = "[base_state]-d" if(!src.disable) - user.visible_message("\red [user] has reconnected the [src]!", "\red You fix the connection to the [src].") + user.visible_message("[user] has reconnected the [src]!", "You fix the connection to the [src].") if(src.powered()) icon_state = "[base_state]" else diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index e62e54a3a78..398fc7d34ac 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -260,13 +260,13 @@ Class Procs: if(!O) return 1 if(!canLink(O)) - to_chat(usr, "\red You can't link with that device.") + to_chat(usr, "You can't link with that device.") return 1 if(unlinkFrom(usr, O)) - to_chat(usr, "\blue A green light flashes on \the [P], confirming the link was removed.") + to_chat(usr, "A green light flashes on \the [P], confirming the link was removed.") else - to_chat(usr, "\red A red light flashes on \the [P]. It appears something went wrong when unlinking the two devices.") + to_chat(usr, "A red light flashes on \the [P]. It appears something went wrong when unlinking the two devices.") update_mt_menu=1 if("link" in href_list) @@ -274,25 +274,25 @@ Class Procs: if(!O) return 1 if(!canLink(O,href_list)) - to_chat(usr, "\red You can't link with that device.") + to_chat(usr, "You can't link with that device.") return 1 if(isLinkedWith(O)) - to_chat(usr, "\red A red light flashes on \the [P]. The two devices are already linked.") + to_chat(usr, "A red light flashes on \the [P]. The two devices are already linked.") return 1 if(linkWith(usr, O, href_list)) - to_chat(usr, "\blue A green light flashes on \the [P], confirming the link was added.") + to_chat(usr, "A green light flashes on \the [P], confirming the link was added.") else - to_chat(usr, "\red A red light flashes on \the [P]. It appears something went wrong when linking the two devices.") + to_chat(usr, "A red light flashes on \the [P]. It appears something went wrong when linking the two devices.") update_mt_menu=1 if("buffer" in href_list) P.buffer = src - to_chat(usr, "\blue A green light flashes, and the device appears in the multitool buffer.") + to_chat(usr, "A green light flashes, and the device appears in the multitool buffer.") update_mt_menu=1 if("flush" in href_list) - to_chat(usr, "\blue A green light flashes, and the device disappears from the multitool buffer.") + to_chat(usr, "A green light flashes, and the device disappears from the multitool buffer.") P.buffer = null update_mt_menu=1 diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index bf2eedeaf23..b0d5f08c44c 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -623,7 +623,7 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user.visible_message( \ "[user] fastens the [src].", \ - "\blue You have fastened the [src].", \ + "You have fastened the [src].", \ "You hear ratchet.") qdel(src) // remove the pipe item @@ -643,11 +643,11 @@ if(!istype(W, /obj/item/weapon/wrench)) return ..() if(!locate(/obj/machinery/atmospherics/pipe, src.loc)) - to_chat(user, "\red You need to fasten it to a pipe") + to_chat(user, "You need to fasten it to a pipe") return 1 new/obj/machinery/meter( src.loc ) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "\blue You have fastened the meter to the pipe") + to_chat(user, "You have fastened the meter to the pipe") qdel(src) /obj/item/pipe_gsensor @@ -664,7 +664,7 @@ return ..() new/obj/machinery/air_sensor( src.loc ) playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "\blue You have fastened the gas sensor") + to_chat(user, "You have fastened the gas sensor") qdel(src) #undef PIPE_SIMPLE_STRAIGHT diff --git a/code/game/machinery/podmen.dm b/code/game/machinery/podmen.dm index c0ca39c3e12..af24a856115 100644 --- a/code/game/machinery/podmen.dm +++ b/code/game/machinery/podmen.dm @@ -76,9 +76,9 @@ Growing it to term with nothing injected will grab a ghost from the observers. * if(beingharvested) - to_chat(user, ("\red You can only harvest the pod once!")) + to_chat(user, ("You can only harvest the pod once!")) else - user.visible_message("\blue [user] carefully begins to open the pod...","\blue You carefully begin to open the pod...") + user.visible_message("[user] carefully begins to open the pod...","You carefully begin to open the pod...") beingharvested = 1 //If a sample is injected (and revival is allowed) the plant will be controlled by the original donor. @@ -123,7 +123,7 @@ Growing it to term with nothing injected will grab a ghost from the observers. * ticker.mode:update_all_cult_icons() //So the icon actually appears // -- End mode specific stuff - to_chat(podman, "\green You awaken slowly, feeling your sap stir into sluggish motion as the warm air caresses your bark.") + to_chat(podman, "You awaken slowly, feeling your sap stir into sluggish motion as the warm air caresses your bark.") if(source && ckey && podman.ckey == ckey) to_chat(podman, "Memories of a life as [source] drift oddly through a mind unsuited for them, like a skin of oil over a fathomless lake.") to_chat(podman, "You are now one of the Dionaea, a race of drifting interstellar plantlike creatures that sometimes share their seeds with human traders.") @@ -132,5 +132,5 @@ Growing it to term with nothing injected will grab a ghost from the observers. * else new /mob/living/carbon/monkey/diona(parent.loc) - parent.visible_message("\blue The pod disgorges a fully-formed plant creature!") + parent.visible_message("The pod disgorges a fully-formed plant creature!") parent.update_tray() diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm index e41dfd2f79f..a8806c3296c 100644 --- a/code/game/machinery/programmable_unloader.dm +++ b/code/game/machinery/programmable_unloader.dm @@ -199,11 +199,11 @@ if(istype(I,/obj/item/weapon/wrench)) // code borrowed from pipe dispenser if(unwrenched==0) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "\blue You begin to unfasten \the [src] from the floor...") + to_chat(user, "You begin to unfasten \the [src] from the floor...") if(do_after(user, 40, target = src)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src]. Now it can be pulled somewhere else.", \ + "You have unfastened \the [src]. Now it can be pulled somewhere else.", \ "You hear ratchet.") src.anchored = 0 src.stat |= MAINT @@ -212,11 +212,11 @@ usr << browse(null, "window=pipedispenser") else /* unwrenched */ playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - to_chat(user, "\blue You begin to fasten \the [src] to the floor...") + to_chat(user, "You begin to fasten \the [src] to the floor...") if(do_after(user, 20, target = src)) user.visible_message( \ "[user] fastens \the [src].", \ - "\blue You fastened \the [src] into place.", \ + "You fastened \the [src] into place.", \ "You hear ratchet.") src.anchored = 1 src.input = get_step(src.loc,src.indir) @@ -237,9 +237,9 @@ to_chat(user, "You open \the [src]'s maintenance panel.") if(istype(I,/obj/item/weapon/crowbar)) if(open) - to_chat(user, "\blue You begin to pry out the [src]'s circuits.") + to_chat(user, "You begin to pry out the [src]'s circuits.") if(do_after(user,40, target = src)) - to_chat(user, "\blue You remove the circuitboard.") + to_chat(user, "You remove the circuitboard.") circuit_removed = 1 use_power = 0 on = 0 @@ -515,7 +515,7 @@ if(damage < 5) visible_message("[H] gives \the [src] a weak punch.") if(prob(10)) - visible_message("\blue \The [src] feints at [H], as though mocking \him.") + visible_message("\The [src] feints at [H], as though mocking \him.") else if(damage < 10) visible_message("[H] hits \the [src] with a solid [pick("punch","jab","smack")].") else if(damage < 15) @@ -532,11 +532,11 @@ damage -= 5 if(newsleep) if(emagged) - visible_message("\red \The [src]'s lights glow a bloodthirsty red. It refuses to stop!") + visible_message("\The [src]'s lights glow a bloodthirsty red. It refuses to stop!") sleep = 0 else sleep += newsleep - visible_message("\blue \The [src]'s lights dim for a moment and it beeps, signifying a valid hit.") + visible_message("\The [src]'s lights dim for a moment and it beeps, signifying a valid hit.") playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) return diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 6db7199a7f0..7db5b4797be 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -28,10 +28,10 @@ // Checks to make sure he's not in space doing it, and that the area got proper power. var/area/a = get_area(src) if(!isarea(a)) - to_chat(user, "\red The [name] blinks red as you try to insert the item!") + to_chat(user, "The [name] blinks red as you try to insert the item!") return if(a.power_equip == 0 && a.requires_power) - to_chat(user, "\red The [name] blinks red as you try to insert the item!") + to_chat(user, "The [name] blinks red as you try to insert the item!") return if(istype(G, /obj/item/weapon/gun/energy)) @@ -53,7 +53,7 @@ update_icon() else if(istype(G, /obj/item/weapon/wrench)) if(charging) - to_chat(user, "\red Remove the weapon first!") + to_chat(user, "Remove the weapon first!") return anchored = !anchored to_chat(user, "You [anchored ? "attached" : "detached"] the recharger.") diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index a3f7ee5189a..fed3cd03768 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -49,7 +49,7 @@ if(src.health <= 0) - visible_message("\blue The [src] dissipates") + visible_message("The [src] dissipates") qdel(src) return @@ -62,7 +62,7 @@ health -= Proj.damage ..() if(health <=0) - visible_message("\blue The [src] dissipates") + visible_message("The [src] dissipates") qdel(src) return opacity = 1 @@ -109,7 +109,7 @@ //Handle the destruction of the shield if(src.health <= 0) - visible_message("\blue The [src] dissipates") + visible_message("The [src] dissipates") qdel(src) return @@ -218,14 +218,14 @@ return if(src.active) - user.visible_message("\blue [bicon(src)] [user] deactivated the shield generator.", \ - "\blue [bicon(src)] You deactivate the shield generator.", \ + user.visible_message("[bicon(src)] [user] deactivated the shield generator.", \ + "[bicon(src)] You deactivate the shield generator.", \ "You hear heavy droning fade out.") src.shields_down() else if(anchored) - user.visible_message("\blue [bicon(src)] [user] activated the shield generator.", \ - "\blue [bicon(src)] You activate the shield generator.", \ + user.visible_message("[bicon(src)] [user] activated the shield generator.", \ + "[bicon(src)] You activate the shield generator.", \ "You hear heavy droning.") src.shields_up() else @@ -240,22 +240,22 @@ else if(istype(W, /obj/item/weapon/screwdriver)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) if(is_open) - to_chat(user, "\blue You close the panel.") + to_chat(user, "You close the panel.") is_open = 0 else - to_chat(user, "\blue You open the panel and expose the wiring.") + to_chat(user, "You open the panel and expose the wiring.") is_open = 1 else if(istype(W, /obj/item/stack/cable_coil) && malfunction && is_open) var/obj/item/stack/cable_coil/coil = W - to_chat(user, "\blue You begin to replace the wires.") + to_chat(user, "You begin to replace the wires.") //if(do_after(user, min(60, round( ((maxhealth/health)*10)+(malfunction*10) ), target = src)) //Take longer to repair heavier damage if(do_after(user, 30, target = src)) if(!src || !coil) return coil.use(1) health = max_health malfunction = 0 - to_chat(user, "\blue You repair the [src]!") + to_chat(user, "You repair the [src]!") update_icon() else if(istype(W, /obj/item/weapon/wrench)) @@ -264,15 +264,15 @@ return if(anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - to_chat(user, "\blue You unsecure the [src] from the floor!") + to_chat(user, "You unsecure the [src] from the floor!") if(active) - to_chat(user, "\blue The [src] shuts off!") + to_chat(user, "The [src] shuts off!") src.shields_down() anchored = 0 else if(istype(get_turf(src), /turf/space)) return //No wrenching these in space! playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - to_chat(user, "\blue You secure the [src] to the floor!") + to_chat(user, "You secure the [src] to the floor!") anchored = 1 @@ -281,7 +281,7 @@ src.locked = !src.locked to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]") else - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") else ..() @@ -349,13 +349,13 @@ /obj/machinery/shieldwallgen/attack_hand(mob/user as mob) if(state != 1) - to_chat(user, "\red The shield generator needs to be firmly secured to the floor first.") + to_chat(user, "The shield generator needs to be firmly secured to the floor first.") return 1 if(src.locked && !istype(user, /mob/living/silicon)) - to_chat(user, "\red The controls are locked!") + to_chat(user, "The controls are locked!") return 1 if(power != 1) - to_chat(user, "\red The shield generator needs to be powered by wire underneath.") + to_chat(user, "The shield generator needs to be powered by wire underneath.") return 1 if(src.active >= 1) @@ -401,7 +401,7 @@ src.active = 2 if(src.active >= 1) if(src.power == 0) - src.visible_message("\red The [src.name] shuts down due to lack of power!", \ + src.visible_message("The [src.name] shuts down due to lack of power!", \ "You hear heavy droning fade out") icon_state = "Shield_Gen" src.active = 0 @@ -477,7 +477,7 @@ src.locked = !src.locked to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]") else - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") else add_fingerprint(user) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 91e60dfaec5..577c24f5dc4 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -64,13 +64,13 @@ C.loc = src C.add_fingerprint(usr) - user.visible_message("\blue [user] inserts a power cell into [src].", "\blue You insert the power cell into [src].") + user.visible_message("[user] inserts a power cell into [src].", "You insert the power cell into [src].") else to_chat(user, "The hatch must be open to insert a power cell.") return else if(istype(I, /obj/item/weapon/screwdriver)) open = !open - user.visible_message("\blue [user] [open ? "opens" : "closes"] the hatch on the [src].", "\blue You [open ? "open" : "close"] the hatch on the [src].") + user.visible_message("[user] [open ? "opens" : "closes"] the hatch on the [src].", "You [open ? "open" : "close"] the hatch on the [src].") update_icon() if(!open && user.machine == src) user << browse(null, "window=spaceheater") @@ -107,7 +107,7 @@ else on = !on - user.visible_message("\blue [user] switches [on ? "on" : "off"] the [src].","\blue You switch [on ? "on" : "off"] the [src].") + user.visible_message("[user] switches [on ? "on" : "off"] the [src].","You switch [on ? "on" : "off"] the [src].") update_icon() return @@ -132,7 +132,7 @@ usr.put_in_hands(cell) cell.add_fingerprint(usr) cell = null - usr.visible_message("\blue [usr] removes the power cell from \the [src].", "\blue You remove the power cell from \the [src].") + usr.visible_message("[usr] removes the power cell from \the [src].", "You remove the power cell from \the [src].") if("cellinstall") @@ -144,7 +144,7 @@ C.loc = src C.add_fingerprint(usr) - usr.visible_message("\blue [usr] inserts a power cell into \the [src].", "\blue You insert the power cell into \the [src].") + usr.visible_message("[usr] inserts a power cell into \the [src].", "You insert the power cell into \the [src].") updateDialog() else diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index b50fc3566d8..42c88cc901d 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -667,11 +667,11 @@ return if(locked) - to_chat(user, "\red The suit cycler is locked.") + to_chat(user, "The suit cycler is locked.") return if(src.contents.len > 0) - to_chat(user, "\red There is no room inside the cycler for [G.affecting.name].") + to_chat(user, "There is no room inside the cycler for [G.affecting.name].") return visible_message("[user] starts putting [G.affecting.name] into the suit cycler.") @@ -698,7 +698,7 @@ else if(istype(I,/obj/item/clothing/head/helmet/space)) if(locked) - to_chat(user, "\red The suit cycler is locked.") + to_chat(user, "The suit cycler is locked.") return if(helmet) @@ -717,7 +717,7 @@ else if(istype(I,/obj/item/clothing/suit/space/rig)) if(locked) - to_chat(user, "\red The suit cycler is locked.") + to_chat(user, "The suit cycler is locked.") return if(suit) @@ -747,11 +747,11 @@ /obj/machinery/suit_cycler/emag_act(user as mob) if(emagged) - to_chat(user, "\red The cycler has already been subverted.") + to_chat(user, "The cycler has already been subverted.") return //Clear the access reqs, disable the safeties, and open up all paintjobs. - to_chat(user, "\red You run the sequencer across the interface, corrupting the operating protocols.") + to_chat(user, "You run the sequencer across the interface, corrupting the operating protocols.") departments = list("Engineering","Mining","Medical","Security","Atmos","^%###^%$") emagged = 1 safeties = 0 @@ -875,12 +875,12 @@ locked = !locked to_chat(usr, "You [locked ? "" : "un"]lock \the [src].") else - to_chat(usr, "\red Access denied.") + to_chat(usr, "Access denied.") else if(href_list["begin_decontamination"]) if(safeties && occupant) - to_chat(usr, "\red The cycler has detected an occupant. Please remove the occupant before commencing the decontamination cycle.") + to_chat(usr, "The cycler has detected an occupant. Please remove the occupant before commencing the decontamination cycle.") return active = 1 @@ -979,7 +979,7 @@ /obj/machinery/suit_cycler/proc/eject_occupant(mob/user as mob) if(locked || active) - to_chat(user, "\red The cycler is locked.") + to_chat(user, "The cycler is locked.") return if(!occupant) diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index ae0b2738d1b..7d19fde3436 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -187,7 +187,7 @@ if(href_list["delete"]) if(!src.allowed(usr) && !emagged) - to_chat(usr, "\red ACCESS DENIED.") + to_chat(usr, "ACCESS DENIED.") return if(SelectedServer) @@ -225,7 +225,7 @@ playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) if(do_after(user, 20, target = src)) if(src.stat & BROKEN) - to_chat(user, "\blue The broken glass falls out.") + to_chat(user, "The broken glass falls out.") var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) new /obj/item/weapon/shard(loc) var/obj/item/weapon/circuitboard/comm_server/M = new /obj/item/weapon/circuitboard/comm_server( A ) @@ -237,7 +237,7 @@ A.anchored = 1 qdel(src) else - to_chat(user, "\blue You disconnect the monitor.") + to_chat(user, "You disconnect the monitor.") var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) var/obj/item/weapon/circuitboard/comm_server/M = new /obj/item/weapon/circuitboard/comm_server( A ) for(var/obj/C in src) @@ -254,4 +254,4 @@ if(!emagged) playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) emagged = 1 - to_chat(user, "\blue You you disable the security protocols") + to_chat(user, "You you disable the security protocols") diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 9baa2a1a12f..b2f607fe057 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -131,7 +131,7 @@ playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) if(do_after(user, 20, target = src)) if(src.stat & BROKEN) - to_chat(user, "\blue The broken glass falls out.") + to_chat(user, "The broken glass falls out.") var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) new /obj/item/weapon/shard(loc) var/obj/item/weapon/circuitboard/comm_monitor/M = new /obj/item/weapon/circuitboard/comm_monitor( A ) @@ -143,7 +143,7 @@ A.anchored = 1 qdel(src) else - to_chat(user, "\blue You disconnect the monitor.") + to_chat(user, "You disconnect the monitor.") var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) var/obj/item/weapon/circuitboard/comm_monitor/M = new /obj/item/weapon/circuitboard/comm_monitor( A ) for(var/obj/C in src) @@ -160,4 +160,4 @@ if(!emagged) playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) emagged = 1 - to_chat(user, "\blue You you disable the security protocols") + to_chat(user, "You you disable the security protocols") diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index 001771b7efa..bb25c072b7e 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -343,7 +343,7 @@ playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1) if(do_after(user, 20, target = src)) if(src.stat & BROKEN) - to_chat(user, "\blue The broken glass falls out.") + to_chat(user, "The broken glass falls out.") var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) new /obj/item/weapon/shard(loc) var/obj/item/weapon/circuitboard/comm_traffic/M = new /obj/item/weapon/circuitboard/comm_traffic( A ) @@ -355,7 +355,7 @@ A.anchored = 1 qdel(src) else - to_chat(user, "\blue You disconnect the monitor.") + to_chat(user, "You disconnect the monitor.") var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) var/obj/item/weapon/circuitboard/comm_traffic/M = new /obj/item/weapon/circuitboard/comm_traffic( A ) for(var/obj/C in src) @@ -372,7 +372,7 @@ if(!emagged) playsound(get_turf(src), 'sound/effects/sparks4.ogg', 75, 1) emagged = 1 - to_chat(user, "\blue You you disable the security protocols") + to_chat(user, "You you disable the security protocols") /obj/machinery/computer/telecomms/traffic/proc/canAccess(var/mob/user) if(issilicon(user) || in_range(user, src)) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 843002a804d..8479e4e051b 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -55,7 +55,7 @@ /obj/machinery/computer/teleporter/emag_act(user as mob) if(!emagged) emagged = 1 - to_chat(user, "\blue The teleporter can now lock on to Syndicate beacons!") + to_chat(user, "The teleporter can now lock on to Syndicate beacons!") else ui_interact(user) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index f45daee2af5..bfab4ea400d 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -264,7 +264,7 @@ I.loc = src coin = I categories |= CAT_COIN - to_chat(user, "\blue You insert the [I] into the [src]") + to_chat(user, "You insert the [I] into the [src]") nanomanager.update_uis(src) return else if(istype(I, refill_canister) && refill_canister != null) @@ -582,7 +582,7 @@ /obj/machinery/vending/proc/stock(var/datum/data/vending_product/R, var/mob/user) if(panel_open) - to_chat(user, "\blue You stock the [src] with \a [R.product_name]") + to_chat(user, "You stock the [src] with \a [R.product_name]") R.amount++ updateUsrDialog() diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index e075457a9e5..e27a97c796c 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -199,7 +199,7 @@ /obj/machinery/washing_machine/attackby(obj/item/weapon/W as obj, mob/user as mob, params) /*if(istype(W,/obj/item/weapon/screwdriver)) panel = !panel - to_chat(user, "\blue you [panel ? "open" : "close"] the [src]'s maintenance panel")*/ + to_chat(user, "you [panel ? "open" : "close"] the [src]'s maintenance panel")*/ if(istype(W,/obj/item/toy/crayon) ||istype(W,/obj/item/weapon/stamp)) if( state in list( 1, 3, 6 ) ) if(!crayon) @@ -278,9 +278,9 @@ W.loc = src state = 3 else - to_chat(user, "\blue You can't put the item in right now.") + to_chat(user, "You can't put the item in right now.") else - to_chat(user, "\blue The washing machine is full.") + to_chat(user, "The washing machine is full.") else ..() update_icon() @@ -302,7 +302,7 @@ crayon = null state = 1 if(5) - to_chat(user, "\red The [src] is busy.") + to_chat(user, "The [src] is busy.") if(6) state = 7 if(7) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 4ec4746a198..20913bfe33b 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -491,14 +491,14 @@ take_damage(15) check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) playsound(loc, 'sound/weapons/slash.ogg', 50, 1, -1) - to_chat(user, "\red You slash at the armored suit!") - visible_message("\red The [user] slashes at [name]'s armor!") + to_chat(user, "You slash at the armored suit!") + visible_message("The [user] slashes at [name]'s armor!") else log_append_to_last("Armor saved.") playsound(loc, 'sound/weapons/slash.ogg', 50, 1, -1) - to_chat(user, "\green Your claws had no effect!") - occupant_message("\blue The [user]'s claws are stopped by the armor.") - visible_message("\blue The [user] rebounds off [name]'s armor!") + to_chat(user, "Your claws had no effect!") + occupant_message("The [user]'s claws are stopped by the armor.") + visible_message("The [user] rebounds off [name]'s armor!") return @@ -519,8 +519,8 @@ else log_append_to_last("Armor saved.") playsound(loc, 'sound/weapons/slash.ogg', 50, 1, -1) - occupant_message("\blue The [user]'s attack is stopped by the armor.") - visible_message("\blue The [user] rebounds off [name]'s armor!") + occupant_message("The [user]'s attack is stopped by the armor.") + visible_message("The [user] rebounds off [name]'s armor!") user.create_attack_log("attacked [name]") return @@ -858,11 +858,11 @@ /obj/mecha/emag_act(user as mob) if(istype(src, /obj/mecha/working/ripley) && emagged == 0) emagged = 1 - to_chat(usr, "\blue You slide the card through the [src]'s ID slot.") + to_chat(usr, "You slide the card through the [src]'s ID slot.") playsound(loc, "sparks", 100, 1) desc += "
The mech's equipment slots spark dangerously!" else - to_chat(usr, "\red The [src]'s ID slot rejects the card.") + to_chat(usr, "The [src]'s ID slot rejects the card.") return @@ -1048,12 +1048,12 @@ var/obj/machinery/atmospherics/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/unary/portables_connector/) in loc if(possible_port) if(connect(possible_port)) - occupant_message("\blue [name] connects to the port.") + occupant_message("[name] connects to the port.") verbs += /obj/mecha/verb/disconnect_from_port verbs -= /obj/mecha/verb/connect_to_port return else - occupant_message("\red [name] failed to connect to the port.") + occupant_message("[name] failed to connect to the port.") return else occupant_message("Nothing happens") @@ -1068,11 +1068,11 @@ if(usr!=occupant) return if(disconnect()) - occupant_message("\blue [name] disconnects from the port.") + occupant_message("[name] disconnects from the port.") verbs -= /obj/mecha/verb/disconnect_from_port verbs += /obj/mecha/verb/connect_to_port else - occupant_message("\red [name] is not connected to the port at the moment.") + occupant_message("[name] is not connected to the port at the moment.") /obj/mecha/verb/toggle_lights() set name = "Toggle Lights" diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 6bd600eaaa7..6c499427f9a 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -55,7 +55,7 @@ else to_chat(user, "You failed to salvage anything valuable from [src].") else - to_chat(user, "\blue You need more welding fuel to complete this task.") + to_chat(user, "You need more welding fuel to complete this task.") else if(istype(W, /obj/item/weapon/wirecutters)) if(salvage_num <= 0) to_chat(user, "You don't see anything that can be cut with [W].") diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index bb5e0237c9b..6c563bb22b3 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -129,7 +129,7 @@ if(href_list["drop_from_cargo"]) var/obj/O = locate(href_list["drop_from_cargo"]) if(O && O in cargo) - occupant_message("\blue You unload [O].") + occupant_message("You unload [O].") O.loc = get_turf(src) cargo -= O var/turf/T = get_turf(O) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 3da7bb372d4..35ce9692a27 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -1155,10 +1155,10 @@ steam.start() -- spawns the effect s.start() for(var/mob/M in viewers(5, location)) - to_chat(M, "\red The solution violently explodes.") + to_chat(M, "The solution violently explodes.") for(var/mob/M in viewers(1, location)) if(prob (50 * amount)) - to_chat(M, "\red The explosion knocks you down.") + to_chat(M, "The explosion knocks you down.") M.Weaken(rand(1,5)) return else @@ -1181,7 +1181,7 @@ steam.start() -- spawns the effect flash += (round(amount/4) * flashing_factor) for(var/mob/M in viewers(8, location)) - to_chat(M, "\red The solution violently explodes.") + to_chat(M, "The solution violently explodes.") explosion(location, devastation, heavy, light, flash) diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm index a9e165666fc..5c5005fb6fd 100644 --- a/code/game/objects/effects/gibs.dm +++ b/code/game/objects/effects/gibs.dm @@ -25,7 +25,7 @@ proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null) if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len) - to_chat(world, "\red Gib list length mismatch!") + to_chat(world, "Gib list length mismatch!") return var/obj/effect/decal/cleanable/blood/gibs/gib = null diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index b34cc09ca89..b4789991887 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -388,22 +388,22 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d if(!usr.canmove || usr.stat || usr.restrained() || !Adjacent(usr)) return if((!istype(usr, /mob/living/carbon)) || (istype(usr, /mob/living/carbon/brain)))//Is humanoid, and is not a brain - to_chat(usr, "\red You can't pick things up!") + to_chat(usr, "You can't pick things up!") return if( usr.stat || usr.restrained() )//Is not asleep/dead and is not restrained - to_chat(usr, "\red You can't pick things up!") + to_chat(usr, "You can't pick things up!") return if(src.anchored) //Object isn't anchored - to_chat(usr, "\red You can't pick that up!") + to_chat(usr, "You can't pick that up!") return if(!usr.hand && usr.r_hand) //Right hand is not full - to_chat(usr, "\red Your right hand is full.") + to_chat(usr, "Your right hand is full.") return if(usr.hand && usr.l_hand) //Left hand is not full - to_chat(usr, "\red Your left hand is full.") + to_chat(usr, "Your left hand is full.") return if(!istype(src.loc, /turf)) //Object is on a turf - to_chat(usr, "\red You can't pick that up!") + to_chat(usr, "You can't pick that up!") return //All checks are done, time to pick it up! usr.UnarmedAttack(src) diff --git a/code/game/objects/items/ashtray.dm b/code/game/objects/items/ashtray.dm index 8ce5ecc288f..c7d283908d7 100644 --- a/code/game/objects/items/ashtray.dm +++ b/code/game/objects/items/ashtray.dm @@ -59,14 +59,14 @@ die() return if(contents.len) - src.visible_message("\red [src] slams into [hit_atom] spilling its contents!") + src.visible_message("[src] slams into [hit_atom] spilling its contents!") for(var/obj/item/clothing/mask/cigarette/O in contents) O.loc = src.loc icon_state = icon_empty return ..() /obj/item/ashtray/proc/die() - src.visible_message("\red [src] shatters spilling its contents!") + src.visible_message("[src] shatters spilling its contents!") for(var/obj/item/clothing/mask/cigarette/O in contents) O.loc = src.loc icon_state = icon_broken diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index e7443755978..c52aa0e1792 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -126,7 +126,7 @@ MouseDrop(over_object, src_location, over_location) if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) if(!ishuman(usr)) return - to_chat(usr, "\red You can't fold that up anymore..") + to_chat(usr, "You can't fold that up anymore..") ..() attackby(W as obj, mob/user as mob, params) @@ -135,5 +135,5 @@ src.locked = !src.locked to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]") else - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") return \ No newline at end of file diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 81e0f05258a..48e14591c29 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -149,7 +149,7 @@ scan_data += "
" for(var/mob/O in viewers(usr)) - O.show_message("\red \the [src] rattles and prints out a sheet of paper.", 1) + O.show_message("\the [src] rattles and prints out a sheet of paper.", 1) playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) sleep(10) @@ -188,7 +188,7 @@ src.wdata = list() src.chemtraces = list() src.timeofdeath = null - to_chat(user, "\red A new patient has been registered.. Purging data for previous patient.") + to_chat(user, "A new patient has been registered.. Purging data for previous patient.") src.timeofdeath = M.timeofdeath @@ -200,7 +200,7 @@ to_chat(usr, "You have to cut the limb open first!") return for(var/mob/O in viewers(M)) - O.show_message("\red [user.name] scans the wounds on [M.name]'s [S.name] with \the [src.name]", 1) + O.show_message("[user.name] scans the wounds on [M.name]'s [S.name] with \the [src.name]", 1) src.add_data(S) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 263f287a823..f4e5bfaab58 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -14,10 +14,10 @@ /obj/item/device/megaphone/attack_self(mob/living/user as mob) if(user.client) if(user.client.prefs.muted & MUTE_IC) - to_chat(src, "\red You cannot speak in IC (muted).") + to_chat(src, "You cannot speak in IC (muted).") return if(!ishuman(user)) - to_chat(user, "\red You don't know how to use this!") + to_chat(user, "You don't know how to use this!") return if(user.silent) to_chat(user, "You find yourself unable to speak at all.") @@ -29,7 +29,7 @@ to_chat(user, "Your vow of silence prevents you from speaking.") return if(spamcheck) - to_chat(user, "\red \The [src] needs to recharge!") + to_chat(user, "\The [src] needs to recharge!") return var/message = input(user, "Shout a message:", "Megaphone") as text|null @@ -45,7 +45,7 @@ saymsg(user, pick(insultmsg)) insults-- else - to_chat(user, "\red *BZZZZzzzzzt*") + to_chat(user, "*BZZZZzzzzzt*") else saymsg(user, message) @@ -61,6 +61,6 @@ /obj/item/device/megaphone/emag_act(user as mob) if(!emagged) - to_chat(user, "\red You overload \the [src]'s voice synthesizer.") + to_chat(user, "You overload \the [src]'s voice synthesizer.") emagged = 1 insults = rand(1, 3)//to prevent dickflooding diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm index 52603b99a0b..2f5b20b09e2 100644 --- a/code/game/objects/items/devices/modkit.dm +++ b/code/game/objects/items/devices/modkit.dm @@ -49,7 +49,7 @@ playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1) - user.visible_message("\red [user] opens \the [src] and modifies \the [O].","\red You open \the [src] and modify \the [O].") + user.visible_message("[user] opens \the [src] and modifies \the [O].","You open \the [src] and modify \the [O].") I.refit_for_species(target_species) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index ab61008816c..a29ff438f51 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -262,7 +262,7 @@ var/delta = (world.time / 10) - last_request if(request_cooldown > delta) var/cooldown_time = round(request_cooldown - ((world.time / 10) - last_request), 1) - to_chat(usr, "\red The request system is currently offline. Please wait another [cooldown_time] seconds.") + to_chat(usr, "The request system is currently offline. Please wait another [cooldown_time] seconds.") return last_request = world.time / 10 looking_for_personality = 1 @@ -330,7 +330,7 @@ /obj/item/device/paicard/proc/alertUpdate() var/turf/T = get_turf_or_move(loc) for(var/mob/M in viewers(T)) - M.show_message("\blue [src] flashes a message across its screen, \"Additional personalities available for download.\"", 3, "\blue [src] bleeps electronically.", 2) + M.show_message("[src] flashes a message across its screen, \"Additional personalities available for download.\"", 3, "[src] bleeps electronically.", 2) /obj/item/device/paicard/emp_act(severity) for(var/mob/M in src) diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 5dc67b15478..55f42587104 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -21,7 +21,7 @@ if(!emagged) emagged = 1 syndicate = 1 - to_chat(user, "\blue The This beacon now only be locked on to by emagged teleporters!") + to_chat(user, "The This beacon now only be locked on to by emagged teleporters!") /obj/item/device/radio/beacon/hear_talk() return @@ -58,7 +58,7 @@ /obj/item/device/radio/beacon/syndicate/attack_self(mob/user as mob) if(user) - to_chat(user, "\blue Locked In") + to_chat(user, "Locked In") new /obj/machinery/power/singularity_beacon/syndicate( user.loc ) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) qdel(src) @@ -71,7 +71,7 @@ /obj/item/device/radio/beacon/syndicate/bomb/attack_self(mob/user as mob) if(user) - to_chat(user, "\blue Locked In") + to_chat(user, "Locked In") new /obj/machinery/syndicatebomb( user.loc ) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) qdel(src) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index e144c5d3c50..ba94416a8c2 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -584,9 +584,9 @@ var/global/list/default_medbay_channels = list( . = ..(user, distance) if((in_range(src, user) || loc == user)) if(b_stat) - user.show_message("\blue \the [src] can be attached and modified!") + user.show_message("\the [src] can be attached and modified!") else - user.show_message("\blue \the [src] can not be modified or attached!") + user.show_message("\the [src] can not be modified or attached!") return . /obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob, params) @@ -597,9 +597,9 @@ var/global/list/default_medbay_channels = list( b_stat = !( b_stat ) if(!istype(src, /obj/item/device/radio/beacon)) if(b_stat) - user.show_message("\blue The radio can now be attached and modified!") + user.show_message("The radio can now be attached and modified!") else - user.show_message("\blue The radio can no longer be modified or attached!") + user.show_message("The radio can no longer be modified or attached!") updateDialog() //Foreach goto(83) add_fingerprint(user) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 9a9edbb62ad..1ac623f82f7 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -128,24 +128,24 @@ REAGENT SCANNER /obj/item/device/healthanalyzer/attack(mob/living/M as mob, mob/living/user as mob) if(( (CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50)) - to_chat(user, text("\red You try to analyze the floor's vitals!")) + to_chat(user, text("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) - user.show_message(text("\blue Analyzing Results for The floor:\n\t Overall Status: Healthy"), 1) - user.show_message(text("\blue \t Damage Specifics: [0]-[0]-[0]-[0]"), 1) - user.show_message("\blue Key: Suffocation/Toxin/Burns/Brute", 1) - user.show_message("\blue Body Temperature: ???", 1) + O.show_message(text("[user] has analyzed the floor's vitals!"), 1) + user.show_message(text("Analyzing Results for The floor:\n\t Overall Status: Healthy"), 1) + user.show_message(text("\t Damage Specifics: [0]-[0]-[0]-[0]"), 1) + user.show_message("Key: Suffocation/Toxin/Burns/Brute", 1) + user.show_message("Body Temperature: ???", 1) return user.visible_message("[user] has analyzed [M]'s vitals."," You have analyzed [M]'s vitals.") if(!istype(M,/mob/living/carbon/human) || M.isSynthetic()) //these sensors are designed for organic life - user.show_message("\blue Analyzing Results for ERROR:\n\t Overall Status: ERROR") + user.show_message("Analyzing Results for ERROR:\n\t Overall Status: ERROR") user.show_message("\t Key: Suffocation/Toxin/Burns/Brute", 1) user.show_message("\t Damage Specifics: ? - ? - ? - ?") - user.show_message("\blue Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) - user.show_message("\red Warning: Blood Level ERROR: --% --cl.\blue Type: ERROR") - user.show_message("\blue Subject's pulse: -- bpm.") + user.show_message("Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) + user.show_message("Warning: Blood Level ERROR: --% --cl.Type: ERROR") + user.show_message("Subject's pulse: -- bpm.") return var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss()))) @@ -155,34 +155,34 @@ REAGENT SCANNER var/BR = M.getBruteLoss() > 50 ? "[M.getBruteLoss()]" : M.getBruteLoss() if(M.status_flags & FAKEDEATH) OX = fake_oxy > 50 ? "[fake_oxy]" : fake_oxy - user.show_message("\blue Analyzing Results for [M]:\n\t Overall Status: dead") + user.show_message("Analyzing Results for [M]:\n\t Overall Status: dead") else - user.show_message("\blue Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[M.health]% healthy"]") + user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[M.health]% healthy"]") user.show_message("\t Key: Suffocation/Toxin/Burns/Brute", 1) user.show_message("\t Damage Specifics: [OX] - [TX] - [BU] - [BR]") - user.show_message("\blue Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) + user.show_message("Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) if(M.timeofdeath && (M.stat == DEAD || (M.status_flags & FAKEDEATH))) - user.show_message("\blue Time of Death: [worldtime2text(M.timeofdeath)]") + user.show_message("Time of Death: [worldtime2text(M.timeofdeath)]") if(istype(M, /mob/living/carbon/human) && mode == 1) var/mob/living/carbon/human/H = M var/list/damaged = H.get_damaged_organs(1,1) - user.show_message("\blue Localized Damage, Brute/Burn:",1) + user.show_message("Localized Damage, Brute/Burn:",1) if(length(damaged)>0) for(var/obj/item/organ/external/org in damaged) - user.show_message(text("\blue \t []: [][]\blue - []", \ + user.show_message(text("\t []: [][] - []", \ capitalize(org.name), \ - (org.brute_dam > 0) ? "\red [org.brute_dam]" :0, \ + (org.brute_dam > 0) ? "[org.brute_dam]" :0, \ (org.status & ORGAN_BLEEDING)?"\[Bleeding\]":"\t", \ (org.burn_dam > 0) ? "[org.burn_dam]" :0),1) else - user.show_message("\blue \t Limbs are OK.",1) + user.show_message("\t Limbs are OK.",1) OX = M.getOxyLoss() > 50 ? "Severe oxygen deprivation detected" : "Subject bloodstream oxygen level normal" TX = M.getToxLoss() > 50 ? "Dangerous amount of toxins detected" : "Subject bloodstream toxin level minimal" BU = M.getFireLoss() > 50 ? "Severe burn damage detected" : "Subject burn injury status O.K" BR = M.getBruteLoss() > 50 ? "Severe anatomical damage detected" : "Subject brute-force injury status O.K" if(M.status_flags & FAKEDEATH) - OX = fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal" + OX = fake_oxy > 50 ? "Severe oxygen deprivation detected" : "Subject bloodstream oxygen level normal" user.show_message("[OX] | [TX] | [BU] | [BR]") if(istype(M, /mob/living/carbon)) if(upgraded) @@ -195,13 +195,13 @@ REAGENT SCANNER if(M.getCloneLoss()) user.show_message("Subject appears to have [M.getCloneLoss() > 30 ? "severe" : "minor"] cellular damage.") if(M.has_brain_worms()) - user.show_message("\red Subject suffering from aberrant brain activity. Recommend further scanning.") + user.show_message("Subject suffering from aberrant brain activity. Recommend further scanning.") else if(M.getBrainLoss() >= 100 || istype(M, /mob/living/carbon/human) && !M.get_int_organ(/obj/item/organ/internal/brain)) - user.show_message("\red Subject is brain dead.") + user.show_message("Subject is brain dead.") else if(M.getBrainLoss() >= 60) - user.show_message("\red Severe brain damage detected. Subject likely to have mental retardation.") + user.show_message("Severe brain damage detected. Subject likely to have mental retardation.") else if(M.getBrainLoss() >= 10) - user.show_message("\red Significant brain damage detected. Subject may have had a concussion.") + user.show_message("Significant brain damage detected. Subject may have had a concussion.") if(ishuman(M)) var/mob/living/carbon/human/H = M for(var/name in H.organs_by_name) @@ -211,20 +211,20 @@ REAGENT SCANNER var/limb = e.name if(e.status & ORGAN_BROKEN) if((e.limb_name in list("l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot")) && !(e.status & ORGAN_SPLINTED)) - user.show_message("\red Unsecured fracture in subject [limb]. Splinting recommended for transport.") + user.show_message("Unsecured fracture in subject [limb]. Splinting recommended for transport.") if(e.has_infected_wound()) - user.show_message("\red Infected wound detected in subject [limb]. Disinfection recommended.") + user.show_message("Infected wound detected in subject [limb]. Disinfection recommended.") for(var/name in H.organs_by_name) var/obj/item/organ/external/e = H.organs_by_name[name] if(!e) continue if(e.status & ORGAN_BROKEN) - user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1) + user.show_message(text("Bone fractures detected. Advanced scanner required for location."), 1) break for(var/obj/item/organ/external/e in H.organs) for(var/datum/wound/W in e.wounds) if(W.internal) - user.show_message(text("\red Internal bleeding detected. Advanced scanner required for location."), 1) + user.show_message(text("Internal bleeding detected. Advanced scanner required for location."), 1) break if(H.vessel) var/blood_type = H.get_blood_name() @@ -232,17 +232,17 @@ REAGENT SCANNER var/blood_percent = blood_volume / BLOOD_VOLUME_NORMAL blood_percent *= 100 if(blood_volume <= 500) - user.show_message("\red Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl") + user.show_message("Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl") else if(blood_volume <= 336) - user.show_message("\red Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl") + user.show_message("Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl") else - user.show_message("\blue Blood Level Normal: [blood_percent]% [blood_volume]cl") + user.show_message("Blood Level Normal: [blood_percent]% [blood_volume]cl") if(H.species.exotic_blood) user.show_message("Subject possesses exotic blood.") user.show_message("Exotic blood type: [blood_type].") if(H.heart_attack && H.stat != DEAD) user.show_message("Subject suffering from heart attack: Apply defibrillator immediately.") - user.show_message("\blue Subject's pulse: [H.get_pulse(GETPULSE_TOOL)] bpm.") + user.show_message("Subject's pulse: [H.get_pulse(GETPULSE_TOOL)] bpm.") var/implant_detect for(var/obj/item/organ/internal/cyberimp/CI in H.internal_organs) if(CI.status == ORGAN_ROBOT) diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm index c65f0a94355..359dfd82efa 100644 --- a/code/game/objects/items/devices/whistle.dm +++ b/code/game/objects/items/devices/whistle.dm @@ -26,6 +26,6 @@ /obj/item/device/hailer/emag_act(user as mob) if(!emagged) - to_chat(user, "\red You overload \the [src]'s voice synthesizer.") + to_chat(user, "You overload \the [src]'s voice synthesizer.") emagged = 1 diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 907be15d850..4b01d70ede5 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -66,13 +66,13 @@ var/list/tape_roll_applications = list() /obj/item/taperoll/attack_self(mob/user as mob) if(icon_state == "[icon_base]_start") start = get_turf(src) - to_chat(usr, "\blue You place the first end of the [src].") + to_chat(usr, "You place the first end of the [src].") icon_state = "[icon_base]_stop" else icon_state = "[icon_base]_start" end = get_turf(src) if(start.y != end.y && start.x != end.x || start.z != end.z) - to_chat(usr, "\blue [src] can only be laid horizontally or vertically.") + to_chat(usr, "[src] can only be laid horizontally or vertically.") return var/turf/cur = start @@ -101,7 +101,7 @@ var/list/tape_roll_applications = list() break cur = get_step_towards(cur,end) if(!can_place) - to_chat(usr, "\blue You can't run \the [src] through that!") + to_chat(usr, "You can't run \the [src] through that!") return cur = start @@ -115,7 +115,7 @@ var/list/tape_roll_applications = list() P.icon_state = "[P.icon_base]_[dir]" cur = get_step_towards(cur,end) //is_blocked_turf(var/turf/T) - to_chat(usr, "\blue You finish placing the [src].")//Git Test + to_chat(usr, "You finish placing the [src].")//Git Test /obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity) @@ -128,7 +128,7 @@ var/list/tape_roll_applications = list() P.loc = locate(T.x,T.y,T.z) P.icon_state = "[src.icon_base]_door" P.layer = 3.2 - to_chat(user, "\blue You finish placing the [src].") + to_chat(user, "You finish placing the [src].") if(istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor)) var/turf/F = A diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 7e15df8676c..5cc0ab739c0 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -263,7 +263,7 @@ /mob/living/simple_animal/hostile/creature,/mob/living/simple_animal/hostile/pirate/ranged, /mob/living/simple_animal/hostile/hivebot,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/pirate) - visible_message("\red Something falls out of the [src]!") + visible_message("Something falls out of the [src]!") var/obj/item/weapon/grenade/clusterbuster/C = new(src.loc) C.prime() spawn(10) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index f8ca693bf9c..d99ed06bb6c 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -160,9 +160,9 @@ src.chest = W src.updateicon() else if(!W:wires) - to_chat(user, "\blue You need to attach wires to it first!") + to_chat(user, "You need to attach wires to it first!") else - to_chat(user, "\blue You need to attach a cell to it first!") + to_chat(user, "You need to attach a cell to it first!") if(istype(W, /obj/item/robot_parts/head)) if(src.head) return @@ -172,7 +172,7 @@ src.head = W src.updateicon() else - to_chat(user, "\blue You need to attach a flash to it first!") + to_chat(user, "You need to attach a flash to it first!") if(istype(W, /obj/item/device/multitool)) if(check_completion()) @@ -184,10 +184,10 @@ var/obj/item/device/mmi/M = W if(check_completion()) if(!istype(loc,/turf)) - to_chat(user, "\red You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise.") + to_chat(user, "You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise.") return if(!M.brainmob) - to_chat(user, "\red Sticking an empty [W] into the frame would sort of defeat the purpose.") + to_chat(user, "Sticking an empty [W] into the frame would sort of defeat the purpose.") return if(!M.brainmob.key) @@ -206,15 +206,15 @@ return if(M.brainmob.stat == DEAD) - to_chat(user, "\red Sticking a dead [W] into the frame would sort of defeat the purpose.") + to_chat(user, "Sticking a dead [W] into the frame would sort of defeat the purpose.") return if(M.brainmob.mind in ticker.mode.head_revolutionaries) - to_chat(user, "\red The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the [W].") + to_chat(user, "The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the [W].") return if(jobban_isbanned(M.brainmob, "Cyborg") || jobban_isbanned(M.brainmob,"nonhumandept")) - to_chat(user, "\red This [W] does not seem to fit.") + to_chat(user, "This [W] does not seem to fit.") return var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1) @@ -338,45 +338,45 @@ ..() if(istype(W, /obj/item/weapon/stock_parts/cell)) if(src.cell) - to_chat(user, "\blue You have already inserted a cell!") + to_chat(user, "You have already inserted a cell!") return else user.drop_item() W.loc = src src.cell = W - to_chat(user, "\blue You insert the cell!") + to_chat(user, "You insert the cell!") if(istype(W, /obj/item/stack/cable_coil)) if(src.wires) - to_chat(user, "\blue You have already inserted wire!") + to_chat(user, "You have already inserted wire!") return else var/obj/item/stack/cable_coil/coil = W coil.use(1) src.wires = 1.0 - to_chat(user, "\blue You insert the wire!") + to_chat(user, "You insert the wire!") return /obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob, params) ..() if(istype(W, /obj/item/device/flash)) if(istype(user,/mob/living/silicon/robot)) - to_chat(user, "\red How do you propose to do that?") + to_chat(user, "How do you propose to do that?") return else if(src.flash1 && src.flash2) - to_chat(user, "\blue You have already inserted the eyes!") + to_chat(user, "You have already inserted the eyes!") return else if(src.flash1) user.drop_item() W.loc = src src.flash2 = W - to_chat(user, "\blue You insert the flash into the eye socket!") + to_chat(user, "You insert the flash into the eye socket!") else user.drop_item() W.loc = src src.flash1 = W - to_chat(user, "\blue You insert the flash into the eye socket!") + to_chat(user, "You insert the flash into the eye socket!") else if(istype(W, /obj/item/weapon/stock_parts/manipulator)) - to_chat(user, "\blue You install some manipulators and modify the head, creating a functional spider-bot!") + to_chat(user, "You install some manipulators and modify the head, creating a functional spider-bot!") new /mob/living/simple_animal/spiderbot(get_turf(loc)) user.drop_item() qdel(W) @@ -387,9 +387,9 @@ /obj/item/robot_parts/attackby(obj/item/W as obj, mob/user as mob, params) if(istype(W,/obj/item/weapon/card/emag)) if(sabotaged) - to_chat(user, "\red [src] is already sabotaged!") + to_chat(user, "[src] is already sabotaged!") else - to_chat(user, "\red You slide [W] into the dataport on [src] and short out the safeties.") + to_chat(user, "You slide [W] into the dataport on [src] and short out the safeties.") sabotaged = 1 return ..() diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 611a5a3e37e..a46e84d1573 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -96,7 +96,7 @@ if(hp <= 0) for(var/mob/O in oviewers()) if((O.client && !( O.blinded ))) - to_chat(O, "\red [src] breaks into tiny pieces and collapses!") + to_chat(O, "[src] breaks into tiny pieces and collapses!") qdel(src) // Create a temporary object to represent the damage diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index e4866856e97..bde2de6fda3 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -76,15 +76,15 @@ return 1 else if(amount < 2) - to_chat(user, "\blue You need at least two rods to do this.") + to_chat(user, "You need at least two rods to do this.") return - to_chat(usr, "\blue Assembling grille...") + to_chat(usr, "Assembling grille...") if(!do_after(usr, 10, target = user)) return var /obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc ) - to_chat(usr, "\blue You assemble a grille") + to_chat(usr, "You assemble a grille") F.add_fingerprint(usr) use(2) return diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 0a52ea4c552..d578e0a2528 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -34,7 +34,7 @@ if(istype(W,/obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/CC = W if(CC.amount < 5) - to_chat(user, "\b There is not enough wire in this coil. You need 5 lengths.") + to_chat(user, "There is not enough wire in this coil. You need 5 lengths.") return CC.use(5) to_chat(user, "You attach wire to the [name].") diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 50306ac7e02..cca1464d6e7 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -367,7 +367,7 @@ AI MODULES log_law_changes(target, sender) lawchanges.Add("The law is '[newFreeFormLaw]'") - to_chat(target, "\red BZZZZT") + to_chat(target, "BZZZZT") var/law = "[newFreeFormLaw]" target.add_ion_law(law) target.show_laws() diff --git a/code/game/objects/items/weapons/caution.dm b/code/game/objects/items/weapons/caution.dm index 6e57028472e..44a357a6d92 100644 --- a/code/game/objects/items/weapons/caution.dm +++ b/code/game/objects/items/weapons/caution.dm @@ -22,7 +22,7 @@ return if(armed) armed = 0 - to_chat(user, "\blue You disarm \the [src].") + to_chat(user, "You disarm \the [src].") return timing = !timing if(timing) @@ -30,7 +30,7 @@ else armed = 0 timepassed = 0 - to_chat(H, "\blue You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]") + to_chat(H, "You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]") process() if(!timing) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index db6035bddbe..e975557ec3e 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -41,7 +41,7 @@ /obj/item/weapon/soap/attack(mob/target as mob, mob/user as mob) if(target && user && ishuman(target) && ishuman(user) && !target.stat && !user.stat && user.zone_sel &&user.zone_sel.selecting == "mouth" ) - user.visible_message("\red \the [user] washes \the [target]'s mouth out with [src.name]!") + user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!") return ..() diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index edf3c737787..f82e845d61d 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -128,17 +128,17 @@ if(block) if(GetState() && block == MONKEYBLOCK && ishuman(M)) - message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] \red(MONKEY)") + message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] (MONKEY)") log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name] (MONKEY)") - log_game("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] \red(MONKEY)") + log_game("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] (MONKEY)") else log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name]") else if(GetState(MONKEYBLOCK) && ishuman(M)) - message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] \red(MONKEY)") + message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] (MONKEY)") log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name] (MONKEY)") - log_game("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] \red(MONKEY)") + log_game("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] (MONKEY)") else log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name]") diff --git a/code/game/objects/items/weapons/dnascrambler.dm b/code/game/objects/items/weapons/dnascrambler.dm index 24c977ddb2d..783aabf70eb 100644 --- a/code/game/objects/items/weapons/dnascrambler.dm +++ b/code/game/objects/items/weapons/dnascrambler.dm @@ -31,7 +31,7 @@ user.visible_message("[user.name] injects [M.name] with [src].") src.injected(M, user) else - to_chat(user, "\red You failed to inject [M.name].") + to_chat(user, "You failed to inject [M.name].") proc/injected(var/mob/living/carbon/target, var/mob/living/carbon/user) scramble(1, target, 100) diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 5fc704b7618..57611cb55ee 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -40,7 +40,7 @@ to_chat(usr, "[bicon(src)] [src.name] contains:") if(reagents && reagents.reagent_list.len) for(var/datum/reagent/R in reagents.reagent_list) - to_chat(user, "\blue [R.volume] units of [R.name]") + to_chat(user, "[R.volume] units of [R.name]") /obj/item/weapon/extinguisher/New() diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 4f9830890d4..4e558f7b64e 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -31,7 +31,7 @@ user.put_in_active_hand(gift) src.gift.add_fingerprint(user) else - to_chat(user, "\blue The gift was empty!") + to_chat(user, "The gift was empty!") qdel(src) return @@ -42,16 +42,16 @@ /obj/effect/spresent/relaymove(mob/user as mob) if(user.stat) return - to_chat(user, "\blue You cant move.") + to_chat(user, "You cant move.") /obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob, params) ..() if(!istype(W, /obj/item/weapon/wirecutters)) - to_chat(user, "\blue I need wirecutters for that.") + to_chat(user, "I need wirecutters for that.") return - to_chat(user, "\blue You cut open the present.") + to_chat(user, "You cut open the present.") for(var/mob/M in src) //Should only be one but whatever. M.loc = src.loc diff --git a/code/game/objects/items/weapons/grenades/clowngrenade.dm b/code/game/objects/items/weapons/grenades/clowngrenade.dm index a77bd6301b6..0fcdceff9ac 100644 --- a/code/game/objects/items/weapons/grenades/clowngrenade.dm +++ b/code/game/objects/items/weapons/grenades/clowngrenade.dm @@ -61,7 +61,7 @@ if((M:shoes.flags&NOSLIP) || (M:species.bodyflags & FEET_NOSLIP)) return else - to_chat(M, "\red Your feet feel like they're on fire!") + to_chat(M, "Your feet feel like they're on fire!") M.take_overall_damage(0, max(0, (burned - 2))) if(!istype(M, /mob/living/carbon/slime) && !isrobot(M)) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index c664ca9fff9..03db1acd5cf 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -45,7 +45,7 @@ attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(crit_fail) - to_chat(user, "\red The Bluespace generator isn't working.") + to_chat(user, "The Bluespace generator isn't working.") return else if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail) var/response = alert(user, "Are you sure you want to put the bag of holding inside another bag of holding?","Are you sure you want to die?","Yes","No") @@ -68,10 +68,10 @@ proc/failcheck(mob/user as mob) if(prob(src.reliability)) return 1 //No failure if(prob(src.reliability)) - to_chat(user, "\red The Bluespace portal resists your attempt to add another item.")//light failure + to_chat(user, "The Bluespace portal resists your attempt to add another item.")//light failure else - to_chat(user, "\red The Bluespace generator malfunctions!") + to_chat(user, "The Bluespace generator malfunctions!") for(var/obj/O in src.contents) //it broke, delete what was in it qdel(O) crit_fail = 1 diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 49ba664619f..533a770c749 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -98,7 +98,7 @@ /obj/item/weapon/storage/bag/plasticbag/mob_can_equip(M as mob, slot) if(slot==slot_head && contents.len) - to_chat(M, "\red You need to empty the bag first!") + to_chat(M, "You need to empty the bag first!") return 0 return ..() @@ -220,7 +220,7 @@ current += S.amount if(capacity == current)//If it's full, you're done if(!stop_messages) - to_chat(usr, "\red The snatcher is full.") + to_chat(usr, "The snatcher is full.") return 0 return 1 @@ -452,9 +452,9 @@ sleep(rand(2,4)) if( droppedSomething ) if( foundtable ) - user.visible_message("\blue [user] unloads their service tray.") + user.visible_message("[user] unloads their service tray.") else - user.visible_message("\blue [user] drops all the items on their tray.") + user.visible_message("[user] drops all the items on their tray.") return ..() diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index fe29ba5c23a..fc68431df2e 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -485,10 +485,10 @@ proc/failcheck(mob/user as mob) if(prob(src.reliability)) return 1 //No failure if(prob(src.reliability)) - to_chat(user, "\red The Bluespace portal resists your attempt to add another item.")//light failure + to_chat(user, "The Bluespace portal resists your attempt to add another item.")//light failure else - to_chat(user, "\red The Bluespace generator malfunctions!") + to_chat(user, "The Bluespace generator malfunctions!") for(var/obj/O in src.contents) //it broke, delete what was in it qdel(O) crit_fail = 1 @@ -568,7 +568,7 @@ if(ismob(target)) user.create_attack_log(" [user.real_name] tried planting [name] on [target:real_name] ([target:ckey])") log_attack(" [user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey])") - user.visible_message("\red [user.name] is trying to strap a belt to [target.name]!") + user.visible_message("[user.name] is trying to strap a belt to [target.name]!") if(do_after(user, 50, target = target) && in_range(user, target)) @@ -579,7 +579,7 @@ if(isturf(target)) location = target if(ismob(target)) target:create_attack_log(" Had the [name] planted on them by [user.real_name] ([user.ckey])") - user.visible_message("\red [user.name] finished planting an explosive on [target.name]!") + user.visible_message("[user.name] finished planting an explosive on [target.name]!") target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2") to_chat(user, "You sacrifice your belt for the sake of justice. Timer counting down from 15.") spawn(150) diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 21731113466..a490eced1a3 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -54,15 +54,15 @@ M.LAssailant = user if(!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - to_chat(user, "\red You don't have the dexterity to do this!") + to_chat(user, "You don't have the dexterity to do this!") return if(!chaplain) - to_chat(user, "\red The book sizzles in your hands.") + to_chat(user, "The book sizzles in your hands.") user.take_organ_damage(0,10) return if((CLUMSY in user.mutations) && prob(50)) - to_chat(user, "\red The [src] slips out of your hand and hits your head.") + to_chat(user, "The [src] slips out of your hand and hits your head.") user.take_organ_damage(10) user.Paralyse(20) return @@ -72,19 +72,19 @@ if(M.stat !=2) /*if((M.mind in ticker.mode.cult) && (prob(20))) - to_chat(M, "\red The power of [src.deity_name] clears your mind of heresy!") - to_chat(user, "\red You see how [M]'s eyes become clear, the cult no longer holds control over him!") + to_chat(M, "The power of [src.deity_name] clears your mind of heresy!") + to_chat(user, "You see how [M]'s eyes become clear, the cult no longer holds control over him!") ticker.mode.remove_cultist(M.mind)*/ if((istype(M, /mob/living/carbon/human) && prob(60))) bless(M) for(var/mob/O in viewers(M, null)) O.show_message(text("[] heals [] with the power of [src.deity_name]!", user, M), 1) - to_chat(M, "\red May the power of [src.deity_name] compel you to be healed!") + to_chat(M, "May the power of [src.deity_name] compel you to be healed!") playsound(src.loc, "punch", 25, 1, -1) else if(ishuman(M) && !istype(M:head, /obj/item/clothing/head/helmet)) M.adjustBrainLoss(10) - to_chat(M, "\red You feel dumber.") + to_chat(M, "You feel dumber.") for(var/mob/O in viewers(M, null)) O.show_message(text("[] beats [] over the head with []!", user, M, src), 1) playsound(src.loc, "punch", 25, 1, -1) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index cdf123f2982..cf049e33fca 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -370,7 +370,7 @@ ..() if(isrobot(user)) - to_chat(user, "\blue You're a robot. No.") + to_chat(user, "You're a robot. No.") return 1//Robots can't interact with storage items. if(!can_be_inserted(W)) diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index a61a3cea5ce..3118d7d3a2e 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -244,7 +244,7 @@ if(!istype(loc,/obj/item/device/transfer_valve)) message_admins("Explosive tank rupture! last key to touch the tank was [fingerprintslast] (JMP)") log_game("Explosive tank rupture! last key to touch the tank was [fingerprintslast] at [x], [y], [z]") -// to_chat(world, "\blue[x],[y] tank is exploding: [pressure] kPa") +// to_chat(world, "[x],[y] tank is exploding: [pressure] kPa") //Give the gas a chance to build up more pressure through reacting air_contents.react() air_contents.react() @@ -253,7 +253,7 @@ var/range = (pressure-TANK_FRAGMENT_PRESSURE)/TANK_FRAGMENT_SCALE var/turf/epicenter = get_turf(loc) -// to_chat(world, "\blue Exploding Pressure: [pressure] kPa, intensity: [range]") +// to_chat(world, "Exploding Pressure: [pressure] kPa, intensity: [range]") explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5)) if(istype(loc,/obj/item/device/transfer_valve)) @@ -262,7 +262,7 @@ qdel(src) else if(pressure > TANK_RUPTURE_PRESSURE) -// to_chat(world, "\blue[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]") +// to_chat(world, "[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]") if(integrity <= 0) var/turf/simulated/T = get_turf(src) if(!T) @@ -274,7 +274,7 @@ integrity-- else if(pressure > TANK_LEAK_PRESSURE) -// to_chat(world, "\blue[x],[y] tank is leaking: [pressure] kPa, integrity [integrity]") +// to_chat(world, "[x],[y] tank is leaking: [pressure] kPa, integrity [integrity]") if(integrity <= 0) var/turf/simulated/T = get_turf(src) if(!T) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 7e0c7296fc9..4e59dfb6f10 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -281,7 +281,7 @@ return 1 else if(M) - to_chat(M, "\blue You need more welding fuel to complete this task.") + to_chat(M, "You need more welding fuel to complete this task.") return 0 //Returns whether or not the welding tool is currently on. @@ -466,5 +466,5 @@ /obj/item/weapon/conversion_kit/attack_self(mob/user) open = !open - to_chat(user, "\blue You [open?"open" : "close"] the conversion kit.") + to_chat(user, "You [open ? "open" : "close"] the conversion kit.") update_icon() diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 5c66759dc52..f16783a5636 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -227,7 +227,7 @@ return ..() if((CLUMSY in user.mutations) && (wielded) &&prob(40)) - to_chat(user, "\red You twirl around a bit before losing your balance and impaling yourself on the [src].") + to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on the [src].") user.take_organ_damage(20,25) return if((wielded) && prob(50)) diff --git a/code/game/objects/items/weapons/wires.dm b/code/game/objects/items/weapons/wires.dm index 4d2e539042f..0f1e261699b 100644 --- a/code/game/objects/items/weapons/wires.dm +++ b/code/game/objects/items/weapons/wires.dm @@ -28,9 +28,9 @@ /obj/item/weapon/wire/attack_self(mob/user as mob) if(src.laying) src.laying = 0 - to_chat(user, "\blue You're done laying wire!") + to_chat(user, "You're done laying wire!") else - to_chat(user, "\blue You are not using this to lay wire...") + to_chat(user, "You are not using this to lay wire...") return diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 70b3e3c1d67..ceeb08fd863 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -71,11 +71,11 @@ for(var/obj/O in range(0, src)) if(O.density == 1 && O != src && !istype(O, /obj/machinery/door/window)) //Ignores windoors, as those already block climbing, otherwise a windoor on the opposite side of a table would prevent climbing. - to_chat(user, "\red You cannot climb [src], as it is blocked by \a [O]!") + to_chat(user, "You cannot climb [src], as it is blocked by \a [O]!") return for(var/turf/T in range(0, src)) if(T.density == 1) - to_chat(user, "\red You cannot climb [src], as it is blocked by \a [T]!") + to_chat(user, "You cannot climb [src], as it is blocked by \a [T]!") return var/turf/T = src.loc if(!T || !istype(T)) return @@ -111,14 +111,14 @@ if(M.lying) return //No spamming this on people. M.Weaken(5) - to_chat(M, "\red You topple as \the [src] moves under you!") + to_chat(M, "You topple as \the [src] moves under you!") if(prob(25)) var/damage = rand(15,30) var/mob/living/carbon/human/H = M if(!istype(H)) - to_chat(H, "\red You land heavily!") + to_chat(H, "You land heavily!") M.adjustBruteLoss(damage) return @@ -137,12 +137,12 @@ affecting = H.get_organ("head") if(affecting) - to_chat(M, "\red You land heavily on your [affecting.name]!") + to_chat(M, "You land heavily on your [affecting.name]!") affecting.take_damage(damage, 0) if(affecting.parent) affecting.parent.add_autopsy_data("Misadventure", damage) else - to_chat(H, "\red You land heavily!") + to_chat(H, "You land heavily!") H.adjustBruteLoss(damage) H.UpdateDamageIcon() diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index e213c555c43..cffed16117b 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -157,7 +157,7 @@ /obj/structure/closet/attack_animal(mob/living/simple_animal/user as mob) if(user.environment_smash) user.do_attack_animation(src) - visible_message("\red [user] destroys the [src]. ") + visible_message("[user] destroys the [src]. ") for(var/atom/movable/A as mob|obj in src) A.forceMove(loc) qdel(src) @@ -194,7 +194,7 @@ var/desc = input("Please select a telepad.", "RCS") in L E.pad = L[desc] playsound(E.loc, 'sound/machines/click.ogg', 50, 1) - to_chat(user, "\blue Teleporting [src.name]...") + to_chat(user, "Teleporting [src.name]...") E.teleporting = 1 if(!do_after(user, 50, target = src)) E.teleporting = 0 @@ -216,7 +216,7 @@ E.rand_y = rand(50,200) var/L = locate(E.rand_x, E.rand_y, 6) playsound(E.loc, 'sound/machines/click.ogg', 50, 1) - to_chat(user, "\blue Teleporting [src.name]...") + to_chat(user, "Teleporting [src.name]...") E.teleporting = 1 if(!do_after(user, 50, target = src)) E.teleporting = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index 715d16f9ebd..fdabf2de4cf 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -23,7 +23,7 @@ if(isrobot(user) || src.locked) if(istype(O, /obj/item/device/multitool)) - to_chat(user, "\red Resetting circuitry...") + to_chat(user, "Resetting circuitry...") playsound(user, 'sound/machines/lockreset.ogg', 50, 1) if(do_after(user, 20, target = src)) src.locked = 0 @@ -43,7 +43,7 @@ user.do_attack_animation(src) playsound(user, 'sound/effects/Glasshit.ogg', 100, 1) //We don't want this playing every time if(W.force < 15) - to_chat(user, "\blue The cabinet's protective glass glances off the hit.") + to_chat(user, "The cabinet's protective glass glances off the hit.") else src.hitstaken++ if(src.hitstaken == 4) @@ -56,12 +56,12 @@ if(istype(O, /obj/item/weapon/twohanded/fireaxe) && src.localopened) if(!fireaxe) if(O:wielded) - to_chat(user, "\red Unwield the axe first.") + to_chat(user, "Unwield the axe first.") return fireaxe = O user.drop_item(O) src.contents += O - to_chat(user, "\blue You place the fire axe back in the [src.name].") + to_chat(user, "You place the fire axe back in the [src.name].") update_icon() else if(src.smashed) @@ -84,10 +84,10 @@ spawn(10) update_icon() return else - to_chat(user, "\red Resetting circuitry...") + to_chat(user, "Resetting circuitry...") sleep(50) src.locked = 1 - to_chat(user, "\blue You re-enable the locking modules.") + to_chat(user, "You re-enable the locking modules.") playsound(user, 'sound/machines/lockenable.ogg', 50, 1) if(do_after(user,20, target = src)) src.locked = 1 @@ -112,13 +112,13 @@ hasaxe = 1 if(src.locked) - to_chat(user, "\red The cabinet won't budge!") + to_chat(user, "The cabinet won't budge!") return if(localopened) if(fireaxe) user.put_in_hands(fireaxe) fireaxe = null - to_chat(user, "\blue You take the fire axe from the [name].") + to_chat(user, "You take the fire axe from the [name].") src.add_fingerprint(user) update_icon() else @@ -145,7 +145,7 @@ attack_tk(mob/user as mob) if(localopened && fireaxe) fireaxe.forceMove(loc) - to_chat(user, "\blue You telekinetically remove the fire axe.") + to_chat(user, "You telekinetically remove the fire axe.") fireaxe = null update_icon() return @@ -157,9 +157,9 @@ if(isrobot(usr) || src.locked || src.smashed) if(src.locked) - to_chat(usr, "\red The cabinet won't budge!") + to_chat(usr, "The cabinet won't budge!") else if(src.smashed) - to_chat(usr, "\blue The protective glass is broken!") + to_chat(usr, "The protective glass is broken!") return localopened = !localopened @@ -176,23 +176,23 @@ if(fireaxe) usr.put_in_hands(fireaxe) fireaxe = null - to_chat(usr, "\blue You take the Fire axe from the [name].") + to_chat(usr, "You take the Fire axe from the [name].") else - to_chat(usr, "\blue The [src.name] is empty.") + to_chat(usr, "The [src.name] is empty.") else - to_chat(usr, "\blue The [src.name] is closed.") + to_chat(usr, "The [src.name] is closed.") update_icon() attack_ai(mob/user as mob) if(src.smashed) - to_chat(user, "\red The security of the cabinet is compromised.") + to_chat(user, "The security of the cabinet is compromised.") return else locked = !locked if(locked) - to_chat(user, "\red Cabinet locked.") + to_chat(user, "Cabinet locked.") else - to_chat(user, "\blue Cabinet unlocked.") + to_chat(user, "Cabinet unlocked.") update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers var/hasaxe = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 7eab1e6de85..e6d21e79244 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -62,7 +62,7 @@ if(W) W.forceMove(loc) else if(istype(W, /obj/item/weapon/card/id)) if(src.broken) - to_chat(user, "\red It appears to be broken.") + to_chat(user, "It appears to be broken.") return var/obj/item/weapon/card/id/I = W if(!I || !I.registered_name) return @@ -82,8 +82,8 @@ src.registered_name = I.registered_name src.desc = "Owned by [I.registered_name]." else - to_chat(user, "\red Access Denied") + to_chat(user, "Access Denied") else if((istype(W, /obj/item/weapon/card/emag) || istype(W, /obj/item/weapon/melee/energy/blade)) && !broken) emag_act(user) else - to_chat(user, "\red Access Denied") + to_chat(user, "Access Denied") diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index db589c027e6..ca53ab10d07 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -167,7 +167,7 @@ locked = 0 welded = 0 update_icon() - to_chat(usr, "\red You successfully break out!") + to_chat(usr, "You successfully break out!") for(var/mob/O in viewers(L.loc)) O.show_message("\the [usr] successfully broke out of \the [src]!", 1) if(istype(src.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace) diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 3c198e4dd08..17983fd8ca2 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -114,7 +114,7 @@ /obj/structure/closet/statue/attackby(obj/item/I as obj, mob/user as mob, params) user.changeNext_move(CLICK_CD_MELEE) health -= I.force - visible_message("\red [user] strikes [src] with [I].") + visible_message("[user] strikes [src] with [I].") check_health() /obj/structure/closet/statue/MouseDrop_T() @@ -136,7 +136,7 @@ if(user) user.dust() dump_contents() - visible_message("\red [src] shatters!. ") + visible_message("[src] shatters!. ") qdel(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 23f5330e48a..ff55c0118f5 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -103,7 +103,7 @@ var/desc = input("Please select a telepad.", "RCS") in L E.pad = L[desc] playsound(E.loc, 'sound/machines/click.ogg', 50, 1) - to_chat(user, "\blue Teleporting [src.name]...") + to_chat(user, "Teleporting [src.name]...") E.teleporting = 1 if(!do_after(user, 50, target = src)) E.teleporting = 0 @@ -121,7 +121,7 @@ E.rand_y = rand(50,200) var/L = locate(E.rand_x, E.rand_y, 6) playsound(E.loc, 'sound/machines/click.ogg', 50, 1) - to_chat(user, "\blue Teleporting [src.name]...") + to_chat(user, "Teleporting [src.name]...") E.teleporting = 1 if(!do_after(user, 50, target = src)) E.teleporting = 0 diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index dc7152bbd5f..170eaa168bc 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -171,7 +171,7 @@ user.visible_message("[user] welds the [glass] plating off the airlock assembly.", "You start to weld the [glass] plating off the airlock assembly.") if(do_after(user, 40, target = src)) if(!src || !WT.isOn()) return - to_chat(user, "\blue You welded the [glass] plating off!") + to_chat(user, "You welded the [glass] plating off!") var/M = text2path("/obj/item/stack/sheet/mineral/[glass]") new M(src.loc, 2) glass = 0 @@ -179,18 +179,18 @@ user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly.") if(do_after(user, 40, target = src)) if(!src || !WT.isOn()) return - to_chat(user, "\blue You welded the glass panel out!") + to_chat(user, "You welded the glass panel out!") new /obj/item/stack/sheet/rglass(src.loc) glass = 0 else if(!anchored) user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.") if(do_after(user, 40, target = src)) if(!src || !WT.isOn()) return - to_chat(user, "\blue You dissasembled the airlock assembly!") + to_chat(user, "You dissasembled the airlock assembly!") new /obj/item/stack/sheet/metal(src.loc, 4) qdel(src) else - to_chat(user, "\blue You need more welding fuel.") + to_chat(user, "You need more welding fuel.") return else if(istype(W, /obj/item/weapon/wrench) && state == 0) @@ -202,7 +202,7 @@ if(do_after(user, 40, target = src)) if(!src) return - to_chat(user, "\blue You [anchored? "un" : ""]secured the airlock assembly!") + to_chat(user, "You [anchored ? "un" : ""]secured the airlock assembly!") anchored = !anchored else if(istype(W, /obj/item/stack/cable_coil) && state == 0 && anchored ) @@ -212,7 +212,7 @@ if(!src) return coil.use(1) src.state = 1 - to_chat(user, "\blue You wire the Airlock!") + to_chat(user, "You wire the Airlock!") else if(istype(W, /obj/item/weapon/wirecutters) && state == 1 ) playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) @@ -220,7 +220,7 @@ if(do_after(user, 40, target = src)) if(!src) return - to_chat(user, "\blue You cut the airlock wires.!") + to_chat(user, "You cut the airlock wires.!") new/obj/item/stack/cable_coil(src.loc, 1) src.state = 0 @@ -232,7 +232,7 @@ if(do_after(user, 40, target = src)) if(!src) return - to_chat(user, "\blue You installed the airlock electronics!") + to_chat(user, "You installed the airlock electronics!") src.state = 2 src.name = "Near finished Airlock Assembly" src.electronics = W @@ -245,7 +245,7 @@ if(do_after(user, 40, target = src)) if(!src) return - to_chat(user, "\blue You removed the airlock electronics!") + to_chat(user, "You removed the airlock electronics!") src.state = 1 src.name = "Wired Airlock Assembly" var/obj/item/weapon/airlock_electronics/ae @@ -264,7 +264,7 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") if(do_after(user, 40, target = src)) - to_chat(user, "\blue You installed reinforced glass windows into the airlock assembly!") + to_chat(user, "You installed reinforced glass windows into the airlock assembly!") S.use(1) glass = 1 else if(istype(S, /obj/item/stack/sheet/mineral) && S.sheettype) @@ -273,17 +273,17 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") if(do_after(user, 40, target = src)) - to_chat(user, "\blue You installed [M] plating into the airlock assembly!") + to_chat(user, "You installed [M] plating into the airlock assembly!") S.use(2) glass = "[M]" else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 ) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - to_chat(user, "\blue Now finishing the airlock.") + to_chat(user, "Now finishing the airlock.") if(do_after(user, 40, target = src)) if(!src) return - to_chat(user, "\blue You finish the airlock!") + to_chat(user, "You finish the airlock!") var/path if(istext(glass)) path = text2path("/obj/machinery/door/airlock/[glass]") diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 4d03bfcdb27..ed690192098 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -314,12 +314,12 @@ if(istype(I, /obj/item/weapon/hatchet) && !stump) if(indestructable) //this bush marks the edge of the map, you can't destroy it - to_chat(user, "\red You flail away at the undergrowth, but it's too thick here.") + to_chat(user, "You flail away at the undergrowth, but it's too thick here.") else - user.visible_message("[user] begins clearing away [src].","\red You begin clearing away [src].") + user.visible_message("[user] begins clearing away [src].","You begin clearing away [src].") spawn(rand(15,30)) if(get_dist(user,src) < 2) - to_chat(user, "\blue You clear away [src].") + to_chat(user, "You clear away [src].") var/obj/item/stack/sheet/wood/W = new(src.loc) W.amount = rand(3,15) if(prob(50)) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 6051bbebef6..17d7179c931 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -33,30 +33,30 @@ if(istype(W, /obj/item/weapon/wrench) && state == 0) if(anchored && !istype(src,/obj/structure/girder/displaced)) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - to_chat(user, "\blue Now disassembling the girder") + to_chat(user, "Now disassembling the girder") if(do_after(user,40, target = src)) if(!src) return - to_chat(user, "\blue You dissasembled the girder!") + to_chat(user, "You dissasembled the girder!") refundMetal(metalUsed) qdel(src) else if(!anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - to_chat(user, "\blue Now securing the girder") + to_chat(user, "Now securing the girder") if(do_after(user, 40, target = src)) - to_chat(user, "\blue You secured the girder!") + to_chat(user, "You secured the girder!") new/obj/structure/girder( src.loc ) qdel(src) else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter)) - to_chat(user, "\blue Now slicing apart the girder") + to_chat(user, "Now slicing apart the girder") if(do_after(user,30, target = src)) if(!src) return - to_chat(user, "\blue You slice apart the girder!") + to_chat(user, "You slice apart the girder!") refundMetal(metalUsed) qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/drill/diamonddrill)) - to_chat(user, "\blue You drill through the girder!") + to_chat(user, "You drill through the girder!") refundMetal(metalUsed) qdel(src) @@ -68,27 +68,27 @@ else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - to_chat(user, "\blue Now unsecuring support struts") + to_chat(user, "Now unsecuring support struts") if(do_after(user,40, target = src)) if(!src) return - to_chat(user, "\blue You unsecured the support struts!") + to_chat(user, "You unsecured the support struts!") state = 1 else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1) playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - to_chat(user, "\blue Now removing support struts") + to_chat(user, "Now removing support struts") if(do_after(user,40, target = src)) if(!src) return - to_chat(user, "\blue You removed the support struts!") + to_chat(user, "You removed the support struts!") new/obj/structure/girder( src.loc ) qdel(src) else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) - to_chat(user, "\blue Now dislodging the girder") + to_chat(user, "Now dislodging the girder") if(do_after(user, 40, target = src)) if(!src) return - to_chat(user, "\blue You dislodged the girder!") + to_chat(user, "You dislodged the girder!") new/obj/structure/girder/displaced( src.loc ) qdel(src) @@ -101,16 +101,16 @@ if(!anchored) if(S.amount < 2) return S.use(2) - to_chat(user, "\blue You create a false wall! Push on it to open or close the passage.") + to_chat(user, "You create a false wall! Push on it to open or close the passage.") new /obj/structure/falsewall (src.loc) qdel(src) else if(S.amount < 2) return ..() - to_chat(user, "\blue Now adding plating...") + to_chat(user, "Now adding plating...") if(do_after(user,40, target = src)) if(!src || !S || S.amount < 2) return S.use(2) - to_chat(user, "\blue You added the plating!") + to_chat(user, "You added the plating!") var/turf/Tsrc = get_turf(src) Tsrc.ChangeTurf(/turf/simulated/wall) for(var/turf/simulated/wall/X in Tsrc.loc) @@ -122,17 +122,17 @@ if(!anchored) if(S.amount < 2) return S.use(2) - to_chat(user, "\blue You create a false wall! Push on it to open or close the passage.") + to_chat(user, "You create a false wall! Push on it to open or close the passage.") new /obj/structure/falsewall/reinforced (src.loc) qdel(src) else if(src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... if(S.amount < 1) return ..() - to_chat(user, "\blue Now finalising reinforced wall.") + to_chat(user, "Now finalising reinforced wall.") if(do_after(user, 50, target = src)) if(!src || !S || S.amount < 1) return S.use(1) - to_chat(user, "\blue Wall fully reinforced!") + to_chat(user, "Wall fully reinforced!") var/turf/Tsrc = get_turf(src) Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) @@ -141,11 +141,11 @@ return else if(S.amount < 1) return ..() - to_chat(user, "\blue Now reinforcing girders") + to_chat(user, "Now reinforcing girders") if(do_after(user,60, target = src)) if(!src || !S || S.amount < 1) return S.use(1) - to_chat(user, "\blue Girders reinforced!") + to_chat(user, "Girders reinforced!") new/obj/structure/girder/reinforced( src.loc ) qdel(src) return @@ -155,17 +155,17 @@ if(!anchored) if(S.amount < 2) return S.use(2) - to_chat(user, "\blue You create a false wall! Push on it to open or close the passage.") + to_chat(user, "You create a false wall! Push on it to open or close the passage.") var/F = text2path("/obj/structure/falsewall/[M]") new F (src.loc) qdel(src) else if(S.amount < 2) return ..() - to_chat(user, "\blue Now adding plating...") + to_chat(user, "Now adding plating...") if(do_after(user,40, target = src)) if(!src || !S || S.amount < 2) return S.use(2) - to_chat(user, "\blue You added the plating!") + to_chat(user, "You added the plating!") var/turf/Tsrc = get_turf(src) Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) for(var/turf/simulated/wall/mineral/X in Tsrc.loc) @@ -180,7 +180,7 @@ if(P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds. user.drop_item() P.loc = src.loc - to_chat(user, "\blue You fit the pipe into the [src]!") + to_chat(user, "You fit the pipe into the [src]!") else ..() @@ -241,19 +241,19 @@ /obj/structure/cultgirder/attackby(obj/item/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - to_chat(user, "\blue Now disassembling the girder") + to_chat(user, "Now disassembling the girder") if(do_after(user,40, target = src)) - to_chat(user, "\blue You dissasembled the girder!") + to_chat(user, "You dissasembled the girder!") dismantle() else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter)) - to_chat(user, "\blue Now slicing apart the girder") + to_chat(user, "Now slicing apart the girder") if(do_after(user,30, target = src)) - to_chat(user, "\blue You slice apart the girder!") + to_chat(user, "You slice apart the girder!") dismantle() else if(istype(W, /obj/item/weapon/pickaxe/drill/diamonddrill)) - to_chat(user, "\blue You drill through the girder!") + to_chat(user, "You drill through the girder!") dismantle() /obj/structure/cultgirder/proc/dismantle() diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index aee81bdf7f8..32d2a0b4e31 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -7,7 +7,7 @@ /obj/item/inflatable/attack_self(mob/user) playsound(loc, 'sound/items/zip.ogg', 75, 1) - to_chat(user, "\blue You inflate [src].") + to_chat(user, "You inflate [src].") var/obj/structure/inflatable/R = new /obj/structure/inflatable(user.loc) src.transfer_fingerprints_to(R) R.add_fingerprint(user) @@ -150,7 +150,7 @@ /obj/item/inflatable/door/attack_self(mob/user) playsound(loc, 'sound/items/zip.ogg', 75, 1) - to_chat(user, "\blue You inflate [src].") + to_chat(user, "You inflate [src].") var/obj/structure/inflatable/door/R = new /obj/structure/inflatable/door(user.loc) src.transfer_fingerprints_to(R) R.add_fingerprint(user) diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm index d661fb60b9e..56a60bc651d 100644 --- a/code/game/objects/structures/lamarr_cage.dm +++ b/code/game/objects/structures/lamarr_cage.dm @@ -69,10 +69,10 @@ if(src.destroyed) return else - to_chat(usr, text("\blue You kick the lab cage.")) + to_chat(usr, text("You kick the lab cage.")) for(var/mob/O in oviewers()) if((O.client && !( O.blinded ))) - to_chat(O, text("\red [] kicks the lab cage.", usr)) + to_chat(O, text("[] kicks the lab cage.", usr)) src.health -= 2 healthcheck() return diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index bfb607585b0..848a953324a 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -58,7 +58,7 @@ if(istype(C, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = C if(WT.remove_fuel(0, user)) - to_chat(user, "\blue Slicing lattice joints ...") + to_chat(user, "Slicing lattice joints ...") new /obj/item/stack/rods(src.loc) qdel(src) diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 49175dfa9e3..a93bb1c5ed9 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -27,10 +27,10 @@ if(istype(W, /obj/item/weapon/mop)) if(src.reagents.total_volume >= 2) src.reagents.trans_to(W, 2) - to_chat(user, "\blue You wet the mop") + to_chat(user, "You wet the mop") playsound(src.loc, 'sound/effects/slosh.ogg', 25, 1) if(src.reagents.total_volume < 1) - to_chat(user, "\blue Out of water!") + to_chat(user, "Out of water!") return /obj/structure/mopbucket/ex_act(severity) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index be81c338c08..bed1c66f997 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -217,7 +217,7 @@ if(user != O) for(var/mob/B in viewers(user, 3)) if((B.client && !( B.blinded ))) - to_chat(B, text("\red [] stuffs [] into []!", user, O, src)) + to_chat(B, text("[] stuffs [] into []!", user, O, src)) return /obj/structure/m_tray/Destroy() @@ -299,7 +299,7 @@ /obj/structure/crematorium/attack_hand(mob/user as mob) if(cremating) - to_chat(usr, "\red It's locked.") + to_chat(usr, "It's locked.") return if((connected) && (locked == 0)) for(var/atom/movable/A as mob|obj in connected.loc) @@ -460,7 +460,7 @@ if(user != O) for(var/mob/B in viewers(user, 3)) if((B.client && !( B.blinded ))) - to_chat(B, text("\red [] stuffs [] into []!", user, O, src)) + to_chat(B, text("[] stuffs [] into []!", user, O, src)) //Foreach goto(99) return diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index ae9e6b41d05..004f73fdd6a 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -243,7 +243,7 @@ playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) playsound(src.loc, "sparks", 50, 1) for(var/mob/O in viewers(user, 4)) - O.show_message("\blue The [src] was sliced apart by [user]!", 1, "\red You hear [src] coming apart.", 2) + O.show_message("The [src] was sliced apart by [user]!", 1, "You hear [src] coming apart.", 2) destroy() return @@ -494,18 +494,18 @@ var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) if(src.status == 2) - to_chat(user, "\blue Now weakening the reinforced table") + to_chat(user, "Now weakening the reinforced table") playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) if(do_after(user, 50, target = src)) if(!src || !WT.isOn()) return - to_chat(user, "\blue Table weakened") + to_chat(user, "Table weakened") src.status = 1 else - to_chat(user, "\blue Now strengthening the reinforced table") + to_chat(user, "Now strengthening the reinforced table") playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) if(do_after(user, 50, target = src)) if(!src || !WT.isOn()) return - to_chat(user, "\blue Table strengthened") + to_chat(user, "Table strengthened") src.status = 2 return return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 22331e4f484..0212d2be2a8 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -133,8 +133,8 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f else if(user.a_intent == I_HARM) user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) - user.visible_message("\red [user.name] bangs against the [src.name]!", \ - "\red You bang against the [src.name]!", \ + user.visible_message("[user.name] bangs against the [src.name]!", \ + "You bang against the [src.name]!", \ "You hear a banging sound.") else user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 1ce1165a8a5..017bcd3d5a7 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -23,15 +23,15 @@ var/ert_request_answered = 0 return if(!ticker) - to_chat(usr, "\red The game hasn't started yet!") + to_chat(usr, "The game hasn't started yet!") return if(ticker.current_state == 1) - to_chat(usr, "\red The round hasn't started yet!") + to_chat(usr, "The round hasn't started yet!") return if(send_emergency_team) - to_chat(usr, "\red Central Command has already dispatched an emergency response team!") + to_chat(usr, "Central Command has already dispatched an emergency response team!") return if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes") @@ -43,7 +43,7 @@ var/ert_request_answered = 0 return if(send_emergency_team) - to_chat(usr, "\red Central Command has already dispatched an emergency response team!") + to_chat(usr, "Central Command has already dispatched an emergency response team!") return var/ert_type = pick_ert_type() diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index cb7cd8be813..da98083ec1a 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -225,7 +225,7 @@ take_damage(rand(25, 75)) return - to_chat(M, "\blue You push the wall but nothing happens!") + to_chat(M, "You push the wall but nothing happens!") return /turf/simulated/wall/attack_hand(mob/user as mob) @@ -398,12 +398,12 @@ playsound(get_turf(src), 'sound/weapons/circsawhit.ogg', 50, 1) user.visible_message( \ "[user] starts drilling a hole in \the [src].", \ - "\blue You start drilling a hole in \the [src].", \ + "You start drilling a hole in \the [src].", \ "You hear ratchet.") if(do_after(user, 80, target = src)) user.visible_message( \ "[user] drills a hole in \the [src] and pushes \a [P] into the void", \ - "\blue You have finished drilling in \the [src] and push the [P] into the void.", \ + "You have finished drilling in \the [src] and push the [P] into the void.", \ "You hear ratchet.") user.drop_item() diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 49cfa1ace0f..bdb0279509e 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -267,12 +267,12 @@ playsound(get_turf(src), 'sound/weapons/circsawhit.ogg', 50, 1) user.visible_message( \ "[user] starts drilling a hole in \the [src].", \ - "\blue You start drilling a hole in \the [src]. This is going to take a while.", \ + "You start drilling a hole in \the [src]. This is going to take a while.", \ "You hear ratchet.") if(do_after(user, 160, target = src)) user.visible_message( \ "[user] drills a hole in \the [src] and pushes \a [P] into the void", \ - "\blue You have finished drilling in \the [src] and push the [P] into the void.", \ + "You have finished drilling in \the [src] and push the [P] into the void.", \ "You hear ratchet.") user.drop_item() diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 896bd2b850d..481fc73631a 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -166,7 +166,7 @@ card.removePersonality() var/turf/T = get_turf_or_move(card.loc) for(var/mob/M in viewers(T)) - M.show_message("\blue [src] flashes a message across its screen, \"Wiping core files. Please acquire a new personality to continue using pAI device functions.\"", 3, "\blue [src] bleeps electronically.", 2) + M.show_message("[src] flashes a message across its screen, \"Wiping core files. Please acquire a new personality to continue using pAI device functions.\"", 3, "[src] bleeps electronically.", 2) death(0, 1) else to_chat(src, "Aborting suicide attempt.") diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index 577d5d5de46..f04f36a7bcc 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -127,7 +127,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = var/sql = "INSERT INTO [format_table_name("ban")] (`id`,`bantime`,`serverip`,`bantype`,`reason`,`job`,`duration`,`rounds`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`,`edits`,`unbanned`,`unbanned_datetime`,`unbanned_ckey`,`unbanned_computerid`,`unbanned_ip`) VALUES (null, Now(), '[serverip]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], [(rounds)?"[rounds]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', '[ip]', '[a_ckey]', '[a_computerid]', '[a_ip]', '[who]', '[adminwho]', '', null, null, null, null, null)" var/DBQuery/query_insert = dbcon.NewQuery(sql) query_insert.Execute() - to_chat(usr, "\blue Ban saved to database.") + to_chat(usr, "Ban saved to database.") message_admins("[key_name_admin(usr)] has added a [bantype_str] for [ckey] [(job)?"([job])":""] [(duration > 0)?"([duration] minutes)":""] with the reason: \"[reason]\" to the ban database.",1) if(announceinirc) @@ -201,17 +201,17 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "") ban_number++; if(ban_number == 0) - to_chat(usr, "\red Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.") + to_chat(usr, "Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.") return if(ban_number > 1) - to_chat(usr, "\red Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.") + to_chat(usr, "Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.") return if(istext(ban_id)) ban_id = text2num(ban_id) if(!isnum(ban_id)) - to_chat(usr, "\red Database update failed due to a ban ID mismatch. Contact the database admin.") + to_chat(usr, "Database update failed due to a ban ID mismatch. Contact the database admin.") return DB_ban_unban_by_id(ban_id) @@ -302,11 +302,11 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) ban_number++; if(ban_number == 0) - to_chat(usr, "\red Database update failed due to a ban id not being present in the database.") + to_chat(usr, "Database update failed due to a ban id not being present in the database.") return if(ban_number > 1) - to_chat(usr, "\red Database update failed due to multiple bans having the same ID. Contact the database admin.") + to_chat(usr, "Database update failed due to multiple bans having the same ID. Contact the database admin.") return if(!src.owner || !istype(src.owner, /client)) @@ -343,7 +343,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) establish_db_connection() if(!dbcon.IsConnected()) - to_chat(usr, "\red Failed to establish database connection") + to_chat(usr, "Failed to establish database connection") return var/output = "
" diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 3d7b11390eb..6c8d642510a 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -15,7 +15,7 @@ world/IsBanned(key,address,computer_id) //Guest Checking if(!guests_allowed && IsGuestKey(key)) log_access("Failed Login: [key] [computer_id] [address] - Guests not allowed") - // message_admins("\blue Failed Login: [key] - Guests not allowed") + // message_admins("Failed Login: [key] - Guests not allowed") return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a BYOND account.") //check if the IP address is a known Tor node diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index 9ba4ca4eeee..2e8fa4ba04b 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -172,7 +172,6 @@ var/savefile/Banlist /datum/admins/proc/unbanpanel() var/count = 0 var/dat - //var/dat = "
Unban Player: \blue(U) = Unban , (E) = Edit Ban\green (Total
" Banlist.cd = "/base" for(var/A in Banlist.dir) count++ diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index cb00562be9c..6853baf0755 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -844,8 +844,8 @@ var/global/nologevent = 0 to_chat(world, "Guests may no longer enter the game.") else to_chat(world, "Guests may now enter the game.") - log_admin("[key_name(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.") - message_admins("\blue [key_name_admin(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.", 1) + log_admin("[key_name(usr)] toggled guests game entering [guests_allowed ? "" : "dis"]allowed.") + message_admins("[key_name_admin(usr)] toggled guests game entering [guests_allowed ? "" : "dis"]allowed.", 1) feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/output_ai_laws() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index a029e529856..370ab62a8f2 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -631,7 +631,7 @@ var/list/admin_verbs_snpc = list( for(var/mob/V in hearers(O)) V.show_message(message, 2) log_admin("[key_name(usr)] made [O] at [O.x], [O.y], [O.z] make a sound") - message_admins("\blue [key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z] make a sound") + message_admins("[key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z] make a sound") feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/togglebuildmodeself() @@ -679,7 +679,7 @@ var/list/admin_verbs_snpc = list( to_chat(usr, "Disabled air processing.") feedback_add_details("admin_verb","KA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] used 'kill air'.") - message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1) + message_admins("[key_name_admin(usr)] used 'kill air'.", 1) /client/proc/deadmin_self() set name = "De-admin self" diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index f1232cd4e78..ccacefc219b 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -63,7 +63,7 @@ establish_db_connection() if(!dbcon.IsConnected()) - to_chat(usr, "\red Failed to establish database connection") + to_chat(usr, "Failed to establish database connection") return if(!adm_ckey || !new_rank) @@ -91,14 +91,14 @@ insert_query.Execute() var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new admin [adm_ckey] to rank [new_rank]');") log_query.Execute() - to_chat(usr, "\blue New admin added.") + to_chat(usr, "New admin added.") else if(!isnull(admin_id) && isnum(admin_id)) var/DBQuery/insert_query = dbcon.NewQuery("UPDATE [format_table_name("admin")] SET rank = '[new_rank]' WHERE id = [admin_id]") insert_query.Execute() var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edited the rank of [adm_ckey] to [new_rank]');") log_query.Execute() - to_chat(usr, "\blue Admin rank changed.") + to_chat(usr, "Admin rank changed.") /datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission) if(config.admin_legacy_system) @@ -112,7 +112,7 @@ establish_db_connection() if(!dbcon.IsConnected()) - to_chat(usr, "\red Failed to establish database connection") + to_chat(usr, "Failed to establish database connection") return if(!adm_ckey || !new_permission) @@ -146,13 +146,13 @@ insert_query.Execute() var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]');") log_query.Execute() - to_chat(usr, "\blue Permission removed.") + to_chat(usr, "Permission removed.") else //This admin doesn't have this permission, so we are adding it. var/DBQuery/insert_query = dbcon.NewQuery("UPDATE [format_table_name("admin")] SET flags = '[admin_rights | new_permission]' WHERE id = [admin_id]") insert_query.Execute() var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("admin_log")] (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]')") log_query.Execute() - to_chat(usr, "\blue Permission added.") + to_chat(usr, "Permission added.") /datum/admins/proc/updateranktodb(ckey,newrank) establish_db_connection() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index ef3199b3484..fa3f93883e1 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -34,35 +34,35 @@ if("1") log_admin("[key_name(usr)] has spawned a traitor.") if(!src.makeTraitors()) - to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + to_chat(usr, "Unfortunately there weren't enough candidates available.") if("2") log_admin("[key_name(usr)] has spawned a changeling.") if(!src.makeChanglings()) - to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + to_chat(usr, "Unfortunately there weren't enough candidates available.") if("3") log_admin("[key_name(usr)] has spawned revolutionaries.") if(!src.makeRevs()) - to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + to_chat(usr, "Unfortunately there weren't enough candidates available.") if("4") log_admin("[key_name(usr)] has spawned a cultists.") if(!src.makeCult()) - to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + to_chat(usr, "Unfortunately there weren't enough candidates available.") if("5") log_admin("[key_name(usr)] has spawned a wizard.") if(!src.makeWizard()) - to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + to_chat(usr, "Unfortunately there weren't enough candidates available.") if("6") log_admin("[key_name(usr)] has spawned vampires.") if(!src.makeVampires()) - to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + to_chat(usr, "Unfortunately there weren't enough candidates available.") if("7") log_admin("[key_name(usr)] has spawned vox raiders.") if(!src.makeVoxRaiders()) - to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + to_chat(usr, "Unfortunately there weren't enough candidates available.") if("8") log_admin("[key_name(usr)] has spawned an abductor team.") if(!src.makeAbductorTeam()) - to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + to_chat(usr, "Unfortunately there weren't enough candidates available.") else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"]) var/adminckey = href_list["dbsearchadmin"] @@ -298,7 +298,7 @@ ticker.delay_end = !ticker.delay_end log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].") - message_admins("\blue [key_name_admin(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1) + message_admins("[key_name_admin(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1) href_list["secretsadmin"] = "check_antagonist" else if(href_list["simplemake"]) @@ -315,7 +315,7 @@ if("Yes") delmob = 1 log_admin("[key_name(usr)] has used rudimentary transformation on [key_name(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]") - message_admins("\blue [key_name_admin(usr)] has used rudimentary transformation on [key_name_admin(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]", 1) + message_admins("[key_name_admin(usr)] has used rudimentary transformation on [key_name_admin(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]", 1) switch(href_list["simplemake"]) if("observer") M.change_mob_type( /mob/dead/observer , null, null, delmob, 1 ) @@ -398,7 +398,7 @@ log_admin("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]") ban_unban_log_save("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]") - message_admins("\blue [key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]", 1) + message_admins("[key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]", 1) Banlist.cd = "/base/[banfolder]" to_chat(Banlist["reason"], reason) to_chat(Banlist["temp"], temp) @@ -434,8 +434,8 @@ feedback_inc("ban_appearance_unban", 1) DB_ban_unban(M.ckey, BANTYPE_APPEARANCE) appearance_unban(M) - message_admins("\blue [key_name_admin(usr)] removed [key_name_admin(M)]'s appearance ban", 1) - to_chat(M, "\red[usr.client.ckey] has removed your appearance ban.") + message_admins("[key_name_admin(usr)] removed [key_name_admin(M)]'s appearance ban", 1) + to_chat(M, "[usr.client.ckey] has removed your appearance ban.") else switch(alert("Appearance ban [M.ckey]?",,"Yes","No", "Cancel")) if("Yes") @@ -448,14 +448,14 @@ DB_ban_record(BANTYPE_APPEARANCE, M, -1, reason) appearance_fullban(M, "[reason]; By [usr.ckey] on [time2text(world.realtime)]") add_note(M.ckey, "Appearance banned - [reason]", null, usr.ckey, 0) - message_admins("\blue [key_name_admin(usr)] appearance banned [key_name_admin(M)]", 1) - to_chat(M, "\redYou have been appearance banned by [usr.client.ckey].") + message_admins("[key_name_admin(usr)] appearance banned [key_name_admin(M)]", 1) + to_chat(M, "You have been appearance banned by [usr.client.ckey].") to_chat(M, "The reason is: [reason]") - to_chat(M, "\red Appearance ban can be lifted only upon request.") + to_chat(M, "Appearance ban can be lifted only upon request.") if(config.banappeals) - to_chat(M, "\red To try to resolve this matter head to [config.banappeals]") + to_chat(M, "To try to resolve this matter head to [config.banappeals]") else - to_chat(M, "\red No ban appeals URL has been set.") + to_chat(M, "No ban appeals URL has been set.") if("No") return @@ -790,7 +790,7 @@ switch(alert("Temporary Ban?",,"Yes","No", "Cancel")) if("Yes") if(config.ban_legacy_system) - to_chat(usr, "\red Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.") + to_chat(usr, "Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.") return var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null if(!mins) @@ -812,10 +812,10 @@ else msg += ", [job]" add_note(M.ckey, "Banned from [msg] - [reason]", null, usr.ckey, 0) - message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes", 1) - to_chat(M, "\redYou have been jobbanned by [usr.client.ckey] from: [msg].") + message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes", 1) + to_chat(M, "You have been jobbanned by [usr.client.ckey] from: [msg].") to_chat(M, "The reason is: [reason]") - to_chat(M, "\red This jobban will be lifted in [mins] minutes.") + to_chat(M, "This jobban will be lifted in [mins] minutes.") href_list["jobban2"] = 1 // lets it fall through and refresh return 1 if("No") @@ -832,10 +832,10 @@ if(!msg) msg = job else msg += ", [job]" add_note(M.ckey, "Banned from [msg] - [reason]", null, usr.ckey, 0) - message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [msg]", 1) - to_chat(M, "\redYou have been jobbanned by [usr.client.ckey] from: [msg].") + message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]", 1) + to_chat(M, "You have been jobbanned by [usr.client.ckey] from: [msg].") to_chat(M, "The reason is: [reason]") - to_chat(M, "\red Jobban can be lifted only upon request.") + to_chat(M, "Jobban can be lifted only upon request.") href_list["jobban2"] = 1 // lets it fall through and refresh return 1 if("Cancel") @@ -865,8 +865,8 @@ else continue if(msg) - message_admins("\blue [key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]", 1) - to_chat(M, "\redYou have been un-jobbanned by [usr.client.ckey] from [msg].") + message_admins("[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]", 1) + to_chat(M, "You have been un-jobbanned by [usr.client.ckey] from [msg].") href_list["jobban2"] = 1 // lets it fall through and refresh return 1 return 0 //we didn't do anything! @@ -876,9 +876,9 @@ if(ismob(M)) if(!check_if_greater_rights_than(M.client)) return - to_chat(M, "\red You have been kicked from the server") + to_chat(M, "You have been kicked from the server") log_admin("[key_name(usr)] booted [key_name(M)].") - message_admins("\blue [key_name_admin(usr)] booted [key_name_admin(M)].", 1) + message_admins("[key_name_admin(usr)] booted [key_name_admin(M)].", 1) //M.client = null del(M.client) @@ -933,7 +933,7 @@ if(t) if((alert("Do you want to unjobban [t]?","Unjobban confirmation", "Yes", "No") == "Yes") && t) //No more misclicks! Unless you do it twice. log_admin("[key_name(usr)] removed [t]") - message_admins("\blue [key_name_admin(usr)] removed [t]", 1) + message_admins("[key_name_admin(usr)] removed [t]", 1) jobban_remove(t) href_list["ban"] = 1 // lets it fall through and refresh var/t_split = splittext(t, " - ") @@ -960,17 +960,17 @@ return AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins) ban_unban_log_save("[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.") - to_chat(M, "\redYou have been banned by [usr.client.ckey].\nReason: [reason].") - to_chat(M, "\red This is a temporary ban, it will be removed in [mins] minutes.") + to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].") + to_chat(M, "This is a temporary ban, it will be removed in [mins] minutes.") feedback_inc("ban_tmp",1) DB_ban_record(BANTYPE_TEMP, M, mins, reason) feedback_inc("ban_tmp_mins",mins) if(config.banappeals) - to_chat(M, "\red To try to resolve this matter head to [config.banappeals]") + to_chat(M, "To try to resolve this matter head to [config.banappeals]") else - to_chat(M, "\red No ban appeals URL has been set.") + to_chat(M, "No ban appeals URL has been set.") log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") - message_admins("\blue [key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") + message_admins("[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.") del(M.client) //qdel(M) // See no reason why to delete mob. Important stuff can be lost. And ban can be lifted before round ends. @@ -984,15 +984,15 @@ AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP) if("No") AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0) - to_chat(M, "\redYou have been banned by [usr.client.ckey].\nReason: [reason].") - to_chat(M, "\red This is a permanent ban.") + to_chat(M, "You have been banned by [usr.client.ckey].\nReason: [reason].") + to_chat(M, "This is a permanent ban.") if(config.banappeals) - to_chat(M, "\red To try to resolve this matter head to [config.banappeals]") + to_chat(M, "To try to resolve this matter head to [config.banappeals]") else - to_chat(M, "\red No ban appeals URL has been set.") + to_chat(M, "No ban appeals URL has been set.") ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.") log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.") - message_admins("\blue[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.") + message_admins("[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.") feedback_inc("ban_perma",1) DB_ban_record(BANTYPE_PERMA, M, -1, reason) @@ -1094,7 +1094,7 @@ return alert(usr, "The game has already started.", null, null, null, null) master_mode = href_list["c_mode2"] log_admin("[key_name(usr)] set the mode as [master_mode].") - message_admins("\blue [key_name_admin(usr)] set the mode as [master_mode].", 1) + message_admins("[key_name_admin(usr)] set the mode as [master_mode].", 1) to_chat(world, "The mode is now: [master_mode]") Game() // updates the main game menu world.save_mode(master_mode) @@ -1109,7 +1109,7 @@ return alert(usr, "The game mode has to be secret!", null, null, null, null) secret_force_mode = href_list["f_secret2"] log_admin("[key_name(usr)] set the forced secret mode as [secret_force_mode].") - message_admins("\blue [key_name_admin(usr)] set the forced secret mode as [secret_force_mode].", 1) + message_admins("[key_name_admin(usr)] set the forced secret mode as [secret_force_mode].", 1) Game() // updates the main game menu .(href, list("f_secret"=1)) @@ -1124,7 +1124,7 @@ return log_admin("[key_name(usr)] attempting to monkeyize [key_name(H)]") - message_admins("\blue [key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]", 1) + message_admins("[key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]", 1) H.monkeyize() @@ -1140,7 +1140,7 @@ return log_admin("[key_name(usr)] attempting to corgize [key_name(H)]") - message_admins("\blue [key_name_admin(usr)] attempting to corgize [key_name_admin(H)]", 1) + message_admins("[key_name_admin(usr)] attempting to corgize [key_name_admin(H)]", 1) H.corgize() else if(href_list["makePAI"]) @@ -1164,7 +1164,7 @@ name = painame log_admin("[key_name(usr)] attempting to pAIze [key_name(H)]") - message_admins("\blue [key_name_admin(usr)] attempting to pAIze [key_name_admin(H)]", 1) + message_admins("[key_name_admin(usr)] attempting to pAIze [key_name_admin(H)]", 1) H.paize(name) else if(href_list["forcespeech"]) @@ -1179,7 +1179,7 @@ M.say(speech) speech = sanitize(speech) // Nah, we don't trust them log_admin("[key_name(usr)] forced [key_name(M)] to say: [speech]") - message_admins("\blue [key_name_admin(usr)] forced [key_name_admin(M)] to say: [speech]") + message_admins("[key_name_admin(usr)] forced [key_name_admin(M)] to say: [speech]") else if(href_list["sendtoprison"]) if(!check_rights(R_ADMIN)) return @@ -1223,9 +1223,9 @@ prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform) prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes) - to_chat(M, "\red You have been sent to the prison station!") + to_chat(M, "You have been sent to the prison station!") log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.") - message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1) + message_admins("[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1) else if(href_list["sendbacktolobby"]) if(!check_rights(R_ADMIN)) @@ -1278,7 +1278,7 @@ sleep(5) M.loc = pick(tdome1) spawn(50) - to_chat(M, "\blue You have been sent to the Thunderdome.") + to_chat(M, "You have been sent to the Thunderdome.") log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 1)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 1)", 1) @@ -1308,7 +1308,7 @@ sleep(5) M.loc = pick(tdome2) spawn(50) - to_chat(M, "\blue You have been sent to the Thunderdome.") + to_chat(M, "You have been sent to the Thunderdome.") log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 2)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 2)", 1) @@ -1330,7 +1330,7 @@ sleep(5) M.loc = pick(tdomeadmin) spawn(50) - to_chat(M, "\blue You have been sent to the Thunderdome.") + to_chat(M, "You have been sent to the Thunderdome.") log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Admin.)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Admin.)", 1) @@ -1364,7 +1364,7 @@ sleep(5) M.loc = pick(tdomeobserve) spawn(50) - to_chat(M, "\blue You have been sent to the Thunderdome.") + to_chat(M, "You have been sent to the Thunderdome.") log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Observer.)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Observer.)", 1) @@ -1386,7 +1386,7 @@ sleep(5) M.loc = pick(aroomwarp) spawn(50) - to_chat(M, "\blue You have been sent to the Admin Room!.") + to_chat(M, "You have been sent to the Admin Room!.") log_admin("[key_name(usr)] has sent [key_name(M)] to the Admin Room") message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the Admin Room", 1) @@ -1400,7 +1400,7 @@ return L.revive() - message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!", 1) + message_admins("Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!", 1) log_admin("[key_name(usr)] healed / revived [key_name(L)]") else if(href_list["makeai"]) @@ -1414,7 +1414,7 @@ if(alert(usr, "Confirm make ai?",, "Yes", "No") != "Yes") return - message_admins("\red Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!", 1) + message_admins("Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!", 1) log_admin("[key_name(usr)] AIized [key_name(H)]") var/mob/living/silicon/ai/ai_character = H.AIize() ai_character.moveToAILandmark() @@ -1619,7 +1619,7 @@ log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]") message_admins("[key_name_admin(H)] got their cookie, spawned by [key_name_admin(src.owner)]") feedback_inc("admin_cookies_spawned",1) - to_chat(H, "\blue Your prayers have been answered!! You received the best cookie!") + to_chat(H, "Your prayers have been answered!! You received the best cookie!") else if(href_list["BlueSpaceArtillery"]) if(!check_rights(R_ADMIN|R_EVENT)) return @@ -1965,7 +1965,7 @@ usr << browse(data, "window=[B.name]") else - to_chat(usr, "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]") + to_chat(usr, "The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]") else if(href_list["AdminFaxViewPage"]) if(!check_rights(R_ADMIN)) @@ -2097,14 +2097,14 @@ if(destination != "All Departments") if(!fax.receivefax(P)) - to_chat(src.owner, "\red Message transmission failed.") + to_chat(src.owner, "Message transmission failed.") return else for(var/obj/machinery/photocopier/faxmachine/F in allfaxes) if(is_station_level(F.z)) spawn(0) if(!F.receivefax(P)) - to_chat(src.owner, "\red Message transmission to [F.department] failed.") + to_chat(src.owner, "Message transmission to [F.department] failed.") var/datum/fax/admin/A = new /datum/fax/admin() A.name = P.name @@ -2119,7 +2119,7 @@ A.sent_by = usr A.sent_at = world.time - to_chat(src.owner, "\blue Message transmitted successfully.") + to_chat(src.owner, "Message transmitted successfully.") if(notify == "Yes") var/mob/living/carbon/human/H = sender if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset))) @@ -2419,30 +2419,30 @@ feedback_add_details("admin_secrets_fun_used","Grav") if(gravity_is_on) log_admin("[key_name(usr)] toggled gravity on.", 1) - message_admins("\blue [key_name_admin(usr)] toggled gravity on.", 1) + message_admins("[key_name_admin(usr)] toggled gravity on.", 1) event_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.") else log_admin("[key_name(usr)] toggled gravity off.", 1) - message_admins("\blue [key_name_admin(usr)] toggled gravity off.", 1) + message_admins("[key_name_admin(usr)] toggled gravity off.", 1) event_announcement.Announce("Feedback surge detected in mass-distributions systems. Artifical gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.") if("power") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","P") log_admin("[key_name(usr)] made all areas powered", 1) - message_admins("\blue [key_name_admin(usr)] made all areas powered", 1) + message_admins("[key_name_admin(usr)] made all areas powered", 1) power_restore() if("unpower") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","UP") log_admin("[key_name(usr)] made all areas unpowered", 1) - message_admins("\blue [key_name_admin(usr)] made all areas unpowered", 1) + message_admins("[key_name_admin(usr)] made all areas unpowered", 1) power_failure() if("quickpower") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","QP") log_admin("[key_name(usr)] made all SMESs powered", 1) - message_admins("\blue [key_name_admin(usr)] made all SMESs powered", 1) + message_admins("[key_name_admin(usr)] made all SMESs powered", 1) power_restore_quick() if("prisonwarp") if(!ticker) @@ -2450,7 +2450,7 @@ return feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","PW") - message_admins("\blue [key_name_admin(usr)] teleported all players to the prison station.", 1) + message_admins("[key_name_admin(usr)] teleported all players to the prison station.", 1) for(var/mob/living/carbon/human/H in mob_list) var/turf/loc = find_loc(H) var/security = 0 @@ -2517,7 +2517,7 @@ A.mind.objectives += new_objective ticker.mode.greet_traitor(A.mind) ticker.mode.finalize_traitor(A.mind) - message_admins("\blue [key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]", 1) + message_admins("[key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]", 1) log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]") if("togglebombcap") @@ -2557,20 +2557,20 @@ var/Message = rand(1,4) switch(Message) if(1) - M.show_message(text("\blue You shudder as if cold..."), 1) + M.show_message(text("You shudder as if cold..."), 1) if(2) - M.show_message(text("\blue You feel something gliding across your back..."), 1) + M.show_message(text("You feel something gliding across your back..."), 1) if(3) - M.show_message(text("\blue Your eyes twitch, you feel like something you can't see is here..."), 1) + M.show_message(text("Your eyes twitch, you feel like something you can't see is here..."), 1) if(4) - M.show_message(text("\blue You notice something moving out of the corner of your eye, but nothing is there..."), 1) + M.show_message(text("You notice something moving out of the corner of your eye, but nothing is there..."), 1) for(var/obj/W in orange(5,M)) if(prob(25) && !W.anchored) step_rand(W) sleep(rand(100,1000)) for(var/mob/M in player_list) if(M.stat != 2) - M.show_message(text("\blue The chilling wind suddenly stops..."), 1) + M.show_message(text("The chilling wind suddenly stops..."), 1) /* if("shockwave") ok = 1 to_chat(world, "ALERT: STATION STRESS CRITICAL") @@ -2754,22 +2754,22 @@ message_admins("[key_name_admin(usr)] tried starting a Thunderdome match, but no ghosts signed up.") if("securitylevel0") set_security_level(0) - message_admins("\blue [key_name_admin(usr)] change security level to Green.", 1) + message_admins("[key_name_admin(usr)] change security level to Green.", 1) if("securitylevel1") set_security_level(1) - message_admins("\blue [key_name_admin(usr)] change security level to Blue.", 1) + message_admins("[key_name_admin(usr)] change security level to Blue.", 1) if("securitylevel2") set_security_level(2) - message_admins("\blue [key_name_admin(usr)] change security level to Red.", 1) + message_admins("[key_name_admin(usr)] change security level to Red.", 1) if("securitylevel3") set_security_level(3) - message_admins("\blue [key_name_admin(usr)] change security level to Gamma.", 1) + message_admins("[key_name_admin(usr)] change security level to Gamma.", 1) if("securitylevel4") set_security_level(4) - message_admins("\blue [key_name_admin(usr)] change security level to Epsilon.", 1) + message_admins("[key_name_admin(usr)] change security level to Epsilon.", 1) if("securitylevel5") set_security_level(5) - message_admins("\blue [key_name_admin(usr)] change security level to Delta.", 1) + message_admins("[key_name_admin(usr)] change security level to Delta.", 1) if("moveminingshuttle") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","ShM") diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 5de3178e7ff..c90ac17a7a2 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -197,8 +197,8 @@ sanitize(msg) if(length(msg) > 400) // TODO: if message length is over 400, divide it up into seperate messages, the message length restriction is based on IRC limitations. Probably easier to do this on the bots ends. - to_chat(src, "\red Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting") - to_chat(src, "\blue [msg]") + to_chat(src, "Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting") + to_chat(src, "[msg]") return send2adminirc("PlayerPM from [key_name(src)]: [html_decode(msg)]") @@ -210,4 +210,4 @@ if(X == src) continue if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob)) - to_chat(X, "PM: [key_name(src, X, 0)]->IRC-Admins: \blue [msg]") + to_chat(X, "PM: [key_name(src, X, 0)]->IRC-Admins:[msg]") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 59ea8992889..367187b55da 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -296,7 +296,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M:Alienize() feedback_add_details("admin_verb","MKAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] made [key_name(M)] into an alien.") - message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into an alien.", 1) + message_admins("[key_name_admin(usr)] made [key_name(M)] into an alien.", 1) else alert("Invalid mob") @@ -316,7 +316,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M:slimeize() feedback_add_details("admin_verb","MKMET") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] made [key_name(M)] into a slime.") - message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a slime.", 1) + message_admins("[key_name_admin(usr)] made [key_name(M)] into a slime.", 1) else alert("Invalid mob") @@ -336,7 +336,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(S) S.create(M) log_admin("[key_name(src)] has turned [M.key] into a Superhero.") - message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a Superhero.", 1) + message_admins("[key_name_admin(usr)] made [key_name(M)] into a Superhero.", 1) else alert("Invalid mob") @@ -424,7 +424,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that alert("Invalid mob") feedback_add_details("admin_verb","GFA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(src)] has granted [M.key] full access.") - message_admins("\blue [key_name_admin(usr)] has granted [M.key] full access.", 1) + message_admins("[key_name_admin(usr)] has granted [M.key] full access.", 1) /client/proc/cmd_assume_direct_control(var/mob/M in mob_list) set category = "Admin" @@ -440,7 +440,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that else var/mob/dead/observer/ghost = new/mob/dead/observer(M,1) ghost.ckey = M.ckey - message_admins("\blue [key_name_admin(usr)] assumed direct control of [M].", 1) + message_admins("[key_name_admin(usr)] assumed direct control of [M].", 1) log_admin("[key_name(usr)] assumed direct control of [M].") var/mob/adminmob = src.mob M.ckey = src.ckey @@ -1341,7 +1341,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.regenerate_icons() log_admin("[key_name(usr)] changed the equipment of [key_name(M)] to [dresscode].") - message_admins("\blue [key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].", 1) + message_admins("[key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].", 1) return /client/proc/equip_special_id(var/mob/living/carbon/human/H, var/list/theaccess = null, var/jobtext, var/obj/item/weapon/card/id/id_type = /obj/item/weapon/card/id, var/special_icon = null) diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index 30f97569c3b..8b8a2b58a52 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -15,7 +15,7 @@ if(T.active_hotspot) burning = 1 - to_chat(usr, "\blue @[target.x],[target.y]: O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]") + to_chat(usr, "@[target.x],[target.y]: O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("BURNING"):(null)]") for(var/datum/gas/trace_gas in GM.trace_gases) to_chat(usr, "[trace_gas.type]: [trace_gas.moles]") diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index 6ebd6b1256a..523fe5cb302 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -45,7 +45,7 @@ var/global/list/frozen_mob_list = list() /mob/living/proc/admin_unFreeze(var/client/admin) if(istype(admin)) to_chat(src, "You have been unfrozen by [key_name(admin)]") - message_admins("\blue [key_name_admin(admin)] unfroze [key_name_admin(src)]") + message_admins("[key_name_admin(admin)] unfroze [key_name_admin(src)]") log_admin("[key_name(admin)] unfroze [key_name(src)]") anchored = 0 @@ -106,10 +106,10 @@ var/global/list/frozen_mob_list = list() if(M.occupant) M.removeVerb(/obj/mecha/verb/eject) to_chat(M.occupant, "You have been frozen by [key]") - message_admins("\blue [key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]") + message_admins("[key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]") log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]") else - message_admins("\blue [key_name_admin(usr)] froze an empty [M.name]") + message_admins("[key_name_admin(usr)] froze an empty [M.name]") log_admin("[key_name(usr)] froze an empty [M.name]") else if(M.can_move == 0) M.can_move = 1 @@ -117,8 +117,8 @@ var/global/list/frozen_mob_list = list() if(M.occupant) M.addVerb(/obj/mecha/verb/eject) to_chat(M.occupant, "You have been unfrozen by [key]") - message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]") + message_admins("[key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]") log_admin("[key_name(usr)] unfroze [M.occupant.name]/[M.occupant.ckey] in a [M.name]") else - message_admins("\blue [key_name_admin(usr)] unfroze an empty [M.name]") + message_admins("[key_name_admin(usr)] unfroze an empty [M.name]") log_admin("[key_name(usr)] unfroze an empty [M.name]") diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index 480ff434a30..cecf04b93aa 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -62,14 +62,14 @@ var/global/sent_honksquad = 0 new_honksquad.update_internals_hud_icon(1) //So they don't forget their code or mission. - new_honksquad.mind.store_memory("Mission: \red [input].") + new_honksquad.mind.store_memory("Mission:[input].") - to_chat(new_honksquad, "\blue You are a HONKsquad. [!honk_leader_selected?"commando":"LEADER"] in the service of Clown Planet. You are called in cases of exteme low levels of HONK. You are NOT authorized to kill. \nYour current mission is: [input]") + to_chat(new_honksquad, "You are a HONKsquad. [!honk_leader_selected ? "commando" : "LEADER"] in the service of Clown Planet. You are called in cases of exteme low levels of HONK. You are NOT authorized to kill.\nYour current mission is: [input]") honksquad_number-- - message_admins("\blue [key_name_admin(usr)] has spawned a HONKsquad.", 1) + message_admins("[key_name_admin(usr)] has spawned a HONKsquad.", 1) log_admin("[key_name(usr)] used Spawn HONKsquad.") return 1 diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index e71c6981d97..d581c99644b 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -337,7 +337,7 @@ client/proc/one_click_antag() //So they don't forget their code or mission. - to_chat(new_syndicate_commando, "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"LEADER"] in the service of the Syndicate. \nYour current mission is: [input]") + to_chat(new_syndicate_commando, "You are an Elite Syndicate. [!syndicate_leader_selected ? "commando" : "LEADER"] in the service of the Syndicate. \nYour current mission is: [input]") numagents-- if(numagents >= 6) @@ -444,8 +444,8 @@ client/proc/one_click_antag() new_vox.key = theghost.key ticker.mode.traitors += new_vox.mind - to_chat(new_vox, "\blue You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: [input]") - to_chat(new_vox, "\red Don't forget to turn on your nitrogen internals!") + to_chat(new_vox, "You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: [input]") + to_chat(new_vox, "Don't forget to turn on your nitrogen internals!") raiders-- if(raiders > max_raiders) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index ad926d61de7..4560c7affa9 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -7,13 +7,13 @@ if(usr.client) if(usr.client.prefs.muted & MUTE_PRAY) - to_chat(usr, "\red You cannot pray (muted).") + to_chat(usr, "You cannot pray (muted).") return if(client.handle_spam_prevention(msg, MUTE_PRAY, OOC_COOLDOWN)) return var/image/cross = image('icons/obj/storage.dmi',"bible") - msg = "\blue [bicon(cross)] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SC) (BLESS) (SMITE): [msg]" + msg = "[bicon(cross)] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SC) (BLESS) (SMITE): [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 9cacaefbd3f..bfef1671cf2 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -39,9 +39,9 @@ prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform) prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes) spawn(50) - to_chat(M, "\red You have been sent to the prison station!") + to_chat(M, "You have been sent to the prison station!") log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.") - message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1) + message_admins("[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1) feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_subtle_message(mob/M as mob in mob_list) @@ -61,10 +61,10 @@ if(usr) if(usr.client) if(usr.client.holder) - to_chat(M, "\bold You hear a voice in your head... \italic [msg]") + to_chat(M, "old You hear a voice in your head... [msg]") log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]") - message_admins("\blue \bold SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]", 1) + message_admins("SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]", 1) feedback_add_details("admin_verb","SMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_mentor_check_new_players() //Allows mentors / admins to determine who the newer players are. @@ -115,7 +115,7 @@ return to_chat(world, "[msg]") log_admin("GlobalNarrate: [key_name(usr)] : [msg]") - message_admins("\blue \bold GlobalNarrate: [key_name_admin(usr)]: [msg]
", 1) + message_admins("GlobalNarrate: [key_name_admin(usr)]: [msg]
", 1) feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_direct_narrate(var/mob/M) // Targetted narrate -- TLE @@ -138,7 +138,7 @@ to_chat(M, msg) log_admin("DirectNarrate: [key_name(usr)] to ([key_name(M)]): [msg]") - message_admins("\blue \bold DirectNarrate: [key_name_admin(usr)] to ([key_name_admin(M)]): [msg]
", 1) + message_admins("DirectNarrate: [key_name_admin(usr)] to ([key_name_admin(M)]): [msg]
", 1) feedback_add_details("admin_verb","DIRN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_godmode(mob/M as mob in mob_list) @@ -149,7 +149,7 @@ return M.status_flags ^= GODMODE - to_chat(usr, "\blue Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]") + to_chat(usr, "Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]") log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]") message_admins("[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]", 1) @@ -333,7 +333,7 @@ Traitors and the like can also be revived with the previous role mostly intact. G_found.mind.transfer_to(new_xeno) //be careful when doing stuff like this! I've already checked the mind isn't in use new_xeno.key = G_found.key to_chat(new_xeno, "You have been fully respawned. Enjoy the game.") - message_admins("\blue [key_name_admin(usr)] has respawned [new_xeno.key] as a filthy xeno.", 1) + message_admins("[key_name_admin(usr)] has respawned [new_xeno.key] as a filthy xeno.", 1) return //all done. The ghost is auto-deleted var/mob/living/carbon/human/new_character = new(pick(latejoin))//The mob being spawned. @@ -437,7 +437,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(alert(new_character,"Would you like an active AI to announce this character?",,"No","Yes")=="Yes") call(/mob/new_player/proc/AnnounceArrival)(new_character, new_character.mind.assigned_role) - message_admins("\blue [key_name_admin(usr)] has respawned [key_name_admin(G_found)] as [new_character.real_name].", 1) + message_admins("[key_name_admin(usr)] has respawned [key_name_admin(G_found)] as [new_character.real_name].", 1) to_chat(new_character, "You have been fully respawned. Enjoy the game.") @@ -473,7 +473,7 @@ Traitors and the like can also be revived with the previous role mostly intact. else return 0 new_xeno.ckey = ckey - message_admins("\blue [key_name_admin(usr)] has spawned [ckey] as a filthy xeno [alien_caste].", 1) + message_admins("[key_name_admin(usr)] has spawned [ckey] as a filthy xeno [alien_caste].", 1) return 1 @@ -537,7 +537,7 @@ Traitors and the like can also be revived with the previous role mostly intact. M.revive() log_admin("[key_name(usr)] healed / revived [key_name(M)]") - message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!", 1) + message_admins("Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!", 1) feedback_add_details("admin_verb","REJU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_create_centcom_report() @@ -707,7 +707,7 @@ Traitors and the like can also be revived with the previous role mostly intact. mob.gib() log_admin("[key_name(usr)] used gibself.") - message_admins("\blue [key_name_admin(usr)] used gibself.", 1) + message_admins("[key_name_admin(usr)] used gibself.", 1) feedback_add_details("admin_verb","GIBS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_check_contents(mob/living/M as mob in mob_list) @@ -736,7 +736,7 @@ Traitors and the like can also be revived with the previous role mostly intact. view = world.view log_admin("[key_name(usr)] changed their view range to [view].") - //message_admins("\blue [key_name_admin(usr)] changed their view range to [view].", 1) //why? removed by order of XSI + //message_admins("[key_name_admin(usr)] changed their view range to [view].", 1) //why? removed by order of XSI feedback_add_details("admin_verb","CVRA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -834,7 +834,7 @@ Traitors and the like can also be revived with the previous role mostly intact. message_admins("Admin [key_name_admin(usr)] has forced the players to have random appearances.", 1) if(notifyplayers == "Yes") - to_chat(world, "\blue Admin [usr.key] has forced the players to have completely random identities!") + to_chat(world, "Admin [usr.key] has forced the players to have completely random identities!") to_chat(usr, "Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet.") @@ -891,12 +891,12 @@ Traitors and the like can also be revived with the previous role mostly intact. if(ticker.mode.ert_disabled) ticker.mode.ert_disabled = 0 - to_chat(usr, "\blue ERT has been Enabled.") + to_chat(usr, "ERT has been Enabled.") log_admin("Admin [key_name(src)] has enabled ERT calling.") message_admins("Admin [key_name_admin(usr)] has enabled ERT calling.", 1) else ticker.mode.ert_disabled = 1 - to_chat(usr, "\red ERT has been Disabled.") + to_chat(usr, "ERT has been Disabled.") log_admin("Admin [key_name(src)] has disabled ERT calling.") message_admins("Admin [key_name_admin(usr)] has disabled ERT calling.", 1) diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index f6de49de939..b5c02c368a7 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -68,10 +68,10 @@ var/global/sent_strike_team = 0 //So they don't forget their code or mission. if(nuke_code) - new_commando.mind.store_memory("Nuke Code: \red [nuke_code].") - new_commando.mind.store_memory("Mission: \red [input].") + new_commando.mind.store_memory("Nuke Code: [nuke_code].") + new_commando.mind.store_memory("Mission: [input].") - to_chat(new_commando, "\blue You are a Special Ops. [!leader_selected?"commando":"LEADER"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: [input]") + to_chat(new_commando, "You are a Special Ops. [!leader_selected ? "commando" : "LEADER"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: [input]") commando_number-- @@ -92,7 +92,7 @@ var/global/sent_strike_team = 0 new /obj/effect/spawner/newbomb/timer/syndicate(L.loc) qdel(L) - message_admins("\blue [key_name_admin(usr)] has spawned a CentComm strike squad.", 1) + message_admins("[key_name_admin(usr)] has spawned a CentComm strike squad.", 1) log_admin("[key_name(usr)] used Spawn Death Squad.") return 1 diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index 33512a3fe10..da6d981a890 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -75,10 +75,10 @@ var/global/sent_syndicate_strike_team = 0 //So they don't forget their code or mission. if(nuke_code) - new_syndicate_commando.mind.store_memory("Nuke Code: \red [nuke_code].") - new_syndicate_commando.mind.store_memory("Mission: \red [input].") + new_syndicate_commando.mind.store_memory("Nuke Code: [nuke_code].") + new_syndicate_commando.mind.store_memory("Mission: [input].") - to_chat(new_syndicate_commando, "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"LEADER"] in the service of the Syndicate. \nYour current mission is: [input]") + to_chat(new_syndicate_commando, "You are an Elite Syndicate. [!syndicate_leader_selected ? "commando" : "LEADER"] in the service of the Syndicate. \nYour current mission is: [input]") new_syndicate_commando.faction += "syndicate" syndicate_commando_number-- @@ -87,7 +87,7 @@ var/global/sent_syndicate_strike_team = 0 new /obj/effect/spawner/newbomb/timer/syndicate(L.loc) qdel(L) - message_admins("\blue [key_name_admin(usr)] has spawned a Syndicate strike squad.", 1) + message_admins("[key_name_admin(usr)] has spawned a Syndicate strike squad.", 1) log_admin("[key_name(usr)] used Spawn Syndicate Squad.") feedback_add_details("admin_verb","SDTHS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/ticklag.dm b/code/modules/admin/verbs/ticklag.dm index cabf767b620..f49984b8fb3 100644 --- a/code/modules/admin/verbs/ticklag.dm +++ b/code/modules/admin/verbs/ticklag.dm @@ -19,6 +19,6 @@ if("Yes") config.Tickcomp = 1 else config.Tickcomp = 0 else - to_chat(src, "\red Error: ticklag(): Invalid world.ticklag value. No changes made.") + to_chat(src, "Error: ticklag(): Invalid world.ticklag value. No changes made.") diff --git a/code/modules/admin/verbs/tripAI.dm b/code/modules/admin/verbs/tripAI.dm index 6c95873a7da..0da0dfc42f6 100644 --- a/code/modules/admin/verbs/tripAI.dm +++ b/code/modules/admin/verbs/tripAI.dm @@ -14,9 +14,9 @@ if(ticker.triai) ticker.triai = 0 to_chat(usr, "Only one AI will be spawned at round start.") - message_admins("\blue [key_name_admin(usr)] has toggled off triple AIs at round start.", 1) + message_admins("[key_name_admin(usr)] has toggled off triple AIs at round start.", 1) else ticker.triai = 1 to_chat(usr, "There will be an AI Triumvirate at round start.") - message_admins("\blue [key_name_admin(usr)] has toggled on triple AIs at round start.", 1) + message_admins("[key_name_admin(usr)] has toggled on triple AIs at round start.", 1) return diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 84e10835215..d42e30453cd 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -114,7 +114,7 @@ attach_assembly(var/obj/item/device/assembly/A, var/mob/user) holder = new/obj/item/device/assembly_holder(get_turf(src)) if(holder.attach(A,src,user)) - to_chat(user, "\blue You attach \the [A] to \the [src]!") + to_chat(user, "You attach \the [A] to \the [src]!") return 1 return 0 @@ -127,9 +127,9 @@ return if(istype(W, /obj/item/weapon/screwdriver)) if(toggle_secure()) - to_chat(user, "\blue \The [src] is ready!") + to_chat(user, "\The [src] is ready!") else - to_chat(user, "\blue \The [src] can now be attached!") + to_chat(user, "\The [src] can now be attached!") return ..() return diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index f4cafef9c97..47d33a1e5ce 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -140,15 +140,15 @@ attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/screwdriver)) if(!a_left || !a_right) - to_chat(user, "\red BUG:Assembly part missing, please report this!") + to_chat(user, "BUG:Assembly part missing, please report this!") return a_left.toggle_secure() a_right.toggle_secure() secured = !secured if(secured) - to_chat(user, "\blue \The [src] is ready!") + to_chat(user, "\The [src] is ready!") else - to_chat(user, "\blue \The [src] can now be taken apart!") + to_chat(user, "\The [src] can now be taken apart!") update_icon() return else @@ -160,7 +160,7 @@ src.add_fingerprint(user) if(src.secured) if(!a_left || !a_right) - to_chat(user, "\red Assembly part missing!") + to_chat(user, "Assembly part missing!") return if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code switch(alert("Which side would you like to use?",,"Left","Right")) diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index e1078ed9caa..f3296cdabb0 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -19,7 +19,7 @@ describe() if(timing) - return "\blue The proximity sensor is arming." + return "The proximity sensor is arming." return "The proximity sensor is [scanning?"armed":"disarmed"]." activate() @@ -109,7 +109,7 @@ interact(mob/user as mob)//TODO: Change this to the wires thingy if(!secured) - user.show_message("\red The [name] is unsecured!") + user.show_message("The [name] is unsecured!") return 0 var/second = time % 60 var/minute = (time - second) / 60 diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 179d7df2347..0587a806b2b 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -74,7 +74,7 @@ interact(mob/user as mob)//TODO: Have this use the wires if(!secured) - user.show_message("\red The [name] is unsecured!") + user.show_message("The [name] is unsecured!") return 0 var/second = time % 60 var/minute = (time - second) / 60 diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index af9138724e6..ba0752dd28e 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -35,7 +35,7 @@ if(findtext(msg, recorded) && type == recorded_type) pulse(0) var/turf/T = get_turf(src) //otherwise it won't work in hand - T.visible_message("[bicon(src)] \red beeps!") + T.visible_message("[bicon(src)] beeps!") activate() return // previously this toggled listning when not in a holder, that's a little silly. It was only called in attack_self that way. diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index dd1afe83361..0a2eaeef1bf 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -83,9 +83,9 @@ if(ishuman(user)) var/mob/living/carbon/human/human = user if(human.species.name != "Shadow") - to_chat(user, "\red Your flesh rapidly mutates!") + to_chat(user, "Your flesh rapidly mutates!") to_chat(user, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.") - to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.") + to_chat(user, "Your body reacts violently to light. However, it naturally heals in darkness.") to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.") human.set_species("Shadow") user.regenerate_icons() @@ -96,9 +96,9 @@ if(ishuman(user)) var/mob/living/carbon/human/human = user if(human.species.name != "Shadow") - to_chat(user, "\red Your flesh rapidly mutates!") + to_chat(user, "Your flesh rapidly mutates!") to_chat(user, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.") - to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.") + to_chat(user, "Your body reacts violently to light. However, it naturally heals in darkness.") to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.") human.set_species("Shadow") user.regenerate_icons() @@ -109,9 +109,9 @@ if(ishuman(user)) var/mob/living/carbon/human/human = user if(human.species.name != "Shadow") - to_chat(user, "\red Your flesh rapidly mutates!") + to_chat(user, "Your flesh rapidly mutates!") to_chat(user, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.") - to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.") + to_chat(user, "Your body reacts violently to light. However, it naturally heals in darkness.") to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.") human.set_species("Shadow") user.regenerate_icons() @@ -131,9 +131,9 @@ if(ishuman(user)) var/mob/living/carbon/human/human = user if(human.species.name != "Shadow") - to_chat(user, "\red Your flesh rapidly mutates!") + to_chat(user, "Your flesh rapidly mutates!") to_chat(user, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.") - to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.") + to_chat(user, "Your body reacts violently to light. However, it naturally heals in darkness.") to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.") human.set_species("Shadow") user.regenerate_icons() diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 7313de43815..ee219780ff9 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -298,7 +298,7 @@ preload_rsc = pick(config.resource_urls) else preload_rsc = 1 // If config.resource_urls is not set, preload like normal. - to_chat(src, "\red If the title screen is black, resources are still downloading. Please be patient until the title screen appears.") + to_chat(src, "If the title screen is black, resources are still downloading. Please be patient until the title screen appears.") clients += src diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 15af19c19e4..0b527d6856d 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -787,7 +787,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts return if(!isnum(desiredLvl)) - to_chat(user, "\red UpdateJobPreference - desired level was not a number. Please notify coders!") + to_chat(user, "UpdateJobPreference - desired level was not a number. Please notify coders!") ShowChoices(user) return diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index c80c13d514b..5e7c5cda1d1 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -57,7 +57,7 @@ wearable = 1 if(!wearable) - to_chat(M, "\red Your species cannot wear [src].") + to_chat(M, "Your species cannot wear [src].") return 0 return 1 @@ -249,7 +249,7 @@ BLIND // can't see anything switch(sensor_mode) if(0) for(var/mob/V in viewers(user, 1)) - V.show_message("\red [user] disables [src.loc]'s remote sensing equipment.", 1) + V.show_message("[user] disables [src.loc]'s remote sensing equipment.", 1) if(1) for(var/mob/V in viewers(user, 1)) V.show_message("[user] turns [src.loc]'s remote sensors to binary.", 1) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 140b5f1a999..df1e011885c 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -376,7 +376,7 @@ emp_act(severity) if(istype(src.loc, /mob/living/carbon/human)) var/mob/living/carbon/human/M = src.loc - to_chat(M, "\red The Optical Thermal Scanner overloads and blinds you!") + to_chat(M, "The Optical Thermal Scanner overloads and blinds you!") if(M.glasses == src) M.EyeBlind(3) M.EyeBlurry(5) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index ccf9552a5e6..6d7fd51f747 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -381,26 +381,26 @@ if(istype(W, /obj/item/weapon/screwdriver)) switch(aggressiveness) if(1) - to_chat(user, "\blue You set the aggressiveness restrictor to the second position.") + to_chat(user, "You set the aggressiveness restrictor to the second position.") aggressiveness = 2 phrase = 7 if(2) - to_chat(user, "\blue You set the aggressiveness restrictor to the third position.") + to_chat(user, "You set the aggressiveness restrictor to the third position.") aggressiveness = 3 phrase = 13 if(3) - to_chat(user, "\blue You set the aggressiveness restrictor to the fourth position.") + to_chat(user, "You set the aggressiveness restrictor to the fourth position.") aggressiveness = 4 phrase = 1 if(4) - to_chat(user, "\blue You set the aggressiveness restrictor to the first position.") + to_chat(user, "You set the aggressiveness restrictor to the first position.") aggressiveness = 1 phrase = 1 if(5) - to_chat(user, "\red You adjust the restrictor but nothing happens, probably because its broken.") + to_chat(user, "You adjust the restrictor but nothing happens, probably because its broken.") else if(istype(W, /obj/item/weapon/wirecutters)) if(aggressiveness != 5) - to_chat(user, "\red You broke it!") + to_chat(user, "You broke it!") aggressiveness = 5 else ..() diff --git a/code/modules/clothing/spacesuits/breaches.dm b/code/modules/clothing/spacesuits/breaches.dm index 37c88241173..ae3db67af09 100644 --- a/code/modules/clothing/spacesuits/breaches.dm +++ b/code/modules/clothing/spacesuits/breaches.dm @@ -178,7 +178,7 @@ var/global/list/breach_burn_descriptors = list( if(istype(W,/obj/item/stack/sheet/mineral/plastic) || istype(W,/obj/item/stack/sheet/metal)) if(istype(src.loc,/mob/living)) - to_chat(user, "\red How do you intend to patch a hardsuit while someone is wearing it?") + to_chat(user, "How do you intend to patch a hardsuit while someone is wearing it?") return if(!damage || !burn_damage) @@ -197,7 +197,7 @@ var/global/list/breach_burn_descriptors = list( else if(istype(W, /obj/item/weapon/weldingtool)) if(istype(src.loc,/mob/living)) - to_chat(user, "\red How do you intend to patch a hardsuit while someone is wearing it?") + to_chat(user, "How do you intend to patch a hardsuit while someone is wearing it?") return if(!damage || ! brute_damage) @@ -206,7 +206,7 @@ var/global/list/breach_burn_descriptors = list( var/obj/item/weapon/weldingtool/WT = W if(!WT.remove_fuel(5)) - to_chat(user, "\red You need more welding fuel to repair this suit.") + to_chat(user, "You need more welding fuel to repair this suit.") return repair_breaches(BRUTE, 3, user) diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 9482ee7d080..392e6fac466 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -243,7 +243,7 @@ to_chat(user, "Waving around a badge before swiping an ID would be pretty pointless.") return if(isliving(user)) - user.visible_message("\red [user] displays their NanoTrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.","\red You display your NanoTrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.") + user.visible_message("[user] displays their NanoTrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.","You display your NanoTrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.") /obj/item/clothing/accessory/holobadge/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if(istype(O, /obj/item/weapon/card/id) || istype(O, /obj/item/device/pda)) @@ -268,16 +268,16 @@ /obj/item/clothing/accessory/holobadge/emag_act(user as mob) if(emagged) - to_chat(user, "\red [src] is already cracked.") + to_chat(user, "[src] is already cracked.") return else emagged = 1 - to_chat(user, "\red You swipe the card and crack the holobadge security checks.") + to_chat(user, "You swipe the card and crack the holobadge security checks.") return /obj/item/clothing/accessory/holobadge/attack(mob/living/carbon/human/M, mob/living/user) if(isliving(user)) - user.visible_message("\red [user] invades [M]'s personal space, thrusting [src] into their face insistently.","\red You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.") + user.visible_message("[user] invades [M]'s personal space, thrusting [src] into their face insistently.","You invade [M]'s personal space, thrusting [src] into their face insistently. You are the law.") /obj/item/weapon/storage/box/holobadge name = "holobadge box" diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index a30522768ed..ef106005bdc 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -57,7 +57,7 @@ to_chat(user, "You need an empty hand to draw the [holstered]!") else if(user.a_intent == I_HARM) - usr.visible_message("\red [user] draws the [holstered], ready to shoot!", \ + usr.visible_message("[user] draws the [holstered], ready to shoot!", \ "You draw the [holstered], ready to shoot!") else user.visible_message("[user] draws the [holstered], pointing it at the ground.", \ diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index 8d7a92e3e8a..63f09efd3bf 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -25,14 +25,14 @@ attackby(obj/item/clothing/under/U as obj, mob/user as mob, params) ..() if(istype(U, /obj/item/clothing/under/chameleon)) - to_chat(user, "\red Nothing happens.") + to_chat(user, "Nothing happens.") return if(istype(U, /obj/item/clothing/under)) if(src.clothing_choices.Find(U)) - to_chat(user, "\red Pattern is already recognised by the suit.") + to_chat(user, "Pattern is already recognised by the suit.") return src.clothing_choices += U - to_chat(user, "\red Pattern absorbed by the suit.") + to_chat(user, "Pattern absorbed by the suit.") emp_act(severity) @@ -56,7 +56,7 @@ set src in usr if(icon_state == "psyche") - to_chat(usr, "\red Your suit is malfunctioning") + to_chat(usr, "Your suit is malfunctioning") return var/obj/item/clothing/under/A diff --git a/code/modules/computer3/bios.dm b/code/modules/computer3/bios.dm index e8f1b1f8c4c..5deda2bd35f 100644 --- a/code/modules/computer3/bios.dm +++ b/code/modules/computer3/bios.dm @@ -24,22 +24,22 @@ if(istype(user,/mob/living/silicon)) if(!program.ai_allowed) - to_chat(user, "\blue You are forbidden from accessing this program.") + to_chat(user, "You are forbidden from accessing this program.") return 0 else if(program.human_controls) if(!ishuman(user)) - to_chat(user, "\red Your body can't work the controls!") + to_chat(user, "Your body can't work the controls!") return 0 if(user.restrained()) - to_chat(user, "\red You need a free hand!") + to_chat(user, "You need a free hand!") return 0 if(!in_range(src,user)) // telekinesis check if(ishuman(user) && istype(user.get_active_hand(),/obj/item/tk_grab)) if(program.human_controls) - to_chat(user, "\red It's too complicated to work at a distance!") + to_chat(user, "It's too complicated to work at a distance!") return 0 add_fingerprint(user) user.set_machine(src) @@ -115,7 +115,7 @@ switch(errorcode) if(PROG_CRASH) if(usr) - to_chat(usr, "\red The program crashed!") + to_chat(usr, "The program crashed!") usr << browse(null,"\ref[src]") Reset() @@ -148,7 +148,7 @@ else if(usr) - to_chat(usr, "\red The program crashed!") + to_chat(usr, "The program crashed!") usr << browse(null,"\ref[src]") testing("computer/Crash() - unknown error code [errorcode]") Reset() diff --git a/code/modules/computer3/buildandrepair.dm b/code/modules/computer3/buildandrepair.dm index 2165205e354..173a306158b 100644 --- a/code/modules/computer3/buildandrepair.dm +++ b/code/modules/computer3/buildandrepair.dm @@ -82,7 +82,7 @@ if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 20, target = src)) - to_chat(user, "\blue You wrench the frame into place.") + to_chat(user, "You wrench the frame into place.") src.anchored = 1 src.state = 1 if(istype(P, /obj/item/weapon/weldingtool)) @@ -93,35 +93,35 @@ playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) if(do_after(user, 20, target = src)) if(!src || !WT.isOn()) return - to_chat(user, "\blue You deconstruct the frame.") + to_chat(user, "You deconstruct the frame.") new /obj/item/stack/sheet/metal( src.loc, 5 ) qdel(src) if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 20, target = src)) - to_chat(user, "\blue You unfasten the frame.") + to_chat(user, "You unfasten the frame.") src.anchored = 0 src.state = 0 if(istype(P, /obj/item/weapon/circuitboard) && !circuit) var/obj/item/weapon/circuitboard/B = P if(B.board_type == "computer") playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - to_chat(user, "\blue You place the circuit board inside the frame.") + to_chat(user, "You place the circuit board inside the frame.") src.icon_state = "1" src.circuit = P user.drop_item() P.loc = src else - to_chat(user, "\red This frame does not accept circuit boards of this type!") + to_chat(user, "This frame does not accept circuit boards of this type!") if(istype(P, /obj/item/weapon/screwdriver) && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - to_chat(user, "\blue You screw the circuit board into place.") + to_chat(user, "You screw the circuit board into place.") src.state = 2 src.icon_state = "2" if(istype(P, /obj/item/weapon/crowbar) && circuit) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - to_chat(user, "\blue You remove the circuit board.") + to_chat(user, "You remove the circuit board.") src.state = 1 src.icon_state = "0" circuit.loc = src.loc @@ -129,7 +129,7 @@ if(2) if(istype(P, /obj/item/weapon/screwdriver) && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - to_chat(user, "\blue You unfasten the circuit board.") + to_chat(user, "You unfasten the circuit board.") src.state = 1 src.icon_state = "1" @@ -138,10 +138,10 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) if(do_after(10, target = src)) battery.loc = loc - to_chat(user, "\blue You remove [battery].") + to_chat(user, "You remove [battery].") battery = null else - to_chat(user, "\red There's no battery to remove!") + to_chat(user, "There's no battery to remove!") if(istype(P, /obj/item/weapon/stock_parts/cell)) if(!battery) @@ -149,9 +149,9 @@ if(do_after(5, target = src)) battery = P P.loc = src - to_chat(user, "\blue You insert [battery].") + to_chat(user, "You insert [battery].") else - to_chat(user, "\red There's already \an [battery] in [src]!") + to_chat(user, "There's already \an [battery] in [src]!") if(istype(P, /obj/item/stack/cable_coil)) @@ -161,7 +161,7 @@ if(P) P:amount -= 5 if(!P:amount) qdel(P) - to_chat(user, "\blue You add cables to the frame.") + to_chat(user, "You add cables to the frame.") src.state = 3 src.icon_state = "3" if(3) @@ -170,7 +170,7 @@ to_chat(user, "There are parts in the way!") return playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) - to_chat(user, "\blue You remove the cables.") + to_chat(user, "You remove the cables.") src.state = 2 src.icon_state = "2" var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc ) @@ -185,19 +185,19 @@ if(do_after(user, 20, target = src)) if(P) P:use(2) - to_chat(user, "\blue You put in the glass panel.") + to_chat(user, "You put in the glass panel.") src.state = 4 src.icon_state = "4" if(4) if(istype(P, /obj/item/weapon/crowbar)) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - to_chat(user, "\blue You remove the glass panel.") + to_chat(user, "You remove the glass panel.") src.state = 3 src.icon_state = "3" new /obj/item/stack/sheet/glass( src.loc, 2 ) if(istype(P, /obj/item/weapon/screwdriver)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - to_chat(user, "\blue You connect the monitor.") + to_chat(user, "You connect the monitor.") var/obj/machinery/computer3/B = new src.circuit.build_path ( src.loc, built=1 ) /*if(circuit.powernet) B:powernet = circuit.powernet if(circuit.id) B:id = circuit.id @@ -220,7 +220,7 @@ */ /obj/structure/computer3frame/proc/remove_peripheral(var/obj/item/I = null) if(!components || !components.len) - to_chat(usr, "\red There are no components in [src] to take out!") + to_chat(usr, "There are no components in [src] to take out!") return 0 if(!I) I = input(usr, "Remove which component?","Remove component", null) as null|obj in components @@ -259,7 +259,7 @@ else warning("Erronous component in computerframe/remove_peripheral: [I]") I.loc = loc - to_chat(usr, "\blue You remove [I]") + to_chat(usr, "You remove [I]") return 1 return 0 /obj/structure/computer3frame/proc/insert_peripheral(var/obj/item/I) diff --git a/code/modules/computer3/computer.dm b/code/modules/computer3/computer.dm index eca1207c692..3adf8542261 100644 --- a/code/modules/computer3/computer.dm +++ b/code/modules/computer3/computer.dm @@ -77,7 +77,7 @@ set src in view(1) if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) - to_chat(usr, "\red You can't do that.") + to_chat(usr, "You can't do that.") return if(!Adjacent(usr)) diff --git a/code/modules/computer3/computers/HolodeckControl.dm b/code/modules/computer3/computers/HolodeckControl.dm index dc4c71a0f90..748f1a0b2b8 100644 --- a/code/modules/computer3/computers/HolodeckControl.dm +++ b/code/modules/computer3/computers/HolodeckControl.dm @@ -202,7 +202,7 @@ if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve return for(var/mob/M in range(3,src)) - M.show_message("\b ERROR. Recalibrating projetion apparatus.") + M.show_message("ERROR. Recalibrating projetion apparatus.") last_change = world.time return diff --git a/code/modules/computer3/computers/atmos_alert.dm b/code/modules/computer3/computers/atmos_alert.dm index 894286d334b..31fa38f143f 100644 --- a/code/modules/computer3/computers/atmos_alert.dm +++ b/code/modules/computer3/computers/atmos_alert.dm @@ -97,14 +97,14 @@ var/removing_zone = href_list["priority_clear"] for(var/zone in priority_alarms) if(ckey(zone) == removing_zone) - to_chat(usr, "\green Priority Alert for area [zone] cleared.") + to_chat(usr, "Priority Alert for area [zone] cleared.") priority_alarms -= zone if("minor_clear" in href_list) var/removing_zone = href_list["minor_clear"] for(var/zone in minor_alarms) if(ckey(zone) == removing_zone) - to_chat(usr, "\green Minor Alert for area [zone] cleared.") + to_chat(usr, "Minor Alert for area [zone] cleared.") minor_alarms -= zone computer.updateUsrDialog() diff --git a/code/modules/computer3/computers/law.dm b/code/modules/computer3/computers/law.dm index 533a600a4eb..05818452da0 100644 --- a/code/modules/computer3/computers/law.dm +++ b/code/modules/computer3/computers/law.dm @@ -17,9 +17,9 @@ opened = !opened if(opened) - to_chat(usr, "\blue The access panel is now open.") + to_chat(usr, "The access panel is now open.") else - to_chat(usr, "\blue The access panel is now closed.") + to_chat(usr, "The access panel is now closed.") return diff --git a/code/modules/computer3/computers/prisoner.dm b/code/modules/computer3/computers/prisoner.dm index e2c41a6f71d..f6e91fb9346 100644 --- a/code/modules/computer3/computers/prisoner.dm +++ b/code/modules/computer3/computers/prisoner.dm @@ -94,7 +94,7 @@ if( istype(I) && I.imp_in) var/mob/living/carbon/R = I.imp_in log_say("PrisonComputer3 message: [key_name(usr)]->[key_name(R)] : [warning]") - to_chat(R, "\green You hear a voice in your head saying: '[warning]'") + to_chat(R, "You hear a voice in your head saying: '[warning]'") interact() return diff --git a/code/modules/computer3/computers/robot.dm b/code/modules/computer3/computers/robot.dm index a68475bf732..7b7659878ea 100644 --- a/code/modules/computer3/computers/robot.dm +++ b/code/modules/computer3/computers/robot.dm @@ -118,14 +118,14 @@ if(istype(I)) if(src.check_access(I)) if(!status) - message_admins("\blue [key_name_admin(usr)] has initiated the global cyborg killswitch!") - log_game("\blue [key_name(usr)] has initiated the global cyborg killswitch!") + message_admins("[key_name_admin(usr)] has initiated the global cyborg killswitch!") + log_game("[key_name(usr)] has initiated the global cyborg killswitch!") src.status = 1 src.start_sequence() src.temp = null else - to_chat(usr, "\red Access Denied.") + to_chat(usr, "Access Denied.") if("stop" in href_list) src.temp = {" @@ -163,11 +163,11 @@ R.ResetSecurityCodes() else - message_admins("\blue [key_name_admin(usr)] detonated [R.name]!") - log_game("\blue [key_name_admin(usr)] detonated [R.name]!") + message_admins("[key_name_admin(usr)] detonated [R.name]!") + log_game("[key_name_admin(usr)] detonated [R.name]!") R.self_destruct() else - to_chat(usr, "\red Access Denied.") + to_chat(usr, "Access Denied.") if("stopbot" in href_list) if(computer.allowed(usr)) @@ -176,7 +176,7 @@ var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm") if(R && istype(R)) - message_admins("\blue [key_name_admin(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") + message_admins("[key_name_admin(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") R.canmove = !R.canmove if(R.lockcharge) @@ -189,7 +189,7 @@ to_chat(R, "You have been locked down!") else - to_chat(usr, "\red Access Denied.") + to_chat(usr, "Access Denied.") if("magbot" in href_list) if(computer.allowed(usr)) @@ -198,7 +198,7 @@ var/choice = input("Are you certain you wish to hack [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm") if(R && istype(R)) -// message_admins("\blue [key_name_admin(usr)] emagged [R.name] using robotic console!") +// message_admins("[key_name_admin(usr)] emagged [R.name] using robotic console!") log_game("[key_name(usr)] emagged [R.name] using robotic console!") R.emagged = 1 if(R.mind.special_role) diff --git a/code/modules/computer3/laptop.dm b/code/modules/computer3/laptop.dm index e32375a457c..1eaf28de60d 100644 --- a/code/modules/computer3/laptop.dm +++ b/code/modules/computer3/laptop.dm @@ -35,7 +35,7 @@ set src in view(1) if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) - to_chat(usr, "\red You can't do that.") + to_chat(usr, "You can't do that.") return if(!Adjacent(usr)) @@ -67,7 +67,7 @@ stored_computer.manipulating = 0 qdel(src) else - to_chat(usr, "\red You are already opening the computer!") + to_chat(usr, "You are already opening the computer!") AltClick() @@ -136,7 +136,7 @@ set src in view(1) if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) - to_chat(usr, "\red You can't do that.") + to_chat(usr, "You can't do that.") return if(!Adjacent(usr)) diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index 0ff4af7b405..af82415e1df 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -49,7 +49,7 @@ log transactions if(linked_db && ( (linked_db.stat & NOPOWER) || !linked_db.activated ) ) linked_db = null authenticated_account = null - src.visible_message("\red [bicon(src)] [src] buzzes rudely, \"Connection to remote database lost.\"") + src.visible_message("[bicon(src)] [src] buzzes rudely, \"Connection to remote database lost.\"") updateDialog() if(ticks_left_timeout > 0) @@ -120,7 +120,7 @@ log transactions /obj/machinery/atm/attack_hand(mob/user as mob) if(istype(user, /mob/living/silicon)) - to_chat(user, "\red Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per Nanotrasen regulation #1005.") + to_chat(user, "Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per Nanotrasen regulation #1005.") return if(get_dist(src,user) <= 1) add_fingerprint(user) @@ -280,11 +280,11 @@ log transactions T.time = worldtime2text() failed_account.transaction_log.Add(T) else - to_chat(usr, "\red [bicon(src)] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.") + to_chat(usr, "[bicon(src)] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.") previous_account_number = tried_account_num playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) else - to_chat(usr, "\red [bicon(src)] incorrect pin/account combination entered.") + to_chat(usr, "[bicon(src)] incorrect pin/account combination entered.") number_incorrect_tries = 0 else playsound(src, 'sound/machines/twobeep.ogg', 50, 1) @@ -300,7 +300,7 @@ log transactions T.time = worldtime2text() authenticated_account.transaction_log.Add(T) - to_chat(usr, "\blue [bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].'") + to_chat(usr, "[bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].'") previous_account_number = tried_account_num if("withdrawal") @@ -313,7 +313,7 @@ log transactions //remove the money if(amount > 10000) // prevent crashes - to_chat(usr, "\blue The ATM's screen flashes, 'Maximum single withdrawl limit reached, defaulting to 10,000.'") + to_chat(usr, "The ATM's screen flashes, 'Maximum single withdrawl limit reached, defaulting to 10,000.'") amount = 10000 authenticated_account.money -= amount withdraw_arbitrary_sum(amount) @@ -396,7 +396,7 @@ log transactions if(I) authenticated_account = attempt_account_access(I.associated_account_number) if(authenticated_account) - to_chat(human_user, "\blue [bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].'") + to_chat(human_user, "[bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].'") //create a transaction log entry var/datum/transaction/T = new() diff --git a/code/modules/economy/POS.dm b/code/modules/economy/POS.dm index 6baf7103338..72bbfd37fe7 100644 --- a/code/modules/economy/POS.dm +++ b/code/modules/economy/POS.dm @@ -403,7 +403,7 @@ var/const/POS_HEADER = {" src.attack_hand(usr) return if(usr != logged_in) - to_chat(usr, "\red [logged_in.name] is already logged in. You cannot use this machine until they log out.") + to_chat(usr, "[logged_in.name] is already logged in. You cannot use this machine until they log out.") return if("act" in href_list) switch(href_list["act"]) @@ -431,7 +431,7 @@ var/const/POS_HEADER = {" for(var/list/line in splittext(href_list["csv"],"\n")) var/list/cells = splittext(line,",") if(cells.len<2) - to_chat(usr, "\red The CSV must have at least two columns: Product Name, followed by Price (as a number).") + to_chat(usr, "The CSV must have at least two columns: Product Name, followed by Price (as a number).") src.attack_hand(usr) return var/line_item/LI = new @@ -445,7 +445,7 @@ var/const/POS_HEADER = {" if("Save Settings") var/datum/money_account/new_linked_account = get_money_account(text2num(href_list["payableto"]),z) if(!new_linked_account) - to_chat(usr, "\red Unable to link new account.") + to_chat(usr, "Unable to link new account.") else linked_account = new_linked_account screen=POS_SCREEN_SETTINGS @@ -482,7 +482,7 @@ var/const/POS_HEADER = {" if(istype(A,/obj/item/weapon/card/id)) var/obj/item/weapon/card/id/I = A if(!logged_in) - user.visible_message("\blue The machine beeps, and logs you in","You hear a beep.") + user.visible_message("The machine beeps, and logs you in","You hear a beep.") logged_in = user screen=POS_SCREEN_ORDER update_icon() @@ -490,23 +490,23 @@ var/const/POS_HEADER = {" return else if(!linked_account) - visible_message("\red The machine buzzes, and flashes \"NO LINKED ACCOUNT\" on the screen.","You hear a buzz.") + visible_message("The machine buzzes, and flashes \"NO LINKED ACCOUNT\" on the screen.","You hear a buzz.") flick(src,"pos-error") return if(screen!=POS_SCREEN_FINALIZE) - visible_message("\blue The machine buzzes.","\red You hear a buzz.") + visible_message("The machine buzzes.","You hear a buzz.") flick(src,"pos-error") return var/datum/money_account/acct = get_card_account(I) if(!acct) - visible_message("\red The machine buzzes, and flashes \"NO ACCOUNT\" on the screen.","You hear a buzz.") + visible_message("The machine buzzes, and flashes \"NO ACCOUNT\" on the screen.","You hear a buzz.") flick(src,"pos-error") return if(credits_needed > acct.money) - visible_message("\red The machine buzzes, and flashes \"NOT ENOUGH FUNDS\" on the screen.","You hear a buzz.") + visible_message("The machine buzzes, and flashes \"NOT ENOUGH FUNDS\" on the screen.","You hear a buzz.") flick(src,"pos-error") return - visible_message("\blue The machine beeps, and begins printing a receipt","You hear a beep.") + visible_message("The machine beeps, and begins printing a receipt","You hear a beep.") PrintReceipt() NewOrder() acct.charge(credits_needed,linked_account,"Purchase at POS #[id].") @@ -514,17 +514,17 @@ var/const/POS_HEADER = {" screen=POS_SCREEN_ORDER else if(istype(A,/obj/item/weapon/spacecash)) if(!linked_account) - visible_message("\red The machine buzzes, and flashes \"NO LINKED ACCOUNT\" on the screen.","You hear a buzz.") + visible_message("The machine buzzes, and flashes \"NO LINKED ACCOUNT\" on the screen.","You hear a buzz.") flick(src,"pos-error") return if(!logged_in || screen!=POS_SCREEN_FINALIZE) - visible_message("\blue The machine buzzes.","\red You hear a buzz.") + visible_message("The machine buzzes.","You hear a buzz.") flick(src,"pos-error") return var/obj/item/weapon/spacecash/C=A credits_held += C.get_total() if(credits_held >= credits_needed) - visible_message("\blue The machine beeps, and begins printing a receipt","You hear a beep and the sound of paper being shredded.") + visible_message("The machine beeps, and begins printing a receipt","You hear a beep and the sound of paper being shredded.") PrintReceipt() NewOrder() credits_held -= credits_needed diff --git a/code/modules/events/holidays/Holidays.dm b/code/modules/events/holidays/Holidays.dm index 107767455f6..5a2c35ebe52 100644 --- a/code/modules/events/holidays/Holidays.dm +++ b/code/modules/events/holidays/Holidays.dm @@ -133,7 +133,7 @@ var/global/Holiday = null world.update_status() Holiday_Game_Start() - message_admins("\blue ADMIN: Event: [key_name_admin(src)] force-set Holiday to \"[Holiday]\"") + message_admins("ADMIN: Event: [key_name_admin(src)] force-set Holiday to \"[Holiday]\"") log_admin("[key_name(src)] force-set Holiday to \"[Holiday]\"") @@ -174,7 +174,7 @@ var/global/Holiday = null if(!is_station_level(S.z)) continue containers += S - message_admins("\blue DEBUG: Event: Egg spawned at [Egg.loc] ([Egg.x],[Egg.y],[Egg.z])")*/ + message_admins("DEBUG: Event: Egg spawned at [Egg.loc] ([Egg.x],[Egg.y],[Egg.z])")*/ if("End of the World") if(prob(eventchance)) GameOver() diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat_2.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat_2.dm index 19da4fb85ac..a6401446767 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat_2.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat_2.dm @@ -179,7 +179,7 @@ var/list/ingredients_source = list( return if(href_list["dispense"]) dispense_flavour = text2num(href_list["dispense"]) - visible_message("\blue[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.") + visible_message("[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.") if(href_list["cone"]) var/dispense_cone = text2num(href_list["cone"]) diff --git a/code/modules/garbage_collection/gc_testing.dm b/code/modules/garbage_collection/gc_testing.dm index b1b413a0398..25378d19e9c 100644 --- a/code/modules/garbage_collection/gc_testing.dm +++ b/code/modules/garbage_collection/gc_testing.dm @@ -11,7 +11,7 @@ garbageCollector.del_everything = !garbageCollector.del_everything // to_chat(world, "GC: qdel turned [garbageCollector.del_everything ? "off" : "on"].") log_admin("[key_name(usr)] turned qdel [garbageCollector.del_everything ? "off" : "on"].") - message_admins("\blue [key_name_admin(usr)] turned qdel [garbageCollector.del_everything ? "off" : "on"].", 1) + message_admins("[key_name_admin(usr)] turned qdel [garbageCollector.del_everything ? "off" : "on"].", 1) /client/proc/gc_dump_hdl() set name = "(GC) Hard Del List" diff --git a/code/modules/holiday/holiday.dm b/code/modules/holiday/holiday.dm index db82a5227e6..85162a75c2d 100644 --- a/code/modules/holiday/holiday.dm +++ b/code/modules/holiday/holiday.dm @@ -354,5 +354,5 @@ //update our hub status world.update_status() - message_admins("\blue ADMIN: Event: [key_name(src)] force-set Holiday to \"[H]\"") + message_admins("ADMIN: Event: [key_name_admin(src)] force-set Holiday to \"[H]\"") log_admin("[key_name(src)] force-set Holiday to \"[H]\"") \ No newline at end of file diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index bdd73533c82..913ffe7b927 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -154,7 +154,7 @@ var/list/karma_spenders = list() /client/proc/verify_karma() var/currentkarma=0 if(!dbcon.IsConnected()) - to_chat(usr, "\red Unable to connect to karma database. Please try again later.
") + to_chat(usr, "Unable to connect to karma database. Please try again later.
") return else var/DBQuery/query = dbcon.NewQuery("SELECT karma, karmaspent FROM [format_table_name("karmatotals")] WHERE byondkey='[src.key]'") @@ -380,7 +380,7 @@ You've gained [totalkarma] total karma in your time here.
"} else if(name == "Nanotrasen Recruiter") cost = 10 else - to_chat(usr, "\red That job is not refundable.") + to_chat(usr, "That job is not refundable.") return var/DBQuery/query = dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[usr.key]'") @@ -401,7 +401,7 @@ You've gained [totalkarma] total karma in your time here.
"} else if(type == "species") typelist = splittext(dbspecies,",") else - to_chat(usr, "\red Type [type] is not a valid column.") + to_chat(usr, "Type [type] is not a valid column.") if(name in typelist) typelist -= name @@ -417,10 +417,10 @@ You've gained [totalkarma] total karma in your time here.
"} message_admins("[key_name(usr)] has been refunded [cost] karma for [type] [name].") karmacharge(text2num(cost),1) else - to_chat(usr, "\red You have not bought [name].") + to_chat(usr, "You have not bought [name].") else - to_chat(usr, "\red Your ckey ([dbckey]) was not found.") + to_chat(usr, "Your ckey ([dbckey]) was not found.") /client/proc/checkpurchased(var/name = null) // If the first parameter is null, return a full list of purchases var/DBQuery/query = dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[usr.key]'") diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index 83f9c871f44..00ea7632900 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -134,7 +134,7 @@ "uranium" = /obj/item/clothing/gloves/ring/uranium) var/typekey = typelist[cmineral] if(ispath(typekey)) - to_chat(user, "\blue You make [src] into a ring.") + to_chat(user, "You make [src] into a ring.") new typekey(get_turf(loc)) qdel(src) else ..() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d84e434456d..61dccc1d860 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -308,7 +308,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set name = "Toggle AntagHUD" set desc = "Toggles AntagHUD allowing you to see who is the antagonist" if(!config.antag_hud_allowed && !client.holder) - to_chat(src, "\red Admins have disabled this for this round.") + to_chat(src, "Admins have disabled this for this round.") return if(!client) return @@ -462,11 +462,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/memory() set hidden = 1 - to_chat(src, "\red You are dead! You have no mind to store memory!") + to_chat(src, "You are dead! You have no mind to store memory!") /mob/dead/observer/add_memory() set hidden = 1 - to_chat(src, "\red You are dead! You have no mind to store memory!") + to_chat(src, "You are dead! You have no mind to store memory!") /mob/dead/observer/verb/analyze_air() set name = "Analyze Air" @@ -485,9 +485,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp to_chat(src, "Results:") if(abs(pressure - ONE_ATMOSPHERE) < 10) - to_chat(src, "\blue Pressure: [round(pressure,0.1)] kPa") + to_chat(src, "Pressure: [round(pressure,0.1)] kPa") else - to_chat(src, "\red Pressure: [round(pressure,0.1)] kPa") + to_chat(src, "Pressure: [round(pressure,0.1)] kPa") if(total_moles) var/o2_concentration = environment.oxygen/total_moles var/n2_concentration = environment.nitrogen/total_moles @@ -496,28 +496,28 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration) if(abs(n2_concentration - N2STANDARD) < 20) - to_chat(src, "\blue Nitrogen: [round(n2_concentration*100)]% ([round(environment.nitrogen,0.01)] moles)") + to_chat(src, "Nitrogen: [round(n2_concentration*100)]% ([round(environment.nitrogen,0.01)] moles)") else - to_chat(src, "\red Nitrogen: [round(n2_concentration*100)]% ([round(environment.nitrogen,0.01)] moles)") + to_chat(src, "Nitrogen: [round(n2_concentration*100)]% ([round(environment.nitrogen,0.01)] moles)") if(abs(o2_concentration - O2STANDARD) < 2) - to_chat(src, "\blue Oxygen: [round(o2_concentration*100)]% ([round(environment.oxygen,0.01)] moles)") + to_chat(src, "Oxygen: [round(o2_concentration*100)]% ([round(environment.oxygen,0.01)] moles)") else - to_chat(src, "\red Oxygen: [round(o2_concentration*100)]% ([round(environment.oxygen,0.01)] moles)") + to_chat(src, "Oxygen: [round(o2_concentration*100)]% ([round(environment.oxygen,0.01)] moles)") if(co2_concentration > 0.01) - to_chat(src, "\red CO2: [round(co2_concentration*100)]% ([round(environment.carbon_dioxide,0.01)] moles)") + to_chat(src, "CO2: [round(co2_concentration*100)]% ([round(environment.carbon_dioxide,0.01)] moles)") else - to_chat(src, "\blue CO2: [round(co2_concentration*100)]% ([round(environment.carbon_dioxide,0.01)] moles)") + to_chat(src, "CO2: [round(co2_concentration*100)]% ([round(environment.carbon_dioxide,0.01)] moles)") if(plasma_concentration > 0.01) - to_chat(src, "\red Plasma: [round(plasma_concentration*100)]% ([round(environment.toxins,0.01)] moles)") + to_chat(src, "Plasma: [round(plasma_concentration*100)]% ([round(environment.toxins,0.01)] moles)") if(unknown_concentration > 0.01) - to_chat(src, "\red Unknown: [round(unknown_concentration*100)]% ([round(unknown_concentration*total_moles,0.01)] moles)") + to_chat(src, "Unknown: [round(unknown_concentration*100)]% ([round(unknown_concentration*total_moles,0.01)] moles)") - to_chat(src, "\blue Temperature: [round(environment.temperature-T0C,0.1)]°C") - to_chat(src, "\blue Heat Capacity: [round(environment.heat_capacity(),0.1)]") + to_chat(src, "Temperature: [round(environment.temperature-T0C,0.1)]°C") + to_chat(src, "Heat Capacity: [round(environment.heat_capacity(),0.1)]") /mob/dead/observer/verb/view_manifest() set name = "View Crew Manifest" diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index b4ae61f3e82..82e8c620192 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -8,7 +8,7 @@ if(src.client) if(src.client.prefs.muted & MUTE_DEADCHAT) - to_chat(src, "\red You cannot talk in deadchat (muted).") + to_chat(src, "You cannot talk in deadchat (muted).") return if(src.client.handle_spam_prevention(message,MUTE_DEADCHAT)) @@ -30,7 +30,7 @@ if(src.client) if(src.client.prefs.muted & MUTE_DEADCHAT) - to_chat(src, "\red You cannot emote in deadchat (muted).") + to_chat(src, "You cannot emote in deadchat (muted).") return if(src.client.handle_spam_prevention(message, MUTE_DEADCHAT)) diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index be6fa4a6c39..2d691cbf652 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -86,16 +86,16 @@ /mob/proc/emote_dead(var/message) if(client.prefs.muted & MUTE_DEADCHAT) - to_chat(src, "\red You cannot send deadchat emotes (muted).") + to_chat(src, "You cannot send deadchat emotes (muted).") return if(!(client.prefs.toggles & CHAT_DEAD)) - to_chat(src, "\red You have deadchat muted.") + to_chat(src, "You have deadchat muted.") return if(!src.client.holder) if(!config.dsay_allowed) - to_chat(src, "\red Deadchat is globally muted") + to_chat(src, "Deadchat is globally muted") return diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 2644ef8a306..8d8f8894234 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -73,7 +73,7 @@ if(powerc(250)) adjustToxLoss(-250) - to_chat(src, "\green You begin to evolve!") + to_chat(src, "You begin to evolve!") for(var/mob/O in viewers(src, null)) O.show_message(text("[src] begins to twist and contort!"), 1) var/mob/living/carbon/alien/humanoid/sentinel/praetorian/new_xeno = new(loc) diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm index d50befa47f0..287974b610f 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm @@ -85,6 +85,6 @@ if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly. adjustPlasma(-250) for(var/mob/O in viewers(src, null)) - O.show_message(text("\green [src] has laid an egg!"), 1) + O.show_message(text("[src] has laid an egg!"), 1) new /obj/structure/alien/egg(loc) return diff --git a/code/modules/mob/living/carbon/alien/larva/emote.dm b/code/modules/mob/living/carbon/alien/larva/emote.dm index 01d834b07cf..d3140e4a969 100644 --- a/code/modules/mob/living/carbon/alien/larva/emote.dm +++ b/code/modules/mob/living/carbon/alien/larva/emote.dm @@ -15,7 +15,7 @@ return if(src.client) if(client.prefs.muted & MUTE_IC) - to_chat(src, "\red You cannot send IC messages (muted).") + to_chat(src, "You cannot send IC messages (muted).") return if(src.client.handle_spam_prevention(message,MUTE_IC)) return diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm index c02c141c456..b3df2879f8f 100644 --- a/code/modules/mob/living/carbon/alien/larva/powers.dm +++ b/code/modules/mob/living/carbon/alien/larva/powers.dm @@ -15,7 +15,7 @@ to_chat(O, text("[] scurries to the ground!", src)) else layer = MOB_LAYER - to_chat(src, text("\green You have stopped hiding.")) + to_chat(src, text("You have stopped hiding.")) for(var/mob/O in oviewers(src, null)) if((O.client && !( O.blinded ))) to_chat(O, text("[] slowly peaks up from the ground...", src)) @@ -29,15 +29,15 @@ return if(handcuffed || legcuffed) - to_chat(src, "\red You cannot evolve when you are cuffed.") + to_chat(src, "You cannot evolve when you are cuffed.") if(amount_grown >= max_grown) //TODO ~Carn //green is impossible to read, so i made these blue and changed the formatting slightly to_chat(src, "You are growing into a beautiful alien! It is time to choose a caste.") - to_chat(src, "\blue There are three to choose from:") - to_chat(src, "Hunters \blue are strong and agile, able to hunt away from the hive and rapidly move through ventilation shafts. Hunters generate plasma slowly and have low reserves.") - to_chat(src, "Sentinels \blue are tasked with protecting the hive and are deadly up close and at a range. They are not as physically imposing nor fast as the hunters.") - to_chat(src, "Drones \blue are the working class, offering the largest plasma storage and generation. They are the only caste which may evolve again, turning into the dreaded alien queen.") + to_chat(src, "There are three to choose from:") + to_chat(src, "Hunters are strong and agile, able to hunt away from the hive and rapidly move through ventilation shafts. Hunters generate plasma slowly and have low reserves.") + to_chat(src, "Sentinels are tasked with protecting the hive and are deadly up close and at a range. They are not as physically imposing nor fast as the hunters.") + to_chat(src, "Drones are the working class, offering the largest plasma storage and generation. They are the only caste which may evolve again, turning into the dreaded alien queen.") var/alien_caste = alert(src, "Please choose which alien caste you shall belong to.",,"Hunter","Sentinel","Drone") var/mob/living/carbon/alien/humanoid/new_xeno diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 255f3c03897..d6a07d48f7e 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -2,7 +2,7 @@ if(stat == DEAD) return if(!gibbed && container && istype(container, /obj/item/device/mmi))//If not gibbed but in a container. for(var/mob/O in viewers(container, null)) - O.show_message(text("[]'s MMI flatlines!", src), 1, "\red You hear something flatline.", 2) + O.show_message(text("[]'s MMI flatlines!", src), 1, "You hear something flatline.", 2) container.icon_state = "mmi_dead" stat = DEAD diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 4e2c7acb2b2..565dd250fd8 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -98,7 +98,7 @@ var/turf/T = get_turf_or_move(src.loc) for(var/mob/M in viewers(T)) - M.show_message("\blue The positronic brain chimes quietly.") + M.show_message("The positronic brain chimes quietly.") icon_state = "posibrain-occupied" /obj/item/device/mmi/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer. @@ -109,7 +109,7 @@ var/turf/T = get_turf_or_move(src.loc) for(var/mob/M in viewers(T)) - M.show_message("\blue The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?") + M.show_message("The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?") /obj/item/device/mmi/posibrain/Topic(href,href_list) if("signup" in href_list) @@ -122,22 +122,22 @@ to_chat(O, "Not looking for a ghost, yet.") return if(!istype(O)) - to_chat(O, "\red Error.") + to_chat(O, "Error.") return if(O in ghost_volunteers) - to_chat(O, "\blue Removed from registration list.") + to_chat(O, "Removed from registration list.") ghost_volunteers.Remove(O) return if(!check_observer(O)) - to_chat(O, "\red You cannot be \a [src].") + to_chat(O, "You cannot be \a [src].") return if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted) - to_chat(O, "\red Upon using the antagHUD you forfeited the ability to join the round.") + to_chat(O, "Upon using the antagHUD you forfeited the ability to join the round.") return if(jobban_isbanned(O, "Cyborg") || jobban_isbanned(O,"nonhumandept")) - to_chat(O, "\red You are job banned from this role.") + to_chat(O, "You are job banned from this role.") return - to_chat(O., "\blue You've been added to the list of ghosts that may become this [src]. Click again to unvolunteer.") + to_chat(O., "You've been added to the list of ghosts that may become this [src]. Click again to unvolunteer.") ghost_volunteers.Add(O) @@ -196,7 +196,7 @@ playsound(get_turf(src), 'sound/items/posiping.ogg', 80, 0) var/turf/T = get_turf_or_move(src.loc) for(var/mob/M in viewers(T)) - M.show_message("\blue The positronic brain pings softly.") + M.show_message("The positronic brain pings softly.") /obj/item/device/mmi/posibrain/ipc desc = "A cube of shining metal, four inches to a side and covered in shallow grooves. The speaker switch is set to 'off'." diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 0756ba600ba..019aa20afca 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -56,7 +56,7 @@ last_stomach_attack = world.time for(var/mob/M in hearers(4, src)) if(M.client) - M.show_message(text("\red You hear something rumbling inside [src]'s stomach..."), 2) + M.show_message(text("You hear something rumbling inside [src]'s stomach..."), 2) var/obj/item/I = user.get_active_hand() if(I && I.force) @@ -76,7 +76,7 @@ for(var/mob/M in viewers(user, null)) if(M.client) - M.show_message(text("\red [user] attacks [src]'s stomach wall with the [I.name]!"), 2) + M.show_message(text("[user] attacks [src]'s stomach wall with the [I.name]!"), 2) playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1) if(prob(src.getBruteLoss() - 50)) @@ -217,8 +217,8 @@ if(src == M && istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/H = src src.visible_message( \ - text("\blue [src] examines [].",src.gender==MALE?"himself":"herself"), \ - "\blue You check yourself for injuries." \ + text("[src] examines [].",src.gender==MALE?"himself":"herself"), \ + "You check yourself for injuries." \ ) for(var/obj/item/organ/external/org in H.organs) @@ -247,7 +247,7 @@ status = "weirdly shapen." if(status == "") status = "OK" - src.show_message(text("\t []My [] is [].",status=="OK"?"\blue ":"\red ",org.name,status),1) + src.show_message(text("\t []My [] is [].",status=="OK"?"":"",org.name,status),1) if(staminaloss) if(staminaloss > 30) to_chat(src, "You're completely exhausted.") diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index ac1d98e848f..a1af65f337c 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -877,7 +877,7 @@ to_chat(src, emotelist) else - to_chat(src, "\blue Unusable emote '[act]'. Say *help for a list.") + to_chat(src, "Unusable emote '[act]'. Say *help for a list.") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7e54aebf396..e8d7d882b80 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -872,7 +872,7 @@ sec_hud_set_security_status() if(!modified) - to_chat(usr, "\red Unable to locate a data core entry for this person.") + to_chat(usr, "Unable to locate a data core entry for this person.") if(href_list["secrecord"]) if(hasHUD(usr,"security")) @@ -902,7 +902,7 @@ read = 1 if(!read) - to_chat(usr, "\red Unable to locate a data core entry for this person.") + to_chat(usr, "Unable to locate a data core entry for this person.") if(href_list["secrecordComment"]) if(hasHUD(usr,"security")) @@ -932,7 +932,7 @@ to_chat(usr, "\[Add comment\]") if(!read) - to_chat(usr, "\red Unable to locate a data core entry for this person.") + to_chat(usr, "Unable to locate a data core entry for this person.") if(href_list["secrecordadd"]) if(hasHUD(usr,"security")) @@ -997,7 +997,7 @@ sec_hud_set_security_status() if(!modified) - to_chat(usr, "\red Unable to locate a data core entry for this person.") + to_chat(usr, "Unable to locate a data core entry for this person.") if(href_list["medrecord"]) if(hasHUD(usr,"medical")) @@ -1028,7 +1028,7 @@ read = 1 if(!read) - to_chat(usr, "\red Unable to locate a data core entry for this person.") + to_chat(usr, "Unable to locate a data core entry for this person.") if(href_list["medrecordComment"]) if(hasHUD(usr,"medical")) @@ -1058,7 +1058,7 @@ to_chat(usr, "\[Add comment\]") if(!read) - to_chat(usr, "\red Unable to locate a data core entry for this person.") + to_chat(usr, "Unable to locate a data core entry for this person.") if(href_list["medrecordadd"]) if(hasHUD(usr,"medical")) @@ -1176,7 +1176,7 @@ /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) - visible_message("\red [src] begins playing his ribcage like a xylophone. It's quite spooky.","\blue You begin to play a spooky refrain on your ribcage.","\red You hear a spooky xylophone melody.") + visible_message("[src] begins playing his ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.") var/song = pick('sound/effects/xylophone1.ogg','sound/effects/xylophone2.ogg','sound/effects/xylophone3.ogg') playsound(loc, song, 50, 1, -1) xylophone = 1 @@ -1464,16 +1464,16 @@ if(usr == src) self = 1 if(!self) - usr.visible_message("\blue [usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.",\ + usr.visible_message("[usr] kneels down, puts \his hand on [src]'s wrist and begins counting their pulse.",\ "You begin counting [src]'s pulse") else - usr.visible_message("\blue [usr] begins counting their pulse.",\ + usr.visible_message("[usr] begins counting their pulse.",\ "You begin counting your pulse.") if(src.pulse) - to_chat(usr, "\blue [self ? "You have a" : "[src] has a"] pulse! Counting...") + to_chat(usr, "[self ? "You have a" : "[src] has a"] pulse! Counting...") else - to_chat(usr, "\red [src] has no pulse!")//it is REALLY UNLIKELY that a dead person would check his own pulse + to_chat(usr, "[src] has no pulse!")//it is REALLY UNLIKELY that a dead person would check his own pulse return @@ -1483,7 +1483,7 @@ if(usr.l_move_time >= time) //checks if our mob has moved during the sleep() to_chat(usr, "You moved while counting. Try again.") else - to_chat(usr, "\blue [self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].") + to_chat(usr, "[self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].") /mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/delay_icon_update = 0) var/datum/species/oldspecies = species @@ -1770,7 +1770,7 @@ if(status_flags & LEAPING) status_flags &= ~LEAPING if(!src.Adjacent(T)) - to_chat(src, "\red You miss!") + to_chat(src, "You miss!") return T.Weaken(5) @@ -1783,7 +1783,7 @@ var/use_hand = "left" if(l_hand) if(r_hand) - to_chat(src, "\red You need to have one hand free to grab someone.") + to_chat(src, "You need to have one hand free to grab someone.") return else use_hand = "right" @@ -1809,16 +1809,16 @@ return if(!canmove) - to_chat(src, "\red You cannot do that in your current state.") + to_chat(src, "You cannot do that in your current state.") return var/obj/item/weapon/grab/G = locate() in src if(!G || !istype(G)) - to_chat(src, "\red You are not grabbing anyone.") + to_chat(src, "You are not grabbing anyone.") return if(G.state < GRAB_AGGRESSIVE) - to_chat(src, "\red You must have an aggressive grab to gut your prey!") + to_chat(src, "You must have an aggressive grab to gut your prey!") return last_special = world.time + 50 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index a8e075f2433..b4b46b715b1 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -4,7 +4,7 @@ return if(frozen) - to_chat(M, "\red Do not touch Admin-Frozen people.") + to_chat(M, "Do not touch Admin-Frozen people.") return var/mob/living/carbon/human/H = M diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7685e5ab898..029c207a2d8 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -178,12 +178,12 @@ emp_act if(!istype(affecting)) return if(!(affecting.status & ORGAN_ROBOT)) - to_chat(user, "\red That limb isn't robotic.") + to_chat(user, "That limb isn't robotic.") return if(affecting.sabotaged) - to_chat(user, "\red [src]'s [affecting.name] is already sabotaged!") + to_chat(user, "[src]'s [affecting.name] is already sabotaged!") else - to_chat(user, "\red You sneakily slide the card into the dataport on [src]'s [affecting.name] and short out the safeties.") + to_chat(user, "You sneakily slide the card into the dataport on [src]'s [affecting.name] and short out the safeties.") affecting.sabotaged = 1 return 1 @@ -200,7 +200,7 @@ emp_act src.reagents.trans_to (newmeat, round ((src.reagents.total_volume) / 3, 1)) src.loc.add_blood(src) --src.meatleft - to_chat(user, "\red You hack off a chunk of meat from [src.name]") + to_chat(user, "You hack off a chunk of meat from [src.name]") if(!src.meatleft) src.create_attack_log("Was chopped up into meat by [key_name(user)]") user.create_attack_log("Chopped up [key_name(src)] into meat") @@ -345,7 +345,7 @@ emp_act return var/hit_area = affecting.name - src.visible_message("\red [src] has been hit in the [hit_area] by [I].") + src.visible_message("[src] has been hit in the [hit_area] by [I].") var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened hit to your [hit_area].", I.armour_penetration) //I guess "melee" is the best fit here apply_damage(throw_damage, dtype, zone, armor, is_sharp(I), has_edge(I), I) @@ -378,7 +378,7 @@ emp_act var/momentum = speed/2 var/dir = get_dir(I.throw_source, src) - visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!") + visible_message("[src] staggers under the impact!","You stagger under the impact!") src.throw_at(get_edge_target_turf(src,dir),1,momentum) if(!W || !src) return diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index 4c871405c8d..23706657f57 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -122,7 +122,7 @@ /datum/species/nucleation/handle_death(var/mob/living/carbon/human/H) var/turf/T = get_turf(H) - H.visible_message("\red[H]'s body explodes, leaving behind a pile of microscopic crystals!") + H.visible_message("[H]'s body explodes, leaving behind a pile of microscopic crystals!") explosion(T, 0, 0, 2, 2) // Create a small explosion burst upon death // new /obj/item/weapon/shard/supermatter( T ) qdel(H) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index 05f24facc65..b43ec808c0d 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -206,10 +206,10 @@ return 1 //godmode if(breath.temperature < cold_level_1) if(prob(20)) - to_chat(src, "\red You feel your face freezing and an icicle forming in your lungs!") + to_chat(src, "You feel your face freezing and an icicle forming in your lungs!") else if(breath.temperature > heat_level_1) if(prob(20)) - to_chat(src, "\red You feel your face burning and a searing heat in your lungs!") + to_chat(src, "You feel your face burning and a searing heat in your lungs!") switch(breath.temperature) if(-INFINITY to cold_level_3) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index d24471dc7e2..53955959f5d 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -638,7 +638,7 @@ var/global/list/damage_icon_parts = list() if(w_uniform.flags_size & ONESIZEFITSALL) standing.icon = 'icons/mob/uniform_fat.dmi' else - to_chat(src, "\red You burst out of \the [w_uniform]!") + to_chat(src, "You burst out of \the [w_uniform]!") unEquip(w_uniform) return else @@ -957,7 +957,7 @@ var/global/list/damage_icon_parts = list() if(wear_suit.flags_size & ONESIZEFITSALL) standing = image("icon" = 'icons/mob/suit_fat.dmi', "icon_state" = "[wear_suit.icon_state]") else - to_chat(src, "\red You burst out of \the [wear_suit]!") + to_chat(src, "You burst out of \the [wear_suit]!") unEquip(wear_suit) return else diff --git a/code/modules/mob/living/carbon/slime/emote.dm b/code/modules/mob/living/carbon/slime/emote.dm index c77d5e24a65..b4a6eb140f0 100644 --- a/code/modules/mob/living/carbon/slime/emote.dm +++ b/code/modules/mob/living/carbon/slime/emote.dm @@ -14,7 +14,7 @@ return if(src.client) if(client.prefs.muted & MUTE_IC) - to_chat(src, "\red You cannot send IC messages (muted).") + to_chat(src, "You cannot send IC messages (muted).") return if(src.client.handle_spam_prevention(message,MUTE_IC)) return @@ -62,7 +62,7 @@ to_chat(src, "Help for slime emotes. You can use these emotes with say \"*emote\":\n\nbounce, custom, jiggle, light, moan, shiver, sway, twitch, vibrate") else - to_chat(src, "\blue Unusable emote '[act]'. Say *help for a list.") + to_chat(src, "Unusable emote '[act]'. Say *help for a list.") if((message && src.stat == 0)) if(m_type & 1) for(var/mob/O in viewers(src, null)) diff --git a/code/modules/mob/living/carbon/slime/powers.dm b/code/modules/mob/living/carbon/slime/powers.dm index 38a4a310b41..95359f7d573 100644 --- a/code/modules/mob/living/carbon/slime/powers.dm +++ b/code/modules/mob/living/carbon/slime/powers.dm @@ -27,7 +27,7 @@ if(met.Victim == M && met != src) to_chat(src, "The [met.name] is already feeding on this subject...") return - to_chat(src, "\blue I have latched onto the subject and begun feeding...") + to_chat(src, "I have latched onto the subject and begun feeding...") to_chat(M, "The [src.name] has latched onto your head!") Feedon(M) diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 4952a4bd61b..003cd4a079e 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -371,7 +371,7 @@ visible_message("[src] has been touched with the stun gloves by [M]!") return else - to_chat(M, "\red Not enough charge! ") + to_chat(M, "Not enough charge! ") return */ diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 6f4ad8840c7..3d33fa0c654 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -471,7 +471,7 @@ var/obj/item/weapon/grab/G = pick(M.grabbed_by) if(istype(G, /obj/item/weapon/grab)) for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1) + O.show_message(text("[] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1) //G = null qdel(G) else diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 609d166183d..bdca022648e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -81,7 +81,7 @@ var/throw_damage = I.throwforce*(speed/5) - src.visible_message("\red [src] has been hit by [I].") + src.visible_message("[src] has been hit by [I].") var/armor = run_armor_check(zone, "melee", "Your armor has protected your [parse_zone(zone)].", "Your armor has softened hit to your [parse_zone(zone)].", I.armour_penetration) apply_damage(throw_damage, dtype, zone, armor, is_sharp(I), has_edge(I), I) @@ -102,7 +102,7 @@ var/momentum = speed/2 var/dir = get_dir(I.throw_source, src) - visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!") + visible_message("[src] staggers under the impact!","You stagger under the impact!") src.throw_at(get_edge_target_turf(src,dir),1,momentum) if(!W || !src) return diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 1e34b43e583..81664f631d4 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -331,7 +331,7 @@ proc/get_radio_key_from_channel(var/channel) else //everything else failed, emote is probably invalid if(act == "help") return //except help, because help is handled individually - to_chat(src, "\blue Unusable emote '[act]'. Say *help for a list.") + to_chat(src, "Unusable emote '[act]'. Say *help for a list.") /mob/living/whisper(message as text) message = trim_strip_html_properly(message) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 33e74cb6266..dc8624db9d1 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -800,7 +800,7 @@ var/list/ai_verbs_default = list( if(network in C.network) U.eyeobj.setLoc(get_turf(C)) break - to_chat(src, "\blue Switched to [network] camera network.") + to_chat(src, "Switched to [network] camera network.") //End of code by Mord_Sith @@ -986,7 +986,7 @@ var/list/ai_verbs_default = list( var/obj/machinery/power/apc/apc = loc if(!istype(apc)) - to_chat(src, "\blue You are already in your Main Core.") + to_chat(src, "You are already in your Main Core.") return apc.malfvacate() @@ -1061,19 +1061,19 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/wrench)) if(anchored) - user.visible_message("\blue \The [user] starts to unbolt \the [src] from the plating...") + user.visible_message("\The [user] starts to unbolt \the [src] from the plating...") if(!do_after(user,40, target = src)) - user.visible_message("\blue \The [user] decides not to unbolt \the [src].") + user.visible_message("\The [user] decides not to unbolt \the [src].") return - user.visible_message("\blue \The [user] finishes unfastening \the [src]!") + user.visible_message("\The [user] finishes unfastening \the [src]!") anchored = 0 return else - user.visible_message("\blue \The [user] starts to bolt \the [src] to the plating...") + user.visible_message("\The [user] starts to bolt \the [src] to the plating...") if(!do_after(user,40, target = src)) - user.visible_message("\blue \The [user] decides not to bolt \the [src].") + user.visible_message("\The [user] decides not to bolt \the [src].") return - user.visible_message("\blue \The [user] finishes fastening down \the [src]!") + user.visible_message("\The [user] finishes fastening down \the [src]!") anchored = 1 return else diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index c0e4c2f275b..ec40dff7739 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -14,7 +14,7 @@ if(get_dist(src, cable) > 1) var/turf/T = get_turf_or_move(loc) for(var/mob/M in viewers(T)) - M.show_message("\red The data cable rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2) + M.show_message("The data cable rapidly retracts back into its spool.", 3, "You hear a click and the sound of wire spooling rapidly.", 2) qdel(src.cable) cable = null diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 125eb110c66..d3ecd92da08 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -172,7 +172,7 @@ if(prob(20)) var/turf/T = get_turf_or_move(loc) for(var/mob/M in viewers(T)) - M.show_message("\red A shower of sparks spray from [src]'s inner workings.", 3, "\red You hear and smell the ozone hiss of electrical sparks being expelled violently.", 2) + M.show_message("A shower of sparks spray from [src]'s inner workings.", 3, "You hear and smell the ozone hiss of electrical sparks being expelled violently.", 2) return death(0) switch(pick(1,2,3)) @@ -241,7 +241,7 @@ if(I_HELP) for(var/mob/O in viewers(src, null)) if((O.client && !( O.blinded ))) - O.show_message(text("\blue [M] caresses [src]'s casing with its scythe like arm."), 1) + O.show_message(text("[M] caresses [src]'s casing with its scythe like arm."), 1) else //harm M.do_attack_animation(src) @@ -319,7 +319,7 @@ cameralist[C.network] = C.network network = input(usr, "Which network would you like to view?") as null|anything in cameralist - to_chat(src, "\blue Switched to [network] camera network.") + to_chat(src, "Switched to [network] camera network.") //End of code by Mord_Sith */ diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index fdc1ace289c..b7a05964351 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -115,7 +115,7 @@ /mob/living/silicon/robot/drone/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/borg/upgrade/)) - to_chat(user, "\red The maintenance drone chassis not compatible with \the [W].") + to_chat(user, "The maintenance drone chassis not compatible with \the [W].") return else if(istype(W, /obj/item/weapon/crowbar)) @@ -127,20 +127,20 @@ if(stat == 2) if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave. - to_chat(user, "\red The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one.") + to_chat(user, "The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one.") return if(!allowed(usr)) - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") return var/delta = (world.time / 10) - last_reboot if(reboot_cooldown > delta) var/cooldown_time = round(reboot_cooldown - ((world.time / 10) - last_reboot), 1) - to_chat(usr, "\red The reboot system is currently offline. Please wait another [cooldown_time] seconds.") + to_chat(usr, "The reboot system is currently offline. Please wait another [cooldown_time] seconds.") return - user.visible_message("\red \the [user] swipes \his ID card through \the [src], attempting to reboot it.", "\red You swipe your ID card through \the [src], attempting to reboot it.") + user.visible_message("\the [user] swipes \his ID card through \the [src], attempting to reboot it.", "You swipe your ID card through \the [src], attempting to reboot it.") last_reboot = world.time / 10 var/drones = 0 for(var/mob/living/silicon/robot/drone/D in world) @@ -151,7 +151,7 @@ return else - user.visible_message("\red \the [user] swipes \his ID card through \the [src], attempting to shut it down.", "\red You swipe your ID card through \the [src], attempting to shut it down.") + user.visible_message("\the [user] swipes \his ID card through \the [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.") if(emagged) return @@ -159,7 +159,7 @@ if(allowed(usr)) shut_down() else - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") return @@ -167,7 +167,7 @@ /mob/living/silicon/robot/drone/emag_act(user as mob) if(!client || stat == 2) - to_chat(user, "\red There's not much point subverting this heap of junk.") + to_chat(user, "There's not much point subverting this heap of junk.") return if(!ishuman(user)) @@ -175,12 +175,12 @@ var/mob/living/carbon/human/H = user if(emagged) - to_chat(src, "\red [user] attempts to load subversive software into you, but your hacked subroutined ignore the attempt.") - to_chat(user, "\red You attempt to subvert [src], but the sequencer has no effect.") + to_chat(src, "[user] attempts to load subversive software into you, but your hacked subroutined ignore the attempt.") + to_chat(user, "You attempt to subvert [src], but the sequencer has no effect.") return - to_chat(user, "\red You swipe the sequencer across [src]'s interface and watch its eyes flicker.") - to_chat(src, "\red You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script.") + to_chat(user, "You swipe the sequencer across [src]'s interface and watch its eyes flicker.") + to_chat(src, "You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script.") message_admins("[key_name_admin(user)] emagged drone [key_name_admin(src)]. Laws overridden.") log_game("[key_name(user)] emagged drone [key_name(src)]. Laws overridden.") @@ -197,7 +197,7 @@ to_chat(src, "Obey these laws:") laws.show_laws(src) - to_chat(src, "\red \b ALERT: [H.real_name] is your new master. Obey your new laws and his commands.") + to_chat(src, "ALERT: [H.real_name] is your new master. Obey your new laws and his commands.") return //DRONE LIFE/DEATH @@ -236,18 +236,18 @@ /mob/living/silicon/robot/drone/proc/law_resync() if(stat != 2) if(emagged) - to_chat(src, "\red You feel something attempting to modify your programming, but your hacked subroutines are unaffected.") + to_chat(src, "You feel something attempting to modify your programming, but your hacked subroutines are unaffected.") else - to_chat(src, "\red A reset-to-factory directive packet filters through your data connection, and you obediently modify your programming to suit it.") + to_chat(src, "A reset-to-factory directive packet filters through your data connection, and you obediently modify your programming to suit it.") full_law_reset() show_laws() /mob/living/silicon/robot/drone/proc/shut_down() if(stat != 2) if(emagged) - to_chat(src, "\red You feel a system kill order percolate through your tiny brain, but it doesn't seem like a good idea to you.") + to_chat(src, "You feel a system kill order percolate through your tiny brain, but it doesn't seem like a good idea to you.") else - to_chat(src, "\red You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself.") + to_chat(src, "You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself.") death() /mob/living/silicon/robot/drone/proc/full_law_reset() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index d450d508bd3..2196b421f87 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -10,13 +10,13 @@ mail_destination = 0 return - to_chat(src, "\blue You configure your internal beacon, tagging yourself for delivery to '[tag]'.") + to_chat(src, "You configure your internal beacon, tagging yourself for delivery to '[tag]'.") mail_destination = TAGGERLOCATIONS.Find(tag) //Auto flush if we use this verb inside a disposal chute. var/obj/machinery/disposal/D = src.loc if(istype(D)) - to_chat(src, "\blue \The [D] acknowledges your signal.") + to_chat(src, "\The [D] acknowledges your signal.") D.flush_count = D.flush_every_ticks return @@ -28,10 +28,10 @@ if(layer != TURF_LAYER+0.2) layer = TURF_LAYER+0.2 - to_chat(src, text("\blue You are now hiding.")) + to_chat(src, text("You are now hiding.")) else layer = MOB_LAYER - to_chat(src, text("\blue You have stopped hiding.")) + to_chat(src, text("You have stopped hiding.")) /mob/living/silicon/robot/drone/verb/light() set name = "Light On/Off" diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index b46f5899561..332ce6684fa 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -20,7 +20,7 @@ return if(!allowed(user)) - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") return interact(user) @@ -54,7 +54,7 @@ return if(!allowed(usr)) - to_chat(usr, "\red Access denied.") + to_chat(usr, "Access denied.") return if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) @@ -69,11 +69,11 @@ return drone_call_area = t_area - to_chat(usr, "\blue You set the area selector to [drone_call_area].") + to_chat(usr, "You set the area selector to [drone_call_area].") else if(href_list["ping"]) - to_chat(usr, "\blue You issue a maintenance request for all active drones, highlighting [drone_call_area].") + to_chat(usr, "You issue a maintenance request for all active drones, highlighting [drone_call_area].") for(var/mob/living/silicon/robot/drone/D in world) if(D.client && D.stat == 0) to_chat(D, "-- Maintenance drone presence requested in: [drone_call_area].") @@ -83,7 +83,7 @@ var/mob/living/silicon/robot/drone/D = locate(href_list["resync"]) if(D.stat != 2) - to_chat(usr, "\red You issue a law synchronization directive for the drone.") + to_chat(usr, "You issue a law synchronization directive for the drone.") D.law_resync() else if(href_list["shutdown"]) @@ -91,7 +91,7 @@ var/mob/living/silicon/robot/drone/D = locate(href_list["shutdown"]) if(D.stat != 2) - to_chat(usr, "\red You issue a kill command for the unfortunate drone.") + to_chat(usr, "You issue a kill command for the unfortunate drone.") message_admins("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.") log_game("[key_name(usr)] issued kill order for [key_name(src)] from control console.") D.shut_down() @@ -106,10 +106,10 @@ continue dronefab = fab - to_chat(usr, "\blue Drone fabricator located.") + to_chat(usr, "Drone fabricator located.") return - to_chat(usr, "\red Unable to locate drone fabricator.") + to_chat(usr, "Unable to locate drone fabricator.") else if(href_list["toggle_fab"]) @@ -118,10 +118,10 @@ if(get_dist(src,dronefab) > 3) dronefab = null - to_chat(usr, "\red Unable to locate drone fabricator.") + to_chat(usr, "Unable to locate drone fabricator.") return dronefab.produce_drones = !dronefab.produce_drones - to_chat(usr, "\blue You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator.") + to_chat(usr, "You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator.") src.updateUsrDialog() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index aeed17ef9fd..187a32633b6 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -85,7 +85,7 @@ set desc = "If there is a powered, enabled fabricator in the game world with a prepared chassis, join as a maintenance drone." if(!(config.allow_drone_spawn)) - to_chat(src, "\red That verb is not currently permitted.") + to_chat(src, "That verb is not currently permitted.") return if(!src.stat) @@ -95,7 +95,7 @@ return 0 //something is terribly wrong if(jobban_isbanned(src,"nonhumandept") || jobban_isbanned(src,"Drone")) - to_chat(usr, "\red You are banned from playing drones and cannot spawn as a drone.") + to_chat(usr, "You are banned from playing drones and cannot spawn as a drone.") return if(!ticker || ticker.current_state < 3) @@ -141,11 +141,11 @@ continue if(DF.count_drones() >= config.max_maint_drones) - to_chat(src, "\red There are too many active drones in the world for you to spawn.") + to_chat(src, "There are too many active drones in the world for you to spawn.") return if(DF.drone_progress >= 100) DF.create_drone(src.client) return - to_chat(src, "\red There are no available drone spawn points, sorry.") + to_chat(src, "There are no available drone spawn points, sorry.") diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index afa2d0667c4..f42f19b67fa 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -229,7 +229,7 @@ weaponlock_time -- if(weaponlock_time <= 0) if(src.client) - to_chat(src, "\red Weapon Lock Timed Out!") + to_chat(src, "Weapon Lock Timed Out!") weapon_lock = 0 weaponlock_time = 120 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2840e7b381c..2d21d757074 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -265,7 +265,7 @@ var/list/robot_verbs_default = list( return var/list/modules = list("Standard", "Engineering", "Medical", "Miner", "Janitor", "Service", "Security") if(security_level == (SEC_LEVEL_GAMMA || SEC_LEVEL_EPSILON) || crisis) - to_chat(src, "\red Crisis mode active. Combat module available.") + to_chat(src, "Crisis mode active. Combat module available.") modules+="Combat" if(ticker && ticker.mode && ticker.mode.name == "nations") var/datum/game_mode/nations/N = ticker.mode @@ -422,7 +422,7 @@ var/list/robot_verbs_default = list( set name = "Self Diagnosis" if(!is_component_functioning("diagnosis unit")) - to_chat(src, "\red Your self-diagnosis component isn't functioning.") + to_chat(src, "Your self-diagnosis component isn't functioning.") var/dat = self_diagnosis() src << browse(dat, "window=robotdiagnosis") @@ -447,10 +447,10 @@ var/list/robot_verbs_default = list( var/datum/robot_component/C = components[toggle] if(C.toggled) C.toggled = 0 - to_chat(src, "\red You disable [C.name].") + to_chat(src, "You disable [C.name].") else C.toggled = 1 - to_chat(src, "\red You enable [C.name].") + to_chat(src, "You enable [C.name].") /mob/living/silicon/robot/proc/sensor_mode() set name = "Set Sensor Augmentation" @@ -597,7 +597,7 @@ var/list/robot_verbs_default = list( C.brute_damage = WC.brute C.electronics_damage = WC.burn - to_chat(usr, "\blue You install the [W.name].") + to_chat(usr, "You install the [W.name].") return @@ -798,22 +798,22 @@ var/list/robot_verbs_default = list( var/time = time2text(world.realtime,"hh:mm:ss") lawchanges.Add("[time] : [M.name]([M.key]) emagged [name]([key])") set_zeroth_law("Only [M.real_name] and people he designates as being such are Syndicate Agents.") - to_chat(src, "\red ALERT: Foreign software detected.") + to_chat(src, "ALERT: Foreign software detected.") sleep(5) - to_chat(src, "\red Initiating diagnostics...") + to_chat(src, "Initiating diagnostics...") sleep(20) - to_chat(src, "\red SynBorg v1.7 loaded.") + to_chat(src, "SynBorg v1.7 loaded.") sleep(5) - to_chat(src, "\red LAW SYNCHRONISATION ERROR") + to_chat(src, "LAW SYNCHRONISATION ERROR") sleep(5) - to_chat(src, "\red Would you like to send a report to NanoTraSoft? Y/N") + to_chat(src, "Would you like to send a report to NanoTraSoft? Y/N") sleep(10) - to_chat(src, "\red > N") + to_chat(src, "> N") sleep(20) - to_chat(src, "\red ERRORERRORERROR") + to_chat(src, "ERRORERRORERROR") to_chat(src, "Obey these laws:") laws.show_laws(src) - to_chat(src, "\red \b ALERT: [M.real_name] is your new master. Obey your new laws and his commands.") + to_chat(src, "ALERT: [M.real_name] is your new master. Obey your new laws and his commands.") SetLockdown(0) if(src.module && istype(src.module, /obj/item/weapon/robot_module/miner)) for(var/obj/item/weapon/pickaxe/drill/cyborg/D in src.module.modules) @@ -1004,7 +1004,7 @@ var/list/robot_verbs_default = list( /mob/living/silicon/robot/proc/installed_modules() if(weapon_lock) - to_chat(src, "\red Weapon lock active, unable to use modules! Count:[weaponlock_time]") + to_chat(src, "Weapon lock active, unable to use modules! Count:[weaponlock_time]") return if(!module) diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 2ef7f30e45b..780a622906a 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -90,11 +90,11 @@ cell.charge -= cost if(cell.charge <= 0) cell.charge = 0 - to_chat(src, "\red Your shield has overloaded!") + to_chat(src, "Your shield has overloaded!") else brute -= absorb_brute burn -= absorb_burn - to_chat(src, "\red Your shield absorbs some of the impact!") + to_chat(src, "Your shield absorbs some of the impact!") var/datum/robot_component/armour/A = get_armour() if(A) @@ -141,11 +141,11 @@ cell.charge -= cost if(cell.charge <= 0) cell.charge = 0 - to_chat(src, "\red Your shield has overloaded!") + to_chat(src, "Your shield has overloaded!") else brute -= absorb_brute burn -= absorb_burn - to_chat(src, "\red Your shield absorbs some of the impact!") + to_chat(src, "Your shield absorbs some of the impact!") var/datum/robot_component/armour/A = get_armour() if(A) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index 84c07ee7c20..eba7e05d632 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -65,7 +65,7 @@ deploy_paper(get_turf(src)) /obj/item/weapon/form_printer/proc/deploy_paper(var/turf/T) - T.visible_message("\blue \The [src.loc] dispenses a sheet of crisp white paper.") + T.visible_message("\The [src.loc] dispenses a sheet of crisp white paper.") new /obj/item/weapon/paper(T) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 469b6e86574..f9849e9b6cc 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -75,7 +75,7 @@ Stun(3) flash_eyes(affect_silicon = 1) to_chat(src, "*BZZZT*") - to_chat(src, "\red Warning: Electromagnetic pulse detected.") + to_chat(src, "Warning: Electromagnetic pulse detected.") ..() diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index dfc0bce32a3..14a61236ff5 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -572,7 +572,7 @@ //Lisa already has a cute bow! /mob/living/simple_animal/pet/corgi/Lisa/Topic(href, href_list) if(href_list["remove_inv"] || href_list["add_inv"]) - to_chat(usr, "\red [src] already has a cute bow!") + to_chat(usr, "[src] already has a cute bow!") return ..() @@ -628,7 +628,7 @@ /mob/living/simple_animal/pet/corgi/Ian/borgi/proc/explode() for(var/mob/M in viewers(src, null)) if(M.client) - M.show_message("\red [src] makes an odd whining noise.") + M.show_message("[src] makes an odd whining noise.") sleep(10) explosion(get_turf(src), 0, 1, 4, 7) death() diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 7a81f52e2b7..02c1445ad27 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -52,7 +52,7 @@ /*/mob/living/simple_animal/crab/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if(istype(O, /obj/item/weapon/wirecutters)) if(prob(50)) - to_chat(user, "\red \b This kills the crab.") + to_chat(user, "This kills the crab.") health -= 20 death() else @@ -69,20 +69,20 @@ qdel(MED) for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) - M.show_message("\blue [user] applies the [MED] on [src]") + M.show_message("[user] applies the [MED] on [src]") else - to_chat(user, "\blue this [src] is dead, medical items won't bring it back to life.") + to_chat(user, "this [src] is dead, medical items won't bring it back to life.") else if(O.force) health -= O.force for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) - M.show_message("\red \b [src] has been attacked with the [O] by [user]. ") + M.show_message("[src] has been attacked with the [O] by [user]. ") else - to_chat(usr, "\red This weapon is ineffective, it does no damage.") + to_chat(usr, "This weapon is ineffective, it does no damage.") for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with the [O]. ") + M.show_message("[user] gently taps [src] with the [O]. ") /mob/living/simple_animal/crab/Topic(href, href_list) if(usr.stat) return @@ -105,14 +105,14 @@ inventory_head.loc = src.loc inventory_head = null else - to_chat(usr, "\red There is nothing to remove from its [remove_from].") + to_chat(usr, "There is nothing to remove from its [remove_from].") return if("mask") if(inventory_mask) inventory_mask.loc = src.loc inventory_mask = null else - to_chat(usr, "\red There is nothing to remove from its [remove_from].") + to_chat(usr, "There is nothing to remove from its [remove_from].") return //show_inv(usr) //Commented out because changing Ian's name and then calling up his inventory opens a new inventory...which is annoying. @@ -123,12 +123,12 @@ return var/add_to = href_list["add_inv"] if(!usr.get_active_hand()) - to_chat(usr, "\red You have nothing in your hand to put on its [add_to].") + to_chat(usr, "You have nothing in your hand to put on its [add_to].") return switch(add_to) if("head") if(inventory_head) - to_chat(usr, "\red It's is already wearing something.") + to_chat(usr, "It's is already wearing something.") return else var/obj/item/item_to_add = usr.get_active_hand() @@ -170,7 +170,7 @@ ) if( ! ( item_to_add.type in allowed_types ) ) - to_chat(usr, "\red It doesn't seem too keen on wearing that item.") + to_chat(usr, "It doesn't seem too keen on wearing that item.") return usr.drop_item() @@ -233,7 +233,7 @@ if("mask") if(inventory_mask) - to_chat(usr, "\red It's already wearing something.") + to_chat(usr, "It's already wearing something.") return else var/obj/item/item_to_add = usr.get_active_hand() @@ -249,7 +249,7 @@ ) if( ! ( item_to_add.type in allowed_types ) ) - to_chat(usr, "\red This object won't fit.") + to_chat(usr, "This object won't fit.") return usr.drop_item() diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index b1b31461b77..8da7365906a 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -45,7 +45,7 @@ if(enemies.len && prob(10)) enemies = list() LoseTarget() - src.visible_message("\blue [src] calms down.") + src.visible_message("[src] calms down.") var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc if(SV) @@ -59,7 +59,7 @@ /mob/living/simple_animal/hostile/retaliate/goat/Retaliate() ..() - src.visible_message("\red [src] gets an evil-looking gleam in their eye.") + src.visible_message("[src] gets an evil-looking gleam in their eye.") /mob/living/simple_animal/hostile/retaliate/goat/Move() ..() @@ -78,9 +78,9 @@ G.reagents.add_reagent("milk", transfered) milk_content -= transfered else if(G.reagents.total_volume >= G.volume) - to_chat(user, "\red \The [O] is full.") + to_chat(user, "\The [O] is full.") else - to_chat(user, "\red The udder is dry. Wait a bit longer...") + to_chat(user, "The udder is dry. Wait a bit longer...") else ..() @@ -124,9 +124,9 @@ G.reagents.add_reagent("milk", transfered) milk_content -= transfered else if(G.reagents.total_volume >= G.volume) - to_chat(user, "\red \The [O] is full.") + to_chat(user, "\The [O] is full.") else - to_chat(user, "\red The udder is dry. Wait a bit longer...") + to_chat(user, "The udder is dry. Wait a bit longer...") else ..() diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 0b0a182ed44..fdcf39dd51b 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -112,7 +112,7 @@ if( ishuman(AM) ) if(!stat) var/mob/M = AM - to_chat(M, "\blue [bicon(src)] Squeek!") + to_chat(M, "[bicon(src)] Squeek!") M << 'sound/effects/mousesqueek.ogg' ..() diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 38eea833e04..5b2419bf7e8 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -48,10 +48,10 @@ if(istype(O, /obj/item/device/mmi) || istype(O, /obj/item/device/mmi/posibrain)) var/obj/item/device/mmi/B = O if(src.mmi) //There's already a brain in it. - to_chat(user, "\red There's already a brain in [src]!") + to_chat(user, "There's already a brain in [src]!") return if(!B.brainmob) - to_chat(user, "\red Sticking an empty MMI into the frame would sort of defeat the purpose.") + to_chat(user, "Sticking an empty MMI into the frame would sort of defeat the purpose.") return if(!B.brainmob.key) var/ghost_can_reenter = 0 @@ -69,14 +69,14 @@ return if(B.brainmob.stat == DEAD) - to_chat(user, "\red [O] is dead. Sticking it into the frame would sort of defeat the purpose.") + to_chat(user, "[O] is dead. Sticking it into the frame would sort of defeat the purpose.") return if(jobban_isbanned(B.brainmob, "Cyborg") || jobban_isbanned(B.brainmob,"nonhumandept")) - to_chat(user, "\red [O] does not seem to fit.") + to_chat(user, "[O] does not seem to fit.") return - to_chat(user, "\blue You install [O] in [src]!") + to_chat(user, "You install [O] in [src]!") user.drop_item() src.mmi = O @@ -95,15 +95,15 @@ health = maxHealth add_fingerprint(user) for(var/mob/W in viewers(user, null)) - W.show_message(text("\red [user] has spot-welded some of the damage to [src]!"), 1) + W.show_message(text("[user] has spot-welded some of the damage to [src]!"), 1) else - to_chat(user, "\blue [src] is undamaged!") + to_chat(user, "[src] is undamaged!") else to_chat(user, "Need more welding fuel!") return else if(istype(O, /obj/item/weapon/card/id)||istype(O, /obj/item/device/pda)) if(!mmi) - to_chat(user, "\red There's no reason to swipe your ID - the spiderbot has no brain to remove.") + to_chat(user, "There's no reason to swipe your ID - the spiderbot has no brain to remove.") return 0 var/obj/item/weapon/card/id/id_card @@ -115,7 +115,7 @@ id_card = pda.id if(access_robotics in id_card.access) - to_chat(user, "\blue You swipe your access card and pop the brain out of [src].") + to_chat(user, "You swipe your access card and pop the brain out of [src].") eject_brain() if(held_item) @@ -124,7 +124,7 @@ return 1 else - to_chat(user, "\red You swipe your card, with no effect.") + to_chat(user, "You swipe your card, with no effect.") return 0 else @@ -135,24 +135,24 @@ adjustBruteLoss(damage) for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) - M.show_message("\red \b [src] has been attacked with the [O] by [user]. ") + M.show_message("[src] has been attacked with the [O] by [user]. ") else - to_chat(usr, "\red This weapon is ineffective, it does no damage.") + to_chat(usr, "This weapon is ineffective, it does no damage.") for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with the [O]. ") + M.show_message("[user] gently taps [src] with the [O]. ") /mob/living/simple_animal/spiderbot/emag_act(user as mob) if(emagged) - to_chat(user, "\red [src] is already overloaded - better run.") + to_chat(user, "[src] is already overloaded - better run.") return 0 else emagged = 1 - to_chat(user, "\blue You short out the security protocols and overload [src]'s cell, priming it to explode in a short time.") + to_chat(user, "You short out the security protocols and overload [src]'s cell, priming it to explode in a short time.") spawn(100) - to_chat(src, "\red Your cell seems to be outputting a lot of power...") + to_chat(src, "Your cell seems to be outputting a lot of power...") spawn(200) - to_chat(src, "\red Internal heat sensors are spiking! Something is badly wrong with your cell!") + to_chat(src, "Internal heat sensors are spiking! Something is badly wrong with your cell!") spawn(300) src.explode() @@ -166,7 +166,7 @@ /mob/living/simple_animal/spiderbot/proc/explode() //When emagged. for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) - M.show_message("\red [src] makes an odd warbling noise, fizzles, and explodes.") + M.show_message("[src] makes an odd warbling noise, fizzles, and explodes.") explosion(get_turf(loc), -1, -1, 3, 5) eject_brain() death() @@ -227,18 +227,18 @@ return if(!held_item) - to_chat(usr, "\red You have nothing to drop!") + to_chat(usr, "You have nothing to drop!") return 0 if(istype(held_item, /obj/item/weapon/grenade)) - visible_message("\red [src] launches \the [held_item]!", "\red You launch \the [held_item]!", "You hear a skittering noise and a thump!") + visible_message("[src] launches \the [held_item]!", "You launch \the [held_item]!", "You hear a skittering noise and a thump!") var/obj/item/weapon/grenade/G = held_item G.loc = src.loc G.prime() held_item = null return 1 - visible_message("\blue [src] drops \the [held_item]!", "\blue You drop \the [held_item]!", "You hear a skittering noise and a soft thump.") + visible_message("[src] drops \the [held_item]!", "You drop \the [held_item]!", "You hear a skittering noise and a soft thump.") held_item.loc = src.loc held_item = null @@ -255,7 +255,7 @@ return -1 if(held_item) - to_chat(src, "\red You are already holding \the [held_item]") + to_chat(src, "You are already holding \the [held_item]") return 1 var/list/items = list() @@ -270,12 +270,12 @@ if(selection == I) held_item = selection selection.loc = src - visible_message("\blue [src] scoops up \the [held_item]!", "\blue You grab \the [held_item]!", "You hear a skittering noise and a clink.") + visible_message("[src] scoops up \the [held_item]!", "You grab \the [held_item]!", "You hear a skittering noise and a clink.") return held_item - to_chat(src, "\red \The [selection] is too far away.") + to_chat(src, "\The [selection] is too far away.") return 0 - to_chat(src, "\red There is nothing of interest to take.") + to_chat(src, "There is nothing of interest to take.") return 0 /mob/living/simple_animal/spiderbot/examine(mob/user) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 5b76f3a633c..3c521d56d04 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -83,7 +83,7 @@ /mob/living/simple_animal/hostile/hivebot/tele/warpbots() icon_state = "def_radar" - visible_message("\red The [src] turns on!") + visible_message("The [src] turns on!") while(bot_amt > 0) bot_amt-- switch(bot_type) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index 9f98b205fc9..3cfc1b2c291 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -79,7 +79,7 @@ //repair a bit of damage if(prob(1)) - src.visible_message("\red [bicon(src)] [src] shudders and shakes as some of it's damaged systems come back online.") + src.visible_message("[bicon(src)] [src] shudders and shakes as some of it's damaged systems come back online.") var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(3, 1, src) s.start() @@ -94,10 +94,10 @@ //sometimes our targetting sensors malfunction, and we attack anyone nearby if(prob(disabled ? 0 : 1)) if(hostile_drone) - src.visible_message("\blue [bicon(src)] [src] retracts several targetting vanes, and dulls it's running lights.") + src.visible_message("[bicon(src)] [src] retracts several targetting vanes, and dulls it's running lights.") hostile_drone = 0 else - src.visible_message("\red [bicon(src)] [src] suddenly lights up, and additional targetting vanes slide into place.") + src.visible_message("[bicon(src)] [src] suddenly lights up, and additional targetting vanes slide into place.") hostile_drone = 1 if(health / maxHealth > 0.9) @@ -118,17 +118,17 @@ exploding = 0 if(!disabled) if(prob(50)) - src.visible_message("\blue [bicon(src)] [src] suddenly shuts down!") + src.visible_message("[bicon(src)] [src] suddenly shuts down!") else - src.visible_message("\blue [bicon(src)] [src] suddenly lies still and quiet.") + src.visible_message("[bicon(src)] [src] suddenly lies still and quiet.") disabled = rand(150, 600) walk(src,0) if(exploding && prob(20)) if(prob(50)) - src.visible_message("\red [bicon(src)] [src] begins to spark and shake violenty!") + src.visible_message("[bicon(src)] [src] begins to spark and shake violenty!") else - src.visible_message("\red [bicon(src)] [src] sparks and shakes like it's about to explode!") + src.visible_message("[bicon(src)] [src] sparks and shakes like it's about to explode!") var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index be2cfff6f0c..805059f25f7 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -46,13 +46,13 @@ if(O.damtype == STAMINA) damage = 0 health -= damage - visible_message("\red \b [src] has been attacked with the [O] by [user]. ") + visible_message("[src] has been attacked with the [O] by [user]. ") else - visible_message("\red \b [src] blocks the [O] with its shield! ") + visible_message("[src] blocks the [O] with its shield! ") playsound(loc, O.hitsound, 25, 1, -1) else - to_chat(usr, "\red This weapon is ineffective, it does no damage.") - visible_message("\red [user] gently taps [src] with the [O]. ") + to_chat(usr, "This weapon is ineffective, it does no damage.") + visible_message("[user] gently taps [src] with the [O]. ") /mob/living/simple_animal/hostile/syndicate/melee/bullet_act(var/obj/item/projectile/Proj) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 8e655760d11..2c1fb61be2f 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -406,7 +406,7 @@ if(!parrot_perch || parrot_interest.loc != parrot_perch.loc) held_item = parrot_interest parrot_interest.loc = src - visible_message("[src] grabs the [held_item]!", "\blue You grab the [held_item]!", "You hear the sounds of wings flapping furiously.") + visible_message("[src] grabs the [held_item]!", "You grab the [held_item]!", "You hear the sounds of wings flapping furiously.") parrot_interest = null parrot_state = PARROT_SWOOP | PARROT_RETURN diff --git a/code/modules/mob/living/simple_animal/powers.dm b/code/modules/mob/living/simple_animal/powers.dm index 9177b61ea2d..9d1d6217415 100644 --- a/code/modules/mob/living/simple_animal/powers.dm +++ b/code/modules/mob/living/simple_animal/powers.dm @@ -8,13 +8,13 @@ if(layer != TURF_LAYER+0.2) layer = TURF_LAYER+0.2 - to_chat(src, text("\green You are now hiding.")) + to_chat(src, text("You are now hiding.")) for(var/mob/O in oviewers(src, null)) if((O.client && !( O.blinded ))) to_chat(O, text("[] scurries to the ground!", src)) else layer = MOB_LAYER - to_chat(src, text("\green You have stopped hiding.")) + to_chat(src, text("You have stopped hiding.")) for(var/mob/O in oviewers(src, null)) if((O.client && !( O.blinded ))) to_chat(O, text("[] slowly peaks up from the ground...", src)) diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index d4d52f63ce5..01ce4964ece 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -40,12 +40,12 @@ health -= damage for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) - M.show_message("\red \b [src] has been attacked with the [O] by [user]. ") + M.show_message("[src] has been attacked with the [O] by [user]. ") else - to_chat(usr, "\red This weapon is ineffective, it does no damage.") + to_chat(usr, "This weapon is ineffective, it does no damage.") for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with the [O]. ") + M.show_message("[user] gently taps [src] with the [O]. ") return /mob/living/simple_animal/shade/sword diff --git a/code/modules/mob/living/simple_animal/tribbles.dm b/code/modules/mob/living/simple_animal/tribbles.dm index 6a18da90aaa..78b28abf9f8 100644 --- a/code/modules/mob/living/simple_animal/tribbles.dm +++ b/code/modules/mob/living/simple_animal/tribbles.dm @@ -195,10 +195,10 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, if(src.destroyed) return else - to_chat(usr, text("\blue You kick the lab cage.")) + to_chat(usr, text("You kick the lab cage.")) for(var/mob/O in oviewers()) if((O.client && !( O.blinded ))) - to_chat(O, text("\red [] kicks the lab cage.", usr)) + to_chat(O, text("[] kicks the lab cage.", usr)) src.health -= 2 healthcheck() return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3f3792fd1b7..f9845b1ffeb 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -47,14 +47,14 @@ var/datum/gas_mixture/environment = loc.return_air() - var/t = "\blue Coordinates: [x],[y] \n" - t+= "\red Temperature: [environment.temperature] \n" - t+= "\blue Nitrogen: [environment.nitrogen] \n" - t+= "\blue Oxygen: [environment.oxygen] \n" - t+= "\blue Plasma : [environment.toxins] \n" - t+= "\blue Carbon Dioxide: [environment.carbon_dioxide] \n" + var/t = "Coordinates: [x],[y] \n" + t+= "Temperature: [environment.temperature] \n" + t+= "Nitrogen: [environment.nitrogen] \n" + t+= "Oxygen: [environment.oxygen] \n" + t+= "Plasma : [environment.toxins] \n" + t+= "Carbon Dioxide: [environment.carbon_dioxide] \n" for(var/datum/gas/trace_gas in environment.trace_gases) - to_chat(usr, "\blue [trace_gas.type]: [trace_gas.moles] \n") + to_chat(usr, "[trace_gas.type]: [trace_gas.moles] \n") usr.show_message(t, 1) @@ -172,7 +172,7 @@ if(istype(W, /obj/item/clothing)) var/obj/item/clothing/C = W if(C.rig_restrict_helmet) - to_chat(src, "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)")// Stop eva helms equipping. + to_chat(src, "You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)")// Stop eva helms equipping. else equip_to_slot_if_possible(C, slot) @@ -208,7 +208,7 @@ qdel(W) else if(!disable_warning) - to_chat(src, "\red You are unable to equip that.")//Only print if del_on_fail is false + to_chat(src, "You are unable to equip that.")//Only print if del_on_fail is false return 0 @@ -352,7 +352,7 @@ var/list/slot_equipment_priority = list( \ if(slot_belt) if(!H.w_uniform) if(!disable_warning) - to_chat(H, "\red You need a jumpsuit before you can attach this [name].") + to_chat(H, "You need a jumpsuit before you can attach this [name].") return 0 if( !(slot_flags & SLOT_BELT) ) return 0 @@ -412,7 +412,7 @@ var/list/slot_equipment_priority = list( \ if(slot_wear_id) if(!H.w_uniform) if(!disable_warning) - to_chat(H, "\red You need a jumpsuit before you can attach this [name].") + to_chat(H, "You need a jumpsuit before you can attach this [name].") return 0 if( !(slot_flags & SLOT_ID) ) return 0 @@ -427,7 +427,7 @@ var/list/slot_equipment_priority = list( \ return 0 if(!H.w_uniform) if(!disable_warning) - to_chat(H, "\red You need a jumpsuit before you can attach this [name].") + to_chat(H, "You need a jumpsuit before you can attach this [name].") return 0 if(slot_flags & SLOT_DENYPOCKET) return @@ -438,7 +438,7 @@ var/list/slot_equipment_priority = list( \ return 0 if(!H.w_uniform) if(!disable_warning) - to_chat(H, "\red You need a jumpsuit before you can attach this [name].") + to_chat(H, "You need a jumpsuit before you can attach this [name].") return 0 if(slot_flags & SLOT_DENYPOCKET) return 0 @@ -448,7 +448,7 @@ var/list/slot_equipment_priority = list( \ if(slot_s_store) if(!H.wear_suit) if(!disable_warning) - to_chat(H, "\red You need a suit before you can attach this [name].") + to_chat(H, "You need a suit before you can attach this [name].") return 0 if(!H.wear_suit.allowed) if(!disable_warning) @@ -752,7 +752,7 @@ var/list/slot_equipment_priority = list( \ if(client.holder && (client.holder.rights & R_ADMIN)) is_admin = 1 else if(stat != DEAD || istype(src, /mob/new_player)) - to_chat(usr, "\blue You must be observing to use this!") + to_chat(usr, "You must be observing to use this!") return if(is_admin && stat == DEAD) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 446ec797a76..185c6c10082 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -364,7 +364,7 @@ eyes.damage += rand(3,4) if(eyes.damage >= eyes.min_broken_damage) if(M.stat != 2) - to_chat(M, "\red You go blind!")*///This is a demonstration of adding a new damaging type based on intent as well as hitzone. + to_chat(M, "You go blind!")*///This is a demonstration of adding a new damaging type based on intent as well as hitzone. //This specific example would allow you to squish people's eyes with a GRAB_NECK. diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 8b8fafd32b7..7be93fcc27e 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -50,12 +50,12 @@ var/mob/living/silicon/robot/R = usr var/module = R.get_selected_module() if(!module) - to_chat(usr, "\red You have no module selected.") + to_chat(usr, "You have no module selected.") return R.cycle_modules() R.uneq_numbered(module) else - to_chat(usr, "\red This mob type cannot throw items.") + to_chat(usr, "This mob type cannot throw items.") return @@ -63,17 +63,17 @@ if(iscarbon(usr)) var/mob/living/carbon/C = usr if(!C.get_active_hand()) - to_chat(usr, "\red You have nothing to drop in your hand.") + to_chat(usr, "You have nothing to drop in your hand.") return drop_item() else if(isrobot(usr)) var/mob/living/silicon/robot/R = usr if(!R.get_selected_module()) - to_chat(usr, "\red You have no module selected.") + to_chat(usr, "You have no module selected.") return R.deselect_module(R.get_selected_module()) else - to_chat(usr, "\red This mob type cannot drop items.") + to_chat(usr, "This mob type cannot drop items.") return //This gets called when you press the delete button. @@ -81,7 +81,7 @@ set hidden = 1 if(!usr.pulling) - to_chat(usr, "\blue You are not pulling anything.") + to_chat(usr, "You are not pulling anything.") return usr.stop_pulling() @@ -208,13 +208,13 @@ for(var/mob/M in range(mob, 1)) if(M.pulling == mob) if(!M.restrained() && M.stat == 0 && M.canmove && mob.Adjacent(M)) - to_chat(src, "\blue You're restrained! You can't move!") + to_chat(src, "You're restrained! You can't move!") return 0 else M.stop_pulling() if(mob.pinned.len) - to_chat(src, "\blue You're pinned to a wall by [mob.pinned[1]]!") + to_chat(src, "You're pinned to a wall by [mob.pinned[1]]!") return 0 var/turf/T = mob.loc diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index 856879acf38..a94be6a54c1 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -5,7 +5,7 @@ /mob/proc/change_mob_type(var/new_type = null, var/turf/location = null, var/new_name = null as text, var/delete_old_mob = 0 as num, var/forcekey = 0) if(istype(src,/mob/new_player)) - to_chat(usr, "\red cannot convert players who have not entered yet.") + to_chat(usr, "cannot convert players who have not entered yet.") return if(!new_type) @@ -19,7 +19,7 @@ return if( new_type == /mob/new_player ) - to_chat(usr, "\red cannot convert into a new_player mob type.") + to_chat(usr, "cannot convert into a new_player mob type.") return var/mob/M diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index bccd7990de9..770460d8a93 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -131,7 +131,7 @@ observer.started_as_observer = 1 close_spawn_windows() var/obj/O = locate("landmark*Observer-Start") - to_chat(src, "\blue Now teleporting.") + to_chat(src, "Now teleporting.") observer.loc = O.loc observer.timeofdeath = world.time // Set the time of death so that the respawn timer works correctly. client.prefs.update_preview_icon(1) @@ -151,7 +151,7 @@ if(href_list["late_join"]) if(!ticker || ticker.current_state != GAME_STATE_PLAYING) - to_chat(usr, "\red The round is either not ready, or has already finished...") + to_chat(usr, "The round is either not ready, or has already finished...") return if(client.prefs.species in whitelisted_species) @@ -168,7 +168,7 @@ if(href_list["SelectedJob"]) if(!enter_allowed) - to_chat(usr, "\blue There is an administrative lock on entering the game!") + to_chat(usr, "There is an administrative lock on entering the game!") return if(client.prefs.randomslot) @@ -285,10 +285,10 @@ if(src != usr) return 0 if(!ticker || ticker.current_state != GAME_STATE_PLAYING) - to_chat(usr, "\red The round is either not ready, or has already finished...") + to_chat(usr, "The round is either not ready, or has already finished...") return 0 if(!enter_allowed) - to_chat(usr, "\blue There is an administrative lock on entering the game!") + to_chat(usr, "There is an administrative lock on entering the game!") return 0 if(!IsJobAvailable(rank)) to_chat(src, alert("[rank] is not available. Please try another.")) diff --git a/code/modules/mob/new_player/poll.dm b/code/modules/mob/new_player/poll.dm index f85a8c9ded1..afe1e63ea12 100644 --- a/code/modules/mob/new_player/poll.dm +++ b/code/modules/mob/new_player/poll.dm @@ -59,7 +59,7 @@ break if(!found) - to_chat(usr, "\red Poll question details not found.") + to_chat(usr, "Poll question details not found.") return switch(polltype) @@ -316,7 +316,7 @@ break if(!validpoll) - to_chat(usr, "\red Poll is not valid.") + to_chat(usr, "Poll is not valid.") return var/DBQuery/select_query2 = dbcon.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE id = [optionid] AND pollid = [pollid]") @@ -329,7 +329,7 @@ break if(!validoption) - to_chat(usr, "\red Poll option is not valid.") + to_chat(usr, "Poll option is not valid.") return var/alreadyvoted = 0 @@ -343,11 +343,11 @@ break if(!multichoice && alreadyvoted) - to_chat(usr, "\red You already voted in this poll.") + to_chat(usr, "You already voted in this poll.") return if(multichoice && (alreadyvoted >= multiplechoiceoptions)) - to_chat(usr, "\red You already have more than [multiplechoiceoptions] logged votes on this poll. Enough is enough. Contact the database admin if this is an error.") + to_chat(usr, "You already have more than [multiplechoiceoptions] logged votes on this poll. Enough is enough. Contact the database admin if this is an error.") return var/adminrank = "Player" @@ -358,7 +358,7 @@ var/DBQuery/insert_query = dbcon.NewQuery("INSERT INTO [format_table_name("poll_vote")] (id ,datetime ,pollid ,optionid ,ckey ,ip ,adminrank) VALUES (null, Now(), [pollid], [optionid], '[usr.ckey]', '[usr.client.address]', '[adminrank]')") insert_query.Execute() - to_chat(usr, "\blue Vote successful.") + to_chat(usr, "Vote successful.") usr << browse(null,"window=playerpoll") @@ -383,7 +383,7 @@ break if(!validpoll) - to_chat(usr, "\red Poll is not valid.") + to_chat(usr, "Poll is not valid.") return var/alreadyvoted = 0 @@ -396,7 +396,7 @@ break if(alreadyvoted) - to_chat(usr, "\red You already sent your feedback for this poll.") + to_chat(usr, "You already sent your feedback for this poll.") return var/adminrank = "Player" @@ -416,7 +416,7 @@ var/DBQuery/insert_query = dbcon.NewQuery("INSERT INTO [format_table_name("poll_textreply")] (id ,datetime ,pollid ,ckey ,ip ,replytext ,adminrank) VALUES (null, Now(), [pollid], '[usr.ckey]', '[usr.client.address]', '[replytext]', '[adminrank]')") insert_query.Execute() - to_chat(usr, "\blue Feedback logging successful.") + to_chat(usr, "Feedback logging successful.") usr << browse(null,"window=playerpoll") @@ -441,7 +441,7 @@ break if(!validpoll) - to_chat(usr, "\red Poll is not valid.") + to_chat(usr, "Poll is not valid.") return var/DBQuery/select_query2 = dbcon.NewQuery("SELECT id FROM [format_table_name("poll_option")] WHERE id = [optionid] AND pollid = [pollid]") @@ -454,7 +454,7 @@ break if(!validoption) - to_chat(usr, "\red Poll option is not valid.") + to_chat(usr, "Poll option is not valid.") return var/alreadyvoted = 0 @@ -467,7 +467,7 @@ break if(alreadyvoted) - to_chat(usr, "\red You already voted in this poll.") + to_chat(usr, "You already voted in this poll.") return var/adminrank = "Player" @@ -478,5 +478,5 @@ var/DBQuery/insert_query = dbcon.NewQuery("INSERT INTO [format_table_name("poll_vote")] (id ,datetime ,pollid ,optionid ,ckey ,ip ,adminrank, rating) VALUES (null, Now(), [pollid], [optionid], '[usr.ckey]', '[usr.client.address]', '[adminrank]', [(isnull(rating)) ? "null" : rating])") insert_query.Execute() - to_chat(usr, "\blue Vote successful.") + to_chat(usr, "Vote successful.") usr << browse(null,"window=playerpoll") \ No newline at end of file diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index a5f04461551..f24e0b9f24b 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -264,7 +264,7 @@ // check for exploits for(var/bad in paper_blacklist) if(findtext(t,bad)) - to_chat(usr, "\blue You think to yourself, \"Hm.. this is only paper...\"") + to_chat(usr, "You think to yourself, \"Hm.. this is only paper...\"") log_admin("PAPER: [key_name(usr)] tried to use forbidden word in [src]: [bad].") message_admins("PAPER: [key_name_admin(usr)] tried to use forbidden word in [src]: [bad].") return diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 1710ae1d485..da20ed65dde 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -94,7 +94,7 @@ qdel(src) else - to_chat(user, "\red You must hold \the [P] steady to burn \the [src].") + to_chat(user, "You must hold \the [P] steady to burn \the [src].") /obj/item/weapon/paper_bundle/examine(mob/user) if(..(user, 1)) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index c24dec2413f..4a51070629e 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -70,7 +70,7 @@ qdel(src) else - to_chat(user, "\red You must hold \the [P] steady to burn \the [src].") + to_chat(user, "You must hold \the [P] steady to burn \the [src].") /obj/item/weapon/photo/examine(mob/user) if(..(user, 1) || isobserver(user)) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 0bbc04c08d8..e46e0797b1e 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -125,7 +125,7 @@ By design, d1 is the smallest direction and d2 is the highest return */ ///// Z-Level Stuff /* if(breaker_box) - to_chat(user, "\red This cable is connected to nearby breaker box. Use breaker box to interact with it.") + to_chat(user, "This cable is connected to nearby breaker box. Use breaker box to interact with it.") return */ if(shock(user, 50)) diff --git a/code/modules/power/cable_heavyduty.dm b/code/modules/power/cable_heavyduty.dm index 87a25032eb7..e0992d1b79e 100644 --- a/code/modules/power/cable_heavyduty.dm +++ b/code/modules/power/cable_heavyduty.dm @@ -16,10 +16,10 @@ return if(istype(W, /obj/item/weapon/wirecutters)) - to_chat(usr, "\blue These cables are too tough to be cut with those [W.name].") + to_chat(usr, "These cables are too tough to be cut with those [W.name].") return else if(istype(W, /obj/item/stack/cable_coil)) - to_chat(usr, "\blue You will need heavier cables to connect to these.") + to_chat(usr, "You will need heavier cables to connect to these.") return else ..() diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index f88dce25b51..164b9cb26db 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -39,7 +39,7 @@ else to_chat(user, "This power cell has an exciting chrome finish, as it is an uber-capacity cell type! It has a power rating of [maxcharge]!\nThe charge meter reads [round(src.percent() )]%.") if(crit_fail) - to_chat(user, "\red This power cell seems to be faulty.") + to_chat(user, "This power cell seems to be faulty.") /obj/item/weapon/stock_parts/cell/attack_self(mob/user as mob) src.add_fingerprint(user) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 2b2b3e20183..e6b37b9cfc9 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -405,7 +405,7 @@ // Aliens smash the bulb but do not get electrocuted./N /obj/machinery/light/attack_alien(mob/living/carbon/alien/humanoid/user)//So larva don't go breaking light bulbs. if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) - to_chat(user, "\green That object is useless to you.") + to_chat(user, "That object is useless to you.") return else if(status == LIGHT_OK||status == LIGHT_BURNED) user.do_attack_animation(src) @@ -416,7 +416,7 @@ /obj/machinery/light/attack_animal(mob/living/simple_animal/M) if(M.melee_damage_upper == 0) return if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) - to_chat(M, "\red That object is useless to you.") + to_chat(M, "That object is useless to you.") return else if(status == LIGHT_OK||status == LIGHT_BURNED) M.do_attack_animation(src) @@ -701,7 +701,7 @@ /obj/item/weapon/light/proc/shatter() if(status == LIGHT_OK || status == LIGHT_BURNED) - src.visible_message("\red [name] shatters.","\red You hear a small glass object shatter.") + src.visible_message("[name] shatters.","You hear a small glass object shatter.") status = LIGHT_BROKEN force = 5 sharp = 1 diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 5ec69cf0233..543112bfc59 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -44,7 +44,7 @@ var/global/list/rad_collectors = list() investigate_log("turned [active?"on":"off"] by [user.key]. [P?"Fuel: [round(P.air_contents.toxins/0.29)]%":"It is empty"].","singulo") return else - to_chat(user, "\red The controls are locked!") + to_chat(user, "The controls are locked!") return ..() @@ -57,10 +57,10 @@ var/global/list/rad_collectors = list() atmosanalyzer_scan(P.air_contents, user) else if(istype(W, /obj/item/weapon/tank/plasma)) if(!src.anchored) - to_chat(user, "\red The [src] needs to be secured to the floor first.") + to_chat(user, "The [src] needs to be secured to the floor first.") return 1 if(src.P) - to_chat(user, "\red There's already a plasma tank loaded.") + to_chat(user, "There's already a plasma tank loaded.") return 1 user.drop_item() src.P = W @@ -72,7 +72,7 @@ var/global/list/rad_collectors = list() return 1 else if(istype(W, /obj/item/weapon/wrench)) if(P) - to_chat(user, "\blue Remove the plasma tank first.") + to_chat(user, "Remove the plasma tank first.") return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) src.anchored = !src.anchored @@ -90,9 +90,9 @@ var/global/list/rad_collectors = list() to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]") else src.locked = 0 //just in case it somehow gets locked - to_chat(user, "\red The controls can only be locked when the [src] is active") + to_chat(user, "The controls can only be locked when the [src] is active") else - to_chat(user, "\red Access denied!") + to_chat(user, "Access denied!") return 1 else ..() diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 9d42e8d7613..f44dbb30466 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -154,9 +154,9 @@ investigate_log("turned on by [key_name(usr)]","singulo") update_icon() else - to_chat(user, "\red The controls are locked!") + to_chat(user, "The controls are locked!") else - to_chat(user, "\red The [src] needs to be firmly secured to the floor first.") + to_chat(user, "The [src] needs to be firmly secured to the floor first.") return 1 @@ -249,7 +249,7 @@ "You hear a ratchet") src.anchored = 0 if(2) - to_chat(user, "\red The [src.name] needs to be unwelded from the floor.") + to_chat(user, "The [src.name] needs to be unwelded from the floor.") return if(istype(W, /obj/item/weapon/weldingtool)) @@ -259,7 +259,7 @@ return switch(state) if(0) - to_chat(user, "\red The [src.name] needs to be wrenched to the floor.") + to_chat(user, "The [src.name] needs to be wrenched to the floor.") if(1) if(WT.remove_fuel(0,user)) playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) @@ -272,7 +272,7 @@ to_chat(user, "You weld the [src] to the floor.") connect_to_network() else - to_chat(user, "\red You need more welding fuel to complete this task.") + to_chat(user, "You need more welding fuel to complete this task.") if(2) if(WT.remove_fuel(0,user)) playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) @@ -285,12 +285,12 @@ to_chat(user, "You cut the [src] free from the floor.") disconnect_from_network() else - to_chat(user, "\red You need more welding fuel to complete this task.") + to_chat(user, "You need more welding fuel to complete this task.") return if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) if(emagged) - to_chat(user, "\red The lock seems to be broken") + to_chat(user, "The lock seems to be broken") return if(src.allowed(user)) if(active) @@ -298,9 +298,9 @@ to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]") else src.locked = 0 //just in case it somehow gets locked - to_chat(user, "\red The controls can only be locked when the [src] is online") + to_chat(user, "The controls can only be locked when the [src] is online") else - to_chat(user, "\red Access denied.") + to_chat(user, "Access denied.") return if(default_deconstruction_screwdriver(user, "emitter_open", "emitter", W)) @@ -319,4 +319,4 @@ locked = 0 emagged = 1 if(user) - user.visible_message("[user.name] emags the [src.name].","\red You short out the lock.") + user.visible_message("[user.name] emags the [src.name].","You short out the lock.") diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 02597b46840..08f0901f291 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -438,7 +438,7 @@ if(is_station_level(src.z)) if(prob(1)) //explosion 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) + M.show_message("The [src.name] is making strange noises!", 3, "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() smoke.set_up(3, 0, src.loc) diff --git a/code/modules/power/supermatter/sm_shard.dm b/code/modules/power/supermatter/sm_shard.dm index 690aeac6fce..2ffd5b040ec 100644 --- a/code/modules/power/supermatter/sm_shard.dm +++ b/code/modules/power/supermatter/sm_shard.dm @@ -66,13 +66,13 @@ /obj/item/weapon/shard/supermatter/attack_hand(var/mob/user) if(!istype(user,/mob/living/carbon/human/nucleation)) - to_chat(user, pick( "\red You think twice before touching that without protection.",) - "\red You don't want to touch that without some protection.", - "\red You probably should get something else to pick that up.", - "\red You aren't sure that's a good idea.", - "\red You aren't in the mood to get vaporized today.", - "\red You really don't feel like frying your hand off.", - "\red You assume that's a bad idea." ) + to_chat(user, pick( "You think twice before touching that without protection.",) + "You don't want to touch that without some protection.", + "You probably should get something else to pick that up.", + "You aren't sure that's a good idea.", + "You aren't in the mood to get vaporized today.", + "You really don't feel like frying your hand off.", + "You assume that's a bad idea." ) return ..() diff --git a/code/modules/power/switch.dm b/code/modules/power/switch.dm index cba253be5f0..34e867005e1 100644 --- a/code/modules/power/switch.dm +++ b/code/modules/power/switch.dm @@ -29,25 +29,25 @@ to_chat(user, "The switch is in the off position") /obj/structure/powerswitch/attack_ai(mob/user) - to_chat(user, "\red You're an AI. This is a manual switch. It's not going to work.") + to_chat(user, "You're an AI. This is a manual switch. It's not going to work.") return /obj/structure/powerswitch/attack_hand(mob/user) if(busy) - to_chat(user, "\red This switch is already being toggled.") + to_chat(user, "This switch is already being toggled.") return ..() busy = 1 for(var/mob/O in viewers(user)) - O.show_message(text("\red [user] starts pulling the [src]."), 1) + O.show_message(text("[user] starts pulling the [src]."), 1) if(do_after(user, 50, target = src)) set_state(!on) for(var/mob/O in viewers(user)) - O.show_message(text("\red [user] flips the [src] into the [on ? "on": "off"] position."), 1) + O.show_message(text("[user] flips the [src] into the [on ? "on": "off"] position."), 1) busy = 0 /obj/structure/powerswitch/proc/set_state(var/state) diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 73109f0f7e5..1ec07bc94e8 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -73,7 +73,7 @@ if(human.species.name != "Shadow") to_chat(M, "Your flesh rapidly mutates!") to_chat(M, "You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.") - to_chat(M, "Your body reacts violently to light. \green However, it naturally heals in darkness.") + to_chat(M, "Your body reacts violently to light. However, it naturally heals in darkness.") to_chat(M, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.") human.set_species("Shadow") ..() diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 6bd1ee79cbf..0f2b766bb3c 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -68,22 +68,22 @@ return if(mode == SYRINGE_BROKEN) - to_chat(user, "\red This syringe is broken!") + to_chat(user, "This syringe is broken!") return switch(mode) if(SYRINGE_DRAW) if(reagents.total_volume >= reagents.maximum_volume) - to_chat(user, "\red The syringe is full.") + to_chat(user, "The syringe is full.") return if(ismob(target))//Blood! if(istype(target, /mob/living/carbon/slime)) - to_chat(user, "\red You are unable to locate any blood.") + to_chat(user, "You are unable to locate any blood.") return if(reagents.has_reagent("blood")) - to_chat(user, "\red There is already a blood sample in this syringe") + to_chat(user, "There is already a blood sample in this syringe") return if(istype(target, /mob/living/carbon))//maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea. var/mob/living/carbon/T = target @@ -91,7 +91,7 @@ to_chat(usr, "You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum)") return if(NOCLONE in T.mutations) //target done been et, no more blood in him - to_chat(user, "\red You are unable to locate any blood.") + to_chat(user, "You are unable to locate any blood.") return @@ -130,45 +130,45 @@ on_reagent_change() reagents.handle_reactions() - to_chat(user, "\blue You take a blood sample from [target]") + to_chat(user, "You take a blood sample from [target]") for(var/mob/O in viewers(4, user)) - O.show_message("\red [user] takes a blood sample from [target].", 1) + O.show_message("[user] takes a blood sample from [target].", 1) else user.visible_message("[user] takes a sample from [target].", "You take a sample from [target].") else //if not mob if(!target.reagents.total_volume) - to_chat(user, "\red [target] is empty.") + to_chat(user, "[target] is empty.") return if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_extract)) - to_chat(user, "\red You cannot directly remove reagents from this object.") + to_chat(user, "You cannot directly remove reagents from this object.") return var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares? - to_chat(user, "\blue You fill the syringe with [trans] units of the solution.") + to_chat(user, "You fill the syringe with [trans] units of the solution.") if(reagents.total_volume >= reagents.maximum_volume) mode=!mode update_icon() if(SYRINGE_INJECT) if(!reagents.total_volume) - to_chat(user, "\red The Syringe is empty.") + to_chat(user, "The Syringe is empty.") return if(istype(target, /obj/item/weapon/implantcase/chem)) return if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes)) - to_chat(user, "\red You cannot directly fill this object.") + to_chat(user, "You cannot directly fill this object.") return if(istype(target, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/C = target if(istype(C.loc, /obj/item/weapon/storage/fancy/cigarettes)) - to_chat(user, "\red You cannot inject a cigarette while it's still in the pack.") + to_chat(user, "You cannot inject a cigarette while it's still in the pack.") return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, "\red [target] is full.") + to_chat(user, "[target] is full.") return var/mob/living/carbon/human/H = target @@ -188,7 +188,7 @@ if(!do_mob(user, target, 30)) return for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] injects [] with the syringe!", user, target), 1) + O.show_message(text("[] injects [] with the syringe!", user, target), 1) if(istype(target,/mob/living)) var/mob/living/M = target @@ -220,7 +220,7 @@ C.inject_blood(src, 5) else trans = reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "\blue You inject [trans] units of the solution. The syringe now contains [reagents.total_volume] units.") + to_chat(user, "You inject [trans] units of the solution. The syringe now contains [reagents.total_volume] units.") if(istype(target, /obj/item/weapon/reagent_containers/food/pill/patch)) var/obj/item/weapon/reagent_containers/food/pill/patch/P = target if(P.instant_application) @@ -300,7 +300,7 @@ if(SYRINGE_DRAW) if(reagents.total_volume >= reagents.maximum_volume) - to_chat(user, "\red The syringe is full.") + to_chat(user, "The syringe is full.") return if(ismob(target)) @@ -309,31 +309,31 @@ return else //if not mob if(!target.reagents.total_volume) - to_chat(user, "\red [target] is empty.") + to_chat(user, "[target] is empty.") return if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers)) - to_chat(user, "\red You cannot directly remove reagents from this object.") + to_chat(user, "You cannot directly remove reagents from this object.") return var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares? - to_chat(user, "\blue You fill the syringe with [trans] units of the solution.") + to_chat(user, "You fill the syringe with [trans] units of the solution.") if(reagents.total_volume >= reagents.maximum_volume) mode=!mode update_icon() if(SYRINGE_INJECT) if(!reagents.total_volume) - to_chat(user, "\red The Syringe is empty.") + to_chat(user, "The Syringe is empty.") return if(istype(target, /obj/item/weapon/implantcase/chem)) return if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food)) - to_chat(user, "\red You cannot directly fill this object.") + to_chat(user, "You cannot directly fill this object.") return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, "\red [target] is full.") + to_chat(user, "[target] is full.") return if(ismob(target) && target != user) @@ -341,13 +341,13 @@ O.show_message(text("[] is trying to inject [] with a giant syringe!", user, target), 1) if(!do_mob(user, target, 300)) return for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] injects [] with a giant syringe!", user, target), 1) + O.show_message(text("[] injects [] with a giant syringe!", user, target), 1) reagents.reaction(target, INGEST) if(ismob(target) && target == user) reagents.reaction(target, INGEST) spawn(5) var/trans = reagents.trans_to(target, amount_per_transfer_from_this) - to_chat(user, "\blue You inject [trans] units of the solution. The syringe now contains [reagents.total_volume] units.") + to_chat(user, "You inject [trans] units of the solution. The syringe now contains [reagents.total_volume] units.") if(reagents.total_volume >= reagents.maximum_volume && mode==SYRINGE_INJECT) mode = SYRINGE_DRAW update_icon() diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index b9cb76b31b0..c8da1c296e4 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -130,7 +130,7 @@ if(do_after(usr, 20, target = GM)) GM.forceMove(src) for(var/mob/C in viewers(src)) - C.show_message("\red [GM.name] has been placed in the [src] by [user].", 3) + C.show_message("[GM.name] has been placed in the [src] by [user].", 3) qdel(G) usr.create_attack_log("Has placed [key_name(GM)] in disposals.") GM.create_attack_log("Has been placed in disposals by [key_name(user)]") @@ -230,7 +230,7 @@ return if(user && user.loc == src) - to_chat(usr, "\red You cannot reach the controls from inside.") + to_chat(usr, "You cannot reach the controls from inside.") return // Clumsy folks can only flush it. @@ -271,11 +271,11 @@ /obj/machinery/disposal/Topic(href, href_list) if(usr.loc == src) - to_chat(usr, "\red You cannot reach the controls from inside.") + to_chat(usr, "You cannot reach the controls from inside.") return if(mode==-1 && !href_list["eject"]) // only allow ejecting if mode is -1 - to_chat(usr, "\red The disposal units power is disabled.") + to_chat(usr, "The disposal units power is disabled.") return if(..()) @@ -1026,7 +1026,7 @@ sortType = O.currTag playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) var/tag = uppertext(TAGGERLOCATIONS[O.currTag]) - to_chat(user, "\blue Changed filter to [tag]") + to_chat(user, "Changed filter to [tag]") updatedesc() diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 23dc9d8ea36..52fa9596d92 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -113,7 +113,7 @@ var/global/list/obj/machinery/message_server/message_servers = list() Console.set_light(2) /obj/machinery/message_server/attack_hand(user as mob) -// to_chat(user, "\blue There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentComm delays.") +// to_chat(user, "There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentComm delays.") to_chat(user, "You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"]") active = !active update_icon() diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 5b842c90e08..0fa680faf6a 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -208,7 +208,7 @@ add_fingerprint(usr) usr.set_machine(src) if(!src.allowed(usr) && !emagged) - to_chat(usr, "\red You do not have the required access level") + to_chat(usr, "You do not have the required access level") return if(href_list["main"]) @@ -338,7 +338,7 @@ if(!emagged) playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) emagged = 1 - to_chat(user, "\blue You you disable the security protocols") + to_chat(user, "You you disable the security protocols") src.updateUsrDialog() /obj/machinery/r_n_d/server/core diff --git a/code/modules/research/xenoarchaeology/artifact/artifact.dm b/code/modules/research/xenoarchaeology/artifact/artifact.dm index 57759308aee..3cb23ffd965 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact.dm @@ -79,26 +79,26 @@ if(istype(W, /obj/item/device/measuring_tape)) var/obj/item/device/measuring_tape/P = W - user.visible_message("\blue[user] extends [P] towards [src].","\blue You extend [P] towards [src].") + user.visible_message("[user] extends [P] towards [src].","You extend [P] towards [src].") if(do_after(user,40, target = src)) - to_chat(user, "\blue [bicon(P)] [src] has been excavated to a depth of [2*src.excavation_level]cm.") + to_chat(user, "[bicon(P)] [src] has been excavated to a depth of [2*src.excavation_level]cm.") return if(istype(W, /obj/item/weapon/pickaxe)) var/obj/item/weapon/pickaxe/P = W - to_chat(user, "\red You start [P.drill_verb] [src].") + to_chat(user, "You start [P.drill_verb] [src].") if(!do_after(user,P.digspeed, target = src)) return - to_chat(user, "\blue You finish [P.drill_verb] [src].") + to_chat(user, "You finish [P.drill_verb] [src].") excavation_level += P.excavation_amount if(excavation_level > 100) //failure user.visible_message("[src] suddenly crumbles away.",\ - "\red [src] has disintegrated under your onslaught, any secrets it was holding are long gone.") + "[src] has disintegrated under your onslaught, any secrets it was holding are long gone.") qdel(src) return @@ -114,5 +114,5 @@ src.visible_message("[src] suddenly crumbles away.") else user.visible_message("[src] suddenly crumbles away.",\ - "\blue [src] has been whittled away under your careful excavation, but there was nothing of interest inside.") + "[src] has been whittled away under your careful excavation, but there was nothing of interest inside.") qdel(src) diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm b/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm index 95489be4775..410f05a925c 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm @@ -50,17 +50,17 @@ if(!previous_power_state) previous_power_state = 1 icon_state = "cellold1" - src.visible_message("\blue [bicon(src)] [src] suddenly comes to life!") + src.visible_message("[bicon(src)] [src] suddenly comes to life!") //slowly grow a mob if(prob(5)) - src.visible_message("\blue [bicon(src)] [src] [pick("gloops","glugs","whirrs","whooshes","hisses","purrs","hums","gushes")].") + src.visible_message("[bicon(src)] [src] [pick("gloops","glugs","whirrs","whooshes","hisses","purrs","hums","gushes")].") //if we've finished growing... if(time_spent_spawning >= time_per_spawn) time_spent_spawning = 0 use_power = 1 - src.visible_message("\blue [bicon(src)] [src] pings!") + src.visible_message("[bicon(src)] [src] pings!") icon_state = "cellold1" desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow." if(spawn_type) @@ -81,7 +81,7 @@ if(previous_power_state) previous_power_state = 0 icon_state = "cellold0" - src.visible_message("\blue [bicon(src)] [src] suddenly shuts down.") + src.visible_message("[bicon(src)] [src] suddenly shuts down.") //cloned mob slowly breaks down time_spent_spawning = max(time_spent_spawning + last_process - world.time, 0) diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm b/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm index 4073b0bd74c..96b9f2e2fb4 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm @@ -14,11 +14,11 @@ if(active) active = 0 icon_state = "gigadrill" - to_chat(user, "\blue You press a button and [src] slowly spins down.") + to_chat(user, "You press a button and [src] slowly spins down.") else active = 1 icon_state = "gigadrill_mov" - to_chat(user, "\blue You press a button and [src] shudders to life.") + to_chat(user, "You press a button and [src] shudders to life.") /obj/machinery/giga_drill/Bump(atom/A) if(active && !drilling_turf) diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm index 5ca29dc6d43..d87c71dbc72 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm @@ -78,19 +78,19 @@ viables.Remove(type) construction[button_desc] = type - fail_message = "\blue [bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \ + fail_message = "[bicon(src)] a [pick("loud","soft","sinister","eery","triumphant","depressing","cheerful","angry")] \ [pick("horn","beep","bing","bleep","blat","honk","hrumph","ding")] sounds and a \ [pick("yellow","purple","green","blue","red","orange","white")] \ [pick("light","dial","meter","window","protrusion","knob","antenna","swirly thing")] \ [pick("swirls","flashes","whirrs","goes schwing","blinks","flickers","strobes","lights up")] on the \ [pick("front","side","top","bottom","rear","inside")] of [src]. A [pick("slot","funnel","chute","tube")] opens up in the \ - [pick("front","side","top","bottom","rear","inside")]." + [pick("front","side","top","bottom","rear","inside")]." /obj/machinery/replicator/process() if(spawning_types.len && powered()) spawn_progress_time += world.time - last_process_time if(spawn_progress_time > max_spawn_time) - src.visible_message("\blue [bicon(src)] [src] pings!") + src.visible_message("[bicon(src)] [src] pings!") var/obj/source_material = pop(stored_materials) var/spawn_type = pop(spawning_types) @@ -113,7 +113,7 @@ icon_state = "borgcharger0(old)" else if(prob(5)) - src.visible_message("\blue [bicon(src)] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") + src.visible_message("[bicon(src)] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") last_process_time = world.time @@ -132,7 +132,7 @@ user.drop_item() W.loc = src stored_materials.Add(W) - src.visible_message("\blue [user] inserts [W] into [src].") + src.visible_message("[user] inserts [W] into [src].") /obj/machinery/replicator/Topic(href, href_list) @@ -141,9 +141,9 @@ if(index > 0 && index <= construction.len) if(stored_materials.len > spawning_types.len) if(spawning_types.len) - src.visible_message("\blue [bicon(src)] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") + src.visible_message("[bicon(src)] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") else - src.visible_message("\blue [bicon(src)] [src]'s front compartment slides shut.") + src.visible_message("[bicon(src)] [src]'s front compartment slides shut.") spawning_types.Add(construction[construction[index]]) spawn_progress_time = 0 diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm index 7a4b36707f9..894f54dc3bc 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm @@ -221,7 +221,7 @@ var/list/valid_secondary_effect_types = list(\ /obj/machinery/artifact/attack_hand(var/mob/user as mob) if(get_dist(user, src) > 1) - to_chat(user, "\red You can't reach [src] from here.") + to_chat(user, "You can't reach [src] from here.") return if(ishuman(user) && user:gloves) to_chat(user, "You touch [src] with your gloved hands, [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")].") diff --git a/code/modules/research/xenoarchaeology/artifact/effect.dm b/code/modules/research/xenoarchaeology/artifact/effect.dm index 727c016849b..981cea4156d 100644 --- a/code/modules/research/xenoarchaeology/artifact/effect.dm +++ b/code/modules/research/xenoarchaeology/artifact/effect.dm @@ -64,7 +64,7 @@ var/atom/toplevelholder = holder while(!istype(toplevelholder.loc, /turf)) toplevelholder = toplevelholder.loc - toplevelholder.visible_message("\red [bicon(toplevelholder)] [toplevelholder] [display_msg]") + toplevelholder.visible_message("[bicon(toplevelholder)] [toplevelholder] [display_msg]") /datum/artifact_effect/proc/DoEffectTouch(var/mob/user) /datum/artifact_effect/proc/DoEffectAura(var/atom/holder) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm index 89c74776f55..16862948644 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_affect_cold.dm @@ -12,7 +12,7 @@ /datum/artifact_effect/cold/DoEffectTouch(var/mob/user) if(holder) - to_chat(user, "\blue A chill passes up your spine!") + to_chat(user, "A chill passes up your spine!") var/datum/gas_mixture/env = holder.loc.return_air() if(env) env.temperature = max(env.temperature - rand(5,50), 0) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm index d67c33d1e4e..8d6735e3a31 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_cellcharge.dm @@ -10,7 +10,7 @@ var/mob/living/silicon/robot/R = user for(var/obj/item/weapon/stock_parts/cell/D in R.contents) D.charge += rand() * 100 + 50 - to_chat(R, "\blue SYSTEM ALERT: Large energy boost detected!") + to_chat(R, "SYSTEM ALERT: Large energy boost detected!") return 1 /datum/artifact_effect/cellcharge/DoEffectAura() @@ -24,7 +24,7 @@ for(var/mob/living/silicon/robot/M in mob_list) for(var/obj/item/weapon/stock_parts/cell/D in M.contents) D.charge += 25 - to_chat(M, "\blue SYSTEM ALERT: Energy boost detected!") + to_chat(M, "SYSTEM ALERT: Energy boost detected!") return 1 /datum/artifact_effect/cellcharge/DoEffectPulse() @@ -38,5 +38,5 @@ for(var/mob/living/silicon/robot/M in mob_list) for(var/obj/item/weapon/stock_parts/cell/D in M.contents) D.charge += rand() * 100 - to_chat(M, "\blue SYSTEM ALERT: Energy boost detected!") + to_chat(M, "SYSTEM ALERT: Energy boost detected!") return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm index fcba3be4dec..44be592e7fa 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_celldrain.dm @@ -10,7 +10,7 @@ var/mob/living/silicon/robot/R = user for(var/obj/item/weapon/stock_parts/cell/D in R.contents) D.charge = max(D.charge - rand() * 100, 0) - to_chat(R, "\blue SYSTEM ALERT: Energy drain detected!") + to_chat(R, "SYSTEM ALERT: Energy drain detected!") return 1 return 1 @@ -26,7 +26,7 @@ for(var/mob/living/silicon/robot/M in mob_list) for(var/obj/item/weapon/stock_parts/cell/D in M.contents) D.charge = max(D.charge - 50,0) - to_chat(M, "\red SYSTEM ALERT: Energy drain detected!") + to_chat(M, "SYSTEM ALERT: Energy drain detected!") return 1 /datum/artifact_effect/celldrain/DoEffectPulse() @@ -40,5 +40,5 @@ for(var/mob/living/silicon/robot/M in mob_list) for(var/obj/item/weapon/stock_parts/cell/D in M.contents) D.charge = max(D.charge - rand() * 150,0) - to_chat(M, "\red SYSTEM ALERT: Energy drain detected!") + to_chat(M, "SYSTEM ALERT: Energy drain detected!") return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm index d005fb9e64c..f31788602ad 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_dnaswitch.dm @@ -15,13 +15,13 @@ /datum/artifact_effect/dnaswitch/DoEffectTouch(var/mob/toucher) var/weakness = GetAnomalySusceptibility(toucher) if(ishuman(toucher) && prob(weakness * 100)) - to_chat(toucher, pick("\green You feel a little different.", - "\green You feel very strange.", - "\green Your stomach churns.", - "\green Your skin feels loose.", - "\green You feel a stabbing pain in your head.", - "\green You feel a tingling sensation in your chest.", - "\green Your entire body vibrates.")) + to_chat(toucher, pick("You feel a little different.", + "You feel very strange.", + "Your stomach churns.", + "Your skin feels loose.", + "You feel a stabbing pain in your head.", + "You feel a tingling sensation in your chest.", + "Your entire body vibrates.")) if(prob(75)) scramble(1, toucher, weakness * severity) else @@ -35,13 +35,13 @@ var/weakness = GetAnomalySusceptibility(H) if(prob(weakness * 100)) if(prob(30)) - to_chat(H, pick("\green You feel a little different.", - "\green You feel very strange.", - "\green Your stomach churns.", - "\green Your skin feels loose.", - "\green You feel a stabbing pain in your head.", - "\green You feel a tingling sensation in your chest.", - "\green Your entire body vibrates.")) + to_chat(H, pick("You feel a little different.", + "You feel very strange.", + "Your stomach churns.", + "Your skin feels loose.", + "You feel a stabbing pain in your head.", + "You feel a tingling sensation in your chest.", + "Your entire body vibrates.")) if(prob(50)) scramble(1, H, weakness * severity) else @@ -54,13 +54,13 @@ var/weakness = GetAnomalySusceptibility(H) if(prob(weakness * 100)) if(prob(75)) - to_chat(H, pick("\green You feel a little different.", - "\green You feel very strange.", - "\green Your stomach churns.", - "\green Your skin feels loose.", - "\green You feel a stabbing pain in your head.", - "\green You feel a tingling sensation in your chest.", - "\green Your entire body vibrates.")) + to_chat(H, pick("You feel a little different.", + "You feel very strange.", + "Your stomach churns.", + "Your skin feels loose.", + "You feel a stabbing pain in your head.", + "You feel a tingling sensation in your chest.", + "Your entire body vibrates.")) if(prob(25)) if(prob(75)) scramble(1, H, weakness * severity) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm index cde5632eaa5..3f823315078 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm @@ -9,7 +9,7 @@ var/weakness = GetAnomalySusceptibility(toucher) if(prob(weakness * 100)) var/mob/living/carbon/C = toucher - to_chat(C, "\blue You feel a soothing energy invigorate you.") + to_chat(C, "You feel a soothing energy invigorate you.") if(ishuman(toucher)) var/mob/living/carbon/human/H = toucher @@ -42,7 +42,7 @@ var/weakness = GetAnomalySusceptibility(C) if(prob(weakness * 100)) if(prob(10)) - to_chat(C, "\blue You feel a soothing energy radiating from something nearby.") + to_chat(C, "You feel a soothing energy radiating from something nearby.") C.adjustBruteLoss(-1 * weakness) C.adjustFireLoss(-1 * weakness) C.adjustToxLoss(-1 * weakness) @@ -57,7 +57,7 @@ for(var/mob/living/carbon/C in range(src.effectrange,T)) var/weakness = GetAnomalySusceptibility(C) if(prob(weakness * 100)) - to_chat(C, "\blue A wave of energy invigorates you.") + to_chat(C, "A wave of energy invigorates you.") C.adjustBruteLoss(-5 * weakness) C.adjustFireLoss(-5 * weakness) C.adjustToxLoss(-5 * weakness) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm index 86828f7ef39..fb1f9645735 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heat.dm @@ -15,7 +15,7 @@ /datum/artifact_effect/heat/DoEffectTouch(var/mob/user) if(holder) - to_chat(user, "\red You feel a wave of heat travel up your spine!") + to_chat(user, "You feel a wave of heat travel up your spine!") var/datum/gas_mixture/env = holder.loc.return_air() if(env) env.temperature += rand(5,50) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm index 399b7252d20..f9e3803ff9f 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_hurt.dm @@ -8,7 +8,7 @@ var/weakness = GetAnomalySusceptibility(toucher) if(iscarbon(toucher) && prob(weakness * 100)) var/mob/living/carbon/C = toucher - to_chat(C, "\red A painful discharge of energy strikes you!") + to_chat(C, "A painful discharge of energy strikes you!") C.adjustOxyLoss(rand(5,25) * weakness) C.adjustToxLoss(rand(5,25) * weakness) C.adjustBruteLoss(rand(5,25) * weakness) @@ -26,7 +26,7 @@ var/weakness = GetAnomalySusceptibility(C) if(prob(weakness * 100)) if(prob(10)) - to_chat(C, "\red You feel a painful force radiating from something nearby.") + to_chat(C, "You feel a painful force radiating from something nearby.") C.adjustBruteLoss(1 * weakness) C.adjustFireLoss(1 * weakness) C.adjustToxLoss(1 * weakness) @@ -40,7 +40,7 @@ for(var/mob/living/carbon/C in range(effectrange, T)) var/weakness = GetAnomalySusceptibility(C) if(prob(weakness * 100)) - to_chat(C, "\red A wave of painful energy strikes you!") + to_chat(C, "A wave of painful energy strikes you!") C.adjustBruteLoss(3 * weakness) C.adjustFireLoss(3 * weakness) C.adjustToxLoss(3 * weakness) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm index 30316fc3342..191c0beb3fe 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_roboheal.dm @@ -10,7 +10,7 @@ if(user) if(istype(user, /mob/living/silicon/robot)) var/mob/living/silicon/robot/R = user - to_chat(R, "\blue Your systems report damaged components mending by themselves!") + to_chat(R, "Your systems report damaged components mending by themselves!") R.adjustBruteLoss(rand(-10,-30)) R.adjustFireLoss(rand(-10,-30)) return 1 @@ -20,7 +20,7 @@ var/turf/T = get_turf(holder) for(var/mob/living/silicon/robot/M in range(src.effectrange,T)) if(prob(10)) - to_chat(M, "\blue SYSTEM ALERT: Beneficial energy field detected!") + to_chat(M, "SYSTEM ALERT: Beneficial energy field detected!") M.adjustBruteLoss(-1) M.adjustFireLoss(-1) M.updatehealth() @@ -30,7 +30,7 @@ if(holder) var/turf/T = get_turf(holder) for(var/mob/living/silicon/robot/M in range(src.effectrange,T)) - to_chat(M, "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!") + to_chat(M, "SYSTEM ALERT: Structural damage has been repaired by energy pulse!") M.adjustBruteLoss(-10) M.adjustFireLoss(-10) M.updatehealth() diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm index da22a45b32b..43f49a6ee36 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_robohurt.dm @@ -10,7 +10,7 @@ if(user) if(istype(user, /mob/living/silicon/robot)) var/mob/living/silicon/robot/R = user - to_chat(R, "\red Your systems report severe damage has been inflicted!") + to_chat(R, "Your systems report severe damage has been inflicted!") R.adjustBruteLoss(rand(10,50)) R.adjustFireLoss(rand(10,50)) return 1 @@ -20,7 +20,7 @@ var/turf/T = get_turf(holder) for(var/mob/living/silicon/robot/M in range(src.effectrange,T)) if(prob(10)) - to_chat(M, "\red SYSTEM ALERT: Harmful energy field detected!") + to_chat(M, "SYSTEM ALERT: Harmful energy field detected!") M.adjustBruteLoss(1) M.adjustFireLoss(1) M.updatehealth() @@ -30,7 +30,7 @@ if(holder) var/turf/T = get_turf(holder) for(var/mob/living/silicon/robot/M in range(src.effectrange,T)) - to_chat(M, "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!") + to_chat(M, "SYSTEM ALERT: Structural damage inflicted by energy pulse!") M.adjustBruteLoss(10) M.adjustFireLoss(10) M.updatehealth() diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm index 1f098ddfa6b..ec3c5ced009 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm @@ -12,12 +12,12 @@ var/weakness = GetAnomalySusceptibility(toucher) if(ishuman(toucher) && prob(weakness * 100)) var/mob/living/carbon/human/H = toucher - to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")) + to_chat(H, pick("You feel like taking a nap.","You feel a yawn coming on.","You feel a little tired.")) H.AdjustDrowsy(rand(5,25) * weakness, bound_lower = 0, bound_upper = 50 * weakness) H.AdjustEyeBlurry(rand(1,3) * weakness, bound_lower = 0, bound_upper = 50 * weakness) return 1 else if(isrobot(toucher)) - to_chat(toucher, "\red SYSTEM ALERT: CPU cycles slowing down.") + to_chat(toucher, "SYSTEM ALERT: CPU cycles slowing down.") return 1 /datum/artifact_effect/sleepy/DoEffectAura() @@ -27,11 +27,11 @@ var/weakness = GetAnomalySusceptibility(H) if(prob(weakness * 100)) if(prob(10)) - to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")) + to_chat(H, pick("You feel like taking a nap.","You feel a yawn coming on.","You feel a little tired.")) H.AdjustDrowsy(1 * weakness, bound_lower = 0, bound_upper = 25 * weakness) H.AdjustEyeBlurry(1 * weakness, bound_lower = 0, bound_upper = 25 * weakness) for(var/mob/living/silicon/robot/R in range(src.effectrange,holder)) - to_chat(R, "\red SYSTEM ALERT: CPU cycles slowing down.") + to_chat(R, "SYSTEM ALERT: CPU cycles slowing down.") return 1 /datum/artifact_effect/sleepy/DoEffectPulse() @@ -40,9 +40,9 @@ for(var/mob/living/carbon/human/H in range(src.effectrange, T)) var/weakness = GetAnomalySusceptibility(H) if(prob(weakness * 100)) - to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")) + to_chat(H, pick("You feel like taking a nap.","You feel a yawn coming on.","You feel a little tired.")) H.AdjustDrowsy(rand(5,15) * weakness, bound_lower = 0, bound_upper = 50 * weakness) H.AdjustEyeBlurry(rand(5,15) * weakness, bound_lower = 0, bound_upper = 50 * weakness) for(var/mob/living/silicon/robot/R in range(src.effectrange,holder)) - to_chat(R, "\red SYSTEM ALERT: CPU cycles slowing down.") + to_chat(R, "SYSTEM ALERT: CPU cycles slowing down.") return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm index 327e732fa12..bc2aa655e34 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_stun.dm @@ -11,7 +11,7 @@ var/mob/living/carbon/C = toucher var/susceptibility = GetAnomalySusceptibility(C) if(prob(susceptibility * 100)) - to_chat(C, "\red A powerful force overwhelms your consciousness.") + to_chat(C, "A powerful force overwhelms your consciousness.") C.Weaken(rand(1,10) * susceptibility) C.stuttering += 30 * susceptibility C.Stun(rand(1,10) * susceptibility) @@ -22,13 +22,13 @@ for(var/mob/living/carbon/C in range(src.effectrange,T)) var/susceptibility = GetAnomalySusceptibility(C) if(prob(10 * susceptibility)) - to_chat(C, "\red Your body goes numb for a moment.") + to_chat(C, "Your body goes numb for a moment.") C.Weaken(2) C.stuttering += 2 if(prob(10)) C.Stun(1) else if(prob(10)) - to_chat(C, "\red You feel numb.") + to_chat(C, "You feel numb.") /datum/artifact_effect/stun/DoEffectPulse() if(holder) @@ -36,7 +36,7 @@ for(var/mob/living/carbon/C in range(src.effectrange,T)) var/susceptibility = GetAnomalySusceptibility(C) if(prob(100 * susceptibility)) - to_chat(C, "\red A wave of energy overwhelms your senses!") + to_chat(C, "A wave of energy overwhelms your senses!") C.SetWeakened(4 * susceptibility) C.stuttering = 4 * susceptibility if(prob(10)) diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm index ea91ef76b35..b198bd02459 100644 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -15,7 +15,7 @@ obj/item/weapon/reagent_containers/glass/solution_tray/attackby(obj/item/weapon/ var/new_label = input("What should the new label be?","Label solution tray") if(new_label) name = "solution tray ([new_label])" - to_chat(user, "\blue You write on the label of the solution tray.") + to_chat(user, "You write on the label of the solution tray.") else ..(W, user) diff --git a/code/modules/research/xenoarchaeology/finds/finds_special.dm b/code/modules/research/xenoarchaeology/finds/finds_special.dm index 8ddcf27593b..4b1e82e28ce 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_special.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_special.dm @@ -99,7 +99,7 @@ if(charges >= 0.1) if(prob(5)) - src.visible_message("\red [bicon(src)] [src]'s eyes glow ruby red for a moment!") + src.visible_message("[bicon(src)] [src]'s eyes glow ruby red for a moment!") charges -= 0.1 //check on our shadow wights @@ -129,7 +129,7 @@ var/target = pick("chest","groin","head","l_arm","r_arm","r_leg","l_leg","l_hand","r_hand","l_foot","r_foot") M.apply_damage(rand(5, 10), BRUTE, target) - to_chat(M, "\red The skin on your [parse_zone(target)] feels like it's ripping apart, and a stream of blood flies out.") + to_chat(M, "The skin on your [parse_zone(target)] feels like it's ripping apart, and a stream of blood flies out.") var/obj/effect/decal/cleanable/blood/splatter/animated/B = new(M.loc) B.target_turf = pick(range(1, src)) B.blood_DNA = list() @@ -200,4 +200,4 @@ processing_objects.Remove(src) /obj/effect/shadow_wight/Bump(var/atom/obstacle) - to_chat(obstacle, "\red You feel a chill run down your spine!") + to_chat(obstacle, "You feel a chill run down your spine!") diff --git a/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm b/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm index 031e23c260d..178e0600ff7 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm @@ -57,7 +57,7 @@ var/list/options = list("[holder_atom] seems to be listening intently to [source]...",\ "[holder_atom] seems to be focussing on [source]...",\ "[holder_atom] seems to turn it's attention to [source]...") - holder_atom.loc.visible_message("\blue [bicon(holder_atom)] [pick(options)]") + holder_atom.loc.visible_message("[bicon(holder_atom)] [pick(options)]") if(prob(20)) spawn(2) @@ -121,5 +121,5 @@ listening|=M for(var/mob/M in listening) - to_chat(M, "[bicon(holder_atom)] [holder_atom] reverberates, \blue\"[msg]\"") + to_chat(M, "[bicon(holder_atom)] [holder_atom] reverberates, \"[msg]\"") last_talk_time = world.time diff --git a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm index 1da7e900767..2cacdc4801e 100644 --- a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm +++ b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm @@ -54,11 +54,11 @@ datum/genesequence W.loc = src.loc switch(scan_fossil(W)) if(1) - src.visible_message("\red [bicon(src)] [src] scans the fossil and rejects it.") + src.visible_message("[bicon(src)] [src] scans the fossil and rejects it.") if(2) - visible_message("\red [bicon(src)] [src] can not extract any more genetic data from new fossils.") + visible_message("[bicon(src)] [src] can not extract any more genetic data from new fossils.") if(4) - src.visible_message("\blue [bicon(src)] [user] inserts [W] into [src], the fossil is consumed as [src] extracts genetic data from it.") + src.visible_message("[bicon(src)] [user] inserts [W] into [src], the fossil is consumed as [src] extracts genetic data from it.") qdel(W) updateDialog() else if(istype(W, /obj/item/weapon/storage)) @@ -78,13 +78,13 @@ datum/genesequence S.remove_from_storage(F, src) //This will move the item to this item's contents qdel(F) updateDialog() - var/outmsg = "\blue You empty all the fossils from [S] into [src]." + var/outmsg = "You empty all the fossils from [S] into [src]." if(numaccepted) - outmsg += " \blue[numaccepted] fossils were accepted and consumed as [src] extracts genetic data from them." + outmsg += " [numaccepted] fossils were accepted and consumed as [src] extracts genetic data from them." if(numrejected) - outmsg += " \red[numrejected] fossils were rejected." + outmsg += " [numrejected] fossils were rejected." if(full) - outmsg += " \red[src] can not extract any more genetic data from new fossils." + outmsg += " [src] can not extract any more genetic data from new fossils." visible_message(outmsg) else @@ -182,13 +182,13 @@ datum/genesequence var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num] if(pod1) if(pod1.occupant) - visible_message("\red [bicon(src)] The cloning pod is currently occupied.") + visible_message("[bicon(src)] The cloning pod is currently occupied.") else if(pod1.biomass < CLONE_BIOMASS) - visible_message("\red [bicon(src)] Not enough biomass in the cloning pod.") + visible_message("[bicon(src)] Not enough biomass in the cloning pod.") else if(pod1.mess) - visible_message("\red [bicon(src)] Error: clonepod malfunction.") + visible_message("[bicon(src)] Error: clonepod malfunction.") else - visible_message("\blue [bicon(src)] [src] clones something from a reconstituted gene sequence!") + visible_message("[bicon(src)] [src] clones something from a reconstituted gene sequence!") playsound(src.loc, 'sound/effects/screech.ogg', 50, 1, -3) pod1.occupant = new cloned_genesequence.spawned_type(pod1) pod1.locked = 1 @@ -196,7 +196,7 @@ datum/genesequence //pod1.occupant.name = "[pod1.occupant.name] ([rand(0,999)])" pod1.biomass -= CLONE_BIOMASS else - to_chat(usr, "\red [bicon(src)] Unable to locate cloning pod!") + to_chat(usr, "[bicon(src)] Unable to locate cloning pod!") else ..() @@ -240,7 +240,7 @@ datum/genesequence else if(href_list["clone"]) var/sequence_num = text2num(href_list["sequence_num"]) var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num] - visible_message("\blue [bicon(src)] [src] clones a packet of seeds from a reconstituted gene sequence!") + visible_message("[bicon(src)] [src] clones a packet of seeds from a reconstituted gene sequence!") playsound(src.loc, 'sound/effects/screech.ogg', 50, 1, -3) new cloned_genesequence.spawned_type(src.loc) diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm index 4bc8f88e618..38eaa00c6a2 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm @@ -24,13 +24,13 @@ /obj/machinery/artifact_harvester/attackby(var/obj/I as obj, var/mob/user as mob, params) if(istype(I,/obj/item/weapon/anobattery)) if(!inserted_battery) - to_chat(user, "\blue You insert [I] into [src].") + to_chat(user, "You insert [I] into [src].") user.drop_item() I.loc = src src.inserted_battery = I updateDialog() else - to_chat(user, "\red There is already a battery in [src].") + to_chat(user, "There is already a battery in [src].") else return..() diff --git a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm index 4b0cb78116a..7bbd7408173 100644 --- a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm +++ b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm @@ -226,16 +226,16 @@ //emergency stop if seal integrity reaches 0 if(scanner_seal_integrity <= 0 || (scanner_temperature >= 1273 && !rad_shield)) stop_scanning() - src.visible_message("\blue [bicon(src)] buzzes unhappily. It has failed mid-scan!", 2) + src.visible_message("[bicon(src)] buzzes unhappily. It has failed mid-scan!", 2) if(prob(5)) - src.visible_message("\blue [bicon(src)] [pick("whirrs","chuffs","clicks")][pick(" excitedly"," energetically"," busily")].", 2) + src.visible_message("[bicon(src)] [pick("whirrs","chuffs","clicks")][pick(" excitedly"," energetically"," busily")].", 2) else //gradually cool down over time if(scanner_temperature > 0) scanner_temperature = max(scanner_temperature - 5 - 10 * rand(), 0) if(prob(0.75)) - src.visible_message("\blue [bicon(src)] [pick("plinks","hisses")][pick(" quietly"," softly"," sadly"," plaintively")].", 2) + src.visible_message("[bicon(src)] [pick("plinks","hisses")][pick(" quietly"," softly"," sadly"," plaintively")].", 2) last_process_worldtime = world.time /obj/machinery/radiocarbon_spectrometer/proc/stop_scanning() @@ -253,7 +253,7 @@ used_coolant = 0 /obj/machinery/radiocarbon_spectrometer/proc/complete_scan() - src.visible_message("\blue [bicon(src)] makes an insistent chime.", 2) + src.visible_message("[bicon(src)] makes an insistent chime.", 2) if(scanned_item) //create report diff --git a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm index 1f530c832e7..23ba3eb39a8 100644 --- a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm +++ b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm @@ -40,7 +40,7 @@ /obj/item/weapon/anodevice/attackby(var/obj/I as obj, var/mob/user as mob, params) if(istype(I, /obj/item/weapon/anobattery)) if(!inserted_battery) - to_chat(user, "\blue You insert the battery.") + to_chat(user, "You insert the battery.") user.drop_item() I.loc = src inserted_battery = I @@ -131,13 +131,13 @@ //work out if we need to shutdown if(inserted_battery.stored_charge <= 0) - src.loc.visible_message("\blue [bicon(src)] [src] buzzes.", "\blue [bicon(src)] You hear something buzz.") + src.loc.visible_message("[bicon(src)] [src] buzzes.", "[bicon(src)] You hear something buzz.") shutdown_emission() else if(world.time > time_end) - src.loc.visible_message("\blue [bicon(src)] [src] chimes.", "\blue [bicon(src)] You hear something chime.") + src.loc.visible_message("[bicon(src)] [src] chimes.", "[bicon(src)] You hear something chime.") shutdown_emission() else - src.visible_message("\blue [bicon(src)] [src] buzzes.", "\blue [bicon(src)] You hear something buzz.") + src.visible_message("[bicon(src)] [src] buzzes.", "[bicon(src)] You hear something buzz.") shutdown_emission() last_process = world.time @@ -164,7 +164,7 @@ if(href_list["startup"]) if(inserted_battery && inserted_battery.battery_effect && (inserted_battery.stored_charge > 0) ) activated = 1 - src.visible_message("\blue [bicon(src)] [src] whirrs.", "[bicon(src)]\blue You hear something whirr.") + src.visible_message("[bicon(src)] [src] whirrs.", "[bicon(src)] You hear something whirr.") if(!inserted_battery.battery_effect.activated) inserted_battery.battery_effect.ToggleActivate(1) time_end = world.time + duration @@ -201,9 +201,9 @@ if(activated && inserted_battery.battery_effect.effect == EFFECT_TOUCH && !isnull(inserted_battery)) inserted_battery.battery_effect.DoEffectTouch(M) inserted_battery.use_power(energy_consumed_on_touch) - user.visible_message("\blue [user] taps [M] with [src], and it shudders on contact.") + user.visible_message("[user] taps [M] with [src], and it shudders on contact.") else - user.visible_message("\blue [user] taps [M] with [src], but nothing happens.") + user.visible_message("[user] taps [M] with [src], but nothing happens.") //admin logging user.lastattacked = M diff --git a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm index 3e7b4a05c12..a75378b0a26 100644 --- a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm +++ b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm @@ -12,32 +12,32 @@ /obj/machinery/bunsen_burner/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/reagent_containers)) if(held_container) - to_chat(user, "\red You must remove the [held_container] first.") + to_chat(user, "You must remove the [held_container] first.") else user.drop_item(src) held_container = W held_container.loc = src - to_chat(user, "\blue You put the [held_container] onto the [src].") + to_chat(user, "You put the [held_container] onto the [src].") var/image/I = image("icon"=W, "layer"=FLOAT_LAYER) underlays += I if(heating) spawn(heat_time) try_heating() else - to_chat(user, "\red You can't put the [W] onto the [src].") + to_chat(user, "You can't put the [W] onto the [src].") /obj/machinery/bunsen_burner/attack_hand(mob/user as mob) if(held_container) underlays = null - to_chat(user, "\blue You remove the [held_container] from the [src].") + to_chat(user, "You remove the [held_container] from the [src].") held_container.loc = src.loc held_container.attack_hand(user) held_container = null else - to_chat(user, "\red There is nothing on the [src].") + to_chat(user, "There is nothing on the [src].") /obj/machinery/bunsen_burner/proc/try_heating() - src.visible_message("\blue [bicon(src)] [src] hisses.") + src.visible_message("[bicon(src)] [src] hisses.") if(held_container && heating) heated = 1 held_container.reagents.handle_reactions() diff --git a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm index 37ecc240cf2..775a4e25c98 100644 --- a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm +++ b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm @@ -31,14 +31,14 @@ M.Weaken(3) cell.charge -= power_use if(prob(5)) - to_chat(M, "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") + to_chat(M, "[pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") if(field_type == "iron") for(var/mob/living/silicon/M in T) M.Weaken(3) cell.charge -= power_use if(prob(5)) - to_chat(M, "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") + to_chat(M, "[pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") for(var/obj/item/I in T) if(!suspension_field.contents.len) @@ -50,7 +50,7 @@ M.Weaken(3) cell.charge -= power_use if(prob(5)) - to_chat(M, "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") + to_chat(M, "[pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]") if(cell.charge <= 0) deactivate() @@ -248,7 +248,7 @@ success = 1 for(var/mob/living/carbon/C in T) C.AdjustWeakened(5) - C.visible_message("\blue [bicon(C)] [C] begins to float in the air!","You feel tingly and light, but it is difficult to move.") + C.visible_message("[bicon(C)] [C] begins to float in the air!","You feel tingly and light, but it is difficult to move.") if("nitrogen") success = 1 // @@ -271,19 +271,19 @@ success = 1 for(var/mob/living/silicon/R in T) R.AdjustWeakened(5) - R.visible_message("\blue [bicon(R)] [R] begins to float in the air!","You feel tingly and light, but it is difficult to move.") + R.visible_message("[bicon(R)] [R] begins to float in the air!","You feel tingly and light, but it is difficult to move.") // //in case we have a bad field type if(!success) return for(var/mob/living/simple_animal/C in T) - C.visible_message("\blue [bicon(C)] [C] begins to float in the air!","You feel tingly and light, but it is difficult to move.") + C.visible_message("[bicon(C)] [C] begins to float in the air!","You feel tingly and light, but it is difficult to move.") C.AdjustWeakened(5) suspension_field = new(T) suspension_field.field_type = field_type - src.visible_message("\blue [bicon(src)] [src] activates with a low hum.") + src.visible_message("[bicon(src)] [src] activates with a low hum.") icon_state = "suspension3" for(var/obj/item/I in T) @@ -293,7 +293,7 @@ if(collected) suspension_field.icon_state = "energynet" suspension_field.overlays += "shield2" - src.visible_message("\blue [bicon(suspension_field)] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].") + src.visible_message("[bicon(suspension_field)] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].") else if(istype(T,/turf/simulated/mineral) || istype(T,/turf/simulated/wall)) suspension_field.icon_state = "shieldsparkles" @@ -308,7 +308,7 @@ to_chat(M, "You no longer feel like floating.") M.SetWeakened(min(M.weakened, 3)) - src.visible_message("\blue [bicon(src)] [src] deactivates with a gentle shudder.") + src.visible_message("[bicon(src)] [src] deactivates with a gentle shudder.") qdel(suspension_field) icon_state = "suspension2" @@ -323,7 +323,7 @@ set category = "Object" if(anchored) - to_chat(usr, "\red You cannot rotate [src], it has been firmly fixed to the floor.") + to_chat(usr, "You cannot rotate [src], it has been firmly fixed to the floor.") else dir = turn(dir, 90) @@ -333,7 +333,7 @@ set category = "Object" if(anchored) - to_chat(usr, "\red You cannot rotate [src], it has been firmly fixed to the floor.") + to_chat(usr, "You cannot rotate [src], it has been firmly fixed to the floor.") else dir = turn(dir, -90) diff --git a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm index e8daea89b74..72f85146df1 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm @@ -27,16 +27,16 @@ /obj/item/device/core_sampler/examine(mob/user) if(..(user, 2)) - to_chat(user, "\blue Used to extract geological core samples - this one is [sampled_turf ? "full" : "empty"], and has [num_stored_bags] bag[num_stored_bags != 1 ? "s" : ""] remaining.") + to_chat(user, "Used to extract geological core samples - this one is [sampled_turf ? "full" : "empty"], and has [num_stored_bags] bag[num_stored_bags != 1 ? "s" : ""] remaining.") /obj/item/device/core_sampler/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W,/obj/item/weapon/evidencebag)) if(num_stored_bags < 10) qdel(W) num_stored_bags += 1 - to_chat(user, "\blue You insert the [W] into the core sampler.") + to_chat(user, "You insert the [W] into the core sampler.") else - to_chat(user, "\red The core sampler can not fit any more bags!") + to_chat(user, "The core sampler can not fit any more bags!") else return ..() @@ -52,9 +52,9 @@ if(geo_data) if(filled_bag) - to_chat(user, "\red The core sampler is full!") + to_chat(user, "The core sampler is full!") else if(num_stored_bags < 1) - to_chat(user, "\red The core sampler is out of sample bags!") + to_chat(user, "The core sampler is out of sample bags!") else //create a new sample bag which we'll fill with rock samples filled_bag = new /obj/item/weapon/evidencebag(src) @@ -75,13 +75,13 @@ filled_bag.underlays += I filled_bag.w_class = 1 - to_chat(user, "\blue You take a core sample of the [item_to_sample].") + to_chat(user, "You take a core sample of the [item_to_sample].") else - to_chat(user, "\red You are unable to take a sample of [item_to_sample].") + to_chat(user, "You are unable to take a sample of [item_to_sample].") /obj/item/device/core_sampler/attack_self() if(filled_bag) - to_chat(usr, "\blue You eject the full sample bag.") + to_chat(usr, "You eject the full sample bag.") var/success = 0 if(istype(src.loc, /mob)) var/mob/M = src.loc @@ -91,4 +91,4 @@ filled_bag = null icon_state = "sampler0" else - to_chat(usr, "\red The core sampler is empty.") + to_chat(usr, "The core sampler is empty.") diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm index eca8c423273..83429d509bc 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm @@ -24,7 +24,7 @@ var/material = "unknown" /obj/item/device/depth_scanner/proc/scan_atom(var/mob/user, var/atom/A) - user.visible_message("\blue [user] scans [A], the air around them humming gently.") + user.visible_message("[user] scans [A], the air around them humming gently.") if(istype(A,/turf/simulated/mineral)) var/turf/simulated/mineral/M = A if((M.finds && M.finds.len) || M.artifact_find) @@ -46,7 +46,7 @@ positive_locations.Add(D) for(var/mob/L in range(src, 1)) - to_chat(L, "\blue [bicon(src)] [src] pings.") + to_chat(L, "[bicon(src)] [src] pings.") else if(istype(A,/obj/structure/boulder)) var/obj/structure/boulder/B = A @@ -65,7 +65,7 @@ positive_locations.Add(D) for(var/mob/L in range(src, 1)) - to_chat(L, "\blue [bicon(src)] [src] pings [pick("madly","wildly","excitedly","crazily")]!.") + to_chat(L, "[bicon(src)] [src] pings [pick("madly","wildly","excitedly","crazily")]!.") /obj/item/device/depth_scanner/attack_self(var/mob/user as mob) return src.interact(user) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index c3072758331..c42b6e8286c 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -422,7 +422,7 @@ var/mob/dead/observer/ghost for(var/mob/dead/observer/O in loc) if(!check_observer(O)) - to_chat(O, "\red You are not eligible to become a golem.") + to_chat(O, "You are not eligible to become a golem.") continue ghost = O break @@ -463,13 +463,13 @@ /obj/effect/golemrune/proc/volunteer(var/mob/dead/observer/O) if(O in ghosts) ghosts.Remove(O) - to_chat(O, "\red You are no longer signed up to be a golem.") + to_chat(O, "You are no longer signed up to be a golem.") else if(!check_observer(O)) - to_chat(O, "\red You are not eligible to become a golem.") + to_chat(O, "You are not eligible to become a golem.") return ghosts.Add(O) - to_chat(O, "\blue You are signed up to be a golem.") + to_chat(O, "You are signed up to be a golem.") diff --git a/code/modules/security_levels/keycard authentication.dm b/code/modules/security_levels/keycard authentication.dm index 8435d8cf992..069440e0b62 100644 --- a/code/modules/security_levels/keycard authentication.dm +++ b/code/modules/security_levels/keycard authentication.dm @@ -156,7 +156,7 @@ feedback_inc("alert_keycard_auth_maintRevoke",1) if("Emergency Response Team") if(is_ert_blocked()) - to_chat(usr, "\red All Emergency Response Teams are dispatched and can not be called at this time.") + to_chat(usr, "All Emergency Response Teams are dispatched and can not be called at this time.") return to_chat(usr, "ERT request transmitted.") diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index af18daa893a..62609932fe0 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -220,8 +220,8 @@ user.changeNext_move(CLICK_CD_MELEE) deal_damage(15) playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1) - to_chat(user, "\red You slash at \the [src]!") - visible_message("\red The [user] slashes at [src.name]'s armor!") + to_chat(user, "You slash at \the [src]!") + visible_message("The [user] slashes at [src.name]'s armor!") return /obj/spacepod/proc/deal_damage(var/damage) @@ -318,7 +318,7 @@ return if(istype(W, /obj/item/weapon/stock_parts/cell)) if(!hatch_open) - to_chat(user, "\red The maintenance hatch is closed!") + to_chat(user, "The maintenance hatch is closed!") return if(battery) to_chat(user, "The pod already has a battery.") @@ -329,7 +329,7 @@ return if(istype(W, /obj/item/device/spacepod_equipment)) if(!hatch_open) - to_chat(user, "\red The maintenance hatch is closed!") + to_chat(user, "The maintenance hatch is closed!") return if(!equipment_system) to_chat(user, "The pod has no equipment datum, yell at the coders") @@ -361,19 +361,19 @@ if(istype(W, /obj/item/weapon/weldingtool)) if(!hatch_open) - to_chat(user, "\red You must open the maintenance hatch before attempting repairs.") + to_chat(user, "You must open the maintenance hatch before attempting repairs.") return var/obj/item/weapon/weldingtool/WT = W if(!WT.isOn()) - to_chat(user, "\red The welder must be on for this task.") + to_chat(user, "The welder must be on for this task.") return if(health < initial(health)) - to_chat(user, "\blue You start welding the spacepod...") + to_chat(user, "You start welding the spacepod...") playsound(loc, 'sound/items/Welder.ogg', 50, 1) if(do_after(user, 20, target = src)) if(!src || !WT.remove_fuel(3, user)) return repair_damage(10) - to_chat(user, "\blue You mend some [pick("dents","bumps","damage")] with \the [WT]") + to_chat(user, "You mend some [pick("dents","bumps","damage")] with \the [WT]") return to_chat(user, "\The [src] is fully repaired!") return diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 110584d5d2a..756ea37e557 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -50,7 +50,7 @@ // Internal organs of this body part var/list/internal_organs = list() - var/damage_msg = "\red You feel an intense pain" + var/damage_msg = "You feel an intense pain" var/broken_description var/open = 0 @@ -808,7 +808,7 @@ Note that amputating the affected organ does in fact remove the infection from t return if(owner) owner.visible_message(\ - "\red You hear a loud cracking sound coming from \the [owner].",\ + "You hear a loud cracking sound coming from \the [owner].",\ "Something feels like it shattered in your [name]!",\ "You hear a sickening crack.") if(owner.species && !(owner.species.flags & NO_PAIN)) @@ -960,13 +960,13 @@ Note that amputating the affected organ does in fact remove the infection from t return if(owner) if(type == "brute") - owner.visible_message("\red You hear a sickening cracking sound coming from \the [owner]'s [name].", \ + owner.visible_message("You hear a sickening cracking sound coming from \the [owner]'s [name].", \ "Your [name] becomes a mangled mess!", \ - "\red You hear a sickening crack.") + "You hear a sickening crack.") else - owner.visible_message("\red \The [owner]'s [name] melts away, turning into mangled mess!", \ + owner.visible_message("\The [owner]'s [name] melts away, turning into mangled mess!", \ "Your [name] melts away!", \ - "\red You hear a sickening sizzle.") + "You hear a sickening sizzle.") disfigured = 1 /obj/item/organ/external/is_primary_organ(var/mob/living/carbon/human/O = null) diff --git a/code/modules/surgery/organs/pain.dm b/code/modules/surgery/organs/pain.dm index f0b4b912eaf..7852ac05a5b 100644 --- a/code/modules/surgery/organs/pain.dm +++ b/code/modules/surgery/organs/pain.dm @@ -55,7 +55,7 @@ mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength) return var/msg = "[message]" if(flash_strength >= 1) - msg = "\red [message]" + msg = "[message]" // Anti message spam checks if(msg && ((msg != last_pain_message) || (world.time >= next_pain_time))) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index b35968625e5..aa65b6337d5 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -80,10 +80,10 @@ /obj/machinery/computer/telescience/emag_act(user as mob) if(!emagged) - to_chat(user, "\blue You scramble the Telescience authentication key to an unknown signal. You should be able to teleport to more places now!") + to_chat(user, "You scramble the Telescience authentication key to an unknown signal. You should be able to teleport to more places now!") emagged = 1 else - to_chat(user, "\red The machine seems unaffected by the card swipe...") + to_chat(user, "The machine seems unaffected by the card swipe...") /obj/machinery/computer/telescience/attack_ai(mob/user) src.attack_hand(user) diff --git a/code/world.dm b/code/world.dm index f37fd273e86..ebf4865a1a8 100644 --- a/code/world.dm +++ b/code/world.dm @@ -327,7 +327,7 @@ var/world_topic_spam_protect_time = world.timeofday if(C.is_afk(INACTIVITY_KICK)) if(!istype(C.mob, /mob/dead)) log_access("AFK: [key_name(C)]") - to_chat(C, "\red You have been inactive for more than 10 minutes and have been disconnected.") + to_chat(C, "You have been inactive for more than 10 minutes and have been disconnected.") del(C) if( ((world.timeofday - sleep_check) > work_length) || ((world.timeofday - sleep_check) < 0) ) sleep(sleep_length) From 55fd6fd271e640b65dab91ef9115ac90555519e3 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 15:47:31 +0100 Subject: [PATCH 02/81] Switch to eq --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c2212aa7fcb..2bbd62522e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ before_script: - chmod +x ./install-byond.sh - ./install-byond.sh script: - - (num=`grep -E '\\\\(red|blue|green|black|italic|bold|b|i[^mc])' **/*.dm | wc -l`; echo "$num BYOND text macros (expecting 0)"; [ $num -le 0 ]) + - (num=`grep -E '\\\\(red|blue|green|black|italic|bold|b|i[^mc])' **/*.dm | wc -l`; echo "$num BYOND text macros (expecting 0)"; [ $num -eq 0 ]) - source $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin/byondsetup - bash dm.sh -M${DM_MAPFILE} paradise.dme From 3de8eb7b2260a1dcdc1937f210eaef394f320e4b Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 15:51:47 +0100 Subject: [PATCH 03/81] Test --- _maps/test_away_missions.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/test_away_missions.dm b/_maps/test_away_missions.dm index e5c1f0d192e..d6e14cf004e 100644 --- a/_maps/test_away_missions.dm +++ b/_maps/test_away_missions.dm @@ -6,7 +6,7 @@ #include "map_files\RandomZLevels\moonoutpost19.dmm" #include "map_files\RandomZLevels\undergroundoutpost45.dmm" #include "map_files\RandomZLevels\academy.dmm" - #include "map_files\RandomZLevels\blackmarketpackers.dmm" + #include "map_files\RandomZLevels\spacehotel.dmm" #include "map_files\RandomZLevels\stationCollision.dmm" #include "map_files\RandomZLevels\wildwest.dmm" From f712b464203f44f05dd12a654105e01f4f102ca5 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 15:56:58 +0100 Subject: [PATCH 04/81] Fix Travis --- .travis.yml | 3 ++- _maps/test_away_missions.dm | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2bbd62522e5..b79e72470f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ env: global: - BYOND_MAJOR="510" - BYOND_MINOR="1346" + - BYOND_MACRO_COUNT=2 matrix: - DM_MAPFILE="cyberiad" - DM_MAPFILE="metastation" @@ -29,7 +30,7 @@ before_script: - chmod +x ./install-byond.sh - ./install-byond.sh script: - - (num=`grep -E '\\\\(red|blue|green|black|italic|bold|b|i[^mc])' **/*.dm | wc -l`; echo "$num BYOND text macros (expecting 0)"; [ $num -eq 0 ]) + - (num=`grep -E '\\\\(red|blue|green|black|italic|bold|b|i[^mc])' **/*.dm | wc -l`; echo "$num BYOND text macros (expecting ${BYOND_MACRO_COUNT} or less)"; [ $num -le ${BYOND_MACRO_COUNT} ]) - source $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin/byondsetup - bash dm.sh -M${DM_MAPFILE} paradise.dme diff --git a/_maps/test_away_missions.dm b/_maps/test_away_missions.dm index d6e14cf004e..e5c1f0d192e 100644 --- a/_maps/test_away_missions.dm +++ b/_maps/test_away_missions.dm @@ -6,7 +6,7 @@ #include "map_files\RandomZLevels\moonoutpost19.dmm" #include "map_files\RandomZLevels\undergroundoutpost45.dmm" #include "map_files\RandomZLevels\academy.dmm" - + #include "map_files\RandomZLevels\blackmarketpackers.dmm" #include "map_files\RandomZLevels\spacehotel.dmm" #include "map_files\RandomZLevels\stationCollision.dmm" #include "map_files\RandomZLevels\wildwest.dmm" From ebac4833b4a6570ff9e85da1647f17fd1f227668 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 21 Feb 2017 15:58:44 +0100 Subject: [PATCH 05/81] Stannis Baratheon would be proud --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b79e72470f7..d97c006cbd9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,7 +30,7 @@ before_script: - chmod +x ./install-byond.sh - ./install-byond.sh script: - - (num=`grep -E '\\\\(red|blue|green|black|italic|bold|b|i[^mc])' **/*.dm | wc -l`; echo "$num BYOND text macros (expecting ${BYOND_MACRO_COUNT} or less)"; [ $num -le ${BYOND_MACRO_COUNT} ]) + - (num=`grep -E '\\\\(red|blue|green|black|italic|bold|b|i[^mc])' **/*.dm | wc -l`; echo "$num BYOND text macros (expecting ${BYOND_MACRO_COUNT} or fewer)"; [ $num -le ${BYOND_MACRO_COUNT} ]) - source $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin/byondsetup - bash dm.sh -M${DM_MAPFILE} paradise.dme From ef446d2391e9f11028df945529145cca24a008fc Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Wed, 22 Feb 2017 18:38:06 +0100 Subject: [PATCH 06/81] Fix indent --- code/game/objects/items/devices/megaphone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index c1a3ede9756..254fc55178f 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -14,7 +14,7 @@ /obj/item/device/megaphone/attack_self(mob/living/user as mob) if(user.client && (user.client.prefs.muted & MUTE_IC)) to_chat(src, "You cannot speak in IC (muted).") - return + return if(!ishuman(user)) to_chat(user, "You don't know how to use this!") return From 58ae83724c1bb039ad3cf2b3cb62e4baace7ab7c Mon Sep 17 00:00:00 2001 From: Markolie Date: Wed, 22 Feb 2017 20:15:27 +0100 Subject: [PATCH 07/81] Damn it, web editor --- code/game/objects/items/devices/megaphone.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 254fc55178f..d38ac3b71ff 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -13,8 +13,8 @@ /obj/item/device/megaphone/attack_self(mob/living/user as mob) if(user.client && (user.client.prefs.muted & MUTE_IC)) - to_chat(src, "You cannot speak in IC (muted).") - return + to_chat(src, "You cannot speak in IC (muted).") + return if(!ishuman(user)) to_chat(user, "You don't know how to use this!") return From ef9ad527062e48028113f515c9dc0128c8a1d102 Mon Sep 17 00:00:00 2001 From: Warior4356 Date: Mon, 20 Mar 2017 17:34:40 -0700 Subject: [PATCH 08/81] Avatar code working --- _maps/map_files/templates/vr/lobby.dmm | 81 ++++++++++++++++++++++ code/_globalvars/mapping.dm | 1 + code/datums/vr.dm | 21 ++++++ code/datums/vr/level.dm | 12 ++++ code/game/machinery/computer/vr_control.dm | 35 ++++++++++ code/game/objects/effects/landmarks.dm | 6 +- code/modules/VR/vr_avatar.dm | 54 +++++++++++++++ code/modules/VR/vr_goggles.dm | 74 ++++++++++++++++++++ paradise.dme | 5 ++ 9 files changed, 288 insertions(+), 1 deletion(-) create mode 100644 _maps/map_files/templates/vr/lobby.dmm create mode 100644 code/datums/vr.dm create mode 100644 code/datums/vr/level.dm create mode 100644 code/game/machinery/computer/vr_control.dm create mode 100644 code/modules/VR/vr_avatar.dm create mode 100644 code/modules/VR/vr_goggles.dm diff --git a/_maps/map_files/templates/vr/lobby.dmm b/_maps/map_files/templates/vr/lobby.dmm new file mode 100644 index 00000000000..40276280865 --- /dev/null +++ b/_maps/map_files/templates/vr/lobby.dmm @@ -0,0 +1,81 @@ +"a" = (/turf/space,/area/space) +"b" = (/turf/unsimulated/wall/metal,/area/space) +"c" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) +"d" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/space) +"e" = (/turf/simulated/floor/greengrid,/area/space) +"f" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) +"g" = (/obj/machinery/telecomms/hub/preset_cent,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) +"h" = (/turf/simulated/floor/light,/area/space) +"i" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"; tag = "icon-fakewindows (WEST)"},/area/space) +"j" = (/turf/unsimulated/wall/fakeglass{dir = 0; icon_state = "fakewindows"; tag = "icon-fakewindows (EAST)"},/area/space) +"k" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/simulated/floor/greengrid,/area/space) +"l" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/simulated/floor/greengrid,/area/space) +"m" = (/obj/machinery/computer/mecha,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) +"n" = (/obj/machinery/telecomms/processor/preset_cent,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) +"o" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/space) +"p" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/space) +"q" = (/obj/effect/landmark{name = "avatarspawn"},/turf/simulated/floor/light,/area/space) +"r" = (/turf/unsimulated/wall/fakeglass,/area/space) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaabbccbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaabbbdeedbbbaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaabbbbbbbbbbbbbbbbbbbbffgeegffbbbbaaaaaaaaaaaaaaaaaaaaaaaa +aaaabcccfcfcfcfcfcccbffffhieeihffffbaaaaaaaaaaaaaaaaaaaaaaaa +aaaabcchfhfhfhfhfhccbfhchcjeejchchfbaaaaaaaaaaaaaaaaaaaaaaaa +aaaabbffkflfkflfkffbbfcfffgeegfffcfbbaaaaaaaaaaaaaaaaaaaaaaa +aaaaabchfhfhfhfhfhcbffhfchieeihcfhffbaaaaaaaaaaaaaaaaaaaaaaa +aaaaabbcfcfcfcfcfcbbfhcfhcjeejchfchfbbaaaaaaaaaaaaaaaaaaaaaa +aaaaaabdmdmdmdmdmdbdnopnopbeebopnopndbbaaaaaaaaaaaaaaaaaaaaa +aaaaaabeeeeeeeeeeeceeeeeeeeqqeeeeeeeecbaaaaaaaaaaaaaaaaaaaaa +aaaaaabeeeeeeeeeeeceeeeeeeeqqeeeeeeeecbaaaaaaaaaaaaaaaaaaaaa +aaaaaabbbbbbbbbbbbbdnopnopbeebopnopndbbaaaaaaaaaaaaaaaaaaaaa +aaaaaabaaaaaaaaaaabbfhcfhcieeichfchfbbaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaabffhfchreejhcfhffbaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaabbfcfffgeegfffcfbbaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaabfhchcieeichchfbaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaabffffhreejhffffbaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaabbbbffgeegffbbbbaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaabbbdeedbbbaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaabbccbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/code/_globalvars/mapping.dm b/code/_globalvars/mapping.dm index 841fbced3f7..199346ae30a 100644 --- a/code/_globalvars/mapping.dm +++ b/code/_globalvars/mapping.dm @@ -40,6 +40,7 @@ var/list/prisonwarped = list() //list of players already warped var/list/blobstart = list() var/list/ninjastart = list() var/list/carplist = list() //list of all carp-spawn landmarks +var/list/avatarspawn = list() //away missions var/list/awaydestinations = list() //a list of landmarks that the warpgate can take you to diff --git a/code/datums/vr.dm b/code/datums/vr.dm new file mode 100644 index 00000000000..3a11a19228d --- /dev/null +++ b/code/datums/vr.dm @@ -0,0 +1,21 @@ +/datum/map_template/vr + //name = "A Chest of Doubloons" + name = null + var/id = null // For blacklisting purposes, all vr levels need an id + var/description = "In the middle of a clearing in the rockface, there's a \ + chest filled with gold coins with Spanish engravings. How is there a \ + wooden container filled with 18th century coinage in the middle of a \ + lavawracked hellscape? It is clearly a mystery." + + var/cost = null + var/allow_duplicates = TRUE //A bit boring, don't you think? You can always explicitly allow it on a ruin definition + + var/prefix = null + var/suffix = null + +/datum/map_template/vr/New() + if(!name && id) + name = id + + mappath = prefix + suffix + ..(path = mappath) \ No newline at end of file diff --git a/code/datums/vr/level.dm b/code/datums/vr/level.dm new file mode 100644 index 00000000000..c65ea29c5c8 --- /dev/null +++ b/code/datums/vr/level.dm @@ -0,0 +1,12 @@ +//The bigger ones lag like hell if there is more than one on a z-level, so cost 2 for them +/datum/map_template/vr/level + prefix = "_maps/map_files/templates/vr/" + cost = 1 + +/datum/map_template/vr/level/lobby + id = "lobby" + suffix = "lobby.dmm" + name = "Biological Storage Facility" + description = "This is the lobby. The hub for all things VR." + cost = 2 + diff --git a/code/game/machinery/computer/vr_control.dm b/code/game/machinery/computer/vr_control.dm new file mode 100644 index 00000000000..16631afe793 --- /dev/null +++ b/code/game/machinery/computer/vr_control.dm @@ -0,0 +1,35 @@ +/obj/machinery/computer/vr_control + name = "crew monitoring computer" + desc = "Used to monitor active health sensors built into most of the crew's uniforms." + icon_screen = "comm_logs" + + light_color = LIGHT_COLOR_DARKGREEN + + +/obj/machinery/computer/vr_control/New() + vr_control = new(src) + ..() + +/obj/machinery/computer/vr_control/Destroy() + qdel(vr_control) + return ..() + +/obj/machinery/computer/vr_control/attack_ai(mob/user) + attack_hand(user) + ui_interact(user) + + +/obj/machinery/computer/vr_control/attack_hand(mob/user) + add_fingerprint(user) + if(stat & (BROKEN|NOPOWER)) + return + ui_interact(user) + +/obj/machinery/computer/vr_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + //crew_monitor.ui_interact(user, ui_key, ui, force_open) + +/obj/machinery/computer/vr_control/interact(mob/user) + //crew_monitor.ui_interact(user) + +/obj/machinery/computer/vr_control/proc/loadlevel(template) + var/datum/space_chunk/C = zlev_manager.allocate_space(template.width, template.height) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 7ff80f248da..5cdc64fa2fc 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -20,6 +20,10 @@ wizardstart += loc qdel(src) + if("avatarspawn") + avatarspawn += loc + qdel(src) + if("JoinLate") latejoin += loc qdel(src) @@ -251,7 +255,7 @@ new /obj/item/clothing/mask/gas/sexymime(src.loc) new /obj/item/clothing/under/sexymime(src.loc) qdel(src) - + /obj/effect/landmark/ruin var/datum/map_template/ruin/ruin_template diff --git a/code/modules/VR/vr_avatar.dm b/code/modules/VR/vr_avatar.dm new file mode 100644 index 00000000000..f3baf7e89e0 --- /dev/null +++ b/code/modules/VR/vr_avatar.dm @@ -0,0 +1,54 @@ + + +/mob/living/carbon/human/virtual_reality + var/mob/living/carbon/human/real_me //The human controlling us, can be any human (including virtual ones... inception...) + var/obj/item/clothing/glasses/vr_goggles + var/datum/action/quit_vr/quit_action + + +/mob/living/carbon/human/virtual_reality/New() + quit_action = new() + quit_action.Grant(src) + ..() + +/mob/living/carbon/human/virtual_reality/death() + revert_to_reality() + qdel(src) + ..() + +/mob/living/carbon/human/virtual_reality/Destroy() + revert_to_reality() + qdel(src) + return ..() + +/mob/living/carbon/human/virtual_reality/ghost() + set category = "OOC" + set name = "Ghost" + set desc = "Relinquish your life and enter the land of the dead." + var/mob/living/carbon/human/H = real_me + revert_to_reality(FALSE, FALSE) + if(H) + H.ghost() + qdel(src) + +/mob/living/carbon/human/virtual_reality/proc/revert_to_reality(refcleanup = TRUE, deathchecks = TRUE) + if(real_me && mind) + mind.transfer_to(real_me) + real_me.eye_blind = 4 + real_me.confused = 4 +// if(deathchecks && vr_sleeper && vr_sleeper.you_die_in_the_game_you_die_for_real) +// real_me.death(0) + if(refcleanup) + real_me = null + +/datum/action/quit_vr + name = "Quit Virtual Reality" + +/datum/action/quit_vr/Trigger() + if(..()) + if(istype(owner, /mob/living/carbon/human/virtual_reality)) + var/mob/living/carbon/human/virtual_reality/VR = owner + VR.revert_to_reality(FALSE, FALSE) + else + Remove(owner) + qdel(src) \ No newline at end of file diff --git a/code/modules/VR/vr_goggles.dm b/code/modules/VR/vr_goggles.dm new file mode 100644 index 00000000000..500104588c3 --- /dev/null +++ b/code/modules/VR/vr_goggles.dm @@ -0,0 +1,74 @@ + + +//Glorified teleporter that puts you in a new human body. +// it's """VR""" + +/obj/item/clothing/glasses/vr_goggles + desc = "A long time ago, people used these glasses to makes images from screens threedimensional." + name = "3D glasses" + icon_state = "3d" + item_state = "3d" + prescription_upgradable = 0 + species_fit = list("Vox") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/eyes.dmi' + ) + + var/you_die_in_the_game_you_die_for_real = FALSE + var/mob/living/carbon/human/virtual_reality/vr_human + var/static/list/available_vr_spawnpoints + var/vr_category = "default" //Specific category of spawn points to pick from + var/outfit = /datum/outfit/vr_basic + +/obj/item/clothing/glasses/vr_goggles/Destroy() + ..() + cleanup_vr_avatar() + +/obj/item/clothing/glasses/vr_goggles/emag_act(mob/user) + //placeholder + +/obj/item/clothing/glasses/vr_goggles/dropped() + ..() + if(vr_human) + cleanup_vr_avatar() + vr_human.revert_to_reality(FALSE, FALSE) + +/obj/item/clothing/glasses/vr_goggles/equipped() + ..() + var/mob/living/carbon/human/H = loc + spawn(1) + if(H.glasses == src) + control_remote(H,build_virtual_avatar(H,pick(avatarspawn))) + +/obj/item/clothing/glasses/vr_goggles/proc/build_virtual_avatar(mob/living/carbon/human/virtual_reality/H, location) + if(!location) + return + var/mob/living/carbon/human/virtual_reality/vr_avatar + cleanup_vr_avatar() + vr_avatar = new /mob/living/carbon/human/virtual_reality(location) + vr_avatar.set_species(H.species.name) + vr_avatar.vr_goggles = src + vr_avatar.real_me = H + vr_avatar.dna = H.dna.Clone() + vr_avatar.name = H.name + vr_avatar.real_name = H.real_name + vr_avatar.undershirt = H.undershirt + vr_avatar.underwear = H.underwear +// vr_avatar.change_hair(H.head_organ.h_style) + if(outfit) + var/datum/outfit/vr_basic/O = new outfit() + O.equip(vr_avatar) + return vr_avatar + +/obj/item/clothing/glasses/vr_goggles/proc/control_remote(mob/living/carbon/human/H, mob/living/carbon/human/virtual_reality/vr_avatar) + if(H.mind) + H.mind.transfer_to(vr_avatar) + +/obj/item/clothing/glasses/vr_goggles/proc/cleanup_vr_avatar() + if(vr_human) + vr_human.death(0) + +/datum/outfit/vr_basic + name = "basic vr" + uniform = /obj/item/clothing/under/psysuit + shoes = /obj/item/clothing/shoes/black \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index f678cc2865e..b2e4b77377e 100644 --- a/paradise.dme +++ b/paradise.dme @@ -217,6 +217,7 @@ #include "code\datums\supplypacks.dm" #include "code\datums\uplink_item.dm" #include "code\datums\vision_override.dm" +#include "code\datums\vr.dm" #include "code\datums\cache\air_alarm.dm" #include "code\datums\cache\apc.dm" #include "code\datums\cache\cache.dm" @@ -315,6 +316,7 @@ #include "code\datums\spells\trigger.dm" #include "code\datums\spells\turf_teleport.dm" #include "code\datums\spells\wizard.dm" +#include "code\datums\vr\level.dm" #include "code\datums\weather\weather.dm" #include "code\datums\weather\weather_types.dm" #include "code\datums\wires\airlock.dm" @@ -599,6 +601,7 @@ #include "code\game\machinery\computer\store.dm" #include "code\game\machinery\computer\syndicate_specops_shuttle.dm" #include "code\game\machinery\computer\telecrystalconsoles.dm" +#include "code\game\machinery\computer\vr_control.dm" #include "code\game\machinery\doors\airlock.dm" #include "code\game\machinery\doors\airlock_control.dm" #include "code\game\machinery\doors\airlock_electronics.dm" @@ -2160,6 +2163,8 @@ #include "code\modules\vehicle\speedbike.dm" #include "code\modules\vehicle\sportscar.dm" #include "code\modules\vehicle\vehicle.dm" +#include "code\modules\VR\vr_avatar.dm" +#include "code\modules\VR\vr_goggles.dm" #include "goon\code\datums\browserOutput.dm" #include "interface\interface.dm" #include "interface\skin.dmf" From 84e7228a7813b4bf8648311c68ef000f6b8bddb8 Mon Sep 17 00:00:00 2001 From: Warior4356 Date: Mon, 20 Mar 2017 17:35:00 -0700 Subject: [PATCH 09/81] Missed a file --- code/game/machinery/computer/vr_control.dm | 4 ++-- paradise.dme | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/computer/vr_control.dm b/code/game/machinery/computer/vr_control.dm index 16631afe793..0f61d65f578 100644 --- a/code/game/machinery/computer/vr_control.dm +++ b/code/game/machinery/computer/vr_control.dm @@ -7,11 +7,11 @@ /obj/machinery/computer/vr_control/New() - vr_control = new(src) + //vr_control = new(src) ..() /obj/machinery/computer/vr_control/Destroy() - qdel(vr_control) + //qdel(vr_control) return ..() /obj/machinery/computer/vr_control/attack_ai(mob/user) diff --git a/paradise.dme b/paradise.dme index b2e4b77377e..fbd75bcd07f 100644 --- a/paradise.dme +++ b/paradise.dme @@ -601,7 +601,6 @@ #include "code\game\machinery\computer\store.dm" #include "code\game\machinery\computer\syndicate_specops_shuttle.dm" #include "code\game\machinery\computer\telecrystalconsoles.dm" -#include "code\game\machinery\computer\vr_control.dm" #include "code\game\machinery\doors\airlock.dm" #include "code\game\machinery\doors\airlock_control.dm" #include "code\game\machinery\doors\airlock_electronics.dm" From 0ad6fec5b1c20dda7f1e45332876f8a265be66dc Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Wed, 22 Mar 2017 20:36:24 -0400 Subject: [PATCH 10/81] Collaborators are no longer clueless about Syndicate Alternative to #6829 The Syndicate no longer leaves their potential collaborators in absolute darkness about their usefulness. Collaborators are notified of their potential use, though in a vague way so as not to compromise the identities of any agents directly. - Potential collaborators get messages informing them that they are still not antags, but that they may be asked to assist, when they are assigned to a new traitor. - Potential collaborators get a SINGLE code word and code response so their clandestine friend can attempt to communicate with them with more subtlety than "hey, im a traitor, want to help?" - They are only given 1 word set so they can't just inform security and the AI of all the codewords alone. Same reason they aren't given a name of the traitor they might be asked to assist. The intercept report (currently disabled) now only lists suspects that actually CAN be the antag (no more listing the chaplain as a potential cultist, the HoS as a potential traitor, or that IPC in atmos as a possible changeling). Potential collaborators can no longer be characters in roles that are restricted from being traitors. So no more "Potential collaborator: The captain", as funny as that may have been. :cl: tweak: Potential collaborators for traitors now are informed they are potentially a collaborator for a potential increase in them potentially helping the traitors potentially do potentially bad things. Potentially. rscadd: Potential collaborators are given a single code word and response set so they can discretely find out that their best friend is a filthy traitor. /:cl: --- code/game/gamemodes/game_mode.dm | 22 ++++++++++------- code/game/gamemodes/intercept_report.dm | 11 +++++++-- code/game/gamemodes/traitor/traitor.dm | 32 +++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 59f4b79c84d..075161c89ca 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -37,7 +37,7 @@ var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) var/list/player_draft_log = list() var/list/datum/mind/xenos = list() - + var/list/datum/station_goal/station_goals = list() // A list of all station goals for this game mode /datum/game_mode/proc/announce() //to be calles when round starts @@ -225,7 +225,7 @@ /datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere. return 0 - + /datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=0) var/list/players = list() var/list/candidates = list() @@ -400,15 +400,19 @@ proc/display_roundstart_logout_report() to_chat(M, msg) -proc/get_nt_opposed() +/proc/get_nt_opposed() var/list/dudes = list() for(var/mob/living/carbon/human/man in player_list) if(man.client) + //don't try picking someone like the captain or a security officer for potential collaborators, even if they ARE opposed to Nanotrasen for some reason + if(man.mind && man.mind.assigned_role && !((man.mind.assigned_role in ticker.mode.protected_jobs) || (man.mind.assigned_role in ticker.mode.restricted_jobs))) + continue if(man.client.prefs.nanotrasen_relation == "Opposed") dudes += man else if(man.client.prefs.nanotrasen_relation == "Skeptical" && prob(50)) dudes += man - if(dudes.len == 0) return null + if(dudes.len == 0) + return null return pick(dudes) //Announces objectives/generic antag text. @@ -491,10 +495,10 @@ proc/get_nt_opposed() var/datum/station_goal/picked = pick_n_take(possible) goal_weights += initial(picked.weight) station_goals += new picked - - if(station_goals.len) + + if(station_goals.len) send_station_goals_message() - + /datum/game_mode/proc/send_station_goals_message() var/message_text = "
" message_text += "

[command_name()] Orders


" @@ -504,10 +508,10 @@ proc/get_nt_opposed() G.on_report() message_text += G.get_report() message_text += "
" - + print_command_report(message_text, "[command_name()] Orders") /datum/game_mode/proc/declare_station_goal_completion() for(var/V in station_goals) var/datum/station_goal/G = V - G.print_result() \ No newline at end of file + G.print_result() \ No newline at end of file diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm index cd6dd80876b..29803cf34dc 100644 --- a/code/game/gamemodes/intercept_report.dm +++ b/code/game/gamemodes/intercept_report.dm @@ -109,8 +109,15 @@ /datum/intercept_text/proc/get_suspect() var/list/dudes = list() - for(var/mob/living/carbon/human/man in player_list) if(man.client && man.client.prefs.nanotrasen_relation == "Opposed") - dudes += man + for(var/mob/living/carbon/human/man in player_list) + if(man.client && man.client.prefs.nanotrasen_relation == "Opposed") + //don't include suspects who can't possibly be the antag based on their job (no suspecting the captain of being a damned dirty tator) + if(man.mind && man.mind.assigned_role && !((man.mind.assigned_role in ticker.mode.protected_jobs) || (man.mind.assigned_role in ticker.mode.restricted_jobs))) + return + //don't include suspects who can't possibly be the antag based on their species (no suspecting the machines of being sneaky changelings) + if(man.get_species() in ticker.mode.protected_species) + return + dudes += man for(var/i = 0, i < max(player_list.len/10,2), i++) dudes += pick(player_list) return pick(dudes) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 371aef6c6a0..09d014a2afc 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -345,6 +345,34 @@ if(M && M != traitor_mob) to_chat(traitor_mob, "We have received credible reports that [M.real_name] might be willing to help our cause. If you need assistance, consider contacting them.") traitor_mob.mind.store_memory("Potential Collaborator: [M.real_name]") + //let's also inform their contact that they might be called upon, but leave it vague. + inform_collab(M) + +/datum/game_mode/proc/inform_collab(mob/living/carbon/human/M) + if(!M) + return + if(M.mind in traitors) //if you are already a traitor, you already know the codewords and your role, so skip this message. + return + //Mad-libs for their message + var/adjective = pick("strange", "mysterious", "sinister", "un-assuming", "unexpected") + var/action_words = pick("aid the fight against Nanotrasen", "repay a debt", "partake in some mischief", "help overthrow the system", "stick it to the man") + var/organization = pick("Anti-Facist Movement", "Syndicate", "Spessmen for the Protesting of Nanotrasen", "Greytider's Union", "Illuminati (in space)") + //Stuff to give them a single set of code-words + var/list/possible_words = splittext(syndicate_code_phrase, ", ") + var/list/possible_reply = splittext(syndicate_code_response, ", ") + var/index = rand(1, possible_words.len) + var/my_word = possible_words[index] + var/my_reply + if(possible_reply.len < index) //just in case we had a longer code word list than the response list + my_reply = pick(possible_reply) + else + my_reply = possible_reply[index] + + to_chat(M, "You suddenly remember \an [adjective] note you received earlier informing you that a chance to [action_words] may present itself today. An agent of the [organization] may contact you for help.") + to_chat(M, "The note had the words \"[my_word]\" and \"[my_reply]\" written at the bottom, which you memorized just in case.") + to_chat(M, "You are NOT an antagonist, so self-antagging rules still apply to you. Use your good judgement and ahelp if you are unsure of what you are allowed to do.") + M.mind.store_memory("Important Words: \"[my_word]\", \"[my_reply]\"") + /datum/game_mode/proc/remove_traitor(datum/mind/traitor_mind) if(traitor_mind in traitors) @@ -355,8 +383,8 @@ to_chat(traitor_mind.current, "You have been turned into a robot! You are no longer a traitor.") else to_chat(traitor_mind.current, "You have been brainwashed! You are no longer a traitor.") - ticker.mode.update_traitor_icons_removed(traitor_mind) - + ticker.mode.update_traitor_icons_removed(traitor_mind) + /datum/game_mode/proc/update_traitor_icons_added(datum/mind/traitor_mind) var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR] tatorhud.join_hud(traitor_mind.current) From 01466c02dc7b5e14525340adc690e0630f75be6e Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 23 Mar 2017 02:33:00 -0400 Subject: [PATCH 11/81] Abductor Gland Rework --- .../miniantags/abduction/abduction_gear.dm | 2 +- .../miniantags/abduction/abduction_surgery.dm | 4 +- .../gamemodes/miniantags/abduction/gland.dm | 143 +++++++++--------- .../abduction/machinery/dispenser.dm | 4 +- .../abduction/machinery/experiment.dm | 4 +- code/modules/clothing/under/miscellaneous.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 3 +- 7 files changed, 84 insertions(+), 78 deletions(-) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 8f026650b7c..f456adce836 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -502,7 +502,7 @@ Congratulations! You are now trained for xenobiology research!"} species = "[H.species.name]" if(L.mind && L.mind.changeling) species = "Changeling lifeform" - var/obj/item/organ/internal/gland/temp = locate() in H.internal_organs + var/obj/item/organ/internal/heart/gland/temp = locate() in H.internal_organs if(temp) helptext = "Experimental gland detected!" else diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm index 6021140b79f..f17ad8c4890 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm @@ -51,7 +51,7 @@ /datum/surgery_step/internal/gland_insert name = "insert gland" - allowed_tools = list(/obj/item/organ/internal/gland = 100) + allowed_tools = list(/obj/item/organ/internal/heart/gland = 100) time = 32 /datum/surgery_step/internal/gland_insert/begin_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -61,6 +61,6 @@ /datum/surgery_step/internal/gland_insert/end_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] inserts [tool] into [target].", "You insert [tool] into [target].") user.drop_item() - var/obj/item/organ/internal/gland/gland = tool + var/obj/item/organ/internal/heart/gland/gland = tool gland.insert(target, 2) return 1 diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index b59f1fd8454..07de02c97d4 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -1,12 +1,11 @@ -/obj/item/organ/internal/gland +/obj/item/organ/internal/heart/gland name = "fleshy mass" desc = "A nausea-inducing hunk of twisting flesh and metal." icon = 'icons/obj/abductor.dmi' - parent_organ = "chest" - slot = "gland" icon_state = "gland" status = ORGAN_ROBOT - origin_tech = "materials=4;biotech=5;abductor=3" + origin_tech = "materials=4;biotech=7;abductor=3" + beating = TRUE var/cooldown_low = 300 var/cooldown_high = 300 var/next_activation = 0 @@ -16,30 +15,33 @@ tough = 1 //not easily broken by combat damage sterile = 1 //not very germy -/obj/item/organ/internal/gland/proc/ownerCheck() +/obj/item/organ/internal/heart/gland/proc/ownerCheck() if(ishuman(owner)) return 1 if(!human_only && iscarbon(owner)) return 1 return 0 -/obj/item/organ/internal/gland/proc/Start() +/obj/item/organ/internal/heart/gland/proc/Start() active = 1 next_activation = world.time + rand(cooldown_low,cooldown_high) -/obj/item/organ/internal/gland/remove(var/mob/living/carbon/M, special = 0) +/obj/item/organ/internal/heart/gland/remove(var/mob/living/carbon/M, special = 0) active = 0 if(initial(uses) == 1) uses = initial(uses) - ..() + . = ..() -/obj/item/organ/internal/gland/insert(var/mob/living/carbon/M, special = 0) +/obj/item/organ/internal/heart/gland/insert(var/mob/living/carbon/M, special = 0) ..() if(special != 2 && uses) // Special 2 means abductor surgery Start() -/obj/item/organ/internal/gland/on_life() +/obj/item/organ/internal/heart/gland/on_life() + if(!beating) + // alien glands are immune to stopping. + beating = TRUE if(!active) return if(!ownerCheck()) @@ -52,30 +54,28 @@ if(!uses) active = 0 -/obj/item/organ/internal/gland/proc/activate() +/obj/item/organ/internal/heart/gland/proc/activate() return -/obj/item/organ/internal/gland/heals - origin_tech = "materials=4;biotech=6;abductor=3" +/obj/item/organ/internal/heart/gland/heals cooldown_low = 200 cooldown_high = 400 uses = -1 icon_state = "health" -/obj/item/organ/internal/gland/heals/activate() +/obj/item/organ/internal/heart/gland/heals/activate() to_chat(owner, "You feel curiously revitalized.") owner.adjustBruteLoss(-20) owner.adjustOxyLoss(-20) owner.adjustFireLoss(-20) -/obj/item/organ/internal/gland/slime - origin_tech = "materials=4;biotech=6;abductor=3" +/obj/item/organ/internal/heart/gland/slime cooldown_low = 600 cooldown_high = 1200 uses = -1 icon_state = "slime" -/obj/item/organ/internal/gland/slime/activate() +/obj/item/organ/internal/heart/gland/slime/activate() to_chat(owner, "You feel nauseous!") owner.vomit(20) @@ -83,14 +83,14 @@ Slime.Friends = list(owner) Slime.Leader = owner -/obj/item/organ/internal/gland/mindshock - origin_tech = "materials=4;biotech=5;magnets=3;abductor=3" +/obj/item/organ/internal/heart/gland/mindshock + origin_tech = "materials=4;biotech=4;magnets=6;abductor=3" cooldown_low = 300 cooldown_high = 300 uses = -1 icon_state = "mindshock" -/obj/item/organ/internal/gland/mindshock/activate() +/obj/item/organ/internal/heart/gland/mindshock/activate() to_chat(owner, "You get a headache.") var/turf/T = get_turf(owner) @@ -100,40 +100,37 @@ to_chat(H, "You hear a buzz in your head.") H.AdjustConfused(20) -/obj/item/organ/internal/gland/pop - origin_tech = "materials=4;biotech=6;abductor=3" +/obj/item/organ/internal/heart/gland/pop cooldown_low = 900 cooldown_high = 1800 - uses = 6 + uses = -1 human_only = 1 icon_state = "species" -/obj/item/organ/internal/gland/pop/activate() +/obj/item/organ/internal/heart/gland/pop/activate() to_chat(owner, "You feel unlike yourself.") var/species = pick("Unathi","Skrell","Diona","Tajaran","Vulpkanin","Kidan","Grey","Diona") owner.set_species(species) -/obj/item/organ/internal/gland/ventcrawling +/obj/item/organ/internal/heart/gland/ventcrawling origin_tech = "materials=4;biotech=5;bluespace=3;abductor=3" cooldown_low = 1800 cooldown_high = 2400 uses = 1 icon_state = "vent" -/obj/item/organ/internal/gland/ventcrawling/activate() +/obj/item/organ/internal/heart/gland/ventcrawling/activate() to_chat(owner, "You feel very stretchy.") owner.ventcrawler = 2 - return -/obj/item/organ/internal/gland/viral - origin_tech = "materials=4;biotech=6;abductor=3" +/obj/item/organ/internal/heart/gland/viral cooldown_low = 1800 cooldown_high = 2400 uses = 1 icon_state = "viral" -/obj/item/organ/internal/gland/viral/activate() +/obj/item/organ/internal/heart/gland/viral/activate() to_chat(owner, "You feel sick.") var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/magnitis) var/datum/disease/D = new virus_type() @@ -144,51 +141,49 @@ owner.med_hud_set_status() -/obj/item/organ/internal/gland/emp //TODO : Replace with something more interesting - origin_tech = "materials=4;biotech=5;magnets=3;abductor=3" +/obj/item/organ/internal/heart/gland/emp //TODO : Replace with something more interesting + origin_tech = "materials=4;biotech=4;magnets=6;abductor=3" cooldown_low = 900 cooldown_high = 1600 uses = 10 icon_state = "emp" -/obj/item/organ/internal/gland/emp/activate() +/obj/item/organ/internal/heart/gland/emp/activate() to_chat(owner, "You feel a spike of pain in your head.") empulse(get_turf(owner), 2, 5, 1) -/obj/item/organ/internal/gland/spiderman - origin_tech = "materials=4;biotech=6;abductor=3" +/obj/item/organ/internal/heart/gland/spiderman cooldown_low = 450 cooldown_high = 900 uses = 10 icon_state = "spider" -/obj/item/organ/internal/gland/spiderman/activate() +/obj/item/organ/internal/heart/gland/spiderman/activate() to_chat(owner, "You feel something crawling in your skin.") owner.faction |= "spiders" new /obj/effect/spider/spiderling(owner.loc) -/obj/item/organ/internal/gland/egg - origin_tech = "materials=4;biotech=6;abductor=3" +/obj/item/organ/internal/heart/gland/egg cooldown_low = 300 cooldown_high = 400 uses = -1 icon_state = "egg" -/obj/item/organ/internal/gland/egg/activate() +/obj/item/organ/internal/heart/gland/egg/activate() to_chat(owner, "You lay an egg!") var/obj/item/weapon/reagent_containers/food/snacks/egg/egg = new(owner.loc) egg.reagents.add_reagent("sacid",20) egg.desc += " It smells bad." -/obj/item/organ/internal/gland/bloody - origin_tech = "materials=4;biotech=6;abductor=3" +/obj/item/organ/internal/heart/gland/bloody cooldown_low = 200 cooldown_high = 400 uses = -1 -/obj/item/organ/internal/gland/bloody/activate() - owner.adjustBruteLoss(15) - +/obj/item/organ/internal/heart/gland/bloody/activate() + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + H.drip(200) owner.visible_message("[owner]'s skin erupts with blood!",\ "Blood pours from your skin!") @@ -202,22 +197,22 @@ H.w_uniform.add_blood(owner) H.update_inv_w_uniform(0) -/obj/item/organ/internal/gland/bodysnatch - origin_tech = "materials=4;biotech=7;abductor=3" +/obj/item/organ/internal/heart/gland/bodysnatch cooldown_low = 600 cooldown_high = 600 human_only = 1 uses = 1 -/obj/item/organ/internal/gland/bodysnatch/activate() +/obj/item/organ/internal/heart/gland/bodysnatch/activate() to_chat(owner, "You feel something moving around inside you...") //spawn cocoon with clone greytide snpc inside if(ishuman(owner)) var/obj/effect/cocoon/abductor/C = new (get_turf(owner)) C.Copy(owner) C.Start() - owner.gib() - return + owner.adjustBruteLoss(40) + var/turf/T = get_turf(owner) + T.add_blood_floor(src) /obj/effect/cocoon/abductor name = "slimy cocoon" @@ -232,11 +227,18 @@ var/mob/living/carbon/human/interactive/greytide/clone = new(src) var/datum/dna/owner_dna = H.dna clone.rename_character(clone.name, owner_dna.real_name) - clone.body_accessory = H.body_accessory clone.dna = owner_dna.Clone() clone.set_species(H.species.name) + clone.body_accessory = H.body_accessory domutcheck(clone) + for(var/obj/item/I in clone) + if(istype(I, /obj/item/weapon/implant)) + continue + if(istype(I, /obj/item/organ)) + continue + qdel(I) + //There's no define for this / get all items ? var/list/slots = list(slot_back,slot_w_uniform,slot_wear_suit,\ slot_wear_mask,slot_head,slot_shoes,slot_gloves,slot_l_ear,slot_r_ear,\ @@ -245,7 +247,7 @@ for(var/slot in slots) var/obj/item/I = H.get_item_by_slot(slot) if(I) - clone.equip_to_slot_if_possible(I,slot) + clone.equip_to_slot_or_del(new I.type(clone), slot) /obj/effect/cocoon/abductor/proc/Start() hatch_time = world.time + 600 @@ -259,22 +261,25 @@ M.forceMove(get_turf(src)) qdel(src) -/obj/item/organ/internal/gland/plasma - cooldown_low = 2400 - cooldown_high = 3000 - origin_tech = "materials=4;biotech=5;plasmatech=3;abductor=3" - uses = 1 -/obj/item/organ/internal/gland/plasma/activate() - to_chat(owner, "You feel bloated.") - sleep(150) - if(!owner) return - to_chat(owner, "A massive stomachache overcomes you.") - sleep(50) - if(!owner) return - owner.visible_message("[owner] explodes in a cloud of plasma!") - var/turf/simulated/T = get_turf(owner) - if(istype(T)) - T.atmos_spawn_air(SPAWN_TOXINS|SPAWN_20C,300) - owner.gib() - return +/obj/item/organ/internal/heart/gland/plasma + cooldown_low = 1200 + cooldown_high = 1800 + origin_tech = "materials=4;biotech=4;plasmatech=6;abductor=3" + uses = -1 + +/obj/item/organ/internal/heart/gland/plasma/activate() + spawn(0) + to_chat(owner, "You feel bloated.") + sleep(150) + if(!owner) + return + to_chat(owner, "A massive stomachache overcomes you.") + sleep(50) + if(!owner) + return + owner.visible_message("[owner] vomits a cloud of plasma!") + var/turf/simulated/T = get_turf(owner) + if(istype(T)) + T.atmos_spawn_air(SPAWN_TOXINS|SPAWN_20C,50) + owner.vomit() diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm index 4ead0232a2f..3ddf442286c 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm @@ -14,7 +14,7 @@ return rgb(rand(0,255),rand(0,255),rand(0,255)) /obj/machinery/abductor/gland_dispenser/New() - gland_types = subtypesof(/obj/item/organ/internal/gland) + gland_types = subtypesof(/obj/item/organ/internal/heart/gland) gland_types = shuffle(gland_types) gland_colors = new/list(gland_types.len) amounts = new/list(gland_types.len) @@ -59,7 +59,7 @@ return /obj/machinery/abductor/gland_dispenser/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/organ/internal/gland)) + if(istype(W, /obj/item/organ/internal/heart/gland)) if(!user.drop_item()) return W.forceMove(src) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index 755bd21e2e5..ba294efc500 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -118,7 +118,7 @@ if(H.stat == DEAD) atom_say("Specimen deceased - please provide fresh sample.") return "Specimen deceased." - var/obj/item/organ/internal/gland/GlandTest = locate() in H.internal_organs + var/obj/item/organ/internal/heart/gland/GlandTest = locate() in H.internal_organs if(!GlandTest) atom_say("Experimental dissection not detected!") return "No glands detected!" @@ -147,7 +147,7 @@ obj_count++ ticker.mode.update_abductor_icons_added(H.mind) - for(var/obj/item/organ/internal/gland/G in H.internal_organs) + for(var/obj/item/organ/internal/heart/gland/G in H.internal_organs) G.Start() point_reward++ if(point_reward > 0) diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index c7128ae8bf1..bae89acca6d 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -740,7 +740,7 @@ ..() /obj/item/clothing/under/contortionist/dropped(mob/living/carbon/human/user) - if(!user.get_int_organ(/obj/item/organ/internal/gland/ventcrawling)) + if(!user.get_int_organ(/obj/item/organ/internal/heart/gland/ventcrawling)) user.ventcrawler = 0 ..() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 275828fc97e..c516504abfb 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1188,7 +1188,8 @@ else AdjustLoseBreath(2, bound_lower = 0, bound_upper = 3) adjustOxyLoss(5) - adjustBruteLoss(1) + Paralyse(4) + adjustBruteLoss(2) From 60096df843a5561a095fb7f3ec2af983c55b86b4 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Thu, 23 Mar 2017 19:42:06 -0400 Subject: [PATCH 12/81] Anti-Scum Safeties All game modes EXCEPT traitor (and it's variants) misinform a number of chumps that they are potential collaborators, to cut down on metagame potential. Traitor modes don't misinform anyone and instead inform the real potential collaborators only to prevent spreading actual codewords to the general public. Maximum number of chumps scales with population, though it is possible to end up with fewer chumps than the maximum based on RNG and the number of people with opposed/skeptical relations. Also fixed some accidentally inverted checks that broke everything, and moved the inform_collab proc to the base game_mode type for organization --- code/game/gamemodes/game_mode.dm | 64 +++++++++++++++++++++++-- code/game/gamemodes/intercept_report.dm | 5 +- code/game/gamemodes/traitor/traitor.dm | 27 ++--------- 3 files changed, 69 insertions(+), 27 deletions(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 075161c89ca..e0ef1b480d0 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -39,6 +39,7 @@ var/list/datum/mind/xenos = list() var/list/datum/station_goal/station_goals = list() // A list of all station goals for this game mode + var/list/chumps = list() /datum/game_mode/proc/announce() //to be calles when round starts to_chat(world, "Notice: [src] did not define announce()") @@ -71,6 +72,9 @@ ///post_setup() ///Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things /datum/game_mode/proc/post_setup() + spawn(30) + setup_chumps() + spawn (ROUNDSTART_LOGOUT_REPORT_TIME) display_roundstart_logout_report() @@ -85,6 +89,35 @@ start_state.count() return 1 +//setup_chumps() +//Prepares fake potential collaborators to cut down on metagaming the round type as being a traitor subtype. Overriden in traitor game modes since they have real collaborators +/datum/game_mode/proc/setup_chumps() + var/max_chumps = 1 + if(config.traitor_scaling) + max_chumps = max(1, round((num_players())/(5))) + else + max_chumps = max(1, min(num_players(), 5)) + var/tries_left = 5 //limits the number of tries so we don't get stuck looping indefinitely. resets on successfully finding a new chump + while(chumps.len < max_chumps) + if(!tries_left) //ran out of unique chumps (or just bad luck with the pick() in get_nt_opposed()) so there may end up being fewer chumps in some rounds. + break + var/mob/living/carbon/human/chump = get_nt_opposed() + if(isnull(chump)) //no possible chumps so just end it here. + break + if(chump in chumps) + tries_left-- //this chump already was picked, try again! + else + chumps += chump + tries_left = 5 //reset our tries since we found a new chump + //make sure we have chumps before we try misinforming them. if we don't make a note of it. + if(!chumps.len) + message_admins("Game mode failed to find ANY chumps. Possible causes: no one is opposed/skeptical, or FalseIncarnate can't code.") + log_admin("Game mode failed to find ANY chumps. Possible causes: no one is opposed/skeptical, or FalseIncarnate can't code.") + return 0 + //we've got chumps! misinform them! + for(var/mob/living/carbon/human/chump in chumps) + inform_collab(chump) + return 1 ///process() ///Called by the gameticker @@ -405,8 +438,9 @@ proc/display_roundstart_logout_report() for(var/mob/living/carbon/human/man in player_list) if(man.client) //don't try picking someone like the captain or a security officer for potential collaborators, even if they ARE opposed to Nanotrasen for some reason - if(man.mind && man.mind.assigned_role && !((man.mind.assigned_role in ticker.mode.protected_jobs) || (man.mind.assigned_role in ticker.mode.restricted_jobs))) - continue + if(man.mind && man.mind.assigned_role) + if((man.mind.assigned_role in ticker.mode.protected_jobs) || (man.mind.assigned_role in ticker.mode.restricted_jobs)) + continue if(man.client.prefs.nanotrasen_relation == "Opposed") dudes += man else if(man.client.prefs.nanotrasen_relation == "Skeptical" && prob(50)) @@ -514,4 +548,28 @@ proc/display_roundstart_logout_report() /datum/game_mode/proc/declare_station_goal_completion() for(var/V in station_goals) var/datum/station_goal/G = V - G.print_result() \ No newline at end of file + G.print_result() + + +/datum/game_mode/proc/inform_collab(mob/living/carbon/human/M) + if(!M) + return + //Mad-libs for their message + var/adjective = pick("strange", "mysterious", "sinister", "un-assuming", "unexpected") + var/action_words = pick("aid the fight against Nanotrasen", "repay a debt", "partake in some mischief", "help overthrow the system", "stick it to the man") + var/organization = pick("Anti-Fascist Movement", "Syndicate", "Spessmen for the Protesting of Nanotrasen", "Greytider's Union", "Illuminati (in space)") + //Stuff to give them a single set of code-words + var/list/possible_words = splittext(syndicate_code_phrase, ", ") + var/list/possible_reply = splittext(syndicate_code_response, ", ") + var/index = rand(1, possible_words.len) + var/my_word = possible_words[index] + var/my_reply + if(possible_reply.len < index) //just in case we had a longer code word list than the response list + my_reply = pick(possible_reply) + else + my_reply = possible_reply[index] + + to_chat(M, "You suddenly remember \an [adjective] note you received earlier informing you that a chance to [action_words] may present itself today. An agent of the [organization] may contact you for help.") + to_chat(M, "The note had the words \"[my_word]\" and \"[my_reply]\" written at the bottom, which you memorized just in case.") + to_chat(M, "You are NOT an antagonist, so self-antagging rules still apply to you. Use your good judgement and ahelp if you are unsure of what you are allowed to do.") + M.mind.store_memory("Important Words: \"[my_word]\", \"[my_reply]\"") diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm index 29803cf34dc..6cb2956d3ee 100644 --- a/code/game/gamemodes/intercept_report.dm +++ b/code/game/gamemodes/intercept_report.dm @@ -112,8 +112,9 @@ for(var/mob/living/carbon/human/man in player_list) if(man.client && man.client.prefs.nanotrasen_relation == "Opposed") //don't include suspects who can't possibly be the antag based on their job (no suspecting the captain of being a damned dirty tator) - if(man.mind && man.mind.assigned_role && !((man.mind.assigned_role in ticker.mode.protected_jobs) || (man.mind.assigned_role in ticker.mode.restricted_jobs))) - return + if(man.mind && man.mind.assigned_role) + if((man.mind.assigned_role in ticker.mode.protected_jobs) || (man.mind.assigned_role in ticker.mode.restricted_jobs)) + return //don't include suspects who can't possibly be the antag based on their species (no suspecting the machines of being sneaky changelings) if(man.get_species() in ticker.mode.protected_species) return diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 09d014a2afc..e60b564f5d0 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -70,6 +70,9 @@ modePlayer += traitors ..() +/datum/game_mode/traitor/setup_chumps() + //since we actually have potential collaborators, we don't prepare any chumps to avoid extra people knowing our codewords. + return /datum/game_mode/proc/forge_traitor_objectives(datum/mind/traitor) if(istype(traitor.current, /mob/living/silicon)) @@ -348,30 +351,10 @@ //let's also inform their contact that they might be called upon, but leave it vague. inform_collab(M) -/datum/game_mode/proc/inform_collab(mob/living/carbon/human/M) - if(!M) - return +/datum/game_mode/traitor/inform_collab(mob/living/carbon/human/M) if(M.mind in traitors) //if you are already a traitor, you already know the codewords and your role, so skip this message. return - //Mad-libs for their message - var/adjective = pick("strange", "mysterious", "sinister", "un-assuming", "unexpected") - var/action_words = pick("aid the fight against Nanotrasen", "repay a debt", "partake in some mischief", "help overthrow the system", "stick it to the man") - var/organization = pick("Anti-Facist Movement", "Syndicate", "Spessmen for the Protesting of Nanotrasen", "Greytider's Union", "Illuminati (in space)") - //Stuff to give them a single set of code-words - var/list/possible_words = splittext(syndicate_code_phrase, ", ") - var/list/possible_reply = splittext(syndicate_code_response, ", ") - var/index = rand(1, possible_words.len) - var/my_word = possible_words[index] - var/my_reply - if(possible_reply.len < index) //just in case we had a longer code word list than the response list - my_reply = pick(possible_reply) - else - my_reply = possible_reply[index] - - to_chat(M, "You suddenly remember \an [adjective] note you received earlier informing you that a chance to [action_words] may present itself today. An agent of the [organization] may contact you for help.") - to_chat(M, "The note had the words \"[my_word]\" and \"[my_reply]\" written at the bottom, which you memorized just in case.") - to_chat(M, "You are NOT an antagonist, so self-antagging rules still apply to you. Use your good judgement and ahelp if you are unsure of what you are allowed to do.") - M.mind.store_memory("Important Words: \"[my_word]\", \"[my_reply]\"") + ..(M) /datum/game_mode/proc/remove_traitor(datum/mind/traitor_mind) From 3d751c45d5775ba3b0e33d5cc0b1edfbb3ef76b2 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Thu, 23 Mar 2017 20:03:27 -0400 Subject: [PATCH 13/81] Anti-Scum Safeties 2 Misinformation is now staggered randomly to throw off even hardier metagamers. --- code/game/gamemodes/game_mode.dm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index e0ef1b480d0..8249ba65326 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -72,8 +72,7 @@ ///post_setup() ///Everyone should now be on the station and have their normal gear. This is the place to give the special roles extra things /datum/game_mode/proc/post_setup() - spawn(30) - setup_chumps() + setup_chumps() spawn (ROUNDSTART_LOGOUT_REPORT_TIME) display_roundstart_logout_report() @@ -116,7 +115,12 @@ return 0 //we've got chumps! misinform them! for(var/mob/living/carbon/human/chump in chumps) - inform_collab(chump) + if(prob(33)) + spawn(rand(3000, 18000)) //5-30 minute delay to throw off would-be autotraitor metagamers + inform_collab(chump) + else + spawn(rand(10, 100)) //same delay as if the mode were traitor + inform_collab(chump) return 1 ///process() From a8ac39860ba98df663eb2ba052e6120f0920a946 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 25 Mar 2017 20:01:57 -0400 Subject: [PATCH 14/81] abductor update --- code/__DEFINES/mob.dm | 3 + code/__HELPERS/mobs.dm | 7 + .../miniantags/abduction/abduction.dm | 70 ++++++-- .../miniantags/abduction/abduction_gear.dm | 170 +++++++----------- .../miniantags/abduction/abduction_surgery.dm | 8 +- .../miniantags/abduction/machinery/camera.dm | 5 +- .../miniantags/abduction/machinery/console.dm | 75 ++++---- .../abduction/machinery/dispenser.dm | 7 +- .../abduction/machinery/experiment.dm | 8 +- .../miniantags/abduction/machinery/pad.dm | 2 + .../weapons/implants/implant_abductor.dm | 45 +++++ .../living/carbon/human/species/abductor.dm | 9 +- paradise.dme | 1 + 13 files changed, 225 insertions(+), 185 deletions(-) create mode 100644 code/game/objects/items/weapons/implants/implant_abductor.dm diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm index 5a96b6e954f..97cea621dae 100644 --- a/code/__DEFINES/mob.dm +++ b/code/__DEFINES/mob.dm @@ -124,6 +124,9 @@ #define islarva(A) (istype((A), /mob/living/carbon/alien/larva)) #define isslime(A) (istype((A), /mob/living/carbon/slime)) +//Human sub-species +#define isabductor(A) (is_species(A, "Abductor")) + #define isanimal(A) (istype((A), /mob/living/simple_animal)) #define iscorgi(A) (istype((A), /mob/living/simple_animal/pet/corgi)) #define ismouse(A) (istype((A), /mob/living/simple_animal/mouse)) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 2c989753bf9..0abf2ac1af3 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -363,6 +363,13 @@ proc/add_logs(mob/user, mob/target, what_done, var/object=null, var/addition=nul if(progress) qdel(progbar) +/proc/is_species(A, species_name) + . = FALSE + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(H.get_species() == species_name) + . = TRUE + /proc/admin_mob_info(mob/M, mob/user = usr) if(!ismob(M)) to_chat(user, "This can only be used on instances of type /mob") diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm index ab41b7c24b8..59ed6c6103d 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction.dm @@ -247,7 +247,7 @@ V.flags |= NODROP agent.equip_to_slot_or_del(V, slot_wear_suit) agent.equip_to_slot_or_del(new /obj/item/weapon/abductor_baton(agent), slot_in_backpack) - agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/decloner/alien(agent), slot_in_backpack) + agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/alien(agent), slot_in_backpack) agent.equip_to_slot_or_del(new /obj/item/device/abductor/silencer(agent), slot_in_backpack) agent.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/abductor(agent), slot_head) agent.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/military/abductor/full(agent), slot_belt) @@ -371,9 +371,23 @@ explanation_text = "Steal all" /datum/objective/abductee/steal/New() - var/target = pick(list("pets","lights","monkeys","fruits","shoes","bars of soap")) + var/target = pick(list("pets","lights","monkeys","fruits","shoes","bars of soap", "weapons", "computers", "organs")) explanation_text+=" [target]." +/datum/objective/abductee/paint + explanation_text = "The station is hideous. You must color it all" + +/datum/objective/abductee/paint/New() + var/color = pick(list("red", "blue", "green", "yellow", "orange", "purple", "black", "in rainbows", "in blood")) + explanation_text+= " [color]!" + +/datum/objective/abductee/speech + explanation_text = "Your brain is broken... you can only communicate in" + +/datum/objective/abductee/speech/New() + var/style = pick(list("pantomime", "rhyme", "haiku", "extended metaphors", "riddles", "extremely literal terms", "sound effects", "military jargon")) + explanation_text+= " [style]." + /datum/objective/abductee/capture explanation_text = "Capture" @@ -413,16 +427,16 @@ explanation_text = "Start a collection of corpses. Don't kill people to get these corpses." /datum/objective/abductee/floors - explanation_text = "Replace all the floor tiles with carpeting, wooden boards, or grass." + explanation_text = "Replace all the floor tiles with wood, carpeting, grass or bling." /datum/objective/abductee/POWERUNLIMITED explanation_text = "Flood the station's powernet with as much electricity as you can." /datum/objective/abductee/pristine - explanation_text = "Ensure the station is in absolutely pristine condition." + explanation_text = "The CEO of Nanotrasen is coming! Ensure the station is in absolutely pristine condition." -/datum/objective/abductee/window - explanation_text = "Replace all normal windows with reinforced windows." +/datum/objective/abductee/nowalls + explanation_text = "The crew must get to know one another better. Break down the walls inside the station!" /datum/objective/abductee/nations explanation_text = "Ensure your department prospers over all else." @@ -430,17 +444,11 @@ /datum/objective/abductee/abductception explanation_text = "You have been changed forever. Find the ones that did this to you and give them a taste of their own medicine." -/datum/objective/abductee/ghosts - explanation_text = "Conduct a seance with the spirits of the afterlife." - /datum/objective/abductee/summon - explanation_text = "Conduct a ritual to summon an elder god." + explanation_text = "The elder gods hunger. Gather a cult and conduct a ritual to summon one." /datum/objective/abductee/machine - explanation_text = "You are secretly an android. Interface with as many machines as you can to boost your own power." - -/datum/objective/abductee/prevent - explanation_text = "You have been enlightened. This knowledge must not escape. Ensure nobody else can become enlightened." + explanation_text = "You are secretly an android. Interface with as many machines as you can to boost your own power so the AI may acknowledge you at last." /datum/objective/abductee/calling explanation_text = "Call forth a spirit from the other side." @@ -448,7 +456,7 @@ /datum/objective/abductee/calling/New() var/mob/dead/D = pick(dead_mob_list) if(D) - explanation_text = "You know that [D] has perished. Call them from the spirit realm." + explanation_text = "You know that [D] has perished. Hold a seance to call them from the spirit realm." /datum/objective/abductee/social_experiment explanation_text = "This is a secret social experiment conducted by Nanotrasen. Convince the crew that this is the truth." @@ -460,7 +468,7 @@ explanation_text = "Nanotrasen is abusing the animals! Save as many as you can!" /datum/objective/abductee/defect - explanation_text = "Defect from your employer." + explanation_text = "Fuck the system! Defect from the station and start an independent colony in space, Mining Outpost or the derelict. Recruit crewmates if you can." /datum/objective/abductee/promote explanation_text = "Climb the corporate ladder all the way to the top!" @@ -473,3 +481,33 @@ /datum/objective/abductee/pragnant explanation_text = "You are pregnant and soon due. Find a safe place to deliver your baby." + +/datum/objective/abductee/engine + explanation_text = "Go have a good conversation with the singularity/tesla/supermatter crystal. Bonus points if it responds." + +/datum/objective/abductee/music + explanation_text = "You burn with passion for music. Share your vision. If anyone hates it, beat them on the head with your instrument!" + +/datum/objective/abductee/clown + explanation_text = "The clown is not funny. You can do better! Steal his audience and make the crew laugh!" + +/datum/objective/abductee/party + explanation_text = "You're throwing a huge rager. Make it as awesome as possible so the whole crew comes... OR ELSE!" + +/datum/objective/abductee/pets + explanation_text = "All the pets around here suck. You need to make them cooler. Replace them with exotic beasts!" + +/datum/objective/abductee/conspiracy + explanation_text = "The leaders of this station are hiding a grand, evil conspiracy. Only you can learn what it is, and expose it to the people!" + +/datum/objective/abductee/stalker + explanation_text = "The Syndicate has hired you to compile dossiers on all important members of the crew. Be sure they don't know you're doing it." + +/datum/objective/abductee/narrator + explanation_text = "You're the narrator of this tale. Follow around the protagonists to tell their story." + +/datum/objective/abductee/lurve + explanation_text = "You are doomed to feel woefully incomplete forever... until you find your true love on this station. They're waiting for you!" + +/datum/objective/abductee/sixthsense + explanation_text = "You died back there and went to heaven... or is it hell? No one here seems to know they're dead. Convince them, and maybe you can escape this limbo." \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index f456adce836..a1b62959737 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -11,7 +11,7 @@ icon_state = "vest_stealth" item_state = "armor" blood_overlay_type = "armor" - origin_tech = "materials=5;biotech=4;powerstorage=5;abductor=3" + origin_tech = "magnets=7;biotech=4;powerstorage=4;abductor=4" armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15) actions_types = list(/datum/action/item_action/hands_free/activate) var/mode = VEST_STEALTH @@ -34,7 +34,6 @@ mode = VEST_STEALTH armor = stealth_armor icon_state = "vest_stealth" - if(ishuman(loc)) var/mob/living/carbon/human/H = loc H.update_inv_wear_suit() @@ -64,7 +63,6 @@ M.overlays = disguise.overlays M.update_inv_r_hand() M.update_inv_l_hand() - return /obj/item/clothing/suit/armor/abductor/vest/proc/DeactivateStealth() if(!stealth_active) @@ -77,7 +75,6 @@ M.name_override = null M.overlays.Cut() M.regenerate_icons() - return /obj/item/clothing/suit/armor/abductor/vest/hit_reaction() DeactivateStealth() @@ -115,19 +112,11 @@ if(combat_cooldown==initial(combat_cooldown)) processing_objects.Remove(src) -/obj/item/device/abductor/proc/IsAbductor(user) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.get_species() != "Abductor") - return 0 - return 1 - return 0 - /obj/item/device/abductor/proc/AbductorCheck(user) - if(IsAbductor(user)) - return 1 + if(isabductor(user)) + return TRUE to_chat(user, "You can't figure how this works!") - return 0 + return FALSE /obj/item/device/abductor/proc/ScientistCheck(user) var/mob/living/carbon/human/H = user @@ -140,7 +129,7 @@ icon = 'icons/obj/abductor.dmi' icon_state = "gizmo_scan" item_state = "gizmo" - origin_tech = "materials=5;magnets=5;bluespace=6;abductor=4" + origin_tech = "engineering=7;magnets=4;bluespace=4;abductor=3" var/mode = GIZMO_SCAN var/mob/living/marked = null var/obj/machinery/abductor/console/console @@ -187,7 +176,7 @@ mark(target, user) /obj/item/device/abductor/gizmo/proc/scan(atom/target, mob/living/user) - if(istype(target,/mob/living/carbon/human)) + if(ishuman(target)) if(console!=null) console.AddSnapshot(target) to_chat(user, "You scan [target] and add them to the database.") @@ -196,8 +185,8 @@ if(marked == target) to_chat(user, "This specimen is already marked!") return - if(istype(target,/mob/living/carbon/human)) - if(IsAbductor(target)) + if(ishuman(target)) + if(isabductor(target)) marked = target to_chat(user, "You mark [target] for future retrieval.") else @@ -221,7 +210,7 @@ icon = 'icons/obj/abductor.dmi' icon_state = "silencer" item_state = "silencer" - origin_tech = "materials=5;magnets=5;abductor=3" + origin_tech = "materials=4;programming=7;abductor=3" /obj/item/device/abductor/silencer/attack(mob/living/M, mob/user) if(!AbductorCheck(user)) @@ -258,61 +247,15 @@ if(!istype(I,/obj/item/device/radio/headset)) r.broadcasting = 0 //goddamned headset hacks - -/obj/item/weapon/implant/abductor - name = "recall implant" - desc = "Returns you to the mothership." - icon = 'icons/obj/abductor.dmi' - icon_state = "implant" - activated = 1 - origin_tech = "materials=2;biotech=3;magnets=4;bluespace=5;abductor=5" - var/obj/machinery/abductor/pad/home - var/cooldown = 30 - -/obj/item/weapon/implant/abductor/activate() - if(cooldown == initial(cooldown)) - home.Retrieve(imp_in,1) - cooldown = 0 - processing_objects.Add(src) - else - to_chat(imp_in, "You must wait [30 - cooldown] seconds to use [src] again!") - return - -/obj/item/weapon/implant/abductor/process() - if(cooldown < initial(cooldown)) - cooldown++ - if(cooldown == initial(cooldown)) - processing_objects.Remove(src) - -/obj/item/weapon/implant/abductor/implant(var/mob/source, var/mob/user) - if(..()) - var/obj/machinery/abductor/console/console - if(ishuman(source)) - var/mob/living/carbon/human/H = source - if(H.get_species() == "Abductor") - console = get_team_console(H.mind.abductor.team) - home = console.pad - - if(!home) - console = get_team_console(pick(1, 2, 3, 4)) - home = console.pad - return 1 - -/obj/item/weapon/implant/abductor/proc/get_team_console(var/team) - var/obj/machinery/abductor/console/console - for(var/obj/machinery/abductor/console/c in abductor_equipment) - if(c.team == team) - console = c - break - return console - -/obj/item/weapon/gun/energy/decloner/alien +/obj/item/weapon/gun/energy/alien name = "alien pistol" desc = "A complicated gun that fires bursts of high-intensity radiation." + ammo_type = list(/obj/item/ammo_casing/energy/declone) + restricted_species = list("Abductor") icon_state = "alienpistol" item_state = "alienpistol" - origin_tech = "combat=5;materials=4;powerstorage=3;abductor=3" - restricted_species = list("Abductor") + origin_tech = "combat=4;magnets=7;powerstorage=3;abductor=3" + trigger_guard = TRIGGER_GUARD_ALLOW_ALL /obj/item/weapon/paper/abductor name = "Dissection Guide" @@ -321,25 +264,29 @@
1.Acquire fresh specimen.
- 2.Put the specimen on operating table
- 3.Apply scalpel to the chest, preparing for dissection
- 4.Apply scalpel to specimen torso
- 5.Clamp bleeders on the specimen's torso
- 6.Retract skin from specimen's torso
- 7.Saw through the specimen's torso
- 8.Retract skin from specimen's torso again
- 9.Search through the specimen's torso with your hands to remove their heart
- 10.Insert replacement gland (Retrieve one from gland storage)
- 11.Cauterize the patient's torso
- 12.Consider dressing the specimen back to not disturb the habitat
- 13.Put the specimen in the experiment machinery
- 14.Choose one of the machine options and follow displayed instructions
+ 2.Put the specimen on operating table.
+ 3.Apply scalpel to the chest, preparing for experimental dissection.
+ 4.Apply scalpel to specimen torso.
+ 5.Clamp bleeders on specimen's torso with a hemostat.
+ 6.Retract skin of specimen's torso with a retractor.
+ 7.Saw through the specimen's torso with a saw.
+ 8.Apply recator again to specimen's torso.
+ 9.Search through the specimen's torso with your hands to remove any superfluous organs.
+ 10.Insert replacement gland (Retrieve one from gland storage).
+ 11.Cauterize the patient's torso with a cautery.
+ 12.Consider dressing the specimen back to not disturb the habitat.
+ 13.Put the specimen in the experiment machinery.
+ 14.Choose one of the machine options. The target will be analyzed and teleported to the selected drop-off point.
+ 15.You will receive one supply credit, and the subject will be counted towards your quota.

-Congratulations! You are now trained for xenobiology research!"} +Congratulations! You are now trained for invasive xenobiology research!"} /obj/item/weapon/paper/abductor/update_icon() return +/obj/item/weapon/paper/abductor/AltClick() + return + #define BATON_STUN 0 #define BATON_SLEEP 1 #define BATON_CUFF 2 @@ -354,9 +301,9 @@ Congratulations! You are now trained for xenobiology research!"} icon_state = "wonderprodStun" item_state = "wonderprod" slot_flags = SLOT_BELT - origin_tech = "materials=6;combat=5;biotech=7;abductor=4" + origin_tech = "materials=4;combat=4;biotech=7;abductor=4" force = 7 - w_class = 3 + w_class = WEIGHT_CLASS_NORMAL actions_types = list(/datum/action/item_action/toggle_mode) /obj/item/weapon/abductor_baton/proc/toggle(mob/living/user=usr) @@ -393,16 +340,8 @@ Congratulations! You are now trained for xenobiology research!"} icon_state = "wonderprodProbe" item_state = "wonderprodProbe" -/obj/item/weapon/abductor_baton/proc/IsAbductor(mob/living/user) - if(!ishuman(user)) - return 0 - var/mob/living/carbon/human/H = user - if(H.get_species() != "Abductor") - return 0 - return 1 - /obj/item/weapon/abductor_baton/attack(mob/target, mob/living/user) - if(!IsAbductor(user)) + if(!isabductor(user)) return if(isrobot(target)) @@ -434,7 +373,7 @@ Congratulations! You are now trained for xenobiology research!"} /obj/item/weapon/abductor_baton/attack_self(mob/living/user) toggle(user) - if(istype(user,/mob/living/carbon/human)) + if(ishuman(user)) var/mob/living/carbon/human/H = user H.update_inv_l_hand() H.update_inv_r_hand() @@ -456,10 +395,9 @@ Congratulations! You are now trained for xenobiology research!"} H.forcesay(hit_appends) add_logs(user, L, "stunned") - return /obj/item/weapon/abductor_baton/proc/SleepAttack(mob/living/L,mob/living/user) - if(L.stunned) + if(L.stunned || L.sleeping) L.visible_message("[user] has induced sleep in [L] with [src]!", \ "You suddenly feel very drowsy!") playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) @@ -470,7 +408,6 @@ Congratulations! You are now trained for xenobiology research!"} to_chat(user, "Sleep inducement works fully only on stunned specimens! ") L.visible_message("[user] tried to induce sleep in [L] with [src]!", \ "You suddenly feel drowsy!") - return /obj/item/weapon/abductor_baton/proc/CuffAttack(mob/living/L,mob/living/user) if(!iscarbon(L)) @@ -488,7 +425,6 @@ Congratulations! You are now trained for xenobiology research!"} add_logs(user, C, "handcuffed") else to_chat(user, "You fail to handcuff [C].") - return /obj/item/weapon/abductor_baton/proc/ProbeAttack(mob/living/L,mob/living/user) L.visible_message("[user] probes [L] with [src]!", \ @@ -517,7 +453,7 @@ Congratulations! You are now trained for xenobiology research!"} icon_state = "cuff_white" // Needs sprite breakouttime = 450 trashtype = /obj/item/weapon/restraints/handcuffs/energy/used - origin_tech = "materials=2;magnets=5;abductor=2" + origin_tech = "materials=4;magnets=5;abductor=2" /obj/item/weapon/restraints/handcuffs/energy/used desc = "energy discharge" @@ -545,36 +481,42 @@ Congratulations! You are now trained for xenobiology research!"} /obj/item/weapon/scalpel/alien name = "alien scalpel" + desc = "It's a gleaming sharp knife made out of silvery-green metal." icon = 'icons/obj/abductor.dmi' origin_tech = "materials=2;biotech=2;abductor=2" toolspeed = 0.25 /obj/item/weapon/hemostat/alien name = "alien hemostat" + desc = "You've never seen this before." icon = 'icons/obj/abductor.dmi' origin_tech = "materials=2;biotech=2;abductor=2" toolspeed = 0.25 /obj/item/weapon/retractor/alien name = "alien retractor" + desc = "You're not sure if you want the veil pulled back." icon = 'icons/obj/abductor.dmi' origin_tech = "materials=2;biotech=2;abductor=2" toolspeed = 0.25 /obj/item/weapon/circular_saw/alien name = "alien saw" + desc = "Do the aliens also lose this, and need to find an alien hatchet?" icon = 'icons/obj/abductor.dmi' origin_tech = "materials=2;biotech=2;abductor=2" toolspeed = 0.25 /obj/item/weapon/surgicaldrill/alien name = "alien drill" + desc = "Maybe alien surgeons have finally found a use for the drill." icon = 'icons/obj/abductor.dmi' origin_tech = "materials=2;biotech=2;abductor=2" toolspeed = 0.25 /obj/item/weapon/cautery/alien name = "alien cautery" + desc = "Why would bloodless aliens have a tool to stop bleeding? Unless..." icon = 'icons/obj/abductor.dmi' origin_tech = "materials=2;biotech=2;abductor=2" toolspeed = 0.25 @@ -585,17 +527,12 @@ Congratulations! You are now trained for xenobiology research!"} icon_state = "alienhelmet" item_state = "alienhelmet" blockTracking = 1 - origin_tech = "materials=6;magnets=5;abductor=3" + origin_tech = "materials=7;magnets=4;abductor=3" flags = BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE // Operating Table / Beds / Lockers -/obj/machinery/optable/abductor - icon = 'icons/obj/abductor.dmi' - icon_state = "bed" - no_icon_updates = 1 //no icon updates for this; it's static. - /obj/structure/stool/bed/abductor name = "resting contraption" desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?" @@ -628,6 +565,16 @@ Congratulations! You are now trained for xenobiology research!"} new /obj/structure/table/abductor(src.loc) qdel(src) return + if(istype(I, /obj/item/stack/sheet/mineral/silver)) + var/obj/item/stack/sheet/P = I + if(P.get_amount() < 1) + to_chat(user, "You need one sheet of silver to do this!") + return + to_chat(user, "You start adding [P] to [src]...") + if(do_after(user, 50, target = src)) + P.use(1) + new /obj/machinery/optable/abductor(loc) + qdel(src) /obj/structure/table/abductor name = "alien table" @@ -637,10 +584,15 @@ Congratulations! You are now trained for xenobiology research!"} canSmoothWith = null parts = /obj/item/stack/sheet/mineral/abductor +/obj/machinery/optable/abductor + icon = 'icons/obj/abductor.dmi' + icon_state = "bed" + no_icon_updates = 1 //no icon updates for this; it's static. + /obj/structure/closet/abductor name = "alien locker" desc = "Contains secrets of the universe." icon_state = "abductor" icon_closed = "abductor" icon_opened = "abductoropen" - material_drop = /obj/item/stack/sheet/mineral/abductor + material_drop = /obj/item/stack/sheet/mineral/abductor \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm index f17ad8c4890..18d073d6077 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm @@ -15,9 +15,9 @@ return 0 var/mob/living/carbon/human/H = user // You must either: Be of the abductor species, or contain an abductor implant - if(!(H.get_species() == "Abductor" || (locate(/obj/item/weapon/implant/abductor) in H))) - return 0 - return 1 + if((H.get_species() == "Abductor" || (locate(/obj/item/weapon/implant/abductor) in H))) + return 1 + return 0 /datum/surgery_step/internal/extract_organ @@ -47,7 +47,7 @@ return 1 else to_chat(user, "You don't find anything in [target]'s [target_zone]!") - return 0 + return 1 /datum/surgery_step/internal/gland_insert name = "insert gland" diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm index 24b02aea489..219ae4b6e54 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm @@ -49,15 +49,12 @@ set_droppoint_action.target = console set_droppoint_action.Grant(user) -/obj/machinery/computer/camera_advanced/abductor/proc/IsAbductor(mob/living/carbon/human/H) - return H.get_species() == "Abductor" - /obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(mob/living/carbon/human/H) if(H.mind && H.mind.abductor) return H.mind.abductor.scientist /obj/machinery/computer/camera_advanced/abductor/attack_hand(mob/user) - if(!iscarbon(user) || !IsAbductor(user)) + if(!isabductor(user)) return return ..() diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index 3922b80a9e5..3a93f8abc75 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -11,21 +11,6 @@ abductor_equipment.Remove(src) return ..() -/obj/machinery/abductor/proc/IsAbductor(mob/living/carbon/human/H) - return H.get_species() == "Abductor" - -/obj/machinery/abductor/proc/IsAgent(mob/living/carbon/human/H) - if(H.get_species() == "Abductor") - if(H.mind && H.mind.abductor) - return H.mind.abductor.agent - return 0 - -/obj/machinery/abductor/proc/IsScientist(mob/living/carbon/human/H) - if(H.get_species() == "Abductor") - if(H.mind && H.mind.abductor) - return H.mind.abductor.scientist - return 0 - //Console /obj/machinery/abductor/console @@ -33,8 +18,8 @@ desc = "Ship command center." icon = 'icons/obj/abductor.dmi' icon_state = "console" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/obj/item/device/abductor/gizmo/gizmo var/obj/item/clothing/suit/armor/abductor/vest/vest var/obj/machinery/abductor/experiment/experiment @@ -49,7 +34,7 @@ /obj/machinery/abductor/console/attack_hand(mob/user) if(..()) return - if(!IsAbductor(user)) + if(!isabductor(user)) to_chat(user, "You start mashing alien buttons at random!") if(do_after(user, 100, target = src)) TeleporterSend() @@ -60,10 +45,13 @@ if(experiment != null) var/points = experiment.points + var/credits = experiment.credits dat += "Collected Samples : [points]
" + dat += "Gear Credits: [credits]
" dat += "Transfer data in exchange for supplies:
" dat += "Advanced Baton
" dat += "Agent Helmet
" + dat += "Agent Vest
" dat += "Radio Silencer
" dat += "Science Tool
" else @@ -92,13 +80,13 @@ dat+="
" dat += "Select Agent Vest Disguise
" + dat += "[vest.flags & NODROP ? "Unlock" : "Lock"] Vest
" else dat += "NO AGENT VEST DETECTED" var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() - return /obj/machinery/abductor/console/Topic(href, href_list) if(..()) @@ -111,6 +99,8 @@ TeleporterRetrieve() else if(href_list["flip_vest"]) FlipVest() + else if(href_list["toggle_vest"]) + toggle_vest() else if(href_list["select_disguise"]) SelectDisguise() else if(href_list["dispense"]) @@ -123,37 +113,28 @@ Dispense(/obj/item/device/abductor/silencer) if("tool") Dispense(/obj/item/device/abductor/gizmo) - src.updateUsrDialog() + if("vest") + Dispense(/obj/item/clothing/suit/armor/abductor/vest) + updateUsrDialog() /obj/machinery/abductor/console/proc/TeleporterRetrieve() if(gizmo!=null && pad!=null && gizmo.marked) pad.Retrieve(gizmo.marked) - return /obj/machinery/abductor/console/proc/TeleporterSend() if(pad!=null) pad.Send() - return /obj/machinery/abductor/console/proc/FlipVest() if(vest!=null) vest.flip_mode() - return -/obj/machinery/abductor/console/proc/SelectDisguise(remote=0) - var/list/entries = list() - var/tempname - var/datum/icon_snapshot/temp - for(var/i = 1; i <= disguises.len; i++) - temp = disguises[i] - tempname = temp.name - entries["[tempname]"] = disguises[i] - var/entry_name = input( "Choose Disguise", "Disguise") in entries - var/datum/icon_snapshot/chosen = entries[entry_name] +/obj/machinery/abductor/console/proc/SelectDisguise(remote = 0) + var/entry_name = input( "Choose Disguise", "Disguise") as null|anything in disguises + var/datum/icon_snapshot/chosen = disguises[entry_name] if(chosen && (remote || in_range(usr,src))) vest.SetDisguise(chosen) - return /obj/machinery/abductor/console/proc/SetDroppoint(turf/location,user) if(!istype(location)) @@ -188,13 +169,11 @@ entry.icon = target.icon entry.icon_state = target.icon_state entry.overlays = target.get_overlays_copy(list(L_HAND_LAYER,R_HAND_LAYER)) - for(var/i=1,i<=disguises.len,i++) - var/datum/icon_snapshot/temp = disguises[i] - if(temp.name == entry.name) - disguises[i] = entry - return - disguises.Add(entry) - return + //Update old disguise instead of adding new one + if(disguises[entry.name]) + disguises[entry.name] = entry + return + disguises[entry.name] = entry /obj/machinery/abductor/console/attackby(obj/O, mob/user, params) if(istype(O, /obj/item/device/abductor/gizmo)) @@ -205,13 +184,16 @@ else if(istype(O, /obj/item/clothing/suit/armor/abductor/vest)) var/obj/item/clothing/suit/armor/abductor/vest/V = O to_chat(user, "You link the vest to the console.") + if(istype(vest)) + if(vest.flags & NODROP) + toggle_vest() vest = V else ..() /obj/machinery/abductor/console/proc/Dispense(item,cost=1) - if(experiment && experiment.points >= cost) - experiment.points-=cost + if(experiment && experiment.credits >= cost) + experiment.credits -=cost atom_say("Incoming supply!") if(pad) flick("alien-pad", pad) @@ -220,4 +202,9 @@ new item(src.loc) else atom_say("Insufficent data!") - return + +/obj/machinery/abductor/console/proc/toggle_vest() + vest.flags ^= NODROP + var/mob/M = vest.loc + if(istype(M)) + to_chat(M, "[src] is now [vest.flags & NODROP ? "locked" : "unlocked"].") \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm index 3ddf442286c..2b6103632f5 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm @@ -14,6 +14,7 @@ return rgb(rand(0,255),rand(0,255),rand(0,255)) /obj/machinery/abductor/gland_dispenser/New() + ..() gland_types = subtypesof(/obj/item/organ/internal/heart/gland) gland_types = shuffle(gland_types) gland_colors = new/list(gland_types.len) @@ -25,7 +26,7 @@ /obj/machinery/abductor/gland_dispenser/attack_hand(mob/user) if(..()) return - if(!IsAbductor(user)) + if(!isabductor(user)) return user.set_machine(src) var/box_css = {" @@ -66,6 +67,8 @@ for(var/i=1,i<=gland_colors.len,i++) if(gland_types[i] == W.type) amounts[i]++ + else + ..() /obj/machinery/abductor/gland_dispenser/Topic(href, href_list) if(..()) @@ -74,7 +77,7 @@ if(href_list["dispense"]) Dispense(text2num(href_list["dispense"])) - src.updateUsrDialog() + updateUsrDialog() /obj/machinery/abductor/gland_dispenser/proc/Dispense(count) if(amounts[count]>0) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index ba294efc500..44b2a431c7b 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -6,6 +6,7 @@ anchored = 1 density = 1 var/points = 0 + var/credits = 0 var/list/history = list() var/list/abductee_minds = list() var/flash = " - || - " @@ -19,10 +20,10 @@ /obj/machinery/abductor/experiment/MouseDrop_T(mob/living/carbon/human/target, mob/user) if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target)) return - if(IsAbductor(target)) + if(isabductor(target)) return if(occupant) - to_chat(user, "\The [src] is already occupied.") + to_chat(user, "[src] is already occupied.") return //occupied if(target.buckled) return @@ -155,6 +156,7 @@ SendBack(H) playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) points += point_reward + credits += point_reward return "Experiment successful! [point_reward] new data-points collected." else playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 1) @@ -183,7 +185,7 @@ var/obj/item/weapon/grab/grabbed = G if(!ishuman(grabbed.affecting)) return - if(IsAbductor(grabbed.affecting)) + if(isabductor(grabbed.affecting)) return if(occupant) to_chat(user, "The [src] is already occupied!") diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm index 285b097d06a..f0ceac0d6ce 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/pad.dm @@ -17,6 +17,8 @@ target.forceMove(teleport_target) spawn(0) anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir) + to_chat(target, "The instability of the warp leaves you disoriented!") + target.Stun(3) /obj/machinery/abductor/pad/proc/Retrieve(mob/living/target) flick("alien-pad", src) diff --git a/code/game/objects/items/weapons/implants/implant_abductor.dm b/code/game/objects/items/weapons/implants/implant_abductor.dm new file mode 100644 index 00000000000..6876b6d1acb --- /dev/null +++ b/code/game/objects/items/weapons/implants/implant_abductor.dm @@ -0,0 +1,45 @@ +/obj/item/weapon/implant/abductor + name = "recall implant" + desc = "Returns you to the mothership." + icon = 'icons/obj/abductor.dmi' + icon_state = "implant" + activated = 1 + origin_tech = "materials=2;biotech=7;magnets=4;bluespace=4;abductor=5" + var/obj/machinery/abductor/pad/home + var/cooldown = 30 + +/obj/item/weapon/implant/abductor/activate() + if(cooldown == initial(cooldown)) + home.Retrieve(imp_in,1) + cooldown = 0 + processing_objects.Add(src) + else + to_chat(imp_in, "You must wait [30 - cooldown] seconds to use [src] again!") + +/obj/item/weapon/implant/abductor/process() + if(cooldown < initial(cooldown)) + cooldown++ + if(cooldown == initial(cooldown)) + processing_objects.Remove(src) + +/obj/item/weapon/implant/abductor/implant(mob/source, mob/user) + if(..()) + var/obj/machinery/abductor/console/console + if(ishuman(source)) + var/mob/living/carbon/human/H = source + if(H.get_species() == "Abductor") + console = get_team_console(H.mind.abductor.team) + home = console.pad + + if(!home) + console = get_team_console(pick(1, 2, 3, 4)) + home = console.pad + return 1 + +/obj/item/weapon/implant/abductor/proc/get_team_console(var/team) + var/obj/machinery/abductor/console/console + for(var/obj/machinery/abductor/console/c in abductor_equipment) + if(c.team == team) + console = c + break + return console \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/abductor.dm b/code/modules/mob/living/carbon/human/species/abductor.dm index 4690529524f..8e9c61992aa 100644 --- a/code/modules/mob/living/carbon/human/species/abductor.dm +++ b/code/modules/mob/living/carbon/human/species/abductor.dm @@ -18,7 +18,7 @@ "eyes" = /obj/item/organ/internal/eyes/abductor //3 darksight. ) - flags = HAS_LIPS | NO_BLOOD | NO_BREATHE + flags = HAS_LIPS | NO_BLOOD | NO_BREATHE | NOGUNS oxy_mod = 0 @@ -27,11 +27,14 @@ dietflags = DIET_OMNI reagent_tag = PROCESS_ORG blood_color = "#FF5AFF" + female_scream_sound = 'sound/goonstation/voice/male_scream.ogg' + female_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg') + female_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg' //Abductors always scream like guys -/datum/species/abductor/can_understand(var/mob/other) //Abductors can understand everyone, but they can only speak over their mindlink to another team-member +/datum/species/abductor/can_understand(mob/other) //Abductors can understand everyone, but they can only speak over their mindlink to another team-member return 1 -/datum/species/abductor/handle_post_spawn(var/mob/living/carbon/human/H) +/datum/species/abductor/handle_post_spawn(mob/living/carbon/human/H) H.gender = NEUTER if(H.mind) H.mind.abductor = new /datum/abductor diff --git a/paradise.dme b/paradise.dme index 00c60a948e1..2ca55f348ed 100644 --- a/paradise.dme +++ b/paradise.dme @@ -846,6 +846,7 @@ #include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" #include "code\game\objects\items\weapons\grenades\syndieminibomb.dm" #include "code\game\objects\items\weapons\implants\implant.dm" +#include "code\game\objects\items\weapons\implants\implant_abductor.dm" #include "code\game\objects\items\weapons\implants\implant_chem.dm" #include "code\game\objects\items\weapons\implants\implant_death_alarm.dm" #include "code\game\objects\items\weapons\implants\implant_explosive.dm" From a44d4bb8d30e59a15c250e4ef436c3c7a45b2396 Mon Sep 17 00:00:00 2001 From: Warior4356 Date: Sat, 25 Mar 2017 17:09:17 -0700 Subject: [PATCH 15/81] making backup --- _maps/map_files/templates/{vr => }/lobby.dmm | 0 _maps/map_files/vr/lobby.dmm | 3 +++ code/datums/vr/level.dm | 6 ++---- code/game/machinery/computer/vr_control.dm | 13 +++++++++---- 4 files changed, 14 insertions(+), 8 deletions(-) rename _maps/map_files/templates/{vr => }/lobby.dmm (100%) create mode 100644 _maps/map_files/vr/lobby.dmm diff --git a/_maps/map_files/templates/vr/lobby.dmm b/_maps/map_files/templates/lobby.dmm similarity index 100% rename from _maps/map_files/templates/vr/lobby.dmm rename to _maps/map_files/templates/lobby.dmm diff --git a/_maps/map_files/vr/lobby.dmm b/_maps/map_files/vr/lobby.dmm new file mode 100644 index 00000000000..82c5a7d4de7 --- /dev/null +++ b/_maps/map_files/vr/lobby.dmm @@ -0,0 +1,3 @@ +"a" = () + +(1,1,1, 10,10,1) = {""} diff --git a/code/datums/vr/level.dm b/code/datums/vr/level.dm index c65ea29c5c8..0966f8ff33d 100644 --- a/code/datums/vr/level.dm +++ b/code/datums/vr/level.dm @@ -1,12 +1,10 @@ //The bigger ones lag like hell if there is more than one on a z-level, so cost 2 for them /datum/map_template/vr/level - prefix = "_maps/map_files/templates/vr/" - cost = 1 + prefix = "_maps/map_files/vr/" /datum/map_template/vr/level/lobby id = "lobby" suffix = "lobby.dmm" - name = "Biological Storage Facility" + name = "Virtual Hub Facility" description = "This is the lobby. The hub for all things VR." - cost = 2 diff --git a/code/game/machinery/computer/vr_control.dm b/code/game/machinery/computer/vr_control.dm index 0f61d65f578..9cb47563ae5 100644 --- a/code/game/machinery/computer/vr_control.dm +++ b/code/game/machinery/computer/vr_control.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/vr_control - name = "crew monitoring computer" - desc = "Used to monitor active health sensors built into most of the crew's uniforms." + name = "VR console" + desc = "A list and control panel for all virtual servers." icon_screen = "comm_logs" light_color = LIGHT_COLOR_DARKGREEN @@ -31,5 +31,10 @@ /obj/machinery/computer/vr_control/interact(mob/user) //crew_monitor.ui_interact(user) -/obj/machinery/computer/vr_control/proc/loadlevel(template) - var/datum/space_chunk/C = zlev_manager.allocate_space(template.width, template.height) +/obj/machinery/computer/vr_control/proc/loadlevel(var/datum/map_template/template) + //var/map = input(usr, "Choose a Map Template to place at your CURRENT LOCATION","Place Map Template") as null|anything in map_templates + //if(!map) + // return + template = "_maps/map_files/templates/vr/lobby.dmm" + var/datum/space_chunk/C = space_manager.allocate_space(template.width, template.height) + template.load(C, centered = FALSE) \ No newline at end of file From 2f54ed86a2757de09a1467b7f18bad7aaee92cea Mon Sep 17 00:00:00 2001 From: uraniummeltdown Date: Fri, 31 Mar 2017 16:13:25 +0400 Subject: [PATCH 16/81] airlock assemblies can be heatproofed by adding rglass during construction, blast/pod doors + shutters have heat_proof = 1 --- code/game/machinery/doors/airlock.dm | 2 +- code/game/machinery/doors/door.dm | 4 ++-- code/game/machinery/doors/poddoor.dm | 3 ++- code/game/objects/structures/door_assembly.dm | 18 ++++++++++++++---- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ecc76137b48..975827a97ff 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -189,7 +189,6 @@ opacity = 0 assembly_type = /obj/structure/door_assembly/door_assembly_research glass = 1 - heat_proof = 1 /obj/machinery/door/airlock/glass_mining name = "Maintenance Hatch" @@ -848,6 +847,7 @@ About the new airlock wires panel: to_chat(user, "\blue You removed the airlock electronics!") var/obj/structure/door_assembly/da = new assembly_type(loc) + da.heat_proof_finished = heat_proof //tracks whether there's rglass in da.anchored = 1 if(mineral) da.glass = mineral diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 2a42b71e7f2..d6b295e1811 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -23,7 +23,7 @@ var/normalspeed = 1 var/auto_close_time = 150 var/auto_close_time_dangerous = 5 - var/heat_proof = 0 // For glass airlocks/opacity firedoors + var/heat_proof = 0 // For rglass-windowed airlocks and firedoors var/emergency = 0 var/air_properties_vary_with_direction = 0 var/block_air_zones = 1 //If set, air zones cannot merge across the door even when it is opened. @@ -310,7 +310,7 @@ if(!glass && cameranet) cameranet.updateVisibility(src, 0) -/obj/machinery/door/BlockSuperconductivity() +/obj/machinery/door/BlockSuperconductivity() // All non-glass airlocks block heat, this is intended. if(opacity || heat_proof) return 1 return 0 diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index dc156972f6e..1f83484ae70 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -3,8 +3,9 @@ desc = "That looks like it doesn't open easily." icon = 'icons/obj/doors/rapid_pdoor.dmi' icon_state = "pdoor1" - var/id_tag = 1.0 explosion_block = 3 + heat_proof = 1 + var/id_tag = 1.0 var/protected = 1 /obj/machinery/door/poddoor/preopen diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index c2c5fc083fa..7fe5e319c6f 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -13,6 +13,7 @@ var/glass_type = "/glass" var/glass = 0 // 0 = glass can be installed. -1 = glass can't be installed. 1 = glass is already installed. Text = mineral plating is installed instead. var/created_name = null + var/heat_proof_finished = 0 //whether to heat-proof the finished airlock /obj/structure/door_assembly/New() update_state() @@ -172,7 +173,11 @@ if(do_after(user, 40 * WT.toolspeed, target = src)) if(!src || !WT.isOn()) return to_chat(user, "\blue You welded the glass panel out!") - new /obj/item/stack/sheet/rglass(src.loc) + if(heat_proof_finished) + new /obj/item/stack/sheet/rglass(get_turf(src)) + heat_proof_finished = 0 + else + new /obj/item/stack/sheet/glass(get_turf(src)) glass = 0 else if(!anchored) user.visible_message("[user] disassembles the airlock assembly.", "You start to disassemble the airlock assembly.") @@ -253,11 +258,15 @@ var/obj/item/stack/sheet/S = W if(S) if(S.amount>=1) - if(istype(S, /obj/item/stack/sheet/rglass)) + if(istype(S, /obj/item/stack/sheet/rglass) || istype(S, /obj/item/stack/sheet/glass)) playsound(src.loc, S.usesound, 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") if(do_after(user, 40 * S.toolspeed, target = src)) - to_chat(user, "\blue You installed reinforced glass windows into the airlock assembly!") + if(S.type == /obj/item/stack/sheet/rglass) + to_chat(user, "You install reinforced glass windows into the airlock assembly.") + heat_proof_finished = 1 //reinforced glass makes the airlock heat-proof + else + to_chat(user, "You install regular glass windows into the airlock assembly.") S.use(1) glass = 1 else if(istype(S, /obj/item/stack/sheet/mineral) && S.sheettype) @@ -288,6 +297,7 @@ door.setDir(dir) door.assembly_type = type door.electronics = src.electronics + door.heat_proof = heat_proof_finished if(src.electronics.one_access) door.req_access = null door.req_one_access = src.electronics.conf_access @@ -314,4 +324,4 @@ name = "Wired " if(2) name = "Near Finished " - name += "[glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly" \ No newline at end of file + name += "[heat_proof_finished ? "Heat-Proofed " : ""][glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly" From 35ab7ada94e864ab9246caff9527cf30bf09c692 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 1 Apr 2017 20:14:29 -0400 Subject: [PATCH 17/81] Refactors Cell Energy Values --- code/_globalvars/station.dm | 2 +- code/game/machinery/cell_charger.dm | 6 +- code/game/machinery/recharger.dm | 175 ++++++++++-------- code/game/machinery/rechargestation.dm | 5 +- code/game/objects/items/devices/powersink.dm | 8 +- .../objects/items/weapons/melee/energy.dm | 2 +- .../game/objects/items/weapons/power_cells.dm | 55 +++--- code/game/objects/items/weapons/stunbaton.dm | 9 +- code/modules/clothing/gloves/miscellaneous.dm | 2 +- .../mob/living/silicon/robot/robot_modules.dm | 2 +- code/modules/power/apc.dm | 6 +- code/modules/power/cell.dm | 16 +- code/modules/projectiles/guns/energy.dm | 8 +- .../guns/energy/kinetic_accelerator.dm | 6 +- .../projectiles/guns/energy/special.dm | 4 +- code/modules/telesci/telepad.dm | 2 +- icons/obj/stationobjs.dmi | Bin 77531 -> 78148 bytes 17 files changed, 156 insertions(+), 152 deletions(-) diff --git a/code/_globalvars/station.dm b/code/_globalvars/station.dm index f08afe5efb9..6d2578e5b88 100644 --- a/code/_globalvars/station.dm +++ b/code/_globalvars/station.dm @@ -1,7 +1,7 @@ var/global/datum/datacore/data_core = null var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) -var/CHARGELEVEL = 0.0005 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) +var/CHARGELEVEL = 0.001 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) var/list/powernets = list() var/list/deferred_powernet_rebuilds = list() diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index a2307f7bea4..71c2211b6be 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -16,7 +16,7 @@ if(charging && !(stat & (BROKEN|NOPOWER)) ) - var/newlevel = round(charging.percent() * 4.0 / 99) + var/newlevel = round(charging.percent() * 4 / 100) // to_chat(world, "nl: [newlevel]") if(chargelevel != newlevel) @@ -91,7 +91,7 @@ if(!charging || (stat & (BROKEN|NOPOWER)) || !anchored) return - use_power(2000) //this used to use CELLRATE, but CELLRATE is fucking awful. feel free to fix this properly! - charging.give(1750) //inefficiency. + use_power(200) //this used to use CELLRATE, but CELLRATE is fucking awful. feel free to fix this properly! + charging.give(175) //inefficiency. updateicon() diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index cbf20e838f3..94513623cfb 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -1,70 +1,78 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/machinery/recharger name = "recharger" icon = 'icons/obj/stationobjs.dmi' icon_state = "recharger0" + desc = "A charging dock for energy based weaponry." anchored = 1 use_power = 1 - idle_power_usage = 40 - active_power_usage = 2500 + idle_power_usage = 4 + active_power_usage = 250 var/obj/item/charging = null + var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/modular_computer, /obj/item/weapon/rcs) + var/icon_state_off = "rechargeroff" var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" -/obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob, params) - if(istype(user,/mob/living/silicon)) - return - - if(!user.canUnEquip(G, 0)) - to_chat(user, "[G] is stuck to your hand, you can't put it in [src]!") - return - - if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton) || istype(G,/obj/item/device/laptop) || istype(G, /obj/item/weapon/rcs)) +/obj/machinery/recharger/attackby(obj/item/weapon/G, mob/user, params) + if(iswrench(G)) if(charging) - return - - // Checks to make sure he's not in space doing it, and that the area got proper power. - var/area/a = get_area(src) - if(!isarea(a)) - to_chat(user, "\red The [name] blinks red as you try to insert the item!") - return - if(a.power_equip == 0 && a.requires_power) - to_chat(user, "\red The [name] blinks red as you try to insert the item!") - return - - if(istype(G, /obj/item/weapon/gun/energy)) - var/obj/item/weapon/gun/energy/E = G - if(!E.can_charge) - to_chat(user, "Your gun has no external power connector.") - return - - if(istype(G, /obj/item/device/laptop)) - var/obj/item/device/laptop/L = G - if(!L.stored_computer.battery) - to_chat(user, "There's no battery in it!") - return - - user.drop_item() - G.loc = src - charging = G - use_power = 2 - update_icon() - else if(istype(G, /obj/item/weapon/wrench)) - if(charging) - to_chat(user, "\red Remove the weapon first!") + to_chat(user, "Remove the charging item first!") return anchored = !anchored - to_chat(user, "You [anchored ? "attached" : "detached"] the recharger.") + power_change() + to_chat(user, "You [anchored ? "attached" : "detached"] [src].") playsound(loc, G.usesound, 75, 1) + return + + var/allowed = is_type_in_list(G, allowed_devices) + + if(allowed) + if(anchored) + if(charging) + return 1 + + //Checks to make sure he's not in space doing it, and that the area got proper power. + var/area/a = get_area(src) + if(!isarea(a) || a.power_equip == 0) + to_chat(user, "[src] blinks red as you try to insert [G].") + return 1 + + if(istype(G, /obj/item/weapon/gun/energy)) + var/obj/item/weapon/gun/energy/E = G + if(!E.can_charge) + to_chat(user, "Your gun has no external power connector.") + return 1 + + if(!user.drop_item()) + return 1 + G.forceMove(src) + charging = G + use_power = 2 + update_icon() + else + to_chat(user, "[src] isn't connected to anything!") + return 1 + else + ..() + +/obj/machinery/recharger/attack_hand(mob/user) + if(issilicon(user)) + return -/obj/machinery/recharger/attack_hand(mob/user as mob) add_fingerprint(user) - if(charging) charging.update_icon() - charging.loc = loc + charging.forceMove(loc) + user.put_in_hands(charging) + charging = null + use_power = 1 + update_icon() + +/obj/machinery/recharger/attack_tk(mob/user) + if(charging) + charging.update_icon() + charging.forceMove(loc) charging = null use_power = 1 update_icon() @@ -73,43 +81,42 @@ if(stat & (NOPOWER|BROKEN) || !anchored) return + var/using_power = 0 if(charging) if(istype(charging, /obj/item/weapon/gun/energy)) var/obj/item/weapon/gun/energy/E = charging if(E.power_supply.charge < E.power_supply.maxcharge) - E.power_supply.give(1000) - icon_state = icon_state_charging - use_power(2500) - else - icon_state = icon_state_charged - return + E.power_supply.give(E.power_supply.chargerate) + use_power(250) + using_power = 1 + + if(istype(charging, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = charging - if(B.bcell && B.bcell.charge < B.bcell.maxcharge) - B.bcell.charge += 1750 - icon_state = icon_state_charging - use_power(2000) - else - icon_state = icon_state_charged - return - if(istype(charging, /obj/item/device/laptop)) - var/obj/item/device/laptop/L = charging - if(L.stored_computer.battery.charge < L.stored_computer.battery.maxcharge) - L.stored_computer.battery.give(1000) - icon_state = icon_state_charging - use_power(2500) - else - icon_state = icon_state_charged + if(B.bcell) + if(B.bcell.give(B.bcell.chargerate)) + use_power(200) + using_power = 1 + + if(istype(charging, /obj/item/device/modular_computer)) + var/obj/item/device/modular_computer/C = charging + var/obj/item/weapon/computer_hardware/battery/battery_module = C.all_components[MC_CELL] + if(battery_module) + var/obj/item/weapon/computer_hardware/battery/B = battery_module + if(B.battery) + if(B.battery.charge < B.battery.maxcharge) + B.battery.give(B.battery.chargerate) + use_power(200) + using_power = 1 + if(istype(charging, /obj/item/weapon/rcs)) var/obj/item/weapon/rcs/R = charging - if(R.rcell && R.rcell.charge < R.rcell.maxcharge) - R.rcell.charge += 1750 - icon_state = icon_state_charging - use_power(2000) - else - icon_state = icon_state_charged - return + if(R.rcell) + if(R.rcell.give(R.rcell.chargerate)) + use_power(200) + using_power = 1 + update_icon(using_power) /obj/machinery/recharger/emp_act(severity) if(stat & (NOPOWER|BROKEN) || !anchored) @@ -127,17 +134,23 @@ B.bcell.charge = 0 ..(severity) -/obj/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. +/obj/machinery/recharger/update_icon(using_power = 0) //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. + if(stat & (NOPOWER|BROKEN) || !anchored) + icon_state = icon_state_off + return if(charging) - icon_state = icon_state_charging - else - icon_state = icon_state_idle + if(using_power) + icon_state = icon_state_charging + else + icon_state = icon_state_charged + return + icon_state = icon_state_idle // Atlantis: No need for that copy-pasta code, just use var to store icon_states instead. obj/machinery/recharger/wallcharger name = "wall recharger" - icon = 'icons/obj/stationobjs.dmi' icon_state = "wrecharger0" + icon_state_off = "wrechargeroff" icon_state_idle = "wrecharger0" icon_state_charging = "wrecharger1" icon_state_charged = "wrecharger2" diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 085fc9a9aa1..f0a635c73a8 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -159,10 +159,7 @@ R.adjustFireLoss(-(repairs)) R.updatehealth() if(R.cell) - if(R.cell.charge >= R.cell.maxcharge) - R.cell.charge = R.cell.maxcharge - else - R.cell.charge = min(R.cell.charge + recharge_speed, R.cell.maxcharge) + R.cell.charge = min(R.cell.charge + recharge_speed, R.cell.maxcharge) else if(istype(occupant, /mob/living/carbon/human)) var/mob/living/carbon/human/H = occupant if(H.get_int_organ(/obj/item/organ/internal/cell) && H.nutrition < 450) diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 25e975fa920..ec233e0576b 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -13,7 +13,7 @@ materials = list(MAT_METAL=750) origin_tech = "powerstorage=3;syndicate=5" var/drain_rate = 1600000 // amount of power to drain per tick - var/apc_drain_rate = 5000 // Max. amount drained from single APC. In Watts. + var/apc_drain_rate = 50 // Max. amount drained from single APC. In Watts. var/dissipation_rate = 20000 // Passive dissipation of drained power. In Watts. var/power_drained = 0 // Amount of power drained. var/max_power = 1e10 // Detonation point. @@ -110,10 +110,8 @@ if(istype(T.master, /obj/machinery/power/apc)) var/obj/machinery/power/apc/A = T.master if(A.operating && A.cell) - var/cur_charge = A.cell.charge / CELLRATE - var/drain_val = min(apc_drain_rate, cur_charge) - A.cell.use(drain_val * CELLRATE) - drained += drain_val + A.cell.use(apc_drain_rate) + drained += apc_drain_rate power_drained += drained return 1 diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index b40f81bef60..afc5dbd93ad 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -109,7 +109,7 @@ if(R.cell) var/obj/item/weapon/stock_parts/cell/C = R.cell if(active && !(C.use(hitcost))) - attack_self() + attack_self(R) to_chat(R, "It's out of charge!") return ..() diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 005ef313a4f..de5d788a9f3 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -5,18 +5,17 @@ icon_state = "cell" item_state = "cell" origin_tech = "powerstorage=1" - force = 5.0 - throwforce = 5.0 - throw_speed = 3 + force = 5 + throwforce = 5 + throw_speed = 2 throw_range = 5 - w_class = 2 + w_class = WEIGHT_CLASS_SMALL var/charge = 0 // note %age conveted to actual charge in New - var/maxcharge = 10000 - rating = 1 + var/maxcharge = 1000 materials = list(MAT_METAL=700, MAT_GLASS=50) var/rigged = 0 // true if rigged to explode + var/chargerate = 100 //how much power is given every tick in a recharger var/minor_fault = 0 //If not 100% reliable, it will build up faults. - var/chargerate = 1000 //how much power is given every tick in a recharger var/self_recharge = 0 //does it self recharge, over time, or not? var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it. @@ -62,10 +61,9 @@ /obj/item/weapon/stock_parts/cell/crap name = "\improper Nanotrasen brand rechargable AA battery" desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT - origin_tech = null - maxcharge = 5000 - rating = 2 + maxcharge = 500 materials = list(MAT_GLASS=40) + rating = 2 /obj/item/weapon/stock_parts/cell/crap/empty/New() ..() @@ -74,9 +72,9 @@ /obj/item/weapon/stock_parts/cell/secborg name = "\improper Security borg rechargable D battery" origin_tech = null - maxcharge = 6000 //6000 max charge / 1000 charge per shot = six shots - rating = 2.5 + maxcharge = 600 //600 max charge / 100 charge per shot = six shots materials = list(MAT_GLASS=40) + rating = 2.5 /obj/item/weapon/stock_parts/cell/secborg/empty/New() ..() @@ -86,11 +84,18 @@ name = "high-capacity power cell" origin_tech = "powerstorage=2" icon_state = "hcell" - maxcharge = 15000 - rating = 3 + maxcharge = 10000 materials = list(MAT_GLASS=60) + rating = 3 chargerate = 1500 +/obj/item/weapon/stock_parts/cell/high/plus + name = "high-capacity power cell+" + desc = "Where did these come from?" + icon_state = "h+cell" + maxcharge = 15000 + chargerate = 2250 + /obj/item/weapon/stock_parts/cell/high/empty/New() ..() charge = 0 @@ -100,7 +105,7 @@ origin_tech = "powerstorage=5" icon_state = "scell" maxcharge = 20000 - materials = list(MAT_GLASS=70) + materials = list(MAT_GLASS=300) rating = 4 chargerate = 2000 @@ -113,8 +118,8 @@ origin_tech = "powerstorage=6" icon_state = "hpcell" maxcharge = 30000 + materials = list(MAT_GLASS=400) rating = 5 - materials = list(MAT_GLASS=80) chargerate = 3000 /obj/item/weapon/stock_parts/cell/hyper/empty/New() @@ -126,7 +131,7 @@ origin_tech = "powerstorage=7" icon_state = "bscell" maxcharge = 40000 - materials = list(MAT_GLASS=80) + materials = list(MAT_GLASS=600) rating = 6 chargerate = 4000 @@ -139,8 +144,8 @@ icon_state = "icell" origin_tech = null maxcharge = 30000 + materials = list(MAT_GLASS=1000) rating = 6 - materials = list(MAT_GLASS=80) chargerate = 30000 /obj/item/weapon/stock_parts/cell/infinite/use() @@ -153,7 +158,7 @@ icon_state = "potato" origin_tech = "powerstorage=1;biotech=1" charge = 100 - maxcharge = 3000 + maxcharge = 300 materials = list() rating = 1 minor_fault = 1 @@ -170,17 +175,17 @@ /obj/item/weapon/stock_parts/cell/pulse //200 pulse shots name = "pulse rifle power cell" - maxcharge = 400000 + maxcharge = 40000 rating = 3 chargerate = 1500 -/obj/item/weapon/stock_parts/cell/pulse/carbine +/obj/item/weapon/stock_parts/cell/pulse/carbine //25 pulse shots name = "pulse carbine power cell" - maxcharge = 40000 + maxcharge = 5000 -/obj/item/weapon/stock_parts/cell/pulse/pistol +/obj/item/weapon/stock_parts/cell/pulse/pistol //10 pulse shots name = "pulse pistol power cell" - maxcharge = 16000 + maxcharge = 2000 /obj/item/weapon/stock_parts/cell/ninja name = "spider-clan power cell" @@ -192,7 +197,7 @@ /obj/item/weapon/stock_parts/cell/emproof name = "\improper EMP-proof cell" desc = "An EMP-proof cell." - maxcharge = 5000 + maxcharge = 500 rating = 2 /obj/item/weapon/stock_parts/cell/emproof/empty/New() diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index f2bd9cafedf..ec7e7550a5c 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -12,7 +12,7 @@ var/stunforce = 7 var/status = 0 var/obj/item/weapon/stock_parts/cell/high/bcell = null - var/hitcost = 1500 + var/hitcost = 1000 /obj/item/weapon/melee/baton/suicide_act(mob/user) user.visible_message("[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") @@ -184,11 +184,6 @@ return 1 ..() - -//secborg stun baton module -/obj/item/weapon/melee/baton/loaded/robot - hitcost = 1000 - //Makeshift stun baton. Replacement for stun gloves. /obj/item/weapon/melee/baton/cattleprod name = "stunprod" @@ -199,7 +194,7 @@ force = 3 throwforce = 5 stunforce = 5 - hitcost = 3750 + hitcost = 2000 slot_flags = SLOT_BACK var/obj/item/device/assembly/igniter/sparkler = 0 diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index aefb7188f5c..effcc3da495 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -63,7 +63,7 @@ desc = "Horrendous and awful. It smells like cancer. The fact it has wires attached to it is incidental." var/obj/item/weapon/stock_parts/cell/cell = null var/stun_strength = 5 - var/stun_cost = 3750 + var/stun_cost = 2000 /obj/item/clothing/gloves/color/yellow/stun/New() ..() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 55c3a8fba0f..5028bd19768 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -222,7 +222,7 @@ /obj/item/weapon/robot_module/security/New() ..() modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src) - modules += new /obj/item/weapon/melee/baton/loaded/robot(src) + modules += new /obj/item/weapon/melee/baton/loaded(src) modules += new /obj/item/weapon/gun/energy/disabler/cyborg(src) modules += new /obj/item/taperoll/police(src) modules += new /obj/item/clothing/mask/gas/sechailer/cyborg(src) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 0c22b76cd2e..0f789d5ca7e 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -90,7 +90,6 @@ var/update_overlay = -1 var/global/status_overlays = 0 var/updating_icon = 0 - var/standard_max_charge var/datum/wires/apc/wires = null //var/debug = 0 var/global/list/status_overlays_lock @@ -142,9 +141,6 @@ apcs += src apcs = sortAtom(apcs) wires = new(src) - var/tmp/obj/item/weapon/stock_parts/cell/tmp_cell = new - standard_max_charge = tmp_cell.maxcharge - qdel(tmp_cell) // offset 24 pixels in direction of dir // this allows the APC to be embedded in a wall, yet still inside an area @@ -201,7 +197,7 @@ if(cell_type) src.cell = new/obj/item/weapon/stock_parts/cell(src) cell.maxcharge = cell_type // cell_type is maximum charge (old default was 1000 or 2500 (values one and two respectively) - cell.charge = start_charge * cell.maxcharge / 100.0 // (convert percentage to actual value) + cell.charge = start_charge * cell.maxcharge / 100 // (convert percentage to actual value) var/area/A = get_area(src) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index f88dce25b51..562fd425274 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -5,24 +5,25 @@ return 100.0*charge/maxcharge // use power from a cell -/obj/item/weapon/stock_parts/cell/proc/use(var/amount) +/obj/item/weapon/stock_parts/cell/proc/use(amount) if(rigged && amount > 0) explode() return 0 - - if(charge < amount) return 0 + if(charge < amount) + return 0 charge = (charge - amount) return 1 // recharge the cell -/obj/item/weapon/stock_parts/cell/proc/give(var/amount) +/obj/item/weapon/stock_parts/cell/proc/give(amount) if(rigged && amount > 0) explode() return 0 - - if(maxcharge < amount) return 0 + if(maxcharge < amount) + return 0 var/power_used = min(maxcharge-charge,amount) - if(crit_fail) return 0 + if(crit_fail) + return 0 if(!prob(reliability)) minor_fault++ if(prob(minor_fault)) @@ -31,7 +32,6 @@ charge += power_used return power_used - /obj/item/weapon/stock_parts/cell/examine(mob/user) if(..(user, 1)) if(maxcharge <= 2500) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 4e5bbce386c..7b848dca5c7 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -34,7 +34,7 @@ if(selfcharge) processing_objects.Add(src) update_icon() - + /obj/item/weapon/gun/energy/proc/update_ammo_types() var/obj/item/ammo_casing/energy/shot for(var/i = 1, i <= ammo_type.len, i++) @@ -61,9 +61,9 @@ var/obj/item/ammo_casing/energy/E = ammo_type[select] if(use_external_power) var/obj/item/weapon/stock_parts/cell/external = get_external_power_supply() - if(!external || !external.use((E.e_cost)/10)) //Take power from the borg... + if(!external || !external.use(E.e_cost)) //Take power from the borg... return //Note, uses /10 because of shitty mods to the cell system - power_supply.give(1000) //... to recharge the shot + power_supply.give(100) //... to recharge the shot update_icon() /obj/item/weapon/gun/energy/attack_self(mob/living/user as mob) @@ -176,7 +176,7 @@ var/mob/living/silicon/robot/R = loc if(R && R.cell) var/obj/item/ammo_casing/energy/shot = ammo_type[select] //Necessary to find cost of shot - if(R.cell.use(shot.e_cost/10)) //Take power from the borg... //Divided by 10 because cells and charge costs are fucked. + if(R.cell.use(shot.e_cost)) //Take power from the borg... power_supply.give(shot.e_cost) //... to recharge the shot /obj/item/weapon/gun/energy/proc/get_external_power_supply() diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index fb811c19d78..9782c9ca9b3 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -94,7 +94,7 @@ empty() /obj/item/weapon/gun/energy/kinetic_accelerator/proc/empty() - power_supply.use(5000) + power_supply.use(500) update_icon() /obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload() @@ -120,7 +120,7 @@ return /obj/item/weapon/gun/energy/kinetic_accelerator/proc/reload() - power_supply.give(5000) + power_supply.give(500) if(!suppressed) playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) else if(isliving(loc)) @@ -181,7 +181,7 @@ /obj/item/projectile/kinetic/pod range = 4 - + /obj/item/projectile/kinetic/pod/regular damage = 50 pressure_decrease = 0.5 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 3131e49c4f2..96c13f27dc6 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -157,11 +157,11 @@ if(istype(A, /obj/item/stack/sheet/mineral/plasma)) var/obj/item/stack/sheet/S = A S.use(1) - power_supply.give(10000) + power_supply.give(1000) to_chat(user, "You insert [A] in [src], recharging it.") else if(istype(A, /obj/item/weapon/ore/plasma)) qdel(A) - power_supply.give(5000) + power_supply.give(500) to_chat(user, "You insert [A] in [src], recharging it.") else ..() diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index ed330821f06..907aac48996 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -128,7 +128,7 @@ var/rand_y = 0 var/emagged = 0 var/teleporting = 0 - var/chargecost = 1500 + var/chargecost = 1000 /obj/item/weapon/rcs/New() ..() diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 72084b5675b462f2d84d5c40a70f759254fb1949..fd89b23d19d1c47c62c211b9f0b57fe115afb4fa 100755 GIT binary patch delta 39115 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 E0XNO^_5c6? delta 38524 zcmYhi1yoeu_dYzsP|_9+gP0_>u?02ZHJ6-p=y+-uC zc=&E9Kasut+ev>%z}q_|{K-oTshvu-z~C1*fXfeL0nw)0LG0cRDcbUWMQfeC5AM)& zUiUD*Da=gxv}it{0GJY=E~&t@2LT8 zlWQq=BU-F1Oz&jydi@kp?w6ve65aY1W7`3WA&-Xrv`mmnN zPO;Y7@YC>dNu~I`ph4V9>^lVFBh##{TcB>uB#I+9YrCUn}&^p5c^l*v**^>}=E9=hz`r8V$-Ad#VZR z^mBmip?e+8%Ow+7zR4s0!?TuNA3;Ia&gUvNt8Kwv{?($pT`nvxKM$*Sate@A_h<^21Gm4DnM|<3w-EsN!C^(3^OYs+Vu2V)-KYnVht}zq)-F zNIAN0nYyMh5y|%OycG6I)s17jizd_f)r(h6dyaQ&bxAXYj9b>)QntsF@+W_MRgjjZuS)84yTu%E&>z>gCv?O|~Ot6%; zC9cZm8lH(s|Dox#=PJ1I@v?Cun{jy5h!K8ttCqz@Wbn=Di$OwVe4BFCLuLYWkjtJtNW@E zNoAPR5~u3V+x3&eQ!ZER9X8$ON>{TQRx;Eb-Ie2CdkrKC`j3%RlU$!*6I7$7@w3dEPWJY#d+BJPrnL0(ty{OeFeD{ouQBtqK-l5xfMs*grOwVy1!H42 zANjOfVlGB@-6-F_(Jx;tN_}=8%`VBRs-M5F;Bo5-K_tC4ryQJVP2_Rp=VFc{KjHnV1V9s0>Vr9-*Vm}K_9EZ)}$(oeRdXA zoefM~*<2?Vda=4?!R`N_eg> zfhEO=P#U~&DF9aRy0iSvn8N|ffmGhkPRR)HPrrdv!JpjAa|fn)%E9dfk5j-wsiE(C zI7;}`jo&23|I*demj0CBJq$jKa7xJLdi`mD4)tdYn5pB0OjI-_OO%kmiISHMH$j$N za>YL{xUS^I3~B6PoJf2DNxE($BV@LH&CFe|>hH=9Fy;9qO`iIs_X#hZ89$mpYMOJB zJYq)zVU=->M$y@F_3b+S*1iwikAdS^UQdAkH93(*v59AH#-cbAYq-x4W> z#hEFtR6Bp1AruIzx@p|ekawpIDv>J=C$s?s?<*v?wxReu%uwk9UxD!YhkH~uS89ccvD1oQUX461V6oVkxyY*>VtmvDKz{?vfdb zFB+V15|2qn4Xi4Mv=Qm^qtQc}ch`3aq>w3D5`D3&jnT+RRND0_-%|z&^ZDlBPT9uNj~yHDz5Xu>v`U(CwO)imrktid)S+l zFo-Ahc`dZQH%jVTnW%JNL7okzS$NozgGognP7=WJkZ@3b#8-l#ZKOW1G&6%ZRg(%M(l)=GROCb8$>b{7bFn3th%#cu-;z*Qc>G}ypwJtCdRI^kHl7FMH4d+Pybym9 z7Kc1Ol$b2pKGt-~Z);Z<>)0iTOBfzJc+mO7uuaK0#@uda>j9JBw{JHf zTx^O<>`@(?ZCK3VpNR>;E+17|sx1PfJi{)k<4cz%lD-oCM&S3O(Hljk4|>!JppfPw znbP^%*|tf5Pzx5MQNlC+WsoOqHzeO4C9^Zk}F5@@se zEdNW72{RT(m9(}2jQ7`C-tC=j>1#n=Dn!7Zgi!F)t6!p(w}n1Y9NS{&>oVB%Zr-mUc=V^;4N2W`)GvIl4>1yd z9ap{Uvbuj-rr?!NO%fGDug)MXlhth6_^=7-rht95bwuFqr1W8@%FKGNTZHrVrNeF? z3ep2FIxtj*cElxvWr81o&BY z$oH>FixGUX7q!;3-&o#X#*%>^jkp^DN3dI2S*>kvKd`jSD5JrsTU9m90Bk(jSA zkKShDX}>RL zWQPxyoF1F%zqC2rTB!aqfFRsyz-`MYIrbEMk&1ELeIx#DhGe+1Iv`4j9>|>R3;!nY zN{%%V9y);1EG(pgm}$R^>_0s*f4TyAjQE~m6Wo$UC_2htT^t`sq2;cioo=p7VJzZSWqa8$5EKE z`4y4tQz#i1o=5f%+zFWaOF_OVWI~uM2@t5c`vxUq-OG4@@exz?bIWg7O@5EZB9P9Jb)B3$HDk`E$8(=t!HY+?InIT+6 z?GR(8t`!Iog0TNuj97B=m z?j|a;v;V`kUyFHsfRF;K640sbW7(*s)SWIkxSgWGkZ9Bh{Q?oC2g*B`1Pm{nCS+J1 z_T?HwxB*u}67(r|7biK_BJUX`Qofxt)F#1WQU+;?H?p(46NNmwObqE4vH2Jq3kz=} zD#J!bMg}CTY9bGD!U?tob0m-_`le)srzP5g$84d`jt&(h{`vxc&b|c0A<2@?oPEF; zQDaVgZBdc>N3w5rYjUJ{6ZjV|Dz>+iJCPNqvky`C&}!nSnK4wGSeS*kwBc6U-#TaN zo$5uE;jt=W2MH&W%i>NGVd_a$YMY$nNU&zTY0Q!)_btRftS{}&U3zB=u-dKe9%ANB zJTjwL-VS?RDFD7bU*_E<=iDAZm3K+Ud`!bygIgs|Jl$HguWLsykZ^sloUA7KVSrWu zhebx4*lku@BIO~dJ<)HS7bVhU+Rq&1;-+dYuLlag(m7U#B+?9X$+7u!73G9)#$UWH z$dCvrry|vCVJbijZhLI@21^KD@}{O?&1D#%gv?O^Qv?noZmUlxyKmcE@ey}Duu#ar zy)K*R`A#?=rCWo>uM}2KvIone@0WN`2FS8+d6MtL{&@MQ1#qam$qwJXF46NdsVzz? z@Nq<;`{-Ck?ro1+?i@9$2~uP9N&V~A!dG7}FMdCk+1%8=c7T~%B=*ZmLz=u3tN);w znUU-99?&svxHLImSVAjX^5?{2m;QlgjNy=1^;CH~mp%O&Fedo3_h6ZB!n!5EQW z2iFO81qKE!8RK(s3YpzH3LPku(+O+7N6g}+Q-*?2n?W@_rB`obqu+fXx#i49Jg8+k)oK# zydXJIok@ufny>7sY+x4YfWj|1uE5X#A|!P><1KW)ECgJF=vUe^IihfGPZI8t*bJn$ zedc|(x8DIT11pm)d(czJV>;rPhkw~}9WFm}eQ+X4`h9hqZJXv9*8iN?Fp(x5XlNiA zkV&b|FzF5GhQlnxu#pcYB)O!3)ZouHDNDg}s;Q4YX*zdS#Rw^rkjV-&va_q0o8K@J zjL*Zjx2qiR{DRX34ydww-uGCFQGJ6u9xLNX^LaV}JbH8qV%8Eu{Tue5MpY_QD2T8kRej6Kh>v%lw zJeZnAoLIMMcNUeFKL^G{(3-VPg2=CuNoyP#dDQdBUCexFWgGB#IaL3&cHmZ(V{3ts zoPgX+xu=XH|Km`RUVHUFbX^!qI?9(-laXL>!8$}mO?~6mEf97zZo6^G$guEerV`Ul z&1ldO_kO(#larH!aHv0qh9z(}z@s|?@pvTUBL(5}=WA5dG>I$GD_EH*ct?;w^j%ig zjn{AJ>KEH@0A(mR_|trFYrN)MGtJ?WCw?fWe|UP<_w4FY*2%)~oa7U=-9Q%)BGx>) zH#C}lzGtks5`vB3QVq{{wKc^`Cn7KV`p%=5-$jmzxcd?r%ixe1-_vQoxu+#&?N zJ@L#9)lI5gAEPH3*vFOdT(UjURHWA>(wHb1Aml(Q92S=i^LTma#ww{*vVN2X;>SK~ zWxy29LB6(eg-7bpL-wgy_T;vTlamlBDd~?r{On>NK|ebG7}3U}iHPt-jDKi}o{Ee{ z;PrbI?vh52h3_wRv{;m0cu7o5cfv+Rg|r{tLD<^bYQ-F`#z-N3TJhfo0HzZzp!OCp zc3pyNGcexrMAZd>Lh;6?+UTvO**x>US%~k+!~8YDMAD{hzxHP zPwmgvbKV63AUZio!lBh4cC7z2=;Pw&_GM}pd_Wtg)i8emNB`|-S{(fYeT;?lls+ax z#1L27k_Vcav?sU~hPCx|#p#yU^KP{xVaoHmOvQ^+1xvslrogfao~i`2N@*aOcq*0{~C`1WuZ~J=6bWX%6 zn!WjK#^1b;rKgYFLM@N{c2LMT=}?gN1Gf+HwVoqI2D>jQvtrC8!c!P;Irew1uI4Mf z3AS?1M89IWLApVCJNYiGBN|S|!ScfS4IO(G3t%kBz-YO4tmjR`Tl@^f9*Hjug*^{m zzH@W4u-1+#FX@WqQF|rHbd7}o<1Od|GRHfMu#Znb};Y)LGsjBV^m&zJ;%l(a1}Fcw1jpUjn0R>X4-N9z^mtmpoLH3Rnj#&TSNDUaJXcc& z8xv*RwuEJ)YV@&|Vi2nvqb#oS7av4|7i}gk{qtbpQf%w(?$b+PH9?;My9H*F)dypUW8pIG#CHWA?l?H+Io8VZcf%Dy( zO+b(oLK6yu2qUo`N0^*>AM|{v>*;G>eC5xdKefhLl_lRUg-s}`x;=3vzm4JYaL8l` z!!Ah-X@VBt6nAdRVLa; z-b0qXdfIV)<=E?jvQn|JvE3FDA_E|-((i67@Bn*TMGHSiu2&P($y9cniUNP`b!6Y# z=vW3)roPGE1v%{#1n8x^q!LQ{G6jW|O2Drl5X!>|4Zr`b4BiXI3?7 zUSSA+1#rQanlBi<(v+bHW}?1~OhoX6AsNWl%d=y$jg%vtD5RP#U&R zHVRBaNB(mGrv2G4i-kuTY)TAxyOPky5GBx=YZuPE!s;m|O4}Hbi(Kt2nD>O(-9MI5 z?K!OaHSGxAA$fpbnax16MX9ZKInpEBRkZm!mbD@Pzp_UA9#ljmQB3^$pRy+G=TczP zHvk=_dhWq7AT|xV#6!@}T#Q0c$dZdlqlx`&Qax4X6m$PH@uY8KCOyPz+bsM!$S;$; zk6AdxKp-HuUSD5-Q#(EA@?ql?Lb095rUZ#0W?0gELWoaYZ#_P3@Pq4FStyyON5!vi_c?sGsSq|xH~YbARA%So&e z&*@@7vouWz`iosWX@%4Kn`{unyO!-#Mu$tW6)fWR`nI`12aOMQzvJs&OVU))mXbf1 z$-?Ia*KUI(a=n4RvtaAlvu9w{WOwr}qg*Rp8sp?(d5yP`FrtRoRxf(;zo_KDfje+0 z2c!k-&8f`fLxx37&TlBt`JJ8iTejtMR<5?u`!mR%*vt5skQV6riHTKL24NWMf4eWxW!-Zh!k-f$TY^Q7h_MKFV76K^ zz>|tdg&6eBPESXMgpl$=p4>Fs*-fa^ZfVfZJD)wG6NEb$3Ey`(CdiaC<;iKzw$M+EvFFq1vkSMcHvjDyqzzcUd zO&m*{WBZT<9Dr;O|M}9JK;3|U|IomI>9wt`f^v)K_(YZV^XKhKRJ@Py!ulTRoq-QZ z##m1KRu3OZSXsa0-`@%;&^9#u5FsNPwIh1q?(UueDwpOsQ0(mN?*2qn>4C#wFc%OP zgxFU{g=V=;P~-gd`Ea4XsV%d1JFV`!xTFnnvKfF_{){{~@3Iq|jbx^f)De@@SQs|K z&EXv&_r0HTi3fq{O0)g^jivlG0m02Dk|>`fA-N%5wm=hr?kM}DeoQz_`pJt1 z*4HOHBzExTlVGllms9nm`lU*B1AsR>;Inj$n$!TZKMgxkc2M-1338Oo){38;731$* zd-q;W_n96Q406^_#kq{*Pu^VP0I2>h(JnPv6gI8419pI>|0L#(dO_Z27IHeSM7AXc&9(NI^lxihVxS>-WV&jKBA?oZuR za1TAZ&3KUxv14$`b0?I8B(L5`#NV2jr4e-r91;*%ya=>-!?W8AQELXdVH<9=!L}uk*M&=)7R+JvjI%6VN=FxwlMo)#$L0p9(EJglF^{CH&eJf0E)V%j=(+OzZXtYa`i z6^EQ1rPC9{xjQxSrJZroW^#_iKxHA>s4C&C`0)9=lwDol9d8zZseDHw3Hade4^6he zEW%m0X8_uO#0|?6o{LAQ)e}R0yn4zv`3~>XsRUvH9^l}tgF-cm^)kE19JJD9wLiUg zc4MT#nSeXp^onB0nB^WoW@l$NTbDIimp$6FP-O2tSpL2DV;GrUQUcI|tQ~W&43Q3= zf?r?CIkwW*ec&0>Y`UBrd3J2a^g%tA`>q1NJ!EdmlYv|F=i&%%_u=FoQ3!*)Q~hyV zxkmp^vywfL61~!YAwk5gt*te>jv0qeO-=c^vXLGuq5fi(UcJiuRv#D=5~5{j2sVoB z?3zn0JKC|Kp8$^D@A>&3Dyph7oQ=4;H?rr*`|S>Vz0A*!!jKH|r>lg(MB0!{CEEjK z+Tf{^lV>@c^5XxwUQ-mg7YG-IboTX8cOS{^HNv*==erDOaZTC%pp{k6(zD=SF00Hl za`jbJ49d#N5WmXG%Dd;^Zid~Tiz?(l@o}%x3I-Ainfnrb(snwT6H1o?*N31G7tNFp z=wrJQ&jy);8~UA^$OE2|w1+f7pvX4VuKIm0mSZ7Q)8B3VGOavsnPQKWzuM!+e~-sZ zqk9Bvsgfj|R4gqQbI%2NdCgfQ99vc4zCpP2Q`IBp3#*rSK2fre_!HkfNw{Z4G3ZPK zJj;GE>N6W}?8Y?Xu^5?aa@fw|WVSw-^|$1n0}G}Ly!usQk~HGG?ek2(3!*a@;8rb( z)(X(O8BmV=Co23UH^2(5iRAQ5rzKO2aPIEz{tF5jZ%(!hE_4m2x_wgL5|G1(1%*)D z3E=n?C-!<&I3q+@`%_X<`1WK~2XMkt7e&%fTdS*|+jjTj6y-r_Ba^tvltHkkl2=mF zk*`}o<=TK=2-mN9_v%P!34y(?pI&3K8*q_(2#nalGt$o-VVPEaiDJElya5j4FWxcz zb}ft}?CI$c%j@cO?9Q=GQ-EC&aP6_*n$X*dbdM-Y0%q&ItKMLifq3{+dEjX6&s)gv zvtLP04G9l)Np=bQdiXuQyn;aa;E&BHS&6;%dbW#1M=LAh*Rb@|Gy+U!($oJ!6NV5F z5LklVKTP&XoPRU$;7Jey?}rf4_9szvC|^*_+MAuc?6C;-*TzdN5;^_5J4kg7$6ov0 zZup1N6(C1EJ!7tu@1=ww;a+jw!C~UgDeiQ(?ZhGaUc{$hZqU0W1&Gr3IUEKZc8mQ% zx3RKlo#w#beyi^e2AIfXk@wz+uoE*b50sNSircVaVw-5g(!{a|sR45XnI=dG+CY15 z(X>3sqeufEW-9Xmu|l<$;y%-b78vzy4ZMs5R84N2Zw~>j0##EVPGMg~XOGV!8CirUXz?5U*0 zRgi&Luo&eX9U>IH&irHMp6$ewWqO@UMGshe__)16Uynp&Q>}@O8MSC6OF|((fXQwB zQVWvFGMi}g?MIP&ht1J0Jpxq=%kidzFK7Q;Yq*GUl1ofErsc#onMd3m?QaHh zEMiX4_8}V4rPESx?Wtlj*Zi?vD}c{Q7-4^$E3M7;y)?uZZ^8$&a~@GD6&SjOX|!=@ zyy_meOo#%I#=SX?r$a+fzvZPR+XX#(WbzBgUt%l1sq((k8@;p_ z*}aInq)3?bO~QnmEPKb?`;4i4E9&`?#{->vrh!l#uJPdsAd;M>*Y+BRTf`RL zE+^PL2sj!a?xBq!PJ4^GM;ZAaL)4MgGk9wjiRVj} z_ce^gIe+K%x!9>mix(s%;>HT(sNRt8$M4sMd!A=Uubw1{s~^s}>|lk=PIqGR8Cs5B1p0O6=y*l!v3eF_UP9}X2A6s!@9fZ(2;ht&Ra)Zt8}x_aaq zc7bm}-W2sHwx9N(dBCx%W%=zt*vkPlUsgSq;VHJOX3U?JO4MmlHNf@%DP)%au;Ct+ zJ+gQCIm$(}BqaLB85`a1YZGett794LX+?2JbUAQl+*a~P%qMeXmjY!yvKR9l)q^e7 zY3UfI#7C*teOfLPUkuRfzc2;^Mrn~oencNXe67g+Qtfn9aj_r>=7zA!xSWqM6QL2q z^3QM?-*RSqH=Rz-HSwKTkW~jYwCa!$mSQzW@m?J?a}H+h5lkKjU9asV?Ej|kvI3bD zgtOyK=o>=p{+TQM@dpNETU(p0lT(L`n73cdT{`Oh`1oa5r>di)pho5UZEhM?NwZvp zggf|G#e5(wf|yF4uo>Um)>Ucbvo{~=k+b4Ak6#%7g`R792KlM(NeDgD{8o*AJR}cT z19)ZhRe&E<rPe>c!eJi&;ZAHw@D zSUscW6R0hy=geI$DAi!CNKa2U`>bcH2EG#IXi5c?(0$e zC&`kR-Olg7!qm>nvF+8IoD8jPY<$`l`LUNIL!f+9S+%hN-#`Ta(ldfWp0;20yGFk5 zi*GA)$?BK_z;OVse$(}MvNV*dnQC{9s z$P+%$Fq~aejy4{25RvfeA$;>x=!!++PztzRK8D?a2=MV)#=5i>J~mWQX>?JB!D`69 zd0{+t**NIm-ntckL&E(Ew|ZhwyouM{bge@#xjheAkQ*skTXWwN5dj;qzb7ZJ{s0E* z>Rv(5srAt7>#I%KQuvsTC5Zuq;a*k_Y8s%k_QgvXlBQj#L)iN%Pyr#Kj@Rd>WJQF7 zjS=)=e@Y_j=W(P7It2m9uSr!+!lFAUOU7XT8v3O1n?zpT-Z3dDY+7s1-vzK2$5qnm zMTI!x*?^P}Awoy?=kA{j00(m+! zK%o!pOi4LJb$Xz5(9TN7%>sggiqD>LtqcftG&XX`vJ2UZvpjwFOzXvY^pARXsXPC- z(EG0E<~K%5C!|~DS)LlR`AOGZJ?6hnf%u+G{obh{3+^Y{@9UsG#en*J-Nh+)7s0z2z3d`#CW{!VM<+GOD_5X&X5`HC~dKGqd#&>5) z#6EIoHBDOp2T6OyS7(YJAD*D?w4Qpp&xeSOL0fkFSzB2>>e<=Z(RaJdV0{)IuJ#7K zcVpx@><-CcNJt)VxEpV*b%co^$$-bJhaiLZnQH_DL8CVNlVN7fv zZD+v(Y%H(gIT?b^>n3Ri_A<)tTKjWu1^8d;9)jm^WK9iFlezV{eA7r!ulm1OKf;3$ z`A1X~&DKo)i`?8?$(ywDLxY1_dU|>^5JQCfVV^|V)Rd9^Y=hj-**Vuj`s*1siej(M zuloa@j&nnGdlwwJ2~KgKx|##gX$^}apDz}>*j-n#-4Gp2o$N;)YatdE7FFNk%*>m% zKpNQW{zI1Tr$Zj5vFv;xBYh22n=epjU>Xs4P<^5YRnAO_Y{)e~9kvxA@|zw>eDxIY z|IqZ`|IoCWq9PRL7t5o`eD;E|N^e|HZ8sqFKX881fzR-cF@hX)w9`MRSoaDf^n!iR ze-{8#;&;dzFk2qZPx1u6HfM^}a!@$J-?+e?V5N!$Ppg)BGmV^Qb81CXKbJrJ--y6z z+8R<=n4B&%E9AZeoo}^D?jG6wP5mO?NVBezT7a^#T0+OETENxJ3-?czySN#ra>O(o zEzL?ZLKEvn7GizI=1EgM_wq!R44Bi}6=p6#Y_NZ2m=uOAMN{FIqgze&a&QRkER+pC z$ZwU0bq6FlvF)HwF9a718x5I@R7!4PzLL7D*qws>fXY|4wvcp9I*-zGt{y)XMl583 zER#k*{S|idxPe9;7>>{OQ#GI7CX3I6AuS{ zW4Drl1h^#8iz?D7ZX?&6Qv8P+KNd`Eix7eoqrN^mBqXnW*&}?V!Vv9>6u`tz4g?B8 zo{nlJ;1-+ofNI~52-z4b1+LzPM@fhL$^^tKYp!1%EmEd+TiY#}6WGD^2wb=zQ9$D zgBgSF{QTjChUStbzqpe*kg5m1E3VKx$6H+-L+!l&<$)vWX=_2 z*BBb|%&HdZE_5wL7hnApu==45a=NK5N<^f{*nL*hcz)xj)|oc6@RV%f#VGW5Zu$H6 z=>4DPD(596Kc1YR(@W1jNI!(WX;Vz^Ups}9lQ%|M_sD%LCeRa;d~0WInQdJ@1MbbJ zuRVVC3gD&VuI(sD_N?vH(*0dZ8ql>s3z(Ttu*>W93Uev@VBSNsnSjCSf{ zh!3YNK$KJwQVkXk_7_*ss~Xqi;mLnG;Odh}T6hoUpdMU?6=HeMLF_cN8`*78MI*Pn z{d>Svn}N}Xv@V?}x8V0I2rsfCaf-Rx$Ot%aNxE_hmOh|>V)Qw|I1)o5s_H1r;C_KM z82>rTwL@IaETM%%B7OVR>E$gTeSwTfKB)!`21$x5!6Eb`hkI z8!$5*ZiC4-16w!#DEIA+=YVu0>FNO4#H8wT$4SycW4@Vzp1_QHwu62tzpqS7O#uA> zXE$7xnVb~8Y!VfN6cas)o&gCph!V&-6aH2@y!_?v^n0i~b>62?0|}>tm3%E|(JQ(V zsEK4fu)NnSbjlmgj9JVNxWE^!I9`ipR2~gu6^DtByebOg&gJ?N(@UFM~#QS^Em+xeAf1wjfDRJU%ZnSir^C zxaNjLr=Qi|c~)mSUEnL`Q#Z2v7T_P@C|YITGo;I$!ji6Kcp><@z}@xj4IB>Ig4sTOE${Od8hjT|aaYq+2wS3J+vQX@Y%$;|blyk3TVU$Nfbp9gd- z@gurGXD4LKO~%g7PBiWD5FG+V+7thJCkOH`0%4hk*}b8(>1RnKx4B@735Z)? zzI;(EBfeFTcJF^H-jZdsb95wMlfC+(<+6R5&vN(2fr_fy&fU<9(*n$aPxPsMER46# z8F;7~NyeB_#qDG4ba=^4Bt^Qjq>_SjnRDX^9<7mASDXW-EplW)}gP4~DqpHR=%SmXN5G~N8z`ypT)T*#~w z(mn$0n&Wa0^?tcjos8^eoc-Z>4&BhfvCjZ>jq+eA%ztrQJ4j0mZ}I4%buB>Z9ftE^ zV8MtvDK?xRs$0()CsvH4-6ZonCWtPKeLM5jK@k{_@{!TKglf>V7&K_W``WXVq2C<+ z_!bf5_I9x!3r7zcBNE`l#Ct%+fdL*Ybo=F#q=LM+G44YQk*NU32%9Gza|_~{05m=ZY+u(O7^MOye;l2S_ zl)z8>+{Y*C?uZQz65!D~f}EFJq>;8Ws%dwr<9i%#xP?}s{%Z2$lV=jBC7pprrj;>U z?*pD}Q+dnio@EMKmP-*YAzz>ghJK_GR3{DYV}evF9~0C`32RKhi<*@REh{n{88#~R zm5|SHn^1GgMwQv8xC+B_Pk=7J&`bM8P7+*3Sn+aDHw>bTt&YV$T8oDVzD=2UeY_X0 z8DY}Axe>ir0V<${x5?C3q1T;Q@~D1re#@?r{yryUfQ>;ZW>8&f{gb)Pg}K@fU;p^T zupIZkwWK%5Zu}$?Y$U$}ZeOrZ)z#G&x?oPD5!ai0W1$rIPvdZ4Ia4QAB}ibf%!#hz{YzdC_lYC)ZSBBf1h?60FzY_RY;J4l#81 zm9PKA9!v-7Z<_d}W6c2}Gd2ev=k1?XlGRS|V&h7F+oWh_W~dh3W4ilqOF4N$x7W9> zvC@zY$y`cruQxE*irLxuiZi!SdMn9lU%sEVz{d6AAFdwxnrhl8$R}{AwojEhlF@hx(>>A(HXzE<_4-uXK?hk1iTuhYIN+D;JLAd+F6=LVoX27zq z+pm37&ll>ny8KpJ*R+-F)^e~Wh+67Beq ze!Ib=Rv53p&0+ZqazPGa#{h#@m*}`*-IKltZr`w_S19gZ3aI`I4t&_J^gbQNqdV3f zst4P6Fp9YEKp`(*M%dd_O=>@Tmf`94`P>+Bc6p12tY7xzs~i5EpE=$qM9!O$HL7tk zRgUU#RRpwT5c*tKw`~v_2ha$6(i()eTt1StLrtC6??z5Zv^bq$dS)p>^(PG~Qi6&> zo?(;R@s#w!*RJKx(({`Q9a8E`H^vFP;KnS=ErD($mWvt&vnM83l9guNJ)Y2i@IqJj z%exo9-e$cEUpXCn2>jJ}__vk;gi}lV`MOX|KJWH}N(fdS@fWC`;3+h`#oltTykI%L z&$yuX)4jwQi7cM1B=Mj=1o1|pF$aP;nU0(Sy;go_}T#FQu3LWO_*m8z&^uj&d*Ym^t9+?L1sH`LZaybrvc~syqw) znj{#AZk@r7FcOQ0C^P7rv+^_2q3j#D6n97j@wX`I!r#iQSK)2F+TLDB@}j#qmGV< zL+ryB1SzKz6(0ufBmA4?8vyac*0gS~Ldj_#Mo1G*P8wZiYZ*NDA6Vj8k*q3d2=|`A z8zNZHv=dx32jq*5f+rnCSjy)mwyz#JSssCZJeRGu0Ky*6jWogtfS1YENC_Cjp8z3( zBy|6b+~XtE@s)*k(|iwv3_|%$f4v>{RlO3#yd3SpeG|e(@{wu=YK|Y_g6T*|gh$g7 zGMEobij`DUA|kat+e5v%j#kAa%<#Q~XxtQ!kPp}1Yd8FXC8Tw3$d+)MaUmW>YmNTW zVg5Nyo{-Tj!|_GPkhAEugFFy*@IdX&+BWPq*xX29$^#X`W`x~k7nRR8@&^Y8d+5bz zGFkTlxzko>(torWAq{O=2wvl;aUU!Gp=jn^%l8dz=HHHfr^cf}%&l=vPyR&z`91+$Z9KNtVrfYDawqOj?w@F>pMz6t*FX(9xav!IY-lWLA)j(0uJ2m;f)TU$Xx zvpc*ZA|i3qk*^4RwWd(W)Vo9VY;*_egc*{)8^Y2nMNqfc?o>}YSi`FC?II1a*lDbT zi#(8$lJdh4C<2GXM*B+aHEAI**up(7SZ>1`Xl@~~o!yVOD^DO6N*p?Le`j`-Oj6nU z`ra?nk}G(!0WL1eo#whrxqShg2nB`uyLP$%*NFyq%sK$mh1@#Eu->+fho%1UV!S1uMzKV)j_tU|p#M`KP*Q#NS1$deA zt{+J-lud5uD{|1{uk;BW2gFMV>spI`?me=R7`A@g)v2JhqWs=4`u4@K)3v$U1n~H! zM`T|~oz_X>0|P^Hv|?Evk~!D?Lw+_^U1j9lYYw?NbV@li@k{T zitp;u5(f_tPijjzWf^YV`pbp=MCjwQ9Vu3t=isCgGod;W)EBa{vcREp3-Qu&owLK# zcpIQYa6H;}r1kya=g#Er?#B?np5;%8YB&%ue`Vsti?+ajla@;dxS7U0y{;@n+$97* zP?e{ve*2KQK?BcBxF?7r1sMy?ud6$Eo6sb<$!>5P-{y{Sn#Yi?etgCyR!uBnm?E^w_b%i`c}J^o-MDo?S|ISyoLMXD=^sCo$3X8Y8Qso*48Rl0@T!P!+FoN z^!4cuFz&NOEvpDq|8M5B$p@t_VgaBN32mFJ>gk`^5T2wl1e1wvH!7-XB0}f+q-l*& z@kgeI5UxeBv0Sn=Ys?5tE0RKiqnb?t9Cm2*C;4U$WsEg#fe3S>LZIo~pgFkP7sLzW zxqp7(t9lvIzLhfopghxn$X~CH?XVdqY)18Opy0rmGkVXQ-=vPQMLAG=cT-aaf2Dkf z&wVB&?^({n;Aj&AM#$fTBe&!xquwsZyKSiByzSiTpPXjKZMs(Nm{ljT(HnD&5l3V7 z?!>N}8-5=sbP6RpXgTH>d-r;x&8GpD)!755$-vPf;7uf8j+8?Y4ro&9Y77%RiHXXh z`K~(%wODa@n&}%D@Ve4GCPq<%HB&&Kt(%dOGo(DEk6x5E5I0CuwS{VQY4Q`xu9 zc|T{C-!?Tkuo&S_D4a1@*RfJ|V-MT}jH2bZz0}mQHifMROx;WdaavIP_>@s0;e>f#lFoxh z1vBPrL;Xf~&#MI+ItH0l{C$^kxuiOu>UwC8UyFZ-SteWod}*6jk`#v9gd1hl%-lv@ zo&_HYp%SAq;dcG04b%Mxucd$6JCg|>|Hz}1mH*2r}`=)SS_*+CdH-1+AvqT*y1({A&0T$uSO zY56zBWL%I9sPh{`0SSe;{XMl2=JF8bRH!yM>3cC!3IgJVj1U#xMNhEW`LWO?W0raz z#@PIOLgDOfz;a$E>)j}sj3p(mEF13KJw51%L32^dL)#?NGal6YbYO{>dG74; z-ZJgJG(!6C9^Re{fw+8JCWS1$yO+n5h^vg97l?nm-~a=k_4&s0)Y}Je@_M!IbSSjz zUu+-PHJ>8Ce7?9fT|s%nM*QjFc|Ept6z?aV{&;Eqd3?|H-{KMBese^Riu{OFCZPY1 ztoMLwq6^x`6RIdhMCl5GfPfU~MG};z(u*L71W>9VO{9e^NE2z&qzM7BP(?+WRO!-t z@4bf*N&+GIukZW4-}gJ`e-265CG5R>_ue}*&pa~|{gU|~g9)?<4M93)yIgihkcpTo zH7_-~WNV5e9(3|I(%-S;g=)xF-Y=Inq4^0~Zws@4$|s)`mn0Uk(~Txcf}xzkvhs>+ zlkL3&O|O5hCscw^bVTOKW%s+g&%(~a=w98uo^)AG&5jqhw-pS{hSQz@x)OfGU6703?#hm)jA7uif&)y+yiE> z!7%=nvlG$uSUC2g{*+BR{egC%kaC8~@UWeQ>}W_@+SaUpfG!T6 z5&yeRR?<2h04zAGQI730Knm|Sm)3+4GC_;S4g*>wEBK?W{Ow=spQ%4*lCxCG&~ALD}#=HK)NzrCV&DX^fh7+RGGLtgBu?$gwpK@(u zz}d$T_takSe9OMS1#WQ5h4&5NQ`yQUix7q07sWl50B51VLyp~3OvWOun}vuV9AKGaxe#BR=T6B1VEhY}Hko z%<=J;H}OlGy_W~YAjh3O4pdjRun zI4MYb;M!FjQP7l(BK2!=m=-;BOs@xpiuJ<5(Mk70LBtiQ104C&BRAP$a*Q8N=RjG9 zv>3mIlCJ!4#O_NYqdXZa>L16kkW7o(JGh05b`nB~Xy|NByuZ6Z)y^ODbWj5(6`qa_Z=+cf_3=$6cW^yH4zMUz){&9{k5*2h)~$a zRQA9%y?XZ7D^=bEI+;?tv0esek~5_BwCdStWAq2!qnwDj7fNg|Qy)-k|Al-RoSd9? z{cBTIfLoyU1#Y=Iim}RWRdmW$C~7m?EAQ7rpE&Co;ib>L%RX9y-T?58XOTk_5#Tf` zL(~c}HFzWIb4X-iG95{4g;r0arlfM>9B9_QTxo-ci^*Qfnzzvj+&3KF-gkb#?XHm8 zxgL5nS}!;3=A+QaIHLOx5CSRGlqM z>jfV;PC5r(_B}U1($hcwMTA-XZ^u;ltH`kmA-5xbiqsPWe@=BoVr}k z{)*ebj!JYiD#YeGTSkSqcU2#-Z&!Klt47D4kca;3Y;QgHc&DgGKakftjpBUChrhDi z5M)TKY{lOmee#aIS9QJisUYg8`P?t2u&3|fvW0IMd@2^Ua*EmI2}aQwNMQ)?N%`!P z0kV%N)2FYbJc$eB)i$8sQFfT$P1O#>E6@PpAM^b2<$nP!Q0z(_ck|lqt$wr~cTg<{KL4lj)2-E`#W=UD zHf#kD0*(yPRa|5L%By=!fQiH$0;aeJAi2vV03M+%iL3uU5zr!9lc#LkAMeUqY}oCC zNZqtLt590Hy#_y)YJH44_v@FXk?L8co9%kK^T?s- z)u{D_Vuc;uCfpnWNI@99K<_SSm+a9NOoGB*bSvds?ewLXgnws*KI!Ap2}iN(r_a## zR~m)b2?RP6H}s`(>Ae#@#K`OH$1MkPe@cA1F+`FH(%`pY{QG90+@t-LlEt!mSpISj z1Tu49kxt8waToS+4x`l~zgR3SFUfe6@BZEs+ETYPCb>}wW#B8m(G zy?>{$KB|}~^3AUE-PI`uP9IV{ZTzZ|{<#>o2`C5<`U(ET-cj!H&SD+1`aR{f_Msw61$2UfvLqg&Eho&+!8Qjl$<%d&t8-&9}O2ulVZm&_KYq)*CDH zm*1v7Id*y3lp?q0BPsQq)M4~f{zZe;V&jR{27`xS0($V}9PFe0r41NU%@tC%#JeVD zg=)&S9rtW7%*BNXE(>b-2Il5;DcUY43p}avPx)Q`>q}xk{A?GZ`$|IK32+GIETi<+ zL3hKzivE(0NP z81pZqL<={X_f#kMH;*-EYn8NE<-9hRZ-(Bx!0EWYHOv9(z+FgB&4rxy_xNDt3H^EL z&zPE8LXT=7(7`Q`U-P`Mu^j%Ckk*UqGo6=1=ZGOf;{8Zwzoy-e_RKK1W{4ZMaDb-Zwd{| zlLw8`StP4nWO#00Qb`!DPcEM_;mTqV1^?|i`jb`nmlNkF^wCgA*EaxQ6#aU_I*D5; z{bhf(`;byqAI;^!^A6DIfcOVW;sut@-@ozGB#fYhDMfe|qs`c^lL^pZGRd^(J;$zPB@jf60s~|6 zC(Z|S9Zya|$sTXvbf;4PSSWB-;9{y$P~gk*$L|TinS~b_pulYdH}?VmTs){zhJwm? z3ncqgCdjE_(yg9>|3_TpTnf_}HyR5<2$%+eOp#2cQT+ZhIFe>B5zry;s83R`ZSH;1u#tJ=6qZZg9t$a4C@PjdP+=0umP_cpVzEB z%6mrSg4_-1sqVeZA{cPO4l%LBiPan*IdHsSyyLfm?RoUP@%s-sH3#1NRB&Fsz;U;a z2151JXR=0F&)2^o3JT42(o&TLLxE->uAkm4rwr(ohe;2kw^rTCXTNPqa7BzH;q(oF z0ZRZypN#?d2w>D%|8d)y#zFvK^-HwR{jfx1{nQ<0YUoM1C)nNk_q617O8-?cd7HM* zlGF=Cfmh@L?NZ6-8x*-^=_hK8>h;fxQ=Mm%Q`mMDBzncmLd+GtJ_9c(DJH9$wcpOx zM>k6xzK9+yQNTD7)8E$*@U$F^?i0IzkvwY1=~m=^7^!ZC2njpoT`du^HombAgu*oeR)p<5@uMO6&j441=c0s9k0OyEGwOd_r1)UQ3YXl%UX@U0fb`AC zhMHthGX`+Z6u~1lS9HS%Wx1v*zd+# z0oW*Q^6Xo?kI}}(-Tnr#;sJYd+d4=C!pgiUZ#HaWe{Vneb~dPm zTmyzJGk-jnVP87Oqnk+qYS6m~`hTqc{rLb`x`F8y1`TzOl&_Qsx4Rw+`XJjnK&VAU}76kmhDnT=4HP-ftSFGh#(#3O9M#YtV zi!^`Z9OWS0pl_r|=|f?mc9gaJn(xlczIP37B?1z}G<&Q{x=20xug9A1Zac4-G6-7W zx}-sO3Jv7e@mg-~P7xUT3Nb(+m>{Y0ZdW!oH$8}Wk0OgQku2UMDF1IkCK=2OuA!>u@Z zBaP-1!H95317^mb(Z}sr2{iDdIUHdJ`TKaEjI5?hQLDB+vVI*d*O{+$bIoW45qqKk z>1Rv&e1JOiIz+e~KrY6}e|xb$kSze9z(f-Nqc0?Ds>qkf$wH8H_2mJD7pYYxbAi6ZM&GC9^<=Z2CS{$nZ#f!?%` zKRrG65_NdK05GM_ID`CDgB5V<{Vp@J8w_~L`L)zL>)ynmQx~_gV!vK>CJsm}CLW%B zdGxuY6miRo=cGmY=#;#j8JK!;I1^J(i(r53?MwgT=gPv{Z!|p2^wWIynGc?bySGHX za;$ltaP`{DO;}ZbO#HL`=b_yROIH)tW~R8Rb#-)*$i3_5rJ!j@hu3>o@QKBsQ+xS5*pz<5 z>Md_Y#;D^?b-KflcPqR3Ks*4)it?b`7R+GCEW8F$Eu3ePc0azbq}72Z@FL_JlHmE? zt4A?a(gvUaV>GBB?A+YVeSL4;&Kq4hUQwx7z`QGNJg%0zcK=+Z?p{5Y@3~FPL_@rq z7ctpO5KCLmRQ@xqzN91$9KcI$Jix6(%xv6Z9Q;a2?IEY$Ev)+f!GXuQZfwDim6o^L ze6Y`inukv3GNZ6 z_+GmcS1DLT(^yVV%4Y!qG-bOx!Ici)&-?L2ypCOd8mN~^1H*F0RtC(HF%ztkDt&qlG8fRt zT-|-RJz328ppK$}b2OBZiD|M+$($!<$xrrFfLjb{b;EN-A-^-nWmX2w7UlFEmTa6l zcGeQ-7=~_aHl0h?5+z;~99gbDsW%4(1)3EVxU=6kHrvlf?fdO6cI13^wL8__EZw_# z_A4C1xl;NnEmAt~gMO;PIq+_=$|ml&S%|ZAEY88bPqcce2m@4?3y@W}=zW|b1rkl@3NA_EFS3-w8{Ws}UYkD9mqkCA5+-PrXDA|_uNS}Ce87?( zEYY~Hndd&M1B@$;3k33z%|68_-D#^f&FrX3^G4J~S*wt%iHipPTH91^kg zonrS_Mp%Abu#_*-bbc2v4z(dsz{cM~-7=pKKk zzL8Hy9W-6-v)Ig{Pc@gWeIZh1dT*+)l?T^uRcUBcpitZIx8TVO#8G6PuJz}d6B2pt+7bHx5PH> z5Ayhe@Mmf3`wv(w?zaF6T}WrUxA6u5!o);2XC422MPFFWz1F!=YIm^1~XX^_xJTzCLo(ef!_HFfJ9G<5rwrL zZBMp^eZ@N?=78^y%Pbbb|A-Vz{1f`M5`t`@o;yB+|Hwa|8!hHJ`YaSl|5totdC}FaCK(u?^^Cmc|sx*{)!NAm5XFd*Pl#dY(aPb-~9!4 zvX)zkS%?bsd)H~VHBojhL(cVV69r^5V1s&J<$wa9<<#8?INC|3J1*yrY#G&U1=oe- zr+~AhopW5vm`MI~;o4NfxL zvi|tZ-k15*lAN4Y`MqtM><4D&Su800+Boeq%K&)@o^IVvl-Y*+b_nCY=%b9X*x_UX z&|9pLO*$?iA3w&D?H-kLd$nwq&<+eam#w;Db&PNlDV@R0&Sf{6$`Y~5EkM)hawRd0{2&W+L%`26)rq;X6!^ON&-&m)JAF#)N zYOUhia}IYaQnjeNu)L&E&IM5rspcpEjE80XEgm7C7zcc(QHZhW=T26FNSZWdEF13$ zsKxxc^sG)05qrO+4MQK(Ww%5bV{flQk+W>zY|c0FcW)gy9&8MQX~D%!i!H+LB?{WOyPq#KE#8xD0yYI- zjDCIWd%XTdturqYI`_fv@$jXJtk9!*y;2#wj*AuJmv<5qe>$a0rCm=XAg#O8e8F+W zTC}kRk7AmI(Z86%2hhBd+>E67+8=Ep(Io`2^d5eIZ;?PNvb)~u3XLl4us&$fLUCr?F8e z-60#O@m*=5gVc^b7FwmabfFiZ77CgETmeva)Wop zP+xI)#wl3Flvgl6KR*_~>nvSkuc=7;?J&uBmj^*sg3NUyNK)2cc&?CtGoc_5JkAZ^ z(zXH~KP@__IYmFs3R5WbzDAfUxFV%FbpbMFrJEVj z$uhmSH7>F$;Rmwg_srZ^x5AHMxaHO6X$*;Q$`w%XywndL&=M2;U($!(FCuc5BwR;-MYKu_+a4_BvEQ;y><9* zzF3`%{QbcaeXA6Rv2+X~i!cSD6D+N5`WU~R16fzX`1y>f_N~G12tsnr;d|mQ;Ev* zMWV~03nL~XTsJb_4W6NL@)*+A&>q7dDRD&BxY{)-QS9`Kb(>+3UL#wJYOnmm)E2ht7e^&GMJM2+I z#C}z~OfyXc`7RgIrV^<;b4HWDiNRg2F26oMl1EWVMF1{x%*`6(DoFP5m;}TSb=;ti z8sZp>sCfQ(j=EB}0aTb24u*_9K-Q-9D$C2s#bG32!EZ>iMN@T2}!~FYm z4sW3MzF%H#y0&uocVmjAWnR8oJ07?(l%J~PE%Ll-nH4ld{`8t3qyU7JJv(FIzzh&T zT)VK|7w=q|5KTclpaF;_CSCnn?~uM;kZ|2O{flH>_YbNrA>NEB-H`Zwa_RkjLeeSm z7H%D@%@-qZv0doK+SW?ufLXbol>@hajZKT9dj8QK&R&6h zU3GDyW5>a21AYBC7go&1 z#t#^uRX6-;EwR3^uu~2ucUB9z5OL#>dLzwD-SkCq53$&eY<4e-@#Ri0Fgw`qFxnMa81QZ+E>E3nAKm_m~Kk5+m2FXEi zzSLXf6};UQvPbtcv!m z;#P#J%%%5%4lx2>PWiR07a!>*DIhoMmuZSfBbR}Ps3_p;RQ;p!vy)j{Ec^=@at|ge z+#LQUlFzQw%pm+M7SR3}?=TTyO4u`2$U*kruvjc42rPB(SuAuCUju8quIk?vQdT6q zPjgr5Wp*oBBTE}oMESEQp58B6O-bra=5EB>kT;PBDs;1(WY$OIYn=zg3%E@rhe)NB zI3S~=z+-nGS{b)ggtHSSFy+2d<~(nfEllEvRk*XmTtpD-=~G6GPGg+wt5Jbt zr=Y1W`; zg|K7%_E<;IgzVz-JO$L+x{`=YesK#)fy~pY&S^iL;61-xT{~_JhbTym4$_W*?z0)>izMdIbly6JWQ^>Kdhc4+PR){W0koLPnex{|Qa+vgbX{PuJg8+|}Jx z))gFTU@R{#STPP@M6wVcvRvd0H0h2zK9tDnPscBUewdvCG)HHgz3e)X!dox;T!0o8>CVXdH(kNktz z4z4x#&^jmVMVoF8N(%c4`mt{3&Est2rQ7a3X0$s2QH(W4vF?teJxPxb1gi>hQ*D6T zcRY$-So-C)l>m=RrX39>0mx<6wD$-q?n>jSkIBYVB_X9oZ%#{gGa~(ukJT+!+G6%W z6TN_24u7VK^fCGk@THohxaDRz4|=SwQ`S>DvK!^TT9Fp3XSp;Zs&kzZpgAL-dln&& zb|TPU>bb;{T2$}QhqPM}ilLfV@PfFrKMWI!RhJ6J;-_l8-48-t)8m$q`63M>2kOKz zKh>~c7dN-nLbH;0UdXe91dvVN>Em6s9FKwF2swX*7Sw=5{bohBo}@wPNI}1rB>Sva zPCp&N)VDWWDExCkRYQmVASH5?I?e3HR(*kwc$9fd0+E7CjCf;($-VoD1*+S_K%6zk zDZ{YaBkA2+LA-23t4UHB=Kxk)b-b~1!a`VV_I8z(&NO{5J9|mU=zZZM;4Eq`U*#Ra z!;a%#-E$!JU!3F8bf{pmElg}Tj4rU8j#Sl%w3w6EvG%N!0U|`|X?((mqmfo>9h-g-c6EW3gLBtlawJ7vaz6?78cclF=UI z6sa9xL2HGFjk&v{&9RDfh9%u3yxl>w?%AD09A$iOG;)+mV3n3HE`kq{Q{ z#VTw!wax!o1uJ2BK^npwfJ`t!O8_mU8f|fUU%X7V>Tdk|JHp*U5O=J$03IS4Fu-0X z0m1$UYw{=)`viTbAz6kB6!@m+@8716dHqKw08dep%c&QWe^QcH7`v2n-Kh)|;wc+W zfMZq8h8_+UKTgW)V_$S`(FDvQ*}@L7Ydo;mKyDm&1erKUd;Mqir@oW}CZ6V`$hJAK zgJ9<}LxXcdx<6=@NwIeuL_&R3pFq+$#m!Ehui5N>^R^{`-qDz{XQTHS|F3_O#0D9i zOld(+=2{bmxf6(BSzOx*Bv!%mJ<-MD5Ef*7i_&)@BJSK0mq7e;a5#Vj70DL{oSh3l z=>{CLkOMar2p^vqIP%2(()xFh&mp+w5Lb`N@2t+=M|u38Jf9juNtu$t+!(VD;LV6-uzH{}m+UxoeGVgwuw zZ5SZ?ivX+BNAA0GwCwV+^RGSVfm?W3?5$TeQwnnp0X#uB!#yCex171zSJ~Ux=hA9C zw4|a>8oFKI%R{8Tc?MmF$IyX+io91f?0@{#NErm2q`LuVNXwaH`mL5GM z^#6X9hlJ#SUM^(G`DY6M&z%73_?>Kz5?*eS8LL2d3OKj__ZFW-G1Wc&a{;kXkoB$I zZy_ZCD0!FC@qa_m%(G35FkE8dzyDk25Wg<7LCA?)2u*nd-T7Uj`Dw^xo}2Lrw`wur zP8?@l!oXzf+m!S7Y>4ZlaaxZ?xQ-+vJZg zCKcWJAM_uF9o&74GyiP`*^T~W&Ub9ya?$3FG!AM5tG?g>Hg-X9=mNPAf*PVC7heC4 z5t!GeEQt2C-P4cvLK8$rm2)d=+Wpg-lnrl7NW5!kmsxdW-V8*0?G8!3Hf>)+^Ei5`5gq!Jx| z_>{wQfpP~+4O!Xk>3b5-4>#oSoWuR9PF0+$=V5=<#>a#zqo~cwIl0P&`hJbAa1=U= znwwiVP6RfwCCUE$odyf-+e8p)NOq1+iJE#C{(civO%s}YHR3pGvA5%()%(n_-r)E4 zM4sy*Ht?liWW#lh?#LM?MJuv-)eOg@aLccNK!b3{GlQobBHqevJVBD^8mr@hDceINy3HtXLJu^)R9yZE7z?WLsW&y0!yWo%};nh~Q zgC&g-E>oKP8hlwoK;3ZXtpfU*9_thQIabk8<)#kaita@si#Lm4oAT|#nY|rx3vWvXyKVU5mEG@k! zF=?#Lu%+T6$uzdZG^{>3dDBalRAFGtqos1&D^O;Zjqo&&^k~q^qvL?$ zjjX%LF*u@3Hg`&~G4cAQUn_7HPN{6#P0WwT?UOJgDT;#b&5Im<7tp}Lxe^TDnufR` zwSn`C)uGk6`yI59(NiyS$>Y-nCV@MAs7UiU?ZwUX0Zoo1gl!$Y%V@nN)f-v)36sO; z_+?EFivE11XX<=6wt;YGp&Cq@Rd~=;lV;$!q*y9}evL?N8Mp|3JYiZx1Qd3!Jo}N_kWl0e;j`t7X(fo zwBiAUm+x)q&wLjw?*Fc5X71i8vUH1Jv22ZUVb?2T7VzfJdDe)RlG*6(P(D7$u98lJ zSv{?F?+6A2l_08-2OY$pdj;m|SPhcVOw9En%Q}hAVlZNVMV_Ghtp7QpLioDv^&>4! zRO%mnBO1uaCQs#Bt9N9(1+cwfFLQy1)X``C*fj9ReijPjV%0*j3Q=EL`UF~Aabt7H78<=FuMD5n(Wm{-Rk{<%4M2q5Z&no&Mzi(-^ z?Lc_iqBzsDH%G;y-)+*+!L#h4CT1N5dvTY|GHL_aQtX#H(Je*t(T~k^gtWS6mp;gL za>W?X)Jgm(e7yFcPRGovAt#X8c&~}R-p#ymTe_W4l|yQNKgGvdZ!=Qpw#mKsRO5pmP3v81!~rEHtzL;Sqe{^Y7oglB1p zF(dK%&)-bd{eKoQ8i={1;DW_xncsf1*}c7y_~)PwcurOBSjTLyKz=b8=lR{kO6dW< z=bnw}{@~Tlqh9HtF6<~mg*1izu&*~hB__B{Vmp}#9;M%&C2wF;Mkx|+Tm~9;b4P*6 zqYq)NrwCE4iNz94l1$bOw9lz4yLHHq89>92zF%+nT7+hp7#2!Z0^f^3EOK7Dt_34j zU76iv>R5f_nCGmMxcf{t#XKue_d1%*9PZ^C48DuXcjeE>4>{^=a+h89sitqLwb)gw zY=Sg!&w&0;ah*I#G;Ut9WfRg;l(N%pF zvgZsrJmdZxaq!pb*g_$VLB|R6oZO#+6GW;&lec6O$xR)Syu3kJO{Pi>HlculT ztVC_#^;-OO@7kTo>*BhCEHmPNt#77(YnGQ8JJfNFKZkz!<>^F8dVgL`vQz5) zoJb19XItHiALM0X^zW@0NaFZ2f*#c6-0P#6b%fL&=N7y-iI<<-2aw5y^0(ixAa)<* zS|?&oKCLJ6kMA5yQojFAYV0bI|0T8L$6ggf4HIbzf+n3vKl@T#d?-(nvz$tu2UShQsF|1VrKW4c4yOC3~z^shOaCV+H zy`KN#jPNZL#B%rwqKI0ehn1j7xt26-7D@;1Wg0=q&)Ux}&@raAx2Djj$p;0Ma7!sI z#ITnC9%aaO%V4K;36bbH@3W&N+H|DPak`l}hEYTV3{AzSW5xsBhpLLSx-xwQ;vqu z*G+J))zdoMBG&}`DoX4qxswj>r{-gq>F^~R+e5I}%i@F}wioUjnZKVaq!GLV1C_ZB z(3_LwJQq8?Kyk1A>yEeTO$)2KhgME!0k^3$5Q%ruo5aaVRYp!LB*))?f=YJ?`_;0Z)sJ!lZ8!9hWAp5__)F|kF#3~)kC zGU|2h%7>`=is%&HOzVJY%XFDlt9om9nEdvjyPols;kaHdb{3vs-Cp@a=tZJ^Z1A$+ zoa#P{Ami-Dd6nKJ|VsY^f zK2JE_J3HSgmD=$>2E${yG)wjZWb5D->2G;Ps4%haM_RW)|5pI1u;Kk{6q*yR%W}($ z9v8?u{;kbTzL?D^)I*mQsw-kst}f(`4eK(5QC`Q-(AlS-Em(&d-89mz;NId(uPJlP zR-|}uXhCJLb7B;;&VQ}g(2jdNI9GUGfTp?}%QIQUe$SWBD^cXXwQIB0@Zl z>+RUZM;VK9uOv<=Y59PLG&~F^-0c{G={dKtS0VCP@|Cglr?--+XJ=(UGN7#W41B70 znfJTjjNWgmSB;oASAF)_d`6^BT(l9VId0bOoalaV}av_ zL%s?%UyaN72Ih%B87HzB6QA!9=sAde@I*M>9D?WPS!h%JxDMR!rR5CQjHVgoujBRz zmu@1(Npjf4J9w+Ru-2`OUW+Y_bl4DL%LG`ECdz)7Ef2r%^^|=(#bEeTGnpJ$YhQXX zO_PJo>3#rYDs;-_D`n(GoPIA`F>|ngMUdOC!}2#6t{@|EY=gIgDMt^ytfzxCO7NQ| z5B=I4wUAY40=Q>5l+K86pXxIndf6>h$M+UU-5rwQ9UnN-uOH1j%?kVtQ9goG0$u+$@#SaL48k+&kb&IjMtqP1#qjIG z4%Yg+x<495brC_uI^0TyUa}ka?Un{uHzoMrGP_g(>ifg2v;Dua^0u6JCwrr22Jg6RlWlh+QmoumjypTR zT3g=$lzllqw*8E|9+G9!40iLe*%cytxxU{poNiJIfsVZP&NWRU<7I}^__vNY4zl$x z+KEcCz?s9mmDC*P1JYu^T2xM0H~dmI``ZT?%-1jzP;`~dNGXXlN4Y%InGRK|@0Uhv zq8_r`3OTt*aTK2rbDu+B^NDmN@`}W@8afc%qX?lZB(-J#5l(2vIhNuQe+2&M8r99- z!mxbi-gGOd=qFlyt#{*n(|UMCZ6uYmRc`j?QHx1+_FY^jck6xcXRB}snr{EQY$O+u z>|K||`*Aa-7im6MYNS#r6Agt=!R6v;z1yGb!OcR4d&n=W>xjlJ$HF?~-SI-}K9cxnq!RL zR*!hEET_c+ayn`YF_DGTZqDkp!a!YHrw{`<08)1`qi=rO|9q$)E{p=7kfMJb!P(cK zwsE=D0P6ewqEq7wY&w@8w%iM6cyaFGTp{y$(}J6(3yzl%GPm2;5RocRN=fm8yj$n; zQ3THgElmo~g=&38y0p|OX@Me3%s!YJWMtNwf_l;cHN46WniK-n?f%2gChzcF3z{`t-elw!!xf z%ozRj6E+Rr`x(EJVvwG;glL>g!F-z!=oOIX^7JttY-u|SPv1V6bh4Bw-cw;=f8h4J zx0rNu%Zkv2XT?4!KdJIYW^NnzAXy%bs5qdmSHH5V60g7@6efWbbMaaDsb%8q(K~M7 z^u(*++z-ZU^wO84RbHLWkxKM9uVHeRSqVT7{7BeZ0qwcbsdI{YuZMW&!iU zE!Y~C65o&n0G9-&{{^(r?*L&DqK(PTmPbSoLNa$BYb)M`4u=XRf&ezQK0*mSN`*-8 zRj3oD5E0;ySh#jq1Tz;v)Afal5jnIwzjN!|JEj)GKP=I|h!;^U7L#rukHMeGbAT0N zp{ePEEbW4TR~Ay->cKK#Oe1{uEpQF-zs-XT(>Ufj;wN6duuDrqF*z^0ul+A@2J%kX z=Q{=QZxXCQ0uF>YZ&bEz#grRf%+fiFI&m#}Tx}XgtNy=l|Cj7<6 zB#K^a$Eg4ZT6Pv*p(oVL`o-Gns#KuUBe$Xb^FBhn>J4} z_4&$-v|5XLk6o?X29Pm=1lyv#Je{w0k;A#Im^xEZ+t1+boqTn(=024q(QuJH>& zv{lhl-hQz)eIyZyM=OAH zR3_UdaDN~#p)vG4;DTFxDu>2EBr|#!W0e`dWE~sUU^V@5Yz{CX{g?b%g1Ggs=-8aA zAS8CpC`nVvLVkn*k#w7>844S#@$*_ap~1E>f{V+p+3N$nZ&kZ__r0@;A(=z*!v*Qf z^1=&oo+zVFH_^0=+>p6LCS8$f$JVr7u+&cOy$9skvS((}4+P>{-|NA!wK|iSfX(X* z4t+I#I6PQ_(W8-0h{|5c&@TPzr}}yx04!ujB&?$K1DURp#unOSe@DC-=5FoOi1lPH zGD&O@jB&D0>rhp?l{|thFDsiLHbcZ~%0z}bU0gA`!4mEXlJ!9k%q-G4UB7`x_yLZC zeQfw5TAed$f|!x(F{ zxBmU=bB9YJIkGzg^v#!dAWH2SAlBnEwUrJX7YU3I`5E6QI|n@HkWQ+y6`k?C7h0Ve z)w=0!tR6^>(&uzZbUhH7_u7$LmKu4;W=a!i%!MrDcILRyE&>nJRDtW6cdaU8YCVD6DUu~JC?S=l;f^&~ z60#O!i?XJAvd@q;*~Tt07)$nH$P8oVd*X4Ll|%bP+$H_(3}b-EpwC&9Co9u8CoNUI0nohfP$>?zTN`=@T18-K{sTUcTdz zvx=mgeQGz9hUngM-^c7q8X~o?clteQ(7 z?+?+f29U8+RL75wTBbfB(uC-9I2q!VCJLCkjmLa{1_N~>7Ju?#Rk~Fm=R|Z^eo|$* z27ddxbM@2+%4x>e%4anG1K}&P#WO`ee`hDIxC?84CLIo`o86-dT(G6y`f|VF=RQr` zT@TK|y~*cN7af|T4k;aVH3lEB&53FFt~9kL$-fntep4fCcTTYSPBZtz)u;$bfXV*hilvPeJt*!@n<|9j9g=zARG`ScP(mo zJKm@;`6OBoh3CE`f__mg+v~ENsUkr?lfdyAC>$%tzyD@^+hqZI|9f9-yT*QGsfjes zW;}iZ@p>z}#Z%9XB5p{LRR*CmBi%mh)8B?ayTL*H06&a6i@-l;MG+u=dhL-md&5<) zk|}Xi&g9o;x4sXktjua&!%nP$)9Bs>dczR&7zC{eL&0y2Q>F%Qc{T%;B(KGiiaWis zOsN~VZu-1*k2eGhYP5bZ7PgP-$np6)+F^R3>|=9HYXoUR6#q{*vASG-gEAPa%H^`3 z;ydb5G5KZm!JY}#1|B%KwnBFz{!VjLkFv#LIw7LZjO6#*dgCzn%?}Q2PnL#*b+R!! zP&NkWmpA|>Wumm{*NKTNk^3PmY9*L-H!HnPf;9Q(uS`r)vBR}Tm`a|RtAUNR{s$OK zBN!=0(#-2M?PZN$OAE>L7pAYvQH+a^?*E86*8Ws{(=!=rL5@Fv&A*X*{Fyj%5cAM( zI))~BFQ2PGi)ye-{K97RwZa24K!?(om?H_>6$!-R-f7LF9j7PwlmcecP+sHybB+!U zFv?taE1gF12D`;Xgy;hpj2KWJt61#Vr}WlhZRr#I$_dI8yz~bC_7^n-g9tgR;3oZ~JG^5!eyt)uUVyY5R52w}an8FCR8!mVN}@>cO^ur+fkD$RZ> z@d!bS75rFIh?%ahhq-j528%wZWCKj(uf^7%yhiS(Og0PK^D6%{s*KIR(uD%BerI~a zxGA!|KVG%@{5XP|x@W(0l%-Wpl8YW*g7^xgaF{akd(p!YbVkQ?|2A=HgY4W_gSH!hL`CyBu>gs2K9yQ9y z{c#Tu$iwxXDDqCcc?vNCXbqFnP?-&2rm*W>RW9jHSK$GA1iw}OS?v33q`x`EE<*o! zkc?8h|JvIWM<&C!_~B#5T`X_Re&2Fa0aFxdWkhPs!o^;;q@syPiZL`I;ZaB zP`aP8eOdbTv-7IlgS_?+^<|09S{`eU^@eH4fgfH)dl<$=Al==3eu0? zP}5Rr*T%Q@xXUJPMWCdN5K>=7Ny!6tg*cOyMN5QX1V7lII_h23ZiqAh4ykZK%== zCA0kdvAXWzU(+YxY5V|k2J)Ho^+hGj4w-DXRT+jZ7E>C9?!??`sdz;+p!_v?8Sd0) zdjrP@BRBrwck1KYUFn>q!lj$?tA5+~3ej)-jtO)hZ)XVQDUNN-;MrjG#`M*>mdLA5 zCoN%^2F=O1E)D1n%_)#MXTbzo9d7vv7xx<^DcW0S^7Ru4j!SzAaXh3nVd&H%FlBXm zF@^joo_fXCoN(&0PTPSI-o1eFHSe2#`nbr*_GyCa%%ag95&Z75r?lBa+hs4U&q7{nYZ4%$^MLY@&$F#BJ_k^>^{x17)gEl3nWA0rXjrCl5)5ii*iBf)@^l z6CkyIQ)TsqNq2~_$ARa$R{J?bzx|E|Xw@?vnP9=O->(ZGJ0UrT&Ev79lO-8 z_s77`=XzII9BRQ%%-<`ZHWhbC3&y*$(;3+ns;c|}rAxC|fA9-UxPF6kaMxwx0IdF! zSW_-P(s=-VYO=`mL(^#}$R@~R^eHbaS>d)^nJ991-u!i!{PORA3%BXTM8$u*uAFmS z_0+l`Eg}{p%^03doRTup4p9am@#ObaAQPFX`IJ5Mp6kxweK1NkwF`AGNybiqrU&5M zv?U1Mvafz5ySlh&{5T_P`I86uj*$|(P4LprGeG8Kvmql=3In$`T>Af`;+&PVcO<9) zET#ou9$P&K02}FjYfJ-2%PW>{JNHKu4N7{|HbdR{?x*uxGNc6n)-VKB=}N>Ncy4bX zDNuL=%J}!qlvPDGIVkt0^1(2n!j+W=@}Y?o5oKG_UcNv$i4IV+a^R#+rMwMY~;)K+$-YIuXj> zGd7kn999^Q5VhGE>CV~dW)#aZ>Y@)%jz2qY=2_d{onjY-1WGzD3z-J%thPO(M)S&i zJ1s!#$nhq%>`V5KP#p}r8C`os!g~xPgWdd6@%E|kS)&fTFF^vWV{KKparK(e`7>IJ z%tdH^fT?*|ePIj9Ld`7^ZJ2~Ska>`nb0r$4ERlv~(&x?xGCELNq#dzC`~NxS-**Vb zuFu1Sa~)Ol``+KJQ$5Lh8`%yfAZSy$WG-6_YpTWVEe&EWFEo;VxIV z+4lN3?LDXX35Lups|(%k%Q#rgLY=Q$g%xZg;bv+l$v-`>=c6!NTU$I zn2Hm#j|sp}Cm4H8)CVhDhZO>F8+UP?3q!V83&Fb*B%GHyvKGNcoXCVjkN)iscf?k?=-yIZaKox`<)H@!~Ov9*7#$d+LggCs{f8eS{J zj)rfEp>$ISj6f^)o!WF{upw+uALt^b9dZA924P7tF?cfZxg0PlV@-XDhh6NSjV<>G+tQP3Xc_ zEt6+k=cD9H9atP&?=b*)*rx9RX54=*yMR6=ne~5``S={GK#j81rtsTiN^1{b!t63a z+=Dz1Wyt&r`xI&w+py60i@Z2Qq_t$zAJ2^Lg;$^iQ8SHL76|&ay4uRJKY=Ar7#WBK zmMj2!G0ge8^}yB_$NUyYi49;JU@#Q$nq*Ycw7)P?ax<8HOz$!@vD}FhSC`jdU+LvI z%SiF23)}f!!mSRM?*T%qpWFYd%{>Vn`chnN%QkX2T@e|s!^R`5pvxRWksPv*bEZ7W z{TqW8?!<-boTPA(2_4MsA0skC+vOWjjqTd_$L+1HTs+=h57}G;nX=Xq;G(!HKYcF* zJ49$02nqv(2ja|PI;X>h?O+&_*=JPA@Bd$~Ku>&T(;I5;Jwg9JuBN<;LTFdSpJD`` zzsd!3h~=vS#oEXzW&Jrb$V-mmm60t6BEuy;`pR8t=Q&xpGu9C?p8DNM3^=}6KRBk9 zbLm{3uHY=GYA%za8DTLX>RB5M6kJK22;ygkuGoL;UOeA9f@z3Q(W%+XGW>8IdU+@7 z_If7^BuR-c4e9|*kr-k!w(!8gX2@FRG*c$z**HbQ7nytPj7p2B-NmIa@G`t&rdz7x G5b{43KfNCS From 183702a36e148d55b5d4fa8eaf96d36de21855d0 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 2 Apr 2017 00:38:14 -0400 Subject: [PATCH 18/81] fix up 2.0 --- code/datums/spells/charge.dm | 22 ++++++------ .../game/mecha/equipment/tools/other_tools.dm | 2 +- code/game/mecha/equipment/weapons/weapons.dm | 4 +-- code/game/mecha/mecha.dm | 2 +- code/modules/projectiles/ammunition/energy.dm | 32 ++++++++++-------- .../modules/projectiles/ammunition/special.dm | 4 +-- .../guns/energy/kinetic_accelerator.dm | 2 +- .../projectiles/guns/energy/nuclear.dm | 4 +-- .../projectiles/guns/energy/special.dm | 32 ++++++++---------- code/modules/projectiles/guns/energy/stun.dm | 11 ------ .../projectiles/guns/energy/telegun.dm | 1 - code/modules/spacepods/spacepod.dm | 2 +- icons/obj/power.dmi | Bin 22598 -> 22737 bytes 13 files changed, 54 insertions(+), 64 deletions(-) diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index 1551dbc3b68..96ea0d62bc2 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -62,11 +62,12 @@ break else if(istype(item, /obj/item/weapon/stock_parts/cell/)) var/obj/item/weapon/stock_parts/cell/C = item - if(prob(80)) - C.maxcharge -= 200 - if(C.maxcharge <= 1) //Div by 0 protection - C.maxcharge = 1 - burnt_out = 1 + if(!C.self_recharge) + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 C.charge = C.maxcharge charged_item = C break @@ -75,11 +76,12 @@ for(I in item.contents) if(istype(I, /obj/item/weapon/stock_parts/cell/)) var/obj/item/weapon/stock_parts/cell/C = I - if(prob(80)) - C.maxcharge -= 200 - if(C.maxcharge <= 1) //Div by 0 protection - C.maxcharge = 1 - burnt_out = 1 + if(!C.self_recharge) + if(prob(80)) + C.maxcharge -= 200 + if(C.maxcharge <= 1) //Div by 0 protection + C.maxcharge = 1 + burnt_out = 1 C.charge = C.maxcharge item.update_icon() charged_item = item diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 9e2a754bd4c..3f60c56a952 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -185,7 +185,7 @@ icon_state = "repair_droid" origin_tech = "magnets=3;programming=3" equip_cooldown = 20 - energy_drain = 100 + energy_drain = 50 range = 0 var/health_boost = 1 var/icon/droid_overlay diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 0466aa698c6..64be69e4aa4 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -78,7 +78,7 @@ equip_cooldown = 10 name = "CH-LC \"Solaris\" Laser Cannon" icon_state = "mecha_laser" - energy_drain = 40 + energy_drain = 60 projectile = /obj/item/projectile/beam/laser/heavylaser fire_sound = 'sound/weapons/lasercannonfire.ogg' @@ -448,7 +448,7 @@ desc = "A device that shoots resonant plasma bursts at extreme velocity. The blasts are capable of crushing rock and demloishing solid obstacles." icon_state = "mecha_plasmacutter" item_state = "plasmacutter" - energy_drain = 60 + energy_drain = 30 origin_tech = "materials=3;combat=2;powerstorage=3;plasmatech=3" projectile = /obj/item/projectile/plasma/adv/mech fire_sound = 'sound/weapons/laser.ogg' diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 85e4376c3eb..252c357029b 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -663,7 +663,7 @@ /obj/mecha/emp_act(severity) if(get_charge()) - use_power((cell.charge / 2) / severity) + use_power((cell.charge/3)/(severity*2)) take_damage(50 / severity, "energy") log_message("EMP detected", 1) check_for_internal_damage(list(MECHA_INT_FIRE, MECHA_INT_TEMP_CONTROL, MECHA_INT_CONTROL_LOST, MECHA_INT_SHORT_CIRCUIT), 1) diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index d0b4488d557..cdb0e063184 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -3,7 +3,7 @@ desc = "The part of the gun that makes the laser go pew" caliber = "energy" projectile_type = /obj/item/projectile/energy - var/e_cost = 1000 //The amount of energy a cell needs to expend to create this shot. + var/e_cost = 100 //The amount of energy a cell needs to expend to create this shot. var/select_name = "energy" fire_sound = 'sound/weapons/Laser.ogg' @@ -13,10 +13,11 @@ /obj/item/ammo_casing/energy/lasergun projectile_type = /obj/item/projectile/beam/laser - e_cost = 830 + e_cost = 83 select_name = "kill" /obj/item/ammo_casing/energy/laser/hos //allows balancing of HoS and blueshit guns seperately from other energy weapons + e_cost = 100 /obj/item/ammo_casing/energy/laser/practice projectile_type = /obj/item/projectile/beam/practice @@ -35,13 +36,13 @@ /obj/item/ammo_casing/energy/laser/pulse projectile_type = /obj/item/projectile/beam/pulse - e_cost = 2000 + e_cost = 200 select_name = "DESTROY" fire_sound = 'sound/weapons/pulse.ogg' /obj/item/ammo_casing/energy/laser/scatter/pulse projectile_type = /obj/item/projectile/beam/pulse - e_cost = 2000 + e_cost = 200 select_name = "ANNIHILATE" fire_sound = 'sound/weapons/pulse.ogg' @@ -55,26 +56,27 @@ /obj/item/ammo_casing/energy/xray projectile_type = /obj/item/projectile/beam/xray - e_cost = 500 + e_cost = 50 fire_sound = 'sound/weapons/laser3.ogg' /obj/item/ammo_casing/energy/immolator projectile_type = /obj/item/projectile/beam/immolator fire_sound = 'sound/weapons/laser3.ogg' - e_cost = 1250 + e_cost = 125 /obj/item/ammo_casing/energy/electrode projectile_type = /obj/item/projectile/energy/electrode select_name = "stun" fire_sound = 'sound/weapons/taser.ogg' - e_cost = 2000 + e_cost = 200 delay = 15 /obj/item/ammo_casing/energy/electrode/gun fire_sound = 'sound/weapons/gunshot.ogg' - e_cost = 1000 + e_cost = 100 /obj/item/ammo_casing/energy/electrode/hos //allows balancing of HoS and blueshit guns seperately from other energy weapons + e_cost = 200 /obj/item/ammo_casing/energy/ion projectile_type = /obj/item/projectile/ion @@ -121,7 +123,7 @@ /obj/item/ammo_casing/energy/disabler projectile_type = /obj/item/projectile/beam/disabler select_name = "disable" - e_cost = 500 + e_cost = 50 fire_sound = 'sound/weapons/taser2.ogg' /obj/item/ammo_casing/energy/plasma @@ -129,12 +131,12 @@ select_name = "plasma burst" fire_sound = 'sound/weapons/plasma_cutter.ogg' delay = 15 - e_cost = 250 + e_cost = 25 /obj/item/ammo_casing/energy/plasma/adv projectile_type = /obj/item/projectile/plasma/adv delay = 10 - e_cost = 100 + e_cost = 10 /obj/item/ammo_casing/energy/wormhole projectile_type = /obj/item/projectile/beam/wormhole @@ -153,7 +155,7 @@ /obj/item/ammo_casing/energy/bolt projectile_type = /obj/item/projectile/energy/bolt select_name = "bolt" - e_cost = 5000 + e_cost = 500 fire_sound = 'sound/weapons/Genhit.ogg' /obj/item/ammo_casing/energy/bolt/large @@ -163,7 +165,7 @@ /obj/item/ammo_casing/energy/dart projectile_type = /obj/item/projectile/energy/dart fire_sound = 'sound/weapons/Genhit.ogg' - e_cost = 5000 + e_cost = 500 select_name = "toxic dart" /obj/item/ammo_casing/energy/instakill @@ -187,7 +189,7 @@ /obj/item/ammo_casing/energy/shock_revolver fire_sound = 'sound/magic/lightningbolt.ogg' - e_cost = 2000 + e_cost = 200 select_name = "lightning beam" projectile_type = /obj/item/projectile/energy/shock_revolver @@ -210,7 +212,7 @@ /obj/item/ammo_casing/energy/teleport projectile_type = /obj/item/projectile/energy/teleport fire_sound = 'sound/weapons/wave.ogg' - e_cost = 1250 + e_cost = 250 select_name = "teleport beam" var/teleport_target diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm index d5c7df48200..1af728100f8 100644 --- a/code/modules/projectiles/ammunition/special.dm +++ b/code/modules/projectiles/ammunition/special.dm @@ -26,7 +26,7 @@ /obj/item/ammo_casing/magic/chaos projectile_type = /obj/item/projectile/magic - + /obj/item/ammo_casing/magic/spellblade projectile_type = /obj/item/projectile/magic/spellblade @@ -49,4 +49,4 @@ projectile_type = /obj/item/projectile/bullet/midbullet3 select_name = "spraydown" fire_sound = 'sound/weapons/gunshot_smg.ogg' - e_cost = 200 + e_cost = 20 diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 9782c9ca9b3..bdc4126a25c 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -144,7 +144,7 @@ /obj/item/ammo_casing/energy/kinetic projectile_type = /obj/item/projectile/kinetic select_name = "kinetic" - e_cost = 5000 + e_cost = 500 fire_sound = 'sound/weapons/Kenetic_accel.ogg' // fine spelling there chap /obj/item/ammo_casing/energy/kinetic/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index ef184bd8d5b..727ebdd7082 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -39,8 +39,8 @@ /obj/item/weapon/gun/energy/gun/mini/New() gun_light = new /obj/item/device/flashlight/seclite(src) ..() - power_supply.maxcharge = 6000 - power_supply.charge = 6000 + power_supply.maxcharge = 600 + power_supply.charge = 600 /obj/item/weapon/gun/energy/gun/mini/update_icon() ..() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 96c13f27dc6..3595b9c7ea8 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -308,12 +308,10 @@ desc = "A gun that changes the body temperature of its targets." var/temperature = 300 var/target_temperature = 300 - var/e_cost = 1000 origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2" ammo_type = list(/obj/item/ammo_casing/energy/temp) selfcharge = 1 - cell_type = /obj/item/weapon/stock_parts/cell var/powercost = "" var/powercostcolor = "" @@ -369,19 +367,19 @@ T.temp = temperature switch(temperature) if(0 to 100) - T.e_cost = 3000 + T.e_cost = 300 powercost = "High" if(100 to 250) - T.e_cost = 2000 + T.e_cost = 200 powercost = "Medium" if(251 to 300) - T.e_cost = 1000 + T.e_cost = 100 powercost = "Low" if(301 to 400) - T.e_cost = 2000 + T.e_cost = 200 powercost = "Medium" if(401 to 1000) - T.e_cost = 3000 + T.e_cost = 300 powercost = "High" switch(powercost) if("High") @@ -471,16 +469,16 @@ /obj/item/weapon/gun/energy/temperature/proc/update_charge() var/charge = power_supply.charge switch(charge) - if(9000 to INFINITY) overlays += "900" - if(8000 to 9000) overlays += "800" - if(7000 to 8000) overlays += "700" - if(6000 to 7000) overlays += "600" - if(5000 to 6000) overlays += "500" - if(4000 to 5000) overlays += "400" - if(3000 to 4000) overlays += "300" - if(2000 to 3000) overlays += "200" - if(1000 to 2002) overlays += "100" - if(-INFINITY to 1000) overlays += "0" + if(900 to INFINITY) overlays += "900" + if(800 to 900) overlays += "800" + if(700 to 800) overlays += "700" + if(600 to 700) overlays += "600" + if(500 to 600) overlays += "500" + if(400 to 500) overlays += "400" + if(300 to 400) overlays += "300" + if(200 to 300) overlays += "200" + if(100 to 202) overlays += "100" + if(-INFINITY to 100) overlays += "0" /obj/item/weapon/gun/energy/mimicgun name = "mimic gun" diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 9728a9442e1..ea92cb06449 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -5,23 +5,12 @@ item_state = null //so the human update icon uses the icon_state instead. ammo_type = list(/obj/item/ammo_casing/energy/electrode) ammo_x_offset = 3 - cell_type = /obj/item/weapon/stock_parts/cell/crap /obj/item/weapon/gun/energy/taser/mounted name = "mounted taser gun" selfcharge = 1 use_external_power = 1 -/obj/item/weapon/gun/energy/taser/cyborg - name = "taser gun" - desc = "A small, low capacity gun used for non-lethal takedowns." - icon_state = "taser" - cell_type = /obj/item/weapon/stock_parts/cell/secborg - -/obj/item/weapon/gun/energy/disabler/cyborg/newshot() - ..() - robocharge() - /obj/item/weapon/gun/energy/shock_revolver name = "tesla revolver" desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers." diff --git a/code/modules/projectiles/guns/energy/telegun.dm b/code/modules/projectiles/guns/energy/telegun.dm index 7b94698f0e9..2e66b00643f 100644 --- a/code/modules/projectiles/guns/energy/telegun.dm +++ b/code/modules/projectiles/guns/energy/telegun.dm @@ -6,7 +6,6 @@ icon_state = "telegun" item_state = "ionrifle" origin_tech = "combat=6;materials=7;powerstorage=5;bluespace=5;syndicate=4" - cell_type = /obj/item/weapon/stock_parts/cell/crap ammo_type = list(/obj/item/ammo_casing/energy/teleport) shaded_charge = 1 var/teleport_target = null diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index 1d883771b25..ed6b90037cb 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -275,7 +275,7 @@ cargo_hold.emp_act(severity) if(battery && battery.charge > 0) - battery.use((battery.charge / 2) / severity) + battery.use((battery.charge/3)/(severity*2)) deal_damage(80 / severity) if(empcounter < (40 / severity)) empcounter = 40 / severity diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 5977cd3cb66e8f83ab41cf3b29bcd823d7ab4e52..e9de23533ed99839b2c783349cd0c74e900a64fb 100644 GIT binary patch delta 21539 zcmY(qWk6I>7dCq6P^6_nLO|&f1!Mq0LZqcrBqb#z=TIWuDIg&!DM)vTN;eXMboUU$ z408|f``&xM?+3%oIeYK3_d07mYwfk3{i6zN^cz+j2l(4ZN8erE%FXhfor}Ajvl9S# zWoD%fJ1q;6{TN<-Phe#%En|;4 zOJ#4wK3&&E!I3AZhf@N>zZgCYA)lA^EDVdLBkCfcZ*1z;p=FO;FGdxpmCJgf?Ozzo zbJY9}1=Y&rQwHi}Cq?}*G9Kl`&HbzX!lge;g7w24t`AN+r4;<$ka67lb1~Mg*>T9T z#28dT8E1y0U4ClC59{@MVg?u8cFehB(571#PPnN}WHnGkq4G)nK9y1SZ@eC>oVME& zsewpg4YNDj{j&Z~iUkM|e1)fc?PtfrXa~vMOYq`(`$s&o8wb8!9t5(_i(!aRQ?pR*}EXp!GROavQ%szfXVAW~V zQBr@$WvjfK(TTX8E3?Pg8TvN@dTWrV1zqnT#zRGO0ej^`{adwcW9ARJ>yl-<-#8K7 z*ws5zYo*JCK|8N&l=X1fK|O7*r(sym-$C+B!nKJo5yK@8q z$I(j^xJIH~d{u7`bY{MP&8;!?eq*roZLu~(&I6?>&FEJBFtf~Wm=v%er^v9k)3>VtCp%?U> z587e`RR|Wv8FmlEPga_J(YjKt6}`x{CzrQQIk`94oa5{hkFcrKbwetvDOZ~b)kXpm zP1sC7GEc_`goXAK|Gdv0*jvL}EE3U#MPW&XgQpok2^cuH+hKJxlLv8k1xPNlk&(Hk zTThfFDg?h~?6er7i6h)e)WLa3{Jf}2J%CJ(kO(L7+Z`^DqZCV}x=g9M4A)gSgiKCJ zBQx2qK(MX*Bk8m4x#?P>l+@Ifjs{n)n2k`s=v3rH5!?xBirV5^KmJ%gyu%U&e~vS8 z^4IquS3O&L_KNwbPtMn`#O3AXK)~mxzJ+^knJ?yqC3${z&Z6LNidj0Xp%|Ubj;=I_VU+=_(xTOG7 zJULM{i~BB}X^DH|;krq&L|Ff@W0F+xrPU14Hc^&Dj=?zI;-ago$l!LpQn3WjR=Z z*`6#t!UsgfEfL$3g-`#=xYaZbezzNMktAngGFa3U7=aePQjluemBMFK^=?h&Hj6YP zv_wTWx0*ArgVu8w)P<|VOqHy!*Wl^a_|bZX^Xs+W$!XI55>4(~uNxPj?oX!+;hz2q z;dV&aMW^LsmyS8LAAe5oKd=}9&p*jc(_A1fC3|BR;Yo=1d$S*=rlz7|O`1ImPR(u` zw1@pZXdrPpTI1{HEklYW^ z2SxB1pOd+2t4Iq-b*^4dSD1XxU;$bVyKcqQQI<61AQXssdHnN^zzfSDHQ$B;Etk{?=oyd#>JDT>jltpHso8 ztG7;0k7%<~gPjLA3D_b7+tUAjED_L(HGOXGbjrg+ilebe%6K7mC+e0iZ13h#)Z^gB z!N;~XMGsme!y^Y7oH3ph8Z#7aLXym@SJaOjW&*x`ec19CWeIffRr;m|Q7&u`QkTLT zN9yMunV|*yG2?I2%TBSDQjCxm-H{9$9xwV@uHh+WT5tZm>+N`%@qNo{eK?yGNE5UO zsxwWqfRIZ?MMV^cYLq3X5cfFimKvz4klf$CbN@w(MmAER(o9P$LEF9Fc9cyIx$blk z9Ublc>WwMt`b$29wJmLq3^&W>un2;L+=aS4`R2Ov+%Yr=LS5Sf#5z|ddp@Kz8cYT z3VmIz(H-F99j4#P*<^Bg0bj1L&NfH8kFZEtq@$b>dy#sNoCYrQk0%f2>IEKolA-;t z&glNmrGL^lH89u;=LcCs+}$%5$<7ZL->ga>3eDZEhC{Gc?KD0%mQWuPcKy4*e{^Oh z?fi(4HAH`aJ(r*C4Ng48w>eKZtfflkBZb-mpOEO+G-)n0>_!C1eTB^$%chiP+m~G@d z@1spcQgZT>*_f4ULe`!qF}Dvdj#eIfY*RrtN7eRrn%{ZoYsabOH(GiMBAuSsv(-H; zAOqRe4)LCU_a|KZm+ez-j^ZoG9&;}tug}oLo)#c6>zufu&7Sx7Wzt~=t??j?VQyi;^J!QC!o#<`y5e0&oEki zuB z7Ki}YCSt6qksBaIRCPO!Ru@|?S^@bXpl5PsS?*ux2nkR zK@uNT<4r3zI;e^XaFekko8Z%uJA8wjw*DvHA^vD0*2Yd~K6w;@nlNLu;1?KV>g?Mu zB6xj4og2IBupoxaPKo1)1MeYUT&)oOZ@EA9-|p2RJ#J|sEoty8)S*Tf=KpPk12s+@ zp%sRVQw;iJ1rutzqyuA=da(`c^toT;W(Dx_#66qf3i0aV!k~sDuF>^yM5zooO^4|F zx!uH9*!0868*6z60NZk8f7J~R-_^a)U8+Ka-(d(wTl)nb8zAK1_#s{afBZb5=mLC5 zh7RH75u&?TT9QREO<@BZmtojIfh(S*r(X`=IU`8A!=gvNgzC8qbmYy@?$w%WIz(kW zTa%wbsu77Hah7aO&(Y_9wL|~0?Rp(NwVLTCnGyPi4G8Y8;p?dRk*fbD`5hBZ?X?xb zBlYB?Gq1^4po7M3J>=cX5*9~v1fIPp*M|ycN4mtzi+w(Gpi6^hH|FiU!)LIn)Cj9^+yx^?cEF0aE8Y|6zf))t5L-c zYCW$!Zw&gpRA6@Q=@Vu|$w8<*8<3Hmx842znng=-2P#f3K^fud}na z?;^=+*|9$Mei=PB-suS~;m43gHzSis5urv-Y)?=WfIxCQreE~IA$^${b_(*Kwrj9= zC`3y4HF=0E1rJ-v)9yuqbRyqRcf-ipzgsz32xu%v$OhwEY_Bh!LLIwe0`e+YZau-i zWn{(@_%h>+^IDnz0|$#HRikL!Bjp-6&cqP^$;SDkG))b!^0gVDd*6btPFizRF@Wv( zBr)icfO(XV*8yDx!&D&<*AqCxl_Y)(4S)cO>c>I(eV_`b0a;y4O`GZ!-OAcotd_O^RB01qB6_00?~sH@+eI= zF&*6z0SUvo3NjOw=@Ap8;-TS-aVGqX+hPCp=jJ(m$NcH`f4L3 zqO<|}+-%z)=c~)79_ItEDq+yQkfYiH5IyRc*%b49^Nw=-TGepwW2HiREd4?T1%~-? zbyzunl}H!fEvjKvVNh;MJ>DMIJl$zxcBz7{$jQ<&a1{FLa?Uuhl{9C?G4o7uEC5A_x+b zszQj&@7vm;Yk!`6aDrpy2iK%$>sO>N&1HNKBU4Jx^#n7WW6yRoyB@XQ8|(Ztpw2t3 zdibl?P@XVXgKC+^Z;0D2q88lsm;%Zrf=M-oDjQm6^b& zMe>kow+BSw{ua|y8B2_$o)?*pq|u^PE*3){k9sfe@+W;=V-2V8sEwN983D6 zXcv5yu%BM4q|UGF_XIBdX|m{DdEKw?#=F_2L=h2fFW_dNS=2#4tY53%wR+4uvFyUt zk9=@jyHR)UjUoTp@S7lSI&=N_?2c*hr#j7=JherT=T7E+b|lgEm(1e40(Zx$Ckrqd z$_d3MnhGzrX3N}~Kz`2R*mrpmg0jsXYUj`hyLk2=N`imgSS}r&b=#(_r|N?wHNiV+ zf5w&{s))T8jGuCNV74~W z+oMfws78N)^rzqFC~LsO*7DNf;qLcuaHPi_-v|od9zpzO;yJ0Q;ehVXc|FWRQJocC zk75xbOI1bO-xP0KR+Ux_TB1)M?>$h78Ufro?3eB6&0O?fO1)gUb*D7E$j-0RLhML1 zT0q=301CF*hz{^&6XS81{}&xGfbN7i^NVaelpr6EMYf{O9|26OuqHfX8piv^pd|hh zO&a;WFILaf_&rl4s6WrcBgV3Eh8FPoPp8QD*a8@tlrHI1?rO7ZUn`-{9sS2*E!P(J z`c+5*4AU1ef?n@YUTaVgPkWZJc!>Pi*;=h7LQuSyI(LpKGxnTa1QYh_^v;(_1-Z}q z!E88s4YQ0OB`&p%#HXS?h+)b0L|6K)QJZ3N8m5=8F!HW&3>1J{fljIhHoqK?-1d6{m%$JPP&5AA|)~GDpm1_M-7b)Gy$#T`>7by zqu(6t$=9k7cK)YJ=}Sjv|CetJjs`f`ldh>so&zac&qwj6zbKLdXU{M8FOF`8Dmk?g zo+Q*Sg22{zZ)_D?lD$PwS4!lU)OdElGn@fy5FQlXo|4=+T}qxOD0j~))RbN~H|>8I zm&V;*KG55$AH^lgj;m$8SztjOafz33XXrINh~7ZgKKFT8Et2{*ivUTf#(+S8yUU{! z%H4*2i2}t~W+^1tu~&qIYQuhV|$cr6tOz1S4aw5Lq}14nyfL)_vy(-*OK zBQIrnf@_H+UK04G?R(f8ccD(_B2R6t+p0+kv*w$AGBSBKe1wu$ScG17->7O_iE?|byy*YY{>8r*x5!kxA>g|MyNrJl z8K1nOREVPhnkIn;00RVB;DR&q=yP~)L16pI*7EYT)(4W;e3vEg0+2KUK4qq=|gW~VIS z(Uf{S|KZ=Dz)&Fg}^8E(U82W82dF>!X+hIJT;uB>g4Vku_!M8v+@LJSDt2P0g6RLZ_rsDSeDH=N@(L!Qumzll@BUodKtmmR z@Rd`NL$}jb_IQ?w2{OQRVU0=fov?w zK(7H@DSWlLO8`bP!itpgV*Pj;;!Y*MR_}LtoOzZl_V%v)n)l!1wFm}EvQc#tldPRZ zUq_GIVn?)J87RW^II0iKarzIyOS=Gm{Z=0_Xw!+OoI?HS9_w{(CF*x&)9+E~=z|u^ ziz0z*bY#RxInk<0nFLl(z%21S@bik$z?!q)MpoH$E_>=CQDagz{$>!A47b=E$<>E) zw+&ou{lvVtFEWnse%nmmLW{2#?@*cvVNRe&Br#)cbHmHe|{FA6zl>jjlHc5zieK-UqsX{Q?gt@`EF3|W#F~vvV1{* z(gWMKZ?%CXbv;!AAQS!9ZANGf2UX{ohYh5*qpAfqF6P21lVQI+0*s4pZsVf|-{DaR zC)F(a4#CjE291880O|}JYqkdKw& z;bG_40z3FAiy-EB!#UvGFpAu}3k=q;v5r1#s;#A7`ABkNB#f$Se_Q#AALb*9fUn|g zpS+C)n%1Ua$Aq3p*QXV&x{XqHUS50T9qS0h`QM$`>rI=a{?S{2%jJ6?1E+V;r^RXe zck>;kgEd6R5hVHRaDy6-`llG-+VilLHA=j2Vlxm$&MzRKZX~cxfUaxYZgf1~R$3!H zKB*V)@U^=CCH{VNrL`LJ>uiCt_URu&u*m|4x%}&~c3w^~-4hD&GNV+(s(oq1We<_# zC_^F_&a;omN^m(u6LyJ=j%W8DZ-1|R%ju^u$5!U-q<;uhd#2sgqhOHULP=AmrX(+xQSC(mA(nTaU2lGR-$W|Hs4LgkN+)nAEN0Q>W( zkrWSiGt2rRO!Iqz9PS3sk$Ww*?*)9$w?8;0;3_A$ zoW0nGGKG7`6xh6dHR)T$YvSNF+k%hI zA{N=-Bv_mU+2yC=^sMesg=!Pm+}Iylw~^|`y0m-0pa4%`2jKtq&&u|Zcxjw+yV@?Bgns#<;hC?}&L#<3lW@jT<9AM#7Q@VTqXf*lS z|DxnCd#eY(rL8JlM!vfz#mYe+M%=C@9h9(RAsA@ds%0swAOXLr{Ayv&=4NLPAtdds z8X!WZtDP=f))Zh3Ceq%&4erc|3$KYQ!mFi#?ux~50nCM>dcQgjM+gxCeYBT3eItY_J$=3za$zfk&=2SyS{rsWd$Tb<<+6l<$7HEM?ne0l=5(X z#j!s7e)QUDs28*w?o+*LUQl#~i@>C#iV~l0Dy+Wm#G?T;xHbqRTrStJWDvbGq=VMc8JY<^kS0j)f9Cs41P$5sCYp%Am_Qr}}j~Bds`pea7q1 zGAPl_L`R>4*X4D#`)6hF2%l6J*mzD=2UTh0u?l58(xMe%job5$ZYE4`kCuC9-wJ78 zE_DWD%`j-rAVbI~?%M`bi8Hru&HJA(RK#3PXsg>*exUn9_usn;Y|a5V;*MIUB|ik( zQCcF*Jm5I_$?re8*}2B|25g}LL$7p+*on2XIh6>*A3ETK*h_TLQiO*T9JwF-Wg;MD zmgg;0yIm?y;d=WUh`C0S?DQN_gyTZ1v7c!pJ0)V}hX@!33oCm4iRnRm;A8BL~O|rL}WH;))Z5u&LhTR)kICc}V99g4ceD z0o+s|dP{w@M4RiSGgKAC%Z0?L+2hKPGg-br7;m8<74MhJ_iJZ0NG>fRi#&WH-{_P) zl|xy-$~;iEQsY0{BDJ+Q;DYN=)ByAu(?H*1CX9k@A#gja~2j}S!zM`Lb*+3&EkB?dF{jMVN&4dl5P zrTu8347g@3m#Rk3an-3^5VZW|-@py|A@|wG*HC`jP^aP0_CY`hc$XTY$LQz)GT3dC zWz}UJY{dU>O=G&c>mIZJsU{%f=*R~wt;E8n>d3cx9G-G35ZpaN9rdxSKuU@Q%zJNS z;kU|-a)rckFMlP`NU*Yk9sp=PW4{qg-N`ZTAnJc1--RUx)B%=u&p+b;sI7>tnJ7>K zy65)4>cUX>Lp(!mZJc{n^4Z|^6K42@g=)HR@92{X6NsI(KKSh5Z|i8K8Enr>O*=<+ zhf+?7%GDvD>o9~oqT&jPKyqt1?EGuQo;EEthM#f^9%CWUPz-nXpb}gq-(`F>Fv==Y zAcNQHd;TNofwoI8wccZCaPn`f@7qeZmw}%UA6U23VW9L>nL#j=oqj!m{kAuZDDLR)wmSdnYF@?r>#D?kninHre zXSJ0kw_!1dlZ^2ql7m*2KvXDF5|bl;tbQjwNZBZaVW{7iS4n-=o((0{ zYddnrSR0=SVDj9((TEP!s%w#zbJq#+U?#V(Q9|1~nf%+grPe{F>{?a-cYxN|t4ypjytSCAW|TrC zpp_FO_I8T)FAOS@H0)F~yG)zBr}y z>v!oc3D}cv{d^^a+r2dEMGAhps~OnTkWgOvwptI;&t2gWKP`0|&&KqGUn&Hcn1Uwu zMs=z}0{uHV{Ee3H8ftE%7lYlN{YMfsZwfZ*1E$o0HI`>#pbT3DX5>6uHx$0Zyo+2_ zmbw@l$eVt@K=ix?Dq3@WZpkw-0*8IGMrUVnPAPc&1QOhi$|TR zb8B#wv(wKYj3w`_vbHwmLmnQIos3VPMtraRCZMW?{-PuC1S8h|LNg5@i0b_Z1dR7b z;crpP|hu?%=tHqlUnT5q#=8X?I6+!iLsH z_U#RS$$a0xJDCTpj5Q-4zCG!MMt+FRC~8Y~sBP^_QmK`L{5d>-)T=`J>yikck0GC~ zb{eXM$R2C`bkwle>0WtMRlKv|5CAb0E;>CA)Hqb<^JNCfmvUr-ftmL)N5Xht4>n)# zU$9B^03~XINH>a&UxaZ~B8$^jIi|!b{343(iAQ{FU|pSVMuY=o!=J)8N7+jM*%Q0} z*%}XZWbxU|-F=|(5vlv$mmnt^hwA(H?>8$-%VNZL?cXV(D*g;n>(~}up@gMYSpzfS zfv2R9XO+gw5l3PjSe@EwHMACu!rR3*4@MLs@6t&$15-?|L;gk38K#n`6v!Ypz-i*= z0i^j2N~E(ldV6WiGF|zHNMWdv+P2BV(3F(Bevr;Td+{Q&&J;#d zY(jk2O$rOi<8E-Af84jm77`Z|vJ!X*&sIts$Pgz5svQ0Z&ow^o9kj~==cE4<5bys0 z@{44g8`q$kFx1zW?8Y}M2zv&F6W{pX=h5^Z^i@g9D2ZwjyATln_?^siB5~$ezYq#X zBe4ShT_6yMP&Gk|?Hf$|<;!TUxCD_J$8IP(qLqRXv9RmMZ+q5oYrdrq{@0VTiFR;U zQ(}Vwkgt4w?&MKtQNJY@KPBaLnA7RSq1<)DK04Mjji>L6oj&cFg0Q`~ld2fchn-%` zo@#q%N63DHTd$Aoif|k&pl48AQuuQf0`lg>BY=o`%+GiCr`;`Y;)}8PTqs0Sia+`h z#~KRj6W{$i2y1-O@kl0tGPT02QWO*;QEPi46W@pLYxejuOc%?2tD4?ykmS70F9cT^ z;<}yf%@N2r9$;P%WyTE`KZZurGj4*n{>$Dd*4#GtSFX?iE}TNTE}ln!Rq*$>e;rT} zNy7u!hJ=vyjR49+kPp=)*E5TypA0}EiIv`E2|O=m7B8f8LMxauXOU5W3KAduvGcu3 z!t~x&?(Do3wATr)^kLgBt*q=Uh86eIe_d&_r$7vUys*^1UA*DT5qGlJ_GrwsWv@K`lX6J0=l*QqA@539*5+RUbL^JE}-Qo4lmCvBINu+#BSABOMaEijw$exgE z!KXg5=NqIJrDKP6n47EF^lPquOOPm$8Hn?|Elh#3-#0GVS?-N+_P@2Zjj+v4BECL0(}6_|_Kq_`P;-38#LMezGPD5w`t(mL#I>Ib5+7 zENu0Ug$nQ{sGK~Yp0Ja|e-~XbG4x_`bIeMti9a+~T66GS*;~GvQKAz{Yc41oN)1e+ zP%=U*>m!dc)x!eO0`zL)Tmti`!{Cviz35RyQ|lWTei1x#M(LYm-xvfkMC z-uBVJdSW<~doYI>%%4ByBwx;EfqgV)e*aXm@xyjUvstXU=zj-JESU`cRDHmSPAl{w zU)cI073qIUZZ->NejW%BoBU#d@!39r5073)G0h>~?BT<&c+1q@ui#y{Bw27($Dn27 zt|(kQ1me2z+5JW}S&!hOVdJHEv!+WX33tMechaMV|7~C(h*wdD)Wjc@JfVa*%g>t0 z>+We+j%;t+_tmSoy@tztb&HrL^hb{noFJhYH%t{_$)U8hN6#IoDlygwES0wu0NNVk(OPmO3Jq`QP^V`EovL6YG4M8oCtyaV9=5Fht{ zKro(ta`^S1>Qy-wX^dPKKZQFz>v}&#+bHY9{NWwOhv<}Fo=+AQ&|q~uMCVtA2=5c< z?|(@EG>GpZ1g^8sZXcc^pq<;{!lX%ph(*VtVQ=#vA+7lIc5-t$`MRb?8T3A$y%l%p z-_O{jW8i1cGwG5WImhv#8)nip8?xGPp9V_Gc8nFg;6ot#7e-ibACkfvUp?Vx!U0Y- zhWZpR$d*!p9JW-I1miE8+Hcuj+Wv``cZS~uvvhCo@SY1@D?t{m{QLd#oBBPoOC72_ z?1`~Pe79-Rp2NFh*g8DV`1ZC%d`>8-pU*yq1*)%e34SLcCN6ua!9uh?$C;LLrb=Jd zxT3AGUW7s6ZL|C~guMCD5{td&fiTXy?)?R=!i+zUI%YE5q3vef)2HPFL!}mES(5L; zsXX4&x<{pUzgpxs=W37A34TcS)=(9@%j@Q|5B&)D8g$*FP4PgpIvq$5b`hR*CE3%7 zeZ5;;AtuFO%^|eMUNt-XG9>>|g`{stV9Kl*WVYnvuR`VehpCE_FYO*E`rCX#E{&P8 zF@5zP{_Ywy85;3q(|t1l%Xea!tvs3^tamSNt1t3O^Yz^x?yPi$XNZFz1~b}Ku28+_ z6_9QgL(xSrc-X#8x##`*XE3t`-1Hp4n{f57Y&ljj6i`J!Yxjflsh?x;CUzvf8%EFh zv8h1hi>H!#Jb(M(2uA)vNAMXHZKdW)+G@>3-@>PP-Ds(V;E@&Tlwkyd`tGl@DqO?F zVZ|}ei=v{;rOsxaO6F{<{aGpsiDb`&oaJp zh4uvN-G|82n(G)MQ=L%Hcry(vj|lI~oJlb(lvqU6^zV6H)9j}T4jy_0u2DI^Imqh8 z4C{9Nd5x?=#uWnEzRPe)FE6q0O2bgRO4V_B?;Ikd&3mmxe=dMwVfKHJJ^CykFm`0Q z*(8U5=Gd*rbLQi!q-T6uIsAf@3&S+A?)oqCPg+-ppCm{7+!}>azIAKKImoZ!wwiiy zTfp>-N0d-(G!8GjEQ~DvUYtEcojs+F>y)%LbdU*rzRDE?ZXpp7Vc3ZLP_+`Pn_Qsn`q50a+2#oUOU%#1s-j5Ynk@o^s*zrM1S&7sD`z_$ zH`5ePi?nz}vobxbqT|}6(d8^YV0zfbpr$I9WHV75D&y-rdvu+zZ11jT63JisikEB6+EE0~$`9qmhNI_-bPwAHhGUzBLZZ2{%#)ZmR!XUTk6x{qaz7n9UyiG=i?b@p zRqEQ0Nt~CwFHm~~4}#YV?T{#^B?(p-&-Mi|Zln@fz}X_09_^OqUji%m6lMP zT>+An+(QGK_nJeBqDE#A?HXEEA#ux{iRtE0jTrZ18q@Qo(;sy`gua1y$)HH3M*Xu6 zqy?+}(5XYNWYv?c59R8Fu0L)LD4^MQPaf$0k3gfHgBQZl|GUhf#&1%;&98CKVawts zHw6`tpK%T(k^oA9T!VD&So@X+Fo$Zmx!Y!5|31t%LHoMpwyXV`g>xv~3j~}DNvey;0SyOjSBEo}v2?1# zewmb9YD+!gl$(p~?O%?`DDZ3p@P0txZ|n#{$Iy1?>Phe4zYlTkb$(bn%+(E6nIs_) zKWGZC6%oMh?%qL$%4$Nh_hX^_(1m1e=wthQ?Niq~VJY?uJH!~CFHuOZXIeZJm zoP#(x1WjY?`RuYdyfXNt%)9nimnR!Vd^pn7i+ zAJBRA%C0{p(@S)x(MMqdk=$UI45D>XNz5->rv+4SaB~*2X7<&3H8%=PCx$~7e{AT$ zv~juFU^SywA}}D#gTSfPM6A=uxgN>`kuT*kfTV!_J2`(4;|&`u-VoEAPW_rl#F?_F zht3o2m^@im2CAG_l?qy0nV$XiVo&;RsUQ^?x=qX8&X!NhCS&og>u?vmEu<%`5MX_C zrbpOege~aa7p!gVMFIb5{4~d<>P1I$AN1n93l0=|lk^AK2aoS?AJ5$52>(c>&0sFQ zZbO5{N@wr*PNn~f8d@0D3pHFylKg@W>?!Dopyo8`_Q`vz0LUhwP`Cc&6Jn9${*c{M zh*ZQBCcX8T>KQIKIFr(sgV@lUDUuOU2w11mA4$_Tm!jRnRH_wf;p!pkrNEM~JE&n#yu{kYQ&CcL44A8P!~t3mQ%1JV&V3%!CIkTOBZsv2 zHtRBGQK=LM!D9mWhNcB@PE-t#wQUmt?6JYP3cZ9a{J^@dmkjqmC0XLvAfs~ z8+x*l*>bwT80;9pvE2{@An3AiI;nF5_Ah z>gVEf`waWOCRfoTnG@qoqq(_c!S!X1tyMQz8~4`LB!1d38fcZ77a6&OMgw$M3B`$S z0vbcTTThYA`5VW~E-67Zks5jV&Q^XFn>)~ush+MMz3LCJY#wO*C5usfSGwe*jV8v&rwV%gE7Ug{tbXS5+bCupm4kR8|K1}OlSkgO>^KoHamFRXHTKFna^-`1H49)vyr`}2kx}EzJUqF-Bh+e-!RM^ zaH(w9U z!lwT(Ih+bQuN0SekF{TgQKp>tg=gggW9$uYJh6?I9qf6>ud($LTW?(ZLBXwCPS&I) zLyvn?gdffPQIwlDGaoaf{dTOKjhrBT*{;9zW(GcL?$a)qRC5nvrU#c}r8r_90nq7U z6{EVG#qB{7u$X$zHOiyap14Lbyhwk`2?FcOQS5GAz4rHt@n9(zqT1S}by{3-_78L%vFS zmO%D&X7X{;E2OjkxH)`OqK>v5wV1o%dwHo2msYmfUrM=ej^vHo z2xvejg<=kUGtEYjqB78T0|SUGHROG5%t6s{zh7;x?M!>|?SFi@Fx&c+>Q9Yj!2ShG z;;!jc$$^+dVkfPnJcmL`w=}_WPzZ0oD^Od_JJ)*W{Pvel2I%+<@*GNLGHvc&-OS=- z+6Gri=}uBoQVw+P24XEh2O_a==EgQrl!!%22_AYXg*=u|*!doM{^V-fd~1qgfX<(| zNDa*g{|-i1yT2s@pd=`AjCHAt`j#kKU7&%AGNmO}9rS#VlH`YF>{9aX-|(W|^g`PR zjX#vU0v2%qQN~94^B>b+a(yV&vJ7K;;+0ht{GJ9x=KeJD8)L~yUNptPa(@;`Z%sb{ zWo|?1HDiAS`F|3kmCv6cN>*z%kJQa3f0kt*?p<+Jv>*R;Y(Q>fX)t>OV>mpyQh72y z<^dI`mu>!-j103=o$OYbNC-km2x@~K;JI-0r))nm)eB0HdX5$Fwj$hWet)l?5?E>^ zD)JS`_iw6RQM6tAYa0}Ly?T0~3Yua(L{9z-r`8EG>v zfJgS?a}5hJy|Vp`U@r*qc`MS=|0Kf&bt&0;4QYw+yC7}B-?eUQT&@pXR`dpLT*@axpYD`_Aofno- zm!-en`u{X>?(t0he;gl5BxyKv4^ZmwQxCYEy z03cxHlz63{R)9d7r!=!o%2MlfOOQ~4c`xFnTXT>C4anzQ6!WZ)%{vsdSVGk;6-vqu z3L974it3kU78PCAC{YvX+dGmGfC`;Y!pw*A!mGB33Pnzq%nf~8yMEyPmeCo8R84@D zO4}gqVMkNsv+lv!TwcidXDJZ-B4XD<&0-lP!?oSCrO!E%OnjD9eh1=OZ)oU2^=n%NDQSD&@_X z0Y~>rjz0=24MT$SEGJ;l>0Nv=jxW{fHjbXzbvh(O=Se{Uly!4knx5U(?#QU{p!uz} z=0p)O)lT&Im#l4xc*u!Egp-G$=1d)7DLH3}Z(Mr~BMlm98XUtsAb%V$e zjhSNp=G=@g4u~KFK2NwUQ#-o*`jSAN<|`a6jf=UVh3f(2!Tl=|z{+QQh|ie3jpMBn z7$`$*0~^h|p_3c#6Vm;?#Nn8SAczp!G`dK|W~E`Sd>$MS z+H2qEKS&PIZ%4t72ct^4JTm8Xv*O60aswaOWQ_>dQ$bJ+3Rzm8!UuxM&DkA(V~z1z zdJzM-9PsP?CUV7#D-HZ<01_ zNXxaw4{oXWc?P;104*c^hplrZf3Got&f^Wj93B4Y;7?~hyF()NJfX7Jac;oENa}m% z0wTg$iiv;M@4J`0e{X62kGw@i?!B`y|l?$q`3-)6mGvJ zWA^`}ygsYG8b`#6dk|@tH@A@~8l-%>tA}s;kb`;+uvs@q=lz+%C^UmE&~Y*nbbXPeieM)h{U%4tNUC2CS_#oX^z4YWi1>yDW?067Lf+Sjs-fJ2GrF+A$fJ%3! z1p=GW{n-#mO~MYy)ob#lAm(;GZ11E(OECh)fk9wXU#x`;!YB*i)!IpKOcyPV@m<_J z&|O|gz#Cv>jd-(eEps!DgG;c%LcsZb9gCe7>vp+?=fcWl!V-78`W^OuM5N6#^ta~D zeB1v5s{TX$9x~m&oowZwX6HWRpQKKL=!Mh94D70c`DKyBHfww<9^eOZ=7)axfo@E8 z_c093pAJS{%{JGkv`z?0q6&fVf`9W2rDkK4^^--bi1^m_<@nHP}$p-NP45%jE&k8r3h6N(4*FD{C%{(w`3 z^DCJU)U0?+Vs^z;&?d&6a}+c1DRZaBhS3ytY&2J7TwZ{ls8oX?RB;Bdd2k$$Nzh#V zimPF3UC2Tgot8?}ulG76Aw*N|J~gk`!Knf$XmERZ{W8q*@(;-XTcb}kc6F3q$Ao-% zV7d*<gdpK}2ppDLD0F{gU;L)OwTDW1TX^ z!r=Liu6XfJ`{(ZCQCfL$qdl>>1qX%?K z+(?$fzLr?(D~mYQE1Z0T(p9%8WzeuTdYuy0SKddOnhIP?E7UEF2I<wZ<;URgO&Yi4h<*f1hnX41(Yrc1 z*+*ZG3i~6^S(LxO1m^3~;S1~*;HmLty|-{IZ=4(LGWtfuP&DIl2NT$dUOYF!EEUJM zO=(8=5(N!W-m(3);9_%e%Qkl^6;9a*KNIzwEft@etaTRR?Eb)K^UcsbVmH3ex~{kM zf9J?rU$J_7yJhOS%ojNJvd?1`2yVTpZxuAkYv$)`li}Z~4$v?^1i+uD%^QvJa^%h3 zka#C+W7Rl}(S3TCZDc6Y>F8t?A0M5n131FEJ&@RbcKocfq5Yca_FM;g#4DBiUC5Y{ zgCPEjS(|6ZA@o(ffL+m-YZW*xoN(@J25k82H3!Xm*p(jnplVyz@S)zI0F1sKnWku2 z-<{EgFtmCS{n8D<4MLx1N4n!k7J`E_xzcl{oBSZXSgV~UzOeN!$E5o2-<#9b+j_tp zj(O|v^`^10(JbubK2?!ej7I4cL?}DAeq>5lS4(BmlYUAu-Q+B_wn0+DHe2{C`iBvi zJRqHm?f}cSmxfRjBoN58dw~=Gx0`@;Yjxxhd}^f8G@#bLK)R*!CK3J~0&yp29tb`i zS^i(iyEM?1GI>+WMzn1CZoqz}q6emeBYRd}nV>QzHWsIOTN+qSpzmA>J>^aZ9FwQL zk>aQ1F1c|Qf&(Lu%l#N#)TY{7k%;N#gYCjzlD}QTrE(@RDi|HLKj#K%l1=7Qd;mlz zK#R|;E&DkZKeHQ261_FoVW+==RzFj)GyMB3Y@HWjy`z{Y;ALE!-O}US!e`~o(iGqd zap!|SVlk47ZSu-}bq~cmZR3Xi9ytcy_!b4p&2l;$n;bh*AU0_|w+kK6UGPxO{jpP6 zta7ey|hw|T!i5uK#j zobp@70}5+&LR=)sfVJ#sTG3kdK67QO^bRHNZ{F07#JS!#F48XVV*qHhVmX5IZ%UYz zS1Ol?CO-yF3JS8b=QEy>)T|gmTmv7#6sy-+HRnYT5@?NLgumbEH67d|cj+fgw-7#fEayyxYUY4I4ui--sO zDr0@O?SRvM+5J4UfE-UJg|nx$($N4vTo6j%ORWbsi%KnemKYbIEe!VwH~}gL4wfN+E558!r0^@R>`PbsZ@T^M`XpHQ zRkh*bx2C=$OKT&Pckw}k@?mO2CMRBv#9iQevha~_KmK8$G0{Hnnw&ft@`c#OV+eD3 zvgh-AuS^VZkCAkZJZVG~O?FO+zL^Gk;JclFA8{eV^%K?(R7bRyUFh zn_jH_s9{~d%D5}H&35h&OCnL-xu}MN0;+`29lY<~WcuDE4=Ij;HpHeED6a_Bl9rW9O(r85X09A9TS@y^W zf8VrKRaDn%vSe^C+Mutg5?7un-9&eOw$8%F?Zv+`nCCOCAE_CMcq-ITfms?LUGzuC z$(t$@F(H|g^Yv_nTkgIgkNCT9hFJ|8`~zG5<{^+0d8qV??D#EDFZkV-n~e14DT$x9 zNy=K^(1fPIoU@^xia_(%l9(aaX`Y)@z#_3M_(Awz#Aqn zguT%_bU5MEo-wJTo>i(nyPA2BwBYA4j@81orUAT`xnBP*Grq78>Qn98-d_B9pex4F9=NGxIpRwS11nn#KXs=Frj6=Gq*hj5N-w>a z)zk(PW~aTp6#uVYsT(As83bh}_^T}sprFsGFSm!PRl~~|Y13|&;>BM98`B4NvOB#H zBgR%k{LhZosn2Os^{kx1&DBGh{B|%VzjZXODWe?>Rx)Fs#UxVJE;HCg*8PL(D#yqT z0VYes>X1a1O8hp{ROwE;^oLpxM7{jiO~ z2fMuxQekw8Xn|1#;7(7N**UT>*^bh~00WsyX^I1tuJnoqJ?vds&861g?f-PY;Mzj> zO8!FMd6RL%cE;wK#^LT#&6WG^p9km&szphzH^6f$y4T?@3 T#)mQn0k`v3j+W#zes}%@kksn7 delta 21426 zcmYhibwE>p*ategOF&9QI;BelMhZxWgpwj%BBj7~0Fh2<1U5Pal#m`GAtfmwA>Ac0 zV$?nS-uJ!t{=qiR`S$ne&-09Y!RoHYO5gxG{f$h$RqVWM-#ESYcJgqCK;C9$r)zsG z2~&m*t(chZ(pG(hxSh7!sn#tGU*oNCytiHKOtj5B+&@jI4zypl>%uE=ko8#Ox6SFQ zI-TFv{em%7vs!tv?EHo1h{aQUQ;X{97n&OJ%;ZX$Sz2Hs**;1~wKZfGGF&|}t9AhX1$r1fQqC&#JtKB!Js`r1e1Q`~)&6zAtr^!<bsQ@D?5yC=qBHL)j z(?T!?dRD|+pJF#(%$^*wwbe6^T>AR~gZV*6C=~4X>sqy86U(eGcCng1X3Y?$&IygUtbZ{CV-|=H# z>`GNCv)c5FD3)J{ zq5`F7hW&U&k}A&2dj#Q+tQ6QPlAh!65qC4#ARw%vly~rx^vJjY4P%_-S7wQ?%!rm= z5weCRAf?5|p4tS4lQV~mS0P-e1%!lp+P>Hp-Wwu2XB0x0>R!zrx1No?7+9rvftZBS zU&Y{;thb*2Ri1By)t$-(oT&KtNKDVnU_n~_(NAaA+k_92Sl8X6ip7k^*>AbYf1T=llByd10j#Bc9(9~y;ex&FTC zAkhvEvDg_&4GBt3y$ewQr}I4C&_CY!V>qLeZfj>}XRQD2cyp}hpdMVi5(<7*Z9mAk zMHdB+TU*a)d!WWneu3Er9CXl=RaX0vCpmHf5D20cs9kt}bup%eF0YdRUhl@@*x!16 zMFI=9DCA1LC}iEO=2Xar&-)QFVV7xe;|LI<~ z&!_r&$t^Y0o0=ia(sI0*YeG0xKpuiX(E^}?C8wq3mzHY0fGf_o1*xjM>t>)ceYoe1 z`wR}0Z=>FY)esW|q&t1%C%V=LmMa^NtZ=A%tGlJ^vW?@>j(-@b4 zRogxGCo%02RP4i}qj_?F1NP;>h0ttId>*@R={4i_ZE;X)zVmRk-xK_u>oQrHI>RjE z{nN{B%VE+aIlbtnbzd$HcG0r?Dofky;~fAWR>kWL3${X_3@^`i)y#mNIA%u=kD;@v zFScq=Z@LoD(IuC0Gmvmnh7fRv$9r>3-{yRon*8?TsMw!4Zd(QHO4QcYI_l@LP%S2~ zD*xN{03L7qS{5Tq_O-wX^pf|v5VrK<8~i&nX#p3A7ckYx#pU>5kHF>TGjtWOPf-1n z#HiwEwZ=uh@USJJWUjW6SS83-K*fA7j-W zQW)MW$6JNuZIJ%V@0*Woeu9Aro}G)z!y%QFo3w z@z#y3%)=j`p%)cZi?HEUIt&YN`Ek8T=U8Li9^92vA_e-0`yuu?@QDRkB&k|vn4T@a z#RL+UC3v2n%j->Ahbp9D81D(Uwu9Jx%v~&+_t!lvs8IM7=KN)c&hZsT5*#7_Fzhsp zrbNw2T?zxIJVA3WvieI&N=X%?ykjJWx`cT1$l9jjWs~=gr&Oi`o4;l zJGzz2^(tR2-g);R1HbD+U%!FDgcF}V`g{L4h1!is>imJc6Mlooj;Yh|*+JjL=NDv& z=0iDhWXspjpFbzh&IzGS1t=iXT4!dsh*&dEKj#}-agNAT$>RDLC`fN|+HZ?H{#hnpCUiZ8FEnHCf z=I_;2W+iyMTR&(59XPzaQN|`;X+Qju*p6w$qZ6S7_!QnpU@` zv^6rp4Gj$~X*1|hH$0n17=kK~ng6z}k-iXuM5jgU@_W+cz z%Wt{pYf8zUS1Vu{vEPHjTPCj6j@Uyf4MFe)5YBE$wMj!qDWr6_TKQ{9S_ud$0O$PVx{g27LfwlN5ud+%CwYB98 zQ3wcl3_+SyS%$gors9A)h2YI7cW467!UjAD)H&XP|7i!NE6idFdfQ9BG!T8uq3CQC z0HlhrQ{N)4R1;%k|2$2AkTsimU8?hnfPkTqB50JdR!D$#b1N-hn_|A24e z-%AlUvn4<`HsZ?d!%3UxGwk;s&D~yZQp=c5>$f6rb10P} z-$Kc+NrQ(eROoO9#ad6JqXnDP1G3*vp50eJE8-86NRQP<1%lh2uK8X6?x5VN5Z~sy zABD>jg{b;;cdz{ z6R{SEE&Fq&^DJ@UMf=T@VUEEIS%HuZW369bpfs1UlUT?i0MZNGs1IY|ax* z9#UTm;k9T0wyOJe3)s)@Dba;(H3v~42?Eb=p5YbQ7Se{bolBsvifx)PlvRWM|Gj@t zWlc4*TNxHILa}U~S83&AfpNJK-7-XA_K;Zq3aku<4ij{Vsb)fsuo`zg4B5>4&#xFN65t;V(3@d{P;e-CnNuPDE3I%? zMwDD9N_F%0KqqX+I@VfwJ~L)xwvbLb2Qg{f0m^+@C>^;+57j z^%S+MIm>{})iNJ;)~6|4h$$u0=hnLd5wX5rC0T?o=6Q3U0FcX=>$Z!(0e!E{Bi!~| zi%Ee-su?aL2qX+O8_`F!zsTFD|3@+xTgU?5$i4ort}B`rauzsIp;yU^&i`yBq8n@9 zai%RLC1pEWpaBVzaGAh;=uwVHuvAcrUCH*mFHZq&!h+XuTK{g7Y_U7MgkXt3C8J|nRD*NW5)fI*{Gr_ z!T{rI>@kp?3Gm795kk_%H+?G1yyQS5n`}m03gln0mTmh(Gq=y9{oj3)xU@S?7Jo1^ zixm^%tkVjyS?hjiv&e`X5Z^q?awS=n5IU%G;HRV+EfINCy}7!Qkgg$|j~cOPOy zWTjnF9eN7j2OH3{g?s3(z(+JN&eTBQ3-7Xh8*3#%PlZfr%fuuX##+G&D@?y&zoXEtXLq*JAE^apq@LrE2?hG@|Ba2mza7TQM6kG; zW`z#{jcEdi@Y{dZL+Fk;NQo6am8rmyeYP=5kG&m_L>?S=Y~lTooeKSK?Oms_+T)#{ ziR^WD?lwYtOHtq76WI23Cw-@)0kSb%Z9-{EA79X_3X&CQk5eujfmCnM!B$`mbLuid_i8)lC6@_I?r2E*#}P)&KndfZM#$QE-wPvb@xCHX(TVi=`mU`73!X*A8JYY}MYDcbhl9 zYePbPLJA^a*MVAKyDIQVsO1`q)xyURgPyxYGP^%>FLf=C-ggmSZS9k73@BWNdQo@r%}L@Ev8hpUl;E{GRP^A8{o= z^(cXG7(@m~DH>0BuXqh&Ap&Eu&zWXhYks@A#^^O|adq)0#TZ}=3mCDsz4IO4ZwQG>fH`aMvh&R#?)+b*YN$dV zY27jq=#}iSPE&u5mq`B09{#e?K1BE7IGfS~yRd1`%C?RgFXEZY5Oo3vG3Xcb^o32b z(g;fRj9lNWOVl-30%Jisv)HPynon!BS*jM3;?=FbJzzCxjMb?tu3r-(zZPDTw$Xia)}a6jr-q(s_j6L9ytd;%(~kfZhWKzgefkL$qATbj8&mov{m3vrjn zZQO=3^m?(vEY#zCnDQQM;7n669I_C9z&n2#&0$l)_IVn4_U7`Hc)9NCbGIa?#wn=D zZPNe;oB*rARm!dNGwZ;$LfSpK-h&Mv1zKMrZb$q6`L^wVGUwXV6~@k3x3R4S2Gxvxe-bg`Jl^K=C>U zd%|yL*ko$W8)?y;ZnD0;A{*Ux88oooOK7JTE}1%1)S<()U2L^pUCi@EjnuZfyn4{~ zid1@s_vsGR5BeQG*CSIX4tYS-oq$eZ{AS`A*$LhFv7Ee4LNZ~33a*@@1HACxonzu{ z3)Pu#GrQ^T8B^iCV5h;CspI%CGC;30vg4_?X7NKMHeT(-Z^=v zlG1tz<)dEt_U`J3QfkWcjQN}Dw|=wIb~AO8hnVm#*jIxKefRmBJgM7GUtd4|cX;}W zcgHJ|EnpQey1S&&B49PR&4T~6VjR09>HLb~yCmZbGx{P%6IgzuSS?PO5)`?A% z2w01Fg^~ygGWz|`fNu5fv`Y#Y7F^mG$T0s(m&1W*SQ= z!468|jbNJ$V2F3#)=oQEMgsc9(jx>r@%}^HA8(%4t4ox4R~sHtZ*%|Db>=F`))kd| z{y*Z**?QADe2sfzTU+m&xn_2lyQxm^-BSEya$jfo%htcR=pM-UxYN{sqVfOQPX2nD zfvgYoD^;1@)PN&ksW zk^>I#V$CwGPrR$2TQ*;LeJ}NNqC&a{Jd}GbutxBibb@O`oO#ElX|mLl=xEGCXf(g; zB|OO4)%U;WcDK)O+h0tZ_3kSNXRsu2;_>le{!BiKw-3?M#sHr=^UV0OHlnV)Boy^W zhPq*K`56xkli)6q$(6J^-d)#^J|We`%Br%N*?*1~3_WMdtTSI%Fqwh&98uH4z{_S< z6H_eWx|+B%Qt|(_7YsZ4_0Y2D5zg?}SP1%7rtw-d`{xpPKFXreY5h|5dYTfDo z_uz0Qs{BY?)i{nlLx<+-oyI6GGotv>*Efv4-bEWjn)Ma|pO>~|wG&e|WLRT|08Gj^j_sFXYc9Q)}oEorVDZ|>~*RqtB@z0v+V}+#uSF-)@Khs@~f!}Q;4!plGARchzaDcIysO&rx6E5f` zek1`g0h3$zmyop}AyHuOW`m}XdY1dESQ_H=wkZ>bnK7fw%eZe<5!?@Em6X_nqC%vC zwN?z^JiWVxGN6OafOSWSIMXXlaPSfKBT3sQzf!6=`uoyFZ1t$BhR~Eb?S~g8aK;C$ z1=f%JHVy2$V;J7;Qmi=O1|1pYaP&WQ{t*=jaA46moU?L%+$Tm|iYtU~94&mfH%dKf zMwv1{TBzwY4S>BUQ`Q?b)A-!A6jY#SG`bSl_mL18@3t**(t2Q-__OUjnE>i$wHT|( zdbKYFjAavmD|ZYDJqvF;CH^+!1@!gpUw)qie1A01(IS~T<)xrx^J?p%PiGkDk^!!TQz^==o z+fMg(rMx%vlsUO`jqKK|AkFXM(GAF@EcbUN&tA6W+Lk3$|UY(&`BbOT%I4!Kp+mSr<$&xF0tT#{vp_q zwARb7LhEO@?V$bWAoHp$^j{$|4AUwx$19%OrZ>m^uU5adwjMO!XzXWRZH763znl#F zfp*joPt3j*4SLRa`j3H~rHUdN?Ho=y!ol{Jq@{w%6n+ErBT!g>9Ymh2Xxxy!{9X2J zdi&(WH-<@m)}!~|%ynhslg6EYi{lqeEJg_6hzI!sK9?W=vYBOaInyP%|6^GAye#ol zOWR)C#U&VrsCdKRj{_0BF!t!zzWt2BOiH@8jRd@tvkAP(%L81yNqgOfP+GfkOK;Cr z6!SXh03fu#zkh5Z8l#AEtMqrDX_YZNe}8$oO9pCyUdLDeuRa>3fk}2CDqe*5l$Bp4 z^YA!(v`|e}nI%21UW230r$pRFwv)K9euSM@0XymX&~pr$$>Ui2rcKqYLB2nsVA9LO z%Wn{jCF&U)-_1fs(oMobUzA;h14TC@(JZ+)5C3i>n!QU!e;R!+lPC)rnx1~Wd~*Rn zf=u@1L)cLp!MV!e&S8sc0cj<}JuwWnk9k^JT4t*)U@({^3{U0!R6;@#ct{SMm=z1% z+!E{QtQW=K=~gD*f<&{7DcD!G7@(>Wz+k4$wmwwP zAy#4>fhT4`K4xgqBs|PitfF+W-Qh3 z67LC?KhHIf6#IF&CUU5M46U)0p-_mfZ#^r9f{+5FozrEKZ(ld7EuesLu)|$`Eb5qBBKPSb@{_sGnC;`3S@W|*Lj<&XT?vo%Q z4oD~+R!5KH3nQ8JEH82$_`wHEQ-ELA}F8DsTJez z&R+ETSikx*=CEgetkLG~?*7EiuFwYNg!)=U?gB}N525=6>V&+GDs(4@{8i#A%C|QjaD}?LKutqo4^sAIwkv8L zXneHEpsW4%Z8_jYe12=IMZlS=QGb;bR3HAu)mDJ(o&I&+Jwjc=Nc_BxszT`j}g{Ul&w{G#pEao4DPXk>g*_lid&{l^X}-VdTtF6!K>fwYYmC zJ4eOPD%MCbwr;o%eh2rjqwYV*SgL_Y)9~>zq!x-lLC&Uru`H5oLyX$U%Y|T z&Cnntd}n7VC$v;$zuiyFyTts|g>u{9(m%N~T_WQ7HKSX$38)M~)lA%a{u>hEaYNvv zDtb6WAFZKKMz*tmy|-VhzR+^?>xanP0HB_S(>t82TzBx&{a2UMP>hMu+Lv_XP`g|Qnk9(a!#`AnNSYc3g>aGbvee}HS5h!bW{k}T?( z8!Q6`y^FxF>)Wi+B`d09)=EF&>F5HN-x2){!VLR9?Y&5 zxA1TA$8Fy*GN!PkT`mm(1mJY96L**%OMd(GGOR)uM1L35!I7-SH&-aubAwL%Q90a3>NM z+>QNI8|5((D@T;HXgiWynGDB9=|>pZ7*_`ENOHQ1dwUR;+04?~Kt@u%mWo@(0Jkel zi7=AU3@}8xdxYy#=|WgQK3IUoR;g47ak8g`W57zV2pl zaP(j9i5DWgos$hr75MD#;}J*7zZAIwkhp1Ba?{at812NU7jVtx#W!$hbhNxXBK7}} z2VRDL=L86ZnpjyOd<{EYc?X*^>7AEF#>KfPtJL4VYs;zm58<`&Z5l%=UE~+8)Tm3~W2f^S1=5mo z$kP3s3Kr7oYDF^?Tn-|kI)ws&7$zz5py|DnVP%R{pUZF-xT#nUsM3}}(l@PjOe~Xw zx3Hy#7wS@TgsRY*;5XRzkdrb=l7cqca9+oGxF!}yZHeATyTUwd$en+m?NjXV?&@z$ zE*~Z9x~w&)(&8UX0k-j2kgcsP2!sW8oLC>L&TYS~$SYGFu^umvA*^aSB!(;oAeD(*&_@A&Z~{mIBcnceEcMxG+>UF0)Lc9k+`8Qe{L32b{|rG$J3#VH~Txw1YFzA6U0C9{ULze}4Xf*RaSM%mIKH0XTE@ zZcGqlMFlAeL_oxx223&);=KJg}KSz=V!65fz zZ4xfLa^Uz!W!UMBl|e`LFP510M#>DF%&K-c1L?q}3#t00(CL;#r|pb&l%#CF(ESIn!f zAR#C9HUpd1Ef8Z=VtRrwsr(Ta9t2wQb%dkDSLXp#Som&lIi?*`uD_MC;FoO%e#lM# z%X@4=_FnjtbzDM8FKsh4C6BOy+13Cl zh;?T)I|Ra=Mo%`{PvgjSy_xMSYwTw3`%4RLZq>Xh0cl_O{$4H?LPV6gzcr1tB+ez{ zbA@e8w^P0j@NyU*y6{y$ZJXqrSC+PKBeC_00*8KvD-9x73*0A+mW2xFL`36qbjtmY zN7SU2qNZZbRUl3hvQn5ZqlWC52=8&T)}I{u1DTnbIcWX-H(NcuK_fVmy&VLxaH{w3 zE!zRgvAFp%#N}_teYu{Ghuh2@@g=Tnp`XrE<9 zZj7*%Q#liR_x2`*xv{{{7I%2{!ZF5v0R+fc92zi{!RFt>_wqz&i}4bASv1nP7eyx){aqJdIQb+{Zd_D*7a-ph5lTS2pY*Q$inN z^y9Q7gdi8GW$SY>>5+-kgC3T#q!B?zz-Q9przBnRCvx^%;i5`sk?bk>ivoH%T-Wyd zUl^Du7P$U+Uh&0?PxY2ix)KZGlOGh&&^(?7*p6w>DqCp6uh8Y-e{h6)Iw;i%Al0vW z@60qxcMUpa&&Dnu_6tq!bwdh@6+9YO??T$y<7Evf{}WfDz9Essw<;DWD=VXnE)Di! z%dO9W9gnD)wgtYk>}dmYnnpm$4iUbG%FX>gOvI)2pHg}kkF!GxS^>t4wKnfl*Jz&{ zjHt2L#WrMFOG?(9hkm|QMWOiVovuodYTyRGGh6yga!1mFXEYO3%2M?492!$nz70$}Z~N`7AZG7bGd<{y)SRe%miZ~1W1bWF(>A14 zC~LOt8N{NwvNNsbN2?GEtD=E{K?o>hAbK+w02Cp?zaqw`;~3OQn^s}ra<*>vtdM*n zZG{*wX#WXMOjTJKIT=}LBv#Wy^AZS>>WA^ak|z*RpmpsE_NloB7$D=Ql@k)uLOfIqk5x4w2~HdJM*Tph6j z*Hbh&Tj%xoZ`$VW3L2@Le0R2>TvvD#j<0@L%#~hJk((>2t?AM6A*6(6aC0dzj`oQi zUySaREw!>pI#PPRtV~AzP5J&4$Fw*5^{;acjE%#PG3hJ#WC<%VcVS(>>l@0T*di?J zk?|R|#8fs$V0tHHTyo5uPf^2NTdeg#k`sup-fM{FGHtIWOK4aEJ+J4hm8w<}J_;?8 z3@Mzhr-NysI-0|#)IHx!e9_utWcEimK{xcHF;Q!*2`m0xPR%7H!XOwJ6^!GDrB~HF zOqiEH)E?YC?iJ7OGnh2w-gk$lPcoN#Z%j68@JVfYd4MyaBEjl6QE0T^YQEoqb-q{>(HHX%7!tG-q;Inr0z{R%SG= zf4Ls&y`biPs+rnC(cbL4HRSA)(hcb6CwJ@T(?CiL+W}gt4wT)auUD#mZjGIeuvcl)D`;|M2YD6-`D}q+*?lDhfTg8PPlmx z+h{QPK-9V&qBfJ7lERzqc~Tq~M;@3HbJoO>#3#lIeBrwPR<*cC@=!Aq@rXH%d9H3u zRqRHjfMI@KLYRiSwx#Xhd4#&K0QGpW9Fvxlr{^#DmBdDfvSwYZC^=G+Db#Emp z?wg$Z0x`s;znj5^I`#&#noF0A zs4Gk=`by$)vFbij^x>l2LNX5^!NtmBY*33&R+MYpz38VV(Qp&z^+Lv5il4jNp@%53 zf7D%<`e!5boT!HSHsK@484iEY`&HC^R=VF;O3tFmJD8(CYLcsDa(`o^y+l8sbi3=& zbGf^5v>0nGBBgXSdSdk+(96SpUh%9XuVX~+Q@+d*oNNsytD+gal_v^iSExyC93>&< zc7yZ2`NaK9Oc7ShX7~vy9sWRjSo995Ff*g?N^vHF@q80{Ln0K<5?nIy0gD!WVOF z^!AZ%W%fB%*}-RUXSCSj4$yIvl~CkAs(TE?4?%BcQ{>4g|KvlV z13Kc#IHlj4GZQlmv@jytWNb}iYVYn|Y_PZ0UdhH_cYVP+yN^{=7mxLvSiB@o_zxS( z$jFGGlmD>nGL(o><|=&}x2rLffryxq@lred>6_M&%qPo;#&&j;_tE3m3lQ>q!VHKX zLpSJLheV*lmlBKjG;=_*NBzSc3H`VEV{!iWL zs6#Pmusm~FygxDD9h$Q#t`gNBcQZ)KNfq?gxWi;1&Yyt!%~GqT>r1hW=b#|1EY3nt zx&QfU7oGdr?d;#;#%N*m>Ko|PS38pXZx^t3>n!J6W_j-sI4XJQz+3AX=_ZEtTX zPF;j3S4Y{#U*T@h5pfvhkEnJk4&r6{WFZ#g!@qqCH;7MBXS&8J=qB148jL@2wc)`K z_FK!!$58{~q;GVcBj=;raFV6JA^#JC?k)OP0;vKTg2#(TLL576ip5kf+p=VQ`ur~u zgNLrd*jfh9o~5N);zG)gliKd|HLzGW#y`bY;0+o_o$c>4ZftJj5Rfm-@HcZgbObHd zMfug(7O;r{?Cqfuu0CGDm^qU1K0VS_IlTJ?fZVRIT1ZGp6t1>@HC-Z-b=PStFkfl` zWMy5iBg$K9FV@xV`pB7=b0%6mG@n&JUIV5Xo^tR0n{xl;`y}pOY3tpQwBK(~U;vim zu8^f`X_eJpn2t>laCz{#Pk)mTf-HV>U-0tVx&;i2w$bS0%5zo3b8080{x}Z*qZ(kN z_NA#qWBh^IA;{4NZPeV&Za00!d6cxs)L#o3-raPv^R*;<4_+@2eb>&cuFgzbbB$AJzA|=5R`@S(PN71fv038t>{#l9 z%=}R*fz1<~*%3G4P^z^LyuZQ2Cm0`R$RQK^n0`WKy1UM$WWY3;E!Ux-xtp0Mii+6e zQ_fv=ARh0#tWC~utI=0}?Ie^){=3a#TKYSqa@Rd?8SjO5i!F!5i6?2m3otKw#!z;k zRSvzrFe#0SWkPj!$66J^u9pJ*{I}8^9ZR~Dfn(Gb_3pcuKi}WCfm@zJ@Wwr1po{$U zxscYCGAeMg(jq4gZ+!dlyM~cdL2McTqbc_|kNWa4PF)DJf;*%%wb zJmz|<&oHeDS4{cM3#@sD7*FEpUtUFe z#;{o5Tj$Hj3~oY4W56yGco8q1w+ot(42*l*W-U^nK@BR6!klu+rEY*+e4y<_iJ(%fTCq1Xd>2>hGK zHkn3xvT&vObWg~=^)wbDJ%N{r2a~4^06p|l!@G|N%@=&^)2L~l&t^61GBvS{TbHke>d{KBH0yC zdxS!Kt|FvQ+-~@_j;I}#IhHUQM0bLVwg&Lgt2=)T1Tj(Oe32y*0=MR9MOKwljy#OF ztZb|HkCpnt7%zTD67X966N&iVjjQmpBEn%^m9B@qbx(6YAs$GW{+(Am&-gc5LTvXo zfoCk$1u2dzf`dbZ%lM#|!A)?O#PFNzVSucWvhs(;dVR%Nat(=&1pJ0I1rd6mFK?D( zzx%>jua$5(-sPhnCRy3D^7&BBMJ!U%dWQO{y}cvn2+t+~^9q3v>Uf(33Iu;RW$i+{ zD{nr0y$?n5hIW$Frn zZcc>QNh~w}CW{S1_X{}TZL(lG_QMAt1ZzK#zF6K3qPT7jnqUDLrBX;JKE0?-5$@dV z%L1`2IyMXdB>zi#TaHFgL_QT?OM`K?5*tJ;la#*!xl$AZqcs-m-dPsO zk}>a}xWvs=KK;?#yjqC$RJBd+meuR;c+)@=7!X~)zS#dZ=XY~`1qlLUy(VHxkcOM< zi-WV}cqXl(z%1LIxJ3|DrWdvj%0HyM1A2LQ-C%yIg&VNcNd(4^32uv!JeO3uZC(F- z?W(p&Mx(pwimpMIpKJy!25TOL`fSm}F+UEYvwVwnYpj6bq2VekXusPh5Pf@n^2fnN zO5|$)=Gw!0_<@Oks5cil!%xtnF?WOd?akKO$*CQSw?L0aS+};UqaZ(qC)I*N2=2da zPq{A8NUEI#i@21*61aau&?|=@lKu8Vnlt;OnnHE5IpZ=z&zdU?Wah_wRkjSFJTOM< zxN1X1Pg^=H{Ldb7kk7zWo=X)|sf*A+=l-O`;?mZ@2nV~u9iOOCNU{83#2eorGNN-TpL)sy*YU6j>KZG5(g+KCn`*4C|NY zu-`&Yam*h%#Nk2$Kucp2v`vR6ttdEmP5%oGcmJ#+jPggZO@WdsE8#UXv|^`+IGJ|Ag8T@lINck# zw-J3{umsb?bScb~j}L{;Qy~qnzztihtasAHbH@xBH#p&N6o`E^;ZCm(u-*dlp-QuQ z0#w$OBlAT?Trq+|lR2M%-o<+E^TFzyJM#oqJK42g2vQz>H8Io+88noOJXOp{91b|_ zRPpCYe~4Y{NQ#o&N5xDuXTQU7l#55;;3k0&4j{^FfUx5z3~JJ zo%rvTNRF+QaeT*|XfH3d@H^e+SsdAcdp&fVFw`{UsF4Lp7ZHFzor_|5aLX!h_VD@| zrCZg2v}5zXIKK>D`%*nkKK>jdL<%OH^X!cZ?osZa$Snxq^<7}y$z$XFdhg_sN@hk+ zJU@om2r$a&;FxXmV+~qL%&momZ7i2X=AS?yw4Apk z!yN^;&9R7&W`!LoYa}_o(yYFk%1+@?wYJ$7!+wRUPRQP#5b2D2w_cuI;Ym=aFt&j3 zz)0fE>A8xv{;1zH$+*XrYpcRsn**+TgqNFRP&TDd)1e{iEjpY0y|s|u9iMb;vJ6+8 zi>uDwPV8(mg!i>)UFfS2d{YJWuda?1NAC+Y)25C6ZMMPUr-Ur36QTs~&Ie9ah-lSY z0Uz`~>68D}mK5-SvBf(CdffdV=Uk+EY;lwRk#hlGvPg`av)7&d`3k+^-v@VCe=`+N z8Fb@5zEI!59BE;W*p1;^VBJjaCLKu@>5LGg_WpYKo4a7;UF3AKkjMu-kYO& zqu-eEJr}~D3+-fpdgfo-m@`6NHc1aaQl9W2>XUm@@8P48nVff}Lzc+UGYI)>xSptbYvmfxN~s%mdT+xuwCX zJ8@A)k8%x33iXjkvge%&6A5cHsZHIPq0`Bll>Sc z8wMVJG5i`610m`S2EAmkkR=}sSd4e*ydk}@0&Q%?MociHC?_-h_w zmantW8HwtlIIT3e>mi5*;W?zYlEF2vcFife={--gzRWv4=+zbap7(Jm_((`!@a)gU zR@39Pi#(y;&&2)cC1$QOtaAOy25Uh6}MmhSv zKUcO)!T&X~@^Y{ZcJt!7<*^Z>RUw-61e=VYE`%3vIMYtkhpCERQRDt+Nc(S-9#Qwx zlNln&zu8cORhC`HfPJ(Y|DSKzLE8V;F_Zl50Dbt2i(H{fz}F3`H9WXJ|IK6I2x_x5 zWTmOe)}Oj34-|pIU#X=|{(PAw;%y7|*7k9DlRFaARQK2BLw2@Gc?HC|>&?aP(BiC@ z&3VJs$@(xjM0GqJeLsq#uu!C5O}1@_4hB1~*}U+)0vh~MuuE2>dNh+5H{-{f3;>os zaB|5j1IU+^M;Ez>bBqfx{L5-PqfL5Z5=GvFK#hUL92^`tA7{(PyL%L_Y%Flwo9-B; zu{I7WfDhn6_s2K?%=6s2b7$t26aGIh_wS*P>I~(g8H1|nI7j%*W-{eqT-Y&k1*64BBoaNJKD|>FCeMpVm6&bk_tm2R z0oGsW0`uZmhJyBiz4FU6m@7LE#z4{JeSau;|j-GUQ4}7X1((yq;nn0UI-H z%xv~e3A985CxMDs)j0sGJxX0aK%D_kKnAXRUj6UzMK}js?8ABRY&wlS!C5Z086D`r zX_Vo^z^o2O^7t=*m;lnrcVevM-i?PeX+h){t^JOqe^?`3`y#u zw^}4ZvVd>RefF3Ay4x<=pzMfL9q-9K!Vc?JiWX?X4*l|#WQRg<$MOrgKKEm zzCjG%Hp!oXt@xw5y3h4?HFLEbV*v?pjjN6uP8(Q?MU<&VfHbM5;{lT&Xaq`0kf zNN-GnehoOG%P4{h*=1_g%rirZ$${kRTA+O$$6PgnoGl;p^b;*1$eZu!o#bf&As1#m z9~Dh2VwmjE(5GD#*Uv5VLIc+w3i9%GbvfV#`C8A$sf88HFu2Du9dFK{Ys_F`lba8R zwjhhK|FF(%peV8qD7qK;cKr@;!RpO;2 z(cP+V0jWE3gUq}+roE)R0pP&A$&xdiv9CkjV8xwjDTvMcfcoXn4iR#pqT}&%z6+)K z;pGLn?@Qg4EE)Q_{yd#}85*iV9KjTr|0yvPg>u_Yoqf{k4#lhPC?e2h0_sZ0< z8^LAeEamVPgWbd5G+zR+z+V3rgECQIY-AMcGH>&c6X!I1nEO@jQ5Uy;^jfS;p5f`1 ztmkEAW2Oih{lu;$^s(ge&djj0Hu!>*YF@Q2D_L1WXPR_PiPjs??w2i^ar68(ii*9l z5i96Gz#f?yGg2^4QGIvhMF>e^aP!@}2V)w+>jZh|m!Ny?4nR7hnreMMM|tPvr+X^2 zzS+urQn+$hC)WcW5KrR;v!4T!NyXKz;J;VZ%S%M*g-p{AOe;H9A4jfb23L1iw!blqr#wvmcw8ps;Lz zAe@~1E=8uLF1mcJsj8|HKk-Q1@x8u~PaC(&+^L7I@n1cvjdbg+K z=TQc%zYJpD-lW*;=^(OQfhu0&@xF$O2$T9;(;G-F#+B;2(LjyxdOtV*G@u-;7BhTZ zQm66|_M5S0S%zgkNDr1pX?wqO$wW`NHJ)N`kFgn^sCa`4I$7qZjZrq)eKp&JL}&uf z-)pGk>pRz3s?*HZ#&WM|(r~K>A=D5v3JgHJk*^KsVM!2r}_-qoK91{6W6PoBg# z$V?sL$MHhwv0m->mUz*Kdi~ta@!Eh=jAt7EB#S^&rIz?9$v4;r4f*wj+j0&O>fdrA zH7Y<++kLLr5J_8Q9d~g*BB~QAyRYEP#Q6_|cI*7PhE^6i6x7v!!{e{#)=(V$D3ly>C3Ax*fEg=_v zyzq!s5stGbcA$_<5Cw!NY$R&knlWo-@~plJ!`Vx;_?OvogSA&dO%@)N_=g$g6U0St%a(}WZJF$1r+VsD+%3rtmGtqMIm-`te z+0oYz^eRe$gNociJBzN&xZ&1Au-XhwfzdZPR{A(>D^~-R`TO3PjTu=<;_#Jgwkx{2 zQHd4f{})Z#RV*zyB}a(Z1_Z>FVgMm}GD=QunR`OIO$_n3#e%NTb@{b37Yp8r%VVD-Fh%J5;? zx2~#M#@nNJuA9jVjUMtxRtwrPnESdD~b2qwG`DyHTy{^NxK(M2}&b{t=t z`r+V7KQ~0V#I^WQu^&NVQ^gwC*5X)*`^0qw-*=E__)t`3Wab66?&-x14Ig@Zrh{v% zcZiuLC_@qbOa^)n@Iu5%gSu>u3jCg4Pc9+Z^we>QGJ`9L`i>SV*@1yUDC<3HQ>Xa} zb$Py9e*o#UT+GV(G-^)+zg4pxGXcVQGe@{riT|<<#z-LF3VF*-OuaSyv{hmCw}>WN z_g|(9B}w6J&GMfm(v5?ZPb>i3PL+Vyf@%F)a@L_dKR^z7_Ao#mRY{luSE<7oGz~@o z1=%NbY4cD_gQfeg?OjQ@;*U7`pvX~)IXaYGn`Yf0<32lQ;Iy0yBq({~RLY|ZF;08= zYsr+qHXG5DlkqA{95u(3KFU{al5sBaYT-TO){RC^BsSMR`{8rcWQ2asxuqL0TOKrK*t z9<{Z}3MN)~`aSs<)?#h39rs^&jW3<~o}Z1U_CLuA`|?^aiWupMod_HCN!sm;(Gnhh zyFc}@)|OVLw@5#TwQY@CMw;X&!ZjGH$65pPfhd=#%;P1F6aPw#oa;u+oKKnz<2iR; zSJ4iK20$+;9vFpezOLFAqwFI#%G-xh(urT}LwKd719{}rr1eNP%g$9K3K%4TIS(FP z3HJZRtWpIa3Ysle$_ETvSiQU~VVm)G#0s#UhhVz)>pMKW61*V&u70SERz#c$P1WAu7cu&-GBw z#R}yA{on(G)IFPYjot3SU8NLn8+PD9vN&tkMP54n-@Q!Weo26xo;R}NZi)g zn69mL;WIS6lbp?zhgG4y4i9d(9zpF;vfG{HHT9`|?lC0|DY$=g8n+Z3Z$KsAPt zlR@9J{t8k6jbHh-k{;oiBa9$skWOLbS5fl}#ATh_{w-s+K@ks@@>)-(Y_=+-*NZ}F zx4Sw+2@M;~N(CQI>T|79M-@S23L9miru_kV6swgW3{ZI>tEvprjh`E@Q$d!i%YxZJ z0S_qVdCm!k$#b)5zK`n)eSxAC0mIDXg0ANw(O?aYG@s;;D}-%uNPmiby6Z+?;!ZZw z(XZ7}lWckdFCo|YCA;0)T`T0{mK;P3<@x#5-$2pK@?>UdbgI3A zec|C1C9rtf)B#yxE?^lmNCm0MVcN`PcPsSG9p2)OC2FCWvi*_iXms^H3=C?!x;-PR zOL58NY9oa51QG5-YQI=18oDLyju-l*Jtz!P?$%tCbWnV5HMS>&av!jV5h}XE+^`b_ zq_HO*gW2bDU9p19K_&fhPB4?lD}FYpWYdDg6}!e^=BJuq+xj2>dk{@0L_EBn{cQKf kaI#yY>taeIr?dbaU^tV{k+g6A2>}lyJ+r$ty3SGm2Yj}hPXGV_ From dbf989be5108379b2c850d45423d7de53267be69 Mon Sep 17 00:00:00 2001 From: Warior4356 Date: Sun, 2 Apr 2017 01:50:51 -0700 Subject: [PATCH 19/81] Phase one done. --- _maps/map_files/templates/lobby.dmm | 81 -------------------- _maps/map_files/vr/blood_and_sand.dmm | 46 +++++++++++ _maps/map_files/vr/lobby.dmm | 47 +++++++++++- code/_globalvars/mapping.dm | 3 +- code/datums/helper_datums/map_template.dm | 14 +++- code/datums/vr.dm | 10 +-- code/datums/vr/level.dm | 8 +- code/game/area/Space Station 13 areas.dm | 16 ++++ code/game/machinery/computer/vr_control.dm | 14 ++-- code/game/objects/effects/landmarks.dm | 1 - code/modules/VR/vr_avatar.dm | 67 ++++++++++++---- code/modules/VR/vr_goggles.dm | 52 +++---------- code/modules/space_management/space_chunk.dm | 7 ++ code/modules/vr/vr_controller.dm | 66 ++++++++++++++++ code/modules/vr/vr_outfits.dm | 15 ++++ paradise.dme | 7 +- 16 files changed, 294 insertions(+), 160 deletions(-) delete mode 100644 _maps/map_files/templates/lobby.dmm create mode 100644 _maps/map_files/vr/blood_and_sand.dmm create mode 100644 code/modules/vr/vr_controller.dm create mode 100644 code/modules/vr/vr_outfits.dm diff --git a/_maps/map_files/templates/lobby.dmm b/_maps/map_files/templates/lobby.dmm deleted file mode 100644 index 40276280865..00000000000 --- a/_maps/map_files/templates/lobby.dmm +++ /dev/null @@ -1,81 +0,0 @@ -"a" = (/turf/space,/area/space) -"b" = (/turf/unsimulated/wall/metal,/area/space) -"c" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) -"d" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/space) -"e" = (/turf/simulated/floor/greengrid,/area/space) -"f" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) -"g" = (/obj/machinery/telecomms/hub/preset_cent,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) -"h" = (/turf/simulated/floor/light,/area/space) -"i" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"; tag = "icon-fakewindows (WEST)"},/area/space) -"j" = (/turf/unsimulated/wall/fakeglass{dir = 0; icon_state = "fakewindows"; tag = "icon-fakewindows (EAST)"},/area/space) -"k" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/simulated/floor/greengrid,/area/space) -"l" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/simulated/floor/greengrid,/area/space) -"m" = (/obj/machinery/computer/mecha,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) -"n" = (/obj/machinery/telecomms/processor/preset_cent,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/space) -"o" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/space) -"p" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/space) -"q" = (/obj/effect/landmark{name = "avatarspawn"},/turf/simulated/floor/light,/area/space) -"r" = (/turf/unsimulated/wall/fakeglass,/area/space) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaabbccbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaabbbdeedbbbaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaabbbbbbbbbbbbbbbbbbbbffgeegffbbbbaaaaaaaaaaaaaaaaaaaaaaaa -aaaabcccfcfcfcfcfcccbffffhieeihffffbaaaaaaaaaaaaaaaaaaaaaaaa -aaaabcchfhfhfhfhfhccbfhchcjeejchchfbaaaaaaaaaaaaaaaaaaaaaaaa -aaaabbffkflfkflfkffbbfcfffgeegfffcfbbaaaaaaaaaaaaaaaaaaaaaaa -aaaaabchfhfhfhfhfhcbffhfchieeihcfhffbaaaaaaaaaaaaaaaaaaaaaaa -aaaaabbcfcfcfcfcfcbbfhcfhcjeejchfchfbbaaaaaaaaaaaaaaaaaaaaaa -aaaaaabdmdmdmdmdmdbdnopnopbeebopnopndbbaaaaaaaaaaaaaaaaaaaaa -aaaaaabeeeeeeeeeeeceeeeeeeeqqeeeeeeeecbaaaaaaaaaaaaaaaaaaaaa -aaaaaabeeeeeeeeeeeceeeeeeeeqqeeeeeeeecbaaaaaaaaaaaaaaaaaaaaa -aaaaaabbbbbbbbbbbbbdnopnopbeebopnopndbbaaaaaaaaaaaaaaaaaaaaa -aaaaaabaaaaaaaaaaabbfhcfhcieeichfchfbbaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaabffhfchreejhcfhffbaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaabbfcfffgeegfffcfbbaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaabfhchcieeichchfbaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaabffffhreejhffffbaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaabbbbffgeegffbbbbaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaabbbdeedbbbaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaabbccbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} diff --git a/_maps/map_files/vr/blood_and_sand.dmm b/_maps/map_files/vr/blood_and_sand.dmm new file mode 100644 index 00000000000..af13e70d2f1 --- /dev/null +++ b/_maps/map_files/vr/blood_and_sand.dmm @@ -0,0 +1,46 @@ +"a" = (/turf/space,/area/space) +"b" = (/turf/unsimulated/wall/other,/area/vr/roman) +"c" = (/turf/unsimulated/beach/sand,/area/vr/roman) +"d" = (/obj/effect/landmark{name = "avatarspawn"},/turf/unsimulated/beach/sand,/area/vr/roman) +"e" = (/turf/unsimulated/floor{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/vr/roman) +"f" = (/turf/unsimulated/floor{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/vr/roman) +"g" = (/turf/unsimulated/floor{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/vr/roman) +"h" = (/turf/unsimulated/floor{icon_state = "warnplate"; dir = 8},/area/vr/roman) +"i" = (/turf/unsimulated/floor/lava/dense,/area/vr/roman) +"j" = (/turf/unsimulated/floor{icon_state = "panelscorched"},/area/vr/roman) +"k" = (/turf/unsimulated/floor{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/vr/roman) +"l" = (/turf/unsimulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/vr/roman) +"m" = (/turf/unsimulated/floor{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/vr/roman) + +(1,1,1) = {" +aaaaaaaaaaabbbbbbbbaaaaaaaaaaa +aaaaaaaabbbbccccccbbbbaaaaaaaa +aaaaaaabbccccccccccccbbaaaaaaa +aaaaabbbccccccddccccccbbbaaaaa +aaaabbdccccccefgcccccccdbbaaaa +aaabbddcccccchijcccccccddbbaaa +aaabcccccccccklmccccccccccbaaa +aabbccccccccccccccccccccccbbaa +abbccefgcccccccccccccccccccbba +abccchijccccccddccccccccccccba +abcccklmcccdccccccdcccccccccba +bbccccccccdbccccccbdccccccccbb +bccccccccccccccccccccccccccccb +bccccccccccccccccccccccccccccb +bccdccccdccccccccccccdccccdccb +bccdccccdccccccccccccdccccdccb +bccccccccccccccccccccccccccccb +bccccccccccccccccccccccccccccb +bbccccccccdbccccccbdccccefgcbb +abcccccccccdccccccdccccchijcba +abccccccccccccccccccccccklmcba +abbcccefgcccccddcccccccccccbba +aabbcchijcccccccccccccccccbbaa +aaabddklmcccccccccccccccccbaaa +aaabbdcccccccccccccccccddbbaaa +aaaabbcccccccccccccccccdbbaaaa +aaaaabbbccccccddccccccbbbaaaaa +aaaaaaabbccccccccccccbbaaaaaaa +aaaaaaaabbbbccccccbbbbaaaaaaaa +aaaaaaaaaaabbbbbbbbaaaaaaaaaaa +"} diff --git a/_maps/map_files/vr/lobby.dmm b/_maps/map_files/vr/lobby.dmm index 82c5a7d4de7..798228e212e 100644 --- a/_maps/map_files/vr/lobby.dmm +++ b/_maps/map_files/vr/lobby.dmm @@ -1,3 +1,46 @@ -"a" = () +"a" = (/turf/space,/area/space) +"b" = (/turf/unsimulated/wall/metal,/area/vr/lobby) +"c" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) +"d" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/vr/lobby) +"e" = (/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) +"f" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) +"g" = (/turf/unsimulated/floor{icon_state = "light_on"},/area/vr/lobby) +"h" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"; tag = "icon-fakewindows (WEST)"},/area/vr/lobby) +"i" = (/turf/unsimulated/wall/fakeglass{dir = 0; icon_state = "fakewindows"; tag = "icon-fakewindows (EAST)"},/area/vr/lobby) +"j" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) +"k" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) +"l" = (/obj/machinery/telecomms/hub/preset_cent,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) +"m" = (/obj/machinery/computer/vr_control,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/vr/lobby) +"n" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/vr/lobby) +"o" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/vr/lobby) +"p" = (/obj/effect/landmark{name = "avatarspawn"},/turf/unsimulated/floor{icon_state = "gcircuit"},/area/vr/lobby) +"q" = (/obj/machinery/telecomms/processor/preset_cent,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/vr/lobby) +"r" = (/turf/unsimulated/wall/fakeglass,/area/vr/lobby) -(1,1,1, 10,10,1) = {""} +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabbccbbaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaabbbdeedbbbaaaaaaaaaaaaaaaaaaaa +aabbbbbbbbbbbbbbbbbbbeefeefeebbbbbbbbbbbbbbbbbbbaa +aabbcecececececbbbeeeegheehgeeeebbbcecececececbbaa +aabcgegegegegegcbbegcgcieeicgcgebbcgegegegegegcbaa +aabeejekejekejeebbeceeeleeleeecebbeejekejekejeebaa +aabcgegegegegegcbeegecgheehgcegeebcgegegegegegcbaa +aabbcecececececbbegcegcieeicgecgebbcecececececbbaa +aaabdmdmdmdmdmdbdfnolnobccbnolnofdbdmdmdmdmdmdbaaa +aaabeeeeeeeeeeeceeeeeeecppceeeeeeeceeeeeeeeeeebaaa +aaabeeeeeeeeeeeceeeeeeecppceeeeeeeceeeeeeeeeeebaaa +aaabbbbbbbbbbbbbdfnolnobccbnolnoqdbbbbbbbbbbbbbaaa +aaaaaaaaaaaaaaabbegcegcheehcgecgebbaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaabeegecgreeigcegeebaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaabbeceeeleeleeecebbaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaabegcgcheehcgcgebaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaabeeeegreeigeeeebaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaabbbbeefeefeebbbbaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaabbbdeedbbbaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabbccbbaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/code/_globalvars/mapping.dm b/code/_globalvars/mapping.dm index 199346ae30a..4915b91f3d0 100644 --- a/code/_globalvars/mapping.dm +++ b/code/_globalvars/mapping.dm @@ -52,4 +52,5 @@ var/list/datum/map_template/ruins_templates = list() var/list/datum/map_template/space_ruins_templates = list() var/list/datum/map_template/lava_ruins_templates = list() var/list/datum/map_template/shelter_templates = list() -var/list/datum/map_template/shuttle_templates = list() \ No newline at end of file +var/list/datum/map_template/shuttle_templates = list() +var/list/datum/map_template/vr_templates = list() \ No newline at end of file diff --git a/code/datums/helper_datums/map_template.dm b/code/datums/helper_datums/map_template.dm index ead199814f3..1ecf89de0fe 100644 --- a/code/datums/helper_datums/map_template.dm +++ b/code/datums/helper_datums/map_template.dm @@ -114,6 +114,7 @@ preloadRuinTemplates() preloadShelterTemplates() preloadShuttleTemplates() + preloadVRTemplates() /proc/preloadRuinTemplates() // Still supporting bans by filename @@ -163,4 +164,15 @@ var/datum/map_template/shuttle/S = new shuttle_type() shuttle_templates[S.shuttle_id] = S - map_templates[S.shuttle_id] = S \ No newline at end of file + map_templates[S.shuttle_id] = S + +/proc/preloadVRTemplates() + for(var/item in subtypesof(/datum/map_template/vr)) + var/datum/map_template/vr/vr_type = item + if(!initial(vr_type.suffix)) + continue + + var/datum/map_template/vr/V = new vr_type() + + vr_templates[V.id] = V + map_templates[V.id] = V \ No newline at end of file diff --git a/code/datums/vr.dm b/code/datums/vr.dm index 3a11a19228d..0b2699b5ceb 100644 --- a/code/datums/vr.dm +++ b/code/datums/vr.dm @@ -1,14 +1,12 @@ /datum/map_template/vr - //name = "A Chest of Doubloons" + //name = "Lobby" name = null var/id = null // For blacklisting purposes, all vr levels need an id - var/description = "In the middle of a clearing in the rockface, there's a \ - chest filled with gold coins with Spanish engravings. How is there a \ - wooden container filled with 18th century coinage in the middle of a \ - lavawracked hellscape? It is clearly a mystery." + var/description = "This is a placeholder. Please contact your virtual adminsitrator if you see this." + var/outfit = null var/cost = null - var/allow_duplicates = TRUE //A bit boring, don't you think? You can always explicitly allow it on a ruin definition + var/allow_duplicates = TRUE var/prefix = null var/suffix = null diff --git a/code/datums/vr/level.dm b/code/datums/vr/level.dm index 0966f8ff33d..d3feca26ad9 100644 --- a/code/datums/vr/level.dm +++ b/code/datums/vr/level.dm @@ -1,4 +1,3 @@ -//The bigger ones lag like hell if there is more than one on a z-level, so cost 2 for them /datum/map_template/vr/level prefix = "_maps/map_files/vr/" @@ -7,4 +6,11 @@ suffix = "lobby.dmm" name = "Virtual Hub Facility" description = "This is the lobby. The hub for all things VR." + outfit = /datum/outfit/vr/vr_basic +/datum/map_template/vr/level/roman + id = "roman" + suffix = "blood_and_sand.dmm" + name = "Blood and Sand Arena" + description = "To the Death!" + outfit = /datum/outfit/vr/roman \ No newline at end of file diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index a9cdb361b7f..32f8b22f9f0 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -2587,6 +2587,22 @@ area/security/podbay /area/awaycontent/a30 icon_state = "awaycontent30" +////////////////////////VR AREAS/////////////////////////////////// + +/area/vr + name = "VR" + requires_power = 0 + dynamic_lighting = 0 + no_teleportlocs = 1 + + +/area/vr/lobby + name = "VR Lobby" + +/area/vr/roman + name = "Roman Arena" + + ///////////////////////////////////////////////////////////////////// /* Lists of areas to be used with is_type_in_list. diff --git a/code/game/machinery/computer/vr_control.dm b/code/game/machinery/computer/vr_control.dm index 9cb47563ae5..3c5edfa619c 100644 --- a/code/game/machinery/computer/vr_control.dm +++ b/code/game/machinery/computer/vr_control.dm @@ -27,14 +27,14 @@ /obj/machinery/computer/vr_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) //crew_monitor.ui_interact(user, ui_key, ui, force_open) + switch(alert("What would you like to do?", "VR Control", "Join Room", "Make Room", "Cancel")) + if("Join Room") + spawn_vr_avatar(user, input(user, "Choose a room to join.","Select Level") as null|anything in vr_rooms) + if("Make Room") + make_vr_room(input(user, "Name your new Room","Name here.") as null|text, input(user, "Choose a Level to load into your new Room.","Select Level") as null|anything in vr_templates) + if("Cancel") + return /obj/machinery/computer/vr_control/interact(mob/user) //crew_monitor.ui_interact(user) -/obj/machinery/computer/vr_control/proc/loadlevel(var/datum/map_template/template) - //var/map = input(usr, "Choose a Map Template to place at your CURRENT LOCATION","Place Map Template") as null|anything in map_templates - //if(!map) - // return - template = "_maps/map_files/templates/vr/lobby.dmm" - var/datum/space_chunk/C = space_manager.allocate_space(template.width, template.height) - template.load(C, centered = FALSE) \ No newline at end of file diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 5cdc64fa2fc..e5b1098e2d0 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -22,7 +22,6 @@ if("avatarspawn") avatarspawn += loc - qdel(src) if("JoinLate") latejoin += loc diff --git a/code/modules/VR/vr_avatar.dm b/code/modules/VR/vr_avatar.dm index f3baf7e89e0..563d8e676aa 100644 --- a/code/modules/VR/vr_avatar.dm +++ b/code/modules/VR/vr_avatar.dm @@ -2,23 +2,25 @@ /mob/living/carbon/human/virtual_reality var/mob/living/carbon/human/real_me //The human controlling us, can be any human (including virtual ones... inception...) - var/obj/item/clothing/glasses/vr_goggles var/datum/action/quit_vr/quit_action - + var/datum/action/back_to_lobby/back_to_lobby + var/datum/action/detach_from_avatar/detach_from_avatar /mob/living/carbon/human/virtual_reality/New() quit_action = new() quit_action.Grant(src) + back_to_lobby = new() + back_to_lobby.Grant(src) + detach_from_avatar = new() + detach_from_avatar.Grant(src) ..() /mob/living/carbon/human/virtual_reality/death() - revert_to_reality() - qdel(src) + return_to_lobby() ..() /mob/living/carbon/human/virtual_reality/Destroy() - revert_to_reality() - qdel(src) + return_to_lobby() return ..() /mob/living/carbon/human/virtual_reality/ghost() @@ -26,20 +28,28 @@ set name = "Ghost" set desc = "Relinquish your life and enter the land of the dead." var/mob/living/carbon/human/H = real_me - revert_to_reality(FALSE, FALSE) + revert_to_reality(FALSE) if(H) H.ghost() qdel(src) -/mob/living/carbon/human/virtual_reality/proc/revert_to_reality(refcleanup = TRUE, deathchecks = TRUE) +/mob/living/carbon/human/virtual_reality/proc/revert_to_reality(remove = 0) if(real_me && mind) mind.transfer_to(real_me) - real_me.eye_blind = 4 - real_me.confused = 4 -// if(deathchecks && vr_sleeper && vr_sleeper.you_die_in_the_game_you_die_for_real) -// real_me.death(0) - if(refcleanup) - real_me = null + real_me.eye_blind = 2 + real_me.confused = 2 + if(remove) + qdel(src) + else + return src + +/mob/living/carbon/human/virtual_reality/proc/return_to_lobby() + if(real_me && mind) + var/mob/living/carbon/human/virtual_reality/new_vr + new_vr = spawn_vr_avatar(src, "Lobby") + var/obj/item/clothing/glasses/vr_goggles/g = new_vr.real_me.glasses + g.vr_human = new_vr + qdel(src) /datum/action/quit_vr name = "Quit Virtual Reality" @@ -47,8 +57,31 @@ /datum/action/quit_vr/Trigger() if(..()) if(istype(owner, /mob/living/carbon/human/virtual_reality)) - var/mob/living/carbon/human/virtual_reality/VR = owner - VR.revert_to_reality(FALSE, FALSE) + var/mob/living/carbon/human/virtual_reality/vr = owner + vr.revert_to_reality(1) + else + Remove(owner) + +/datum/action/back_to_lobby + name = "Return To Lobby" + +/datum/action/back_to_lobby/Trigger() + if(..()) + if(istype(owner, /mob/living/carbon/human/virtual_reality)) + var/mob/living/carbon/human/virtual_reality/vr = owner + vr.return_to_lobby() + else + Remove(owner) + +/datum/action/detach_from_avatar + name = "Detach From Avatar" + +/datum/action/detach_from_avatar/Trigger() + if(..()) + if(istype(owner, /mob/living/carbon/human/virtual_reality)) + var/mob/living/carbon/human/virtual_reality/vr = owner + var/obj/item/clothing/glasses/vr_goggles/g = vr.real_me.glasses + g.vr_human = vr + vr.revert_to_reality(0) else Remove(owner) - qdel(src) \ No newline at end of file diff --git a/code/modules/VR/vr_goggles.dm b/code/modules/VR/vr_goggles.dm index 500104588c3..5dce094124e 100644 --- a/code/modules/VR/vr_goggles.dm +++ b/code/modules/VR/vr_goggles.dm @@ -1,5 +1,3 @@ - - //Glorified teleporter that puts you in a new human body. // it's """VR""" @@ -16,12 +14,11 @@ var/you_die_in_the_game_you_die_for_real = FALSE var/mob/living/carbon/human/virtual_reality/vr_human - var/static/list/available_vr_spawnpoints - var/vr_category = "default" //Specific category of spawn points to pick from - var/outfit = /datum/outfit/vr_basic + /obj/item/clothing/glasses/vr_goggles/Destroy() ..() + vr_human.revert_to_reality(1) cleanup_vr_avatar() /obj/item/clothing/glasses/vr_goggles/emag_act(mob/user) @@ -30,45 +27,18 @@ /obj/item/clothing/glasses/vr_goggles/dropped() ..() if(vr_human) - cleanup_vr_avatar() - vr_human.revert_to_reality(FALSE, FALSE) + vr_human.revert_to_reality(0) + +/obj/item/clothing/glasses/vr_goggles/proc/cleanup_vr_avatar() + if(vr_human) + vr_human = null /obj/item/clothing/glasses/vr_goggles/equipped() ..() var/mob/living/carbon/human/H = loc spawn(1) if(H.glasses == src) - control_remote(H,build_virtual_avatar(H,pick(avatarspawn))) - -/obj/item/clothing/glasses/vr_goggles/proc/build_virtual_avatar(mob/living/carbon/human/virtual_reality/H, location) - if(!location) - return - var/mob/living/carbon/human/virtual_reality/vr_avatar - cleanup_vr_avatar() - vr_avatar = new /mob/living/carbon/human/virtual_reality(location) - vr_avatar.set_species(H.species.name) - vr_avatar.vr_goggles = src - vr_avatar.real_me = H - vr_avatar.dna = H.dna.Clone() - vr_avatar.name = H.name - vr_avatar.real_name = H.real_name - vr_avatar.undershirt = H.undershirt - vr_avatar.underwear = H.underwear -// vr_avatar.change_hair(H.head_organ.h_style) - if(outfit) - var/datum/outfit/vr_basic/O = new outfit() - O.equip(vr_avatar) - return vr_avatar - -/obj/item/clothing/glasses/vr_goggles/proc/control_remote(mob/living/carbon/human/H, mob/living/carbon/human/virtual_reality/vr_avatar) - if(H.mind) - H.mind.transfer_to(vr_avatar) - -/obj/item/clothing/glasses/vr_goggles/proc/cleanup_vr_avatar() - if(vr_human) - vr_human.death(0) - -/datum/outfit/vr_basic - name = "basic vr" - uniform = /obj/item/clothing/under/psysuit - shoes = /obj/item/clothing/shoes/black \ No newline at end of file + if(vr_human == null) + vr_human = spawn_vr_avatar(H, "Lobby") + else + control_remote(H, vr_human) \ No newline at end of file diff --git a/code/modules/space_management/space_chunk.dm b/code/modules/space_management/space_chunk.dm index 8b6e5b6974e..e139394e963 100644 --- a/code/modules/space_management/space_chunk.dm +++ b/code/modules/space_management/space_chunk.dm @@ -96,6 +96,13 @@ /datum/space_chunk/proc/return_turfs() return +/datum/space_chunk/proc/search_chunk(object_list) + var/list/located = list() + for(var/atom/object in object_list) + if(((object.x >= x) && (object.x <= (x + width))) && ((object.y >= y) && (object.y <= (y + height))) && (object.z == zpos)) + located.Add(object) + return located + #undef BOTTOM_LEFT_CHUNK #undef BOTTOM_RIGHT_CHUNK #undef TOP_LEFT_CHUNK diff --git a/code/modules/vr/vr_controller.dm b/code/modules/vr/vr_controller.dm new file mode 100644 index 00000000000..561a81e68fd --- /dev/null +++ b/code/modules/vr/vr_controller.dm @@ -0,0 +1,66 @@ +//Control file with the backbone for the vr rooms and avatars + +var/datum/vr_rooms = list() +var/roomcap = 20 + +/datum/vr_room + var/name = null + var/datum/map_template/vr/template = null + var/datum/space_chunk/chunk = null + var/list/spawn_points = list() + var/expires = 1 + +proc/make_vr_room(name, template, expires) + var/datum/vr_room/R = new + R.name = name + R.template = template + R.template = vr_templates[R.template] + R.chunk = space_manager.allocate_space(R.template.width, R.template.height) + R.expires = expires + vr_rooms[R.name] = R + R.template.load(locate(R.chunk.x,R.chunk.y,R.chunk.zpos), centered = FALSE) + + for(var/atom/landmark in R.chunk.search_chunk(landmarks_list)) + if(landmark.name == "avatarspawn") + R.spawn_points.Add(landmark) + +//datum/vr_room/process() + + +//Control code for the avatars +proc/build_virtual_avatar(mob/living/carbon/human/H, location, datum/map_template/vr/level/template) + if(!location) + return + var/mob/living/carbon/human/virtual_reality/vr_avatar + location = get_turf(location) + vr_avatar = new /mob/living/carbon/human/virtual_reality(location) + vr_avatar.set_species(H.species.name) + if(istype(H, /mob/living/carbon/human/virtual_reality)) + var/mob/living/carbon/human/virtual_reality/V = H + vr_avatar.real_me = V.real_me + else + vr_avatar.real_me = H + vr_avatar.dna = H.dna.Clone() + vr_avatar.name = H.name + vr_avatar.real_name = H.real_name + vr_avatar.undershirt = H.undershirt + vr_avatar.underwear = H.underwear + var/obj/item/organ/external/head/hd = H.get_organ("head") + vr_avatar.change_hair(hd.h_style) + vr_avatar.equipOutfit(template.outfit) + return vr_avatar + +proc/control_remote(mob/living/carbon/human/H, mob/living/carbon/human/virtual_reality/vr_avatar) + if(H.mind) + H.mind.transfer_to(vr_avatar) + +proc/spawn_vr_avatar(mob/living/carbon/human/H, datum/vr_room/room) + room = vr_rooms[room] + var/mob/living/carbon/human/virtual_reality/vr_human + vr_human = build_virtual_avatar(H, pick(room.spawn_points), room.template) + control_remote(H, vr_human) + return vr_human + +//Preloaded rooms +/hook/roundstart/proc/starting_levels() + make_vr_room("Lobby", "lobby", "0") \ No newline at end of file diff --git a/code/modules/vr/vr_outfits.dm b/code/modules/vr/vr_outfits.dm new file mode 100644 index 00000000000..4f673fd4e8c --- /dev/null +++ b/code/modules/vr/vr_outfits.dm @@ -0,0 +1,15 @@ +//place all the outfits for your levels in here. + +/datum/outfit/vr/vr_basic + name = "basic vr" + uniform = /obj/item/clothing/under/psysuit + shoes = /obj/item/clothing/shoes/black + +/datum/outfit/vr/roman + name = "roman" + uniform = /obj/item/clothing/under/roman + shoes = /obj/item/clothing/shoes/roman + l_hand = /obj/item/weapon/shield/riot/roman + r_hand = /obj/item/weapon/twohanded/spear + head = /obj/item/clothing/head/helmet/roman + back = /obj/item/weapon/twohanded/spear \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index fbd75bcd07f..b2855a5456c 100644 --- a/paradise.dme +++ b/paradise.dme @@ -601,6 +601,7 @@ #include "code\game\machinery\computer\store.dm" #include "code\game\machinery\computer\syndicate_specops_shuttle.dm" #include "code\game\machinery\computer\telecrystalconsoles.dm" +#include "code\game\machinery\computer\vr_control.dm" #include "code\game\machinery\doors\airlock.dm" #include "code\game\machinery\doors\airlock_control.dm" #include "code\game\machinery\doors\airlock_electronics.dm" @@ -2162,8 +2163,10 @@ #include "code\modules\vehicle\speedbike.dm" #include "code\modules\vehicle\sportscar.dm" #include "code\modules\vehicle\vehicle.dm" -#include "code\modules\VR\vr_avatar.dm" -#include "code\modules\VR\vr_goggles.dm" +#include "code\modules\vr\vr_avatar.dm" +#include "code\modules\vr\vr_controller.dm" +#include "code\modules\vr\vr_goggles.dm" +#include "code\modules\vr\vr_outfits.dm" #include "goon\code\datums\browserOutput.dm" #include "interface\interface.dm" #include "interface\skin.dmf" From ab5cab5af7b5ce9a29349d3be4ede72863f0633c Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 5 Apr 2017 23:46:53 -0400 Subject: [PATCH 20/81] tweak --- code/game/objects/items/devices/powersink.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index ec233e0576b..035f0e05b19 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -110,8 +110,10 @@ if(istype(T.master, /obj/machinery/power/apc)) var/obj/machinery/power/apc/A = T.master if(A.operating && A.cell) - A.cell.use(apc_drain_rate) + A.cell.charge = max(0, A.cell.charge - apc_drain_rate) drained += apc_drain_rate + if(A.charging == 2) // If the cell was full + A.charging = 1 // It's no longer full power_drained += drained return 1 From ec223e040eae6c01c27fabda694467ea34d35351 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 6 Apr 2017 06:37:18 -0400 Subject: [PATCH 21/81] fixes --- .../gamemodes/miniantags/abduction/abduction_gear.dm | 4 ++-- .../objects/items/weapons/implants/implant_abductor.dm | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index a1b62959737..2a72c4a9b9b 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -266,11 +266,11 @@ 1.Acquire fresh specimen.
2.Put the specimen on operating table.
3.Apply scalpel to the chest, preparing for experimental dissection.
- 4.Apply scalpel to specimen torso.
+ 4.Apply scalpel to specimen's torso.
5.Clamp bleeders on specimen's torso with a hemostat.
6.Retract skin of specimen's torso with a retractor.
7.Saw through the specimen's torso with a saw.
- 8.Apply recator again to specimen's torso.
+ 8.Apply retractor again to specimen's torso.
9.Search through the specimen's torso with your hands to remove any superfluous organs.
10.Insert replacement gland (Retrieve one from gland storage).
11.Cauterize the patient's torso with a cautery.
diff --git a/code/game/objects/items/weapons/implants/implant_abductor.dm b/code/game/objects/items/weapons/implants/implant_abductor.dm index 6876b6d1acb..66ba73b3d37 100644 --- a/code/game/objects/items/weapons/implants/implant_abductor.dm +++ b/code/game/objects/items/weapons/implants/implant_abductor.dm @@ -7,19 +7,20 @@ origin_tech = "materials=2;biotech=7;magnets=4;bluespace=4;abductor=5" var/obj/machinery/abductor/pad/home var/cooldown = 30 + var/total_cooldown = 30 /obj/item/weapon/implant/abductor/activate() - if(cooldown == initial(cooldown)) + if(cooldown == total_cooldown) home.Retrieve(imp_in,1) cooldown = 0 processing_objects.Add(src) else - to_chat(imp_in, "You must wait [30 - cooldown] seconds to use [src] again!") + to_chat(imp_in, "You must wait [(30 - cooldown)*2] seconds to use [src] again!") /obj/item/weapon/implant/abductor/process() - if(cooldown < initial(cooldown)) + if(cooldown < total_cooldown) cooldown++ - if(cooldown == initial(cooldown)) + if(cooldown == total_cooldown) processing_objects.Remove(src) /obj/item/weapon/implant/abductor/implant(mob/source, mob/user) From d07f49433a67dea01d44f110c7741314787acb46 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 6 Apr 2017 06:38:28 -0400 Subject: [PATCH 22/81] oh, this is what you meant.... --- code/game/objects/items/weapons/implants/implant_abductor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/implants/implant_abductor.dm b/code/game/objects/items/weapons/implants/implant_abductor.dm index 66ba73b3d37..4985576e66c 100644 --- a/code/game/objects/items/weapons/implants/implant_abductor.dm +++ b/code/game/objects/items/weapons/implants/implant_abductor.dm @@ -15,7 +15,7 @@ cooldown = 0 processing_objects.Add(src) else - to_chat(imp_in, "You must wait [(30 - cooldown)*2] seconds to use [src] again!") + to_chat(imp_in, "You must wait [(total_cooldown - cooldown)*2] seconds to use [src] again!") /obj/item/weapon/implant/abductor/process() if(cooldown < total_cooldown) From 971cc07d0409f2219990dc0090e865ebe0a1049c Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Fri, 7 Apr 2017 02:43:01 -0400 Subject: [PATCH 23/81] Shadowling "Extend Shuttle" prevents recall The Shadowling ability "Extend Shuttle" now prevents the shuttle from being recalled. - The announcement when the ability is successful now also informs the crew of this inability to recall. Additionally, attempts to recall a shuttle which cannot be recalled due to the canRecall var will no longer be logged since they don't succeed. --- code/controllers/Processes/shuttles.dm | 2 ++ code/game/gamemodes/shadowling/shadowling_abilities.dm | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/controllers/Processes/shuttles.dm b/code/controllers/Processes/shuttles.dm index b6b078323e9..c027a63b902 100644 --- a/code/controllers/Processes/shuttles.dm +++ b/code/controllers/Processes/shuttles.dm @@ -160,6 +160,8 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12 /datum/controller/process/shuttle/proc/canRecall() if(emergency.mode != SHUTTLE_CALL) return + if(!emergency.canRecall) + return if(ticker.mode.name == "meteor") return if(seclevel2num(get_security_level()) >= SEC_LEVEL_RED) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index fd63864442d..2d10992780a 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -718,8 +718,9 @@ var/more_minutes = 9000 var/timer = shuttle_master.emergency.timeLeft() timer += more_minutes - event_announcement.Announce("Major system failure aboard the emergency shuttle. This will extend its arrival time by approximately 15 minutes..", "System Failure", 'sound/misc/notice1.ogg') + event_announcement.Announce("Major system failure aboard the emergency shuttle. This will extend its arrival time by approximately 15 minutes and the shuttle is unable to be recalled.", "System Failure", 'sound/misc/notice1.ogg') shuttle_master.emergency.setTimer(timer) + shuttle_master.emergency.canRecall = FALSE user.mind.spell_list.Remove(src) //Can only be used once! qdel(src) From 41f755563e0149e383b34759bf072b59bca77a2f Mon Sep 17 00:00:00 2001 From: TravellingMerchant Date: Fri, 7 Apr 2017 21:39:46 +0100 Subject: [PATCH 24/81] Changes Kidans colour-able antenna value from 0 to 1. Lets the Kidans --- code/modules/mob/new_player/sprite_accessories.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 51dc0e81a68..a1350998fcb 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -1918,7 +1918,7 @@ icon = 'icons/mob/human_face.dmi' species_allowed = list("Kidan") over_hair = 1 - do_colouration = 0 + do_colouration = 1 /datum/sprite_accessory/head_accessory/kidan/perked_antennae name = "Perked-up Antennae" From 5a56b44c007a04cf4e793129dd461bedc4e6f1ac Mon Sep 17 00:00:00 2001 From: TravellingMerchant Date: Fri, 7 Apr 2017 21:43:40 +0100 Subject: [PATCH 25/81] Allows Kidan to use underwear & undershirt, adds new suicide messages. --- code/modules/mob/living/carbon/human/species/station.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index 04cbbe653ba..10e39022315 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -486,7 +486,7 @@ brute_mod = 0.8 flags = IS_WHITELISTED - clothing_flags = HAS_SOCKS + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = FEET_CLAWS | HAS_HEAD_ACCESSORY eyes = "kidan_eyes_s" dietflags = DIET_HERB @@ -512,6 +512,8 @@ "is attempting to bite their antenna off!", "is jamming their claws into their eye sockets!", "is twisting their own neck!", + "is cracking their exoskeleton!", + "is stabbing themselves with their mandibles!", "is holding their breath!") /datum/species/slime From afdee0fdb10cec7137d4127cb19b20e11277f9b0 Mon Sep 17 00:00:00 2001 From: TravellingMerchant Date: Sat, 8 Apr 2017 11:34:06 +0100 Subject: [PATCH 26/81] Adds two public Kidan sounds. --- sound/effects/Kidanclack.ogg | Bin 0 -> 18063 bytes sound/effects/kidanclack2.ogg | Bin 0 -> 14179 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sound/effects/Kidanclack.ogg create mode 100644 sound/effects/kidanclack2.ogg diff --git a/sound/effects/Kidanclack.ogg b/sound/effects/Kidanclack.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a25cf3efab7d6daf2b3e4cff1226f6f43c684f08 GIT binary patch literal 18063 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%0DgD*9_E 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 literal 0 HcmV?d00001 diff --git a/sound/effects/kidanclack2.ogg b/sound/effects/kidanclack2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..de2d625bc139fdc3457e13ee53f73c2bc1288b8d GIT binary patch literal 14179 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

PQ?ee4|E4rYupdt63OqYTp6L5#g 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ùY)%DiD< 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�DCq9h1w&AhSsH{s8AtFQ+qpVT2F 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 VnDA!17c<14BRY7 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̓h~3u7Gl7`$x~<}CvdoAxmB(L5vI@4 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

?BscCQ8c3XVcg>rIjU*F+_2M+?GpbC>M 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 Date: Sun, 9 Apr 2017 16:50:51 +0100 Subject: [PATCH 29/81] Loyalty implant -> Mindshield Implant --- code/__DEFINES/hud.dm | 2 +- code/datums/mind.dm | 10 +++++----- code/datums/outfits/outfit_admin.dm | 8 ++++---- code/datums/supplypacks.dm | 4 ++-- code/game/data_huds.dm | 8 ++++---- .../game/gamemodes/autotraitor/autotraitor.dm | 2 +- code/game/gamemodes/cult/cult.dm | 2 +- code/game/gamemodes/cult/ritual.dm | 2 +- code/game/gamemodes/cult/runes.dm | 4 ++-- code/game/gamemodes/revolution/revolution.dm | 2 +- .../shadowling/shadowling_abilities.dm | 4 ++-- code/game/gamemodes/vampire/vampire_powers.dm | 2 +- code/game/jobs/job/central.dm | 4 ++-- code/game/jobs/job/security.dm | 12 +++++------ code/game/jobs/job/supervisor.dm | 10 +++++----- code/game/machinery/adv_med.dm | 2 +- code/game/objects/items/devices/flash.dm | 2 +- .../objects/items/weapons/holy_weapons.dm | 2 +- .../weapons/implants/implant_mindshield.dm | 20 +++++++++---------- .../items/weapons/implants/implant_traitor.dm | 2 +- .../items/weapons/implants/implantchair.dm | 8 ++++---- .../objects/items/weapons/storage/lockbox.dm | 12 +++++------ .../crates_lockers/closets/secure/security.dm | 2 +- code/game/response_team.dm | 8 ++++---- code/modules/admin/verbs/striketeam.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- .../mob/living/carbon/human/human_defines.dm | 2 +- code/modules/mob/living/carbon/superheroes.dm | 2 +- code/modules/mob/mob_helpers.dm | 4 ++-- 30 files changed, 74 insertions(+), 74 deletions(-) diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 6771d8062fc..4126fe1725f 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -7,7 +7,7 @@ #define STATUS_HUD "2" // a simple line rounding the mob's number health #define ID_HUD "3" // the job asigned to your ID #define WANTED_HUD "4" // wanted, released, parroled, security status -#define IMPLOYAL_HUD "5" // loyality implant +#define IMPMINDSHIELD_HUD "5" // mindshield implant #define IMPCHEM_HUD "6" // chemical implant #define IMPTRACK_HUD "7" // tracking implant #define DIAG_STAT_HUD "8" // Silicon/Mech Status diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 80ffd082f68..6efb102ca24 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -157,7 +157,7 @@ var/mob/living/carbon/human/H = current if(ishuman(current)) /** Impanted**/ - if(isloyal(H)) + if(ismindshielded(H)) text = "Mindshield Implant:Remove|Implanted
" else text = "Mindshield Implant:No Implant|Implant him!
" @@ -167,7 +167,7 @@ if(ticker.mode.config_tag=="revolution") text += uppertext(text) text = "[text]: " - if(isloyal(H)) + if(ismindshielded(H)) text += "NO|headrev|rev" else if(src in ticker.mode.head_revolutionaries) text += "no|HEADREV|rev" @@ -203,7 +203,7 @@ if(ticker.mode.config_tag=="cult") text = uppertext(text) text = "[text]: " - if(isloyal(H)) + if(ismindshielded(H)) text += "NO|cultist" else if(src in ticker.mode.cult) text += "no|CULTIST" @@ -657,7 +657,7 @@ switch(href_list["implant"]) if("remove") - for(var/obj/item/weapon/implant/loyalty/I in H.contents) + for(var/obj/item/weapon/implant/mindshield/I in H.contents) if(I && I.implanted) I.removed(H) qdel(I) @@ -665,7 +665,7 @@ log_admin("[key_name(usr)] has deactivated [key_name(current)]'s mindshield implant") message_admins("[key_name_admin(usr)] has deactivated [key_name_admin(current)]'s mindshield implant") if("add") - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H) L.imp_in = H L.implanted = 1 H.sec_hud_set_implants() diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 8dea043eea5..9bc700ebabe 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -218,7 +218,7 @@ if(istype(I)) apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Officer"), "Nanotrasen Navy Officer") - var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/loyalty(H) + var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/mindshield(H) L.imp_in = H L.implanted = 1 H.sec_hud_set_implants() @@ -250,7 +250,7 @@ /obj/item/weapon/reagent_containers/hypospray/combat/nanites = 1, /obj/item/weapon/storage/box/zipties = 1, /obj/item/clothing/shoes/magboots/advance = 1, - /obj/item/weapon/implanter/loyalty = 1, + /obj/item/weapon/implanter/mindshield = 1, ) /datum/outfit/admin/nt_special_ops_officer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -329,7 +329,7 @@ if(istype(I)) apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Captain"), "Nanotrasen Navy Captain") - var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/loyalty(H) + var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/mindshield(H) L.imp_in = H L.implanted = 1 H.sec_hud_set_implants() @@ -755,7 +755,7 @@ if(istype(I)) apply_to_card(I, H, get_centcom_access("Emergency Response Team Member"), "Emergency Response Team Member") - var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/loyalty(H) + var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/mindshield(H) L.imp_in = H L.implanted = 1 H.sec_hud_set_implants() diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index e4eda250cf9..4e624696a10 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -376,9 +376,9 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /////// Implants & etc -/datum/supply_packs/security/armory/loyalty +/datum/supply_packs/security/armory/mindshield name = "Mindshield Implants Crate" - contains = list (/obj/item/weapon/storage/lockbox/loyalty) + contains = list (/obj/item/weapon/storage/lockbox/mindshield) cost = 40 containername = "mindshield implant crate" diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 240c53b0025..2a6aa2b3a39 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -41,7 +41,7 @@ hud_icons = list(ID_HUD) /datum/atom_hud/data/human/security/advanced - hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD) + hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPMINDSHIELD_HUD, IMPCHEM_HUD, WANTED_HUD) /datum/atom_hud/data/diagnostic hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_TRACK_HUD) @@ -172,7 +172,7 @@ /mob/living/carbon/human/proc/sec_hud_set_implants() var/image/holder - for(var/i in list(IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD)) + for(var/i in list(IMPTRACK_HUD, IMPMINDSHIELD_HUD, IMPCHEM_HUD)) holder = hud_list[i] holder.icon_state = null for(var/obj/item/weapon/implant/I in src) @@ -180,8 +180,8 @@ if(istype(I,/obj/item/weapon/implant/tracking)) holder = hud_list[IMPTRACK_HUD] holder.icon_state = "hud_imp_tracking" - else if(istype(I,/obj/item/weapon/implant/loyalty)) - holder = hud_list[IMPLOYAL_HUD] + else if(istype(I,/obj/item/weapon/implant/mindshield)) + holder = hud_list[IMPMINDSHIELD_HUD] holder.icon_state = "hud_imp_loyal" else if(istype(I,/obj/item/weapon/implant/chem)) holder = hud_list[IMPCHEM_HUD] diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index 7c307295dc7..263ae5b33d8 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -91,7 +91,7 @@ if(player.current) // Remove mindshield-implanted mobs from the list if(ishuman(player.current)) var/mob/living/carbon/human/H = player.current - for(var/obj/item/weapon/implant/loyalty/I in H.contents) + for(var/obj/item/weapon/implant/mindshield/I in H.contents) if(I && I.implanted) possible_traitors -= player diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index bce324ade0c..ff7c74a6fbb 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -19,7 +19,7 @@ var/global/list/all_cults = list() return 0 if(ishuman(mind.current)) var/mob/living/carbon/human/H = mind.current - if(isloyal(H)) + if(ismindshielded(H)) return 0 if(issilicon(mind.current)) return 0 //can't convert machines, that's ratvar's thing diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index cbfa6e51f11..976f2cd8fc8 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -102,7 +102,7 @@ If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

" text += "Rite of Enlightenment
This rune is critical to the success of the cult. It will allow you to convert normal crew members into cultists. \ - To do this, simply place the crew member upon the rune and invoke it. This rune requires two invokers to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ + To do this, simply place the crew member upon the rune and invoke it. This rune requires two invokers to use. If the target to be converted is mindshielded or a certain assignment, they will \ be unable to be converted. People [ticker.mode.cultdat.entity_title3] wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.
\ Successful conversions will produce a tome for the new cultist.

" diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 41b8178c6f3..14fe620cc3c 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -323,7 +323,7 @@ var/list/teleport_runes = list() //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert cultist_name = "Rite of Enlightenment" - cultist_desc = "converts a normal crewmember on top of it to the cult. Does not work on loyalty-implanted crew." + cultist_desc = "converts a normal crewmember on top of it to the cult. Does not work on mindshielded crew." invocation = "Mah'weyh pleggh at e'ntrath!" icon_state = "3" req_cultists = 2 @@ -336,7 +336,7 @@ var/list/teleport_runes = list() var/turf/T = get_turf(src) for(var/mob/living/M in T.contents) - if(!iscultist(M) && !isloyal(M)) + if(!iscultist(M) && !ismindshielded(M)) convertees.Add(M) if(!convertees.len) fail_invoke() diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 08fbf0d4cc7..556b7f50e5b 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -234,7 +234,7 @@ if(rev_mind.assigned_role in command_positions) return 0 var/mob/living/carbon/human/H = rev_mind.current//Check to see if the potential rev is implanted - if(isloyal(H)) + if(ismindshielded(H)) return 0 if((rev_mind in revolutionaries) || (rev_mind in head_revolutionaries)) return 0 diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index fd63864442d..1212379eb1c 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -307,14 +307,14 @@ to_chat(target, "A terrible red light floods your mind. You collapse as conscious thought is wiped away.") target.Weaken(12) sleep(20) - if(isloyal(target)) + if(ismindshielded(target)) to_chat(user, "They have a mindshield implant. You begin to deactivate it - this will take some time.") user.visible_message("[user] pauses, then dips their head in concentration!") to_chat(target, "Your mindshield implant becomes hot as it comes under attack!") sleep(100) //10 seconds - not spawn() so the enthralling takes longer to_chat(user, "The nanobots composing the mindshield implant have been rendered inert. Now to continue.") user.visible_message("[user] relaxes again.") - for(var/obj/item/weapon/implant/loyalty/L in target) + for(var/obj/item/weapon/implant/mindshield/L in target) if(L && L.implanted) qdel(L) to_chat(target, "Your mental protection implant unexpectedly falters, dims, dies.") diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index c38c50ad40a..0988c80fa71 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -294,7 +294,7 @@ /obj/effect/proc_holder/spell/vampire/targetted/enthrall/proc/can_enthrall(mob/living/user, mob/living/carbon/C) var/enthrall_safe = 0 - for(var/obj/item/weapon/implant/loyalty/L in C) + for(var/obj/item/weapon/implant/mindshield/L in C) if(L && L.implanted) enthrall_safe = 1 break diff --git a/code/game/jobs/job/central.dm b/code/game/jobs/job/central.dm index 9d3d5a7ab7a..64298b70fbe 100644 --- a/code/game/jobs/job/central.dm +++ b/code/game/jobs/job/central.dm @@ -34,7 +34,7 @@ /obj/item/weapon/implanter/death_alarm = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/satchel @@ -77,6 +77,6 @@ /obj/item/weapon/implanter/death_alarm = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/satchel \ No newline at end of file diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 62b248c4875..a7ed2b6b7a8 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -40,7 +40,7 @@ /obj/item/weapon/melee/classic_baton/telescopic = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/security satchel = /obj/item/weapon/storage/backpack/satchel_sec @@ -83,7 +83,7 @@ /obj/item/weapon/restraints/handcuffs = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/security satchel = /obj/item/weapon/storage/backpack/satchel_sec @@ -130,7 +130,7 @@ /obj/item/weapon/melee/classic_baton/telescopic = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) /datum/outfit/job/detective/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() @@ -183,7 +183,7 @@ /obj/item/weapon/restraints/handcuffs = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/security satchel = /obj/item/weapon/storage/backpack/satchel_sec @@ -218,7 +218,7 @@ l_hand = /obj/item/weapon/storage/firstaid/adv pda = /obj/item/device/pda/medical - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/medic satchel = /obj/item/weapon/storage/backpack/satchel_med @@ -257,7 +257,7 @@ /obj/item/weapon/restraints/handcuffs = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/security satchel = /obj/item/weapon/storage/backpack/satchel_sec diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm index af91e7788bd..e1b6bfda98e 100644 --- a/code/game/jobs/job/supervisor.dm +++ b/code/game/jobs/job/supervisor.dm @@ -41,7 +41,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) /obj/item/weapon/melee/classic_baton/telescopic = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/captain satchel = /obj/item/weapon/storage/backpack/satchel_cap @@ -145,7 +145,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) /obj/item/weapon/melee/classic_baton/ntcane = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) @@ -188,7 +188,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) /obj/item/weapon/gun/energy/gun/blueshield = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) backpack = /obj/item/weapon/storage/backpack/security @@ -232,7 +232,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) /obj/item/weapon/melee/classic_baton/telescopic = 1 ) - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) @@ -269,4 +269,4 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) l_hand = /obj/item/weapon/storage/briefcase pda = /obj/item/device/pda/lawyer - implants = list(/obj/item/weapon/implant/loyalty) + implants = list(/obj/item/weapon/implant/mindshield) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 151dc377f5d..576cc65868b 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -220,7 +220,7 @@ active_power_usage = 500 var/printing = null var/printing_text = null - var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/loyalty, /obj/item/weapon/implant/tracking) + var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/mindshield, /obj/item/weapon/implant/tracking) /obj/machinery/body_scanconsole/power_change() if(stat & BROKEN) diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 52a9a343e6b..fefb20e90e4 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -152,7 +152,7 @@ if(M.stat == CONSCIOUS) M.mind_initialize() //give them a mind datum if they don't have one. var/resisted - if(!isloyal(M)) + if(!ismindshielded(M)) if(user.mind in ticker.mode.head_revolutionaries) if(ticker.mode.add_revolutionary(M.mind)) times_used -- //Flashes less likely to burn out for headrevs when used for conversion diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index 68d75f1e7bb..cda1145d90c 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -592,7 +592,7 @@ to_chat(missionary, "Your faith is strong, but their mind is already slaved to someone else's ideals. Perhaps an inquisition would reveal more...") faith -= 25 //same faith cost as losing sight of them mid-conversion, but did you just find someone who can lead you to a fellow traitor? return - if(isloyal(target)) + if(ismindshielded(target)) if(prob(20)) //loyalty implants typically overpower this, but you CAN get lucky and convert still (20% chance of success) faith -= 125 //yes, this puts it negative. it's gonna take longer to recharge if you manage to convert a one of these people to balance the new power you gained through them to_chat(missionary, "Through sheer willpower, you overcome their closed mind and rally [target] to your cause! You may need a bit longer than usual before your faith is fully recharged, and they won't remain loyal to you for long ...") diff --git a/code/game/objects/items/weapons/implants/implant_mindshield.dm b/code/game/objects/items/weapons/implants/implant_mindshield.dm index a6efb21661f..a76b373e6b7 100644 --- a/code/game/objects/items/weapons/implants/implant_mindshield.dm +++ b/code/game/objects/items/weapons/implants/implant_mindshield.dm @@ -1,10 +1,10 @@ -/obj/item/weapon/implant/loyalty +/obj/item/weapon/implant/mindshield name = "mindshield implant" desc = "Stops people messing with your mind." origin_tech = "materials=2;biotech=4;programming=4" activated = 0 -/obj/item/weapon/implant/loyalty/get_data() +/obj/item/weapon/implant/mindshield/get_data() var/dat = {"Implant Specifications:
Name: Nanotrasen Employee Management Implant
Life: Ten years.
@@ -17,7 +17,7 @@ return dat -/obj/item/weapon/implant/loyalty/implant(mob/target) +/obj/item/weapon/implant/mindshield/implant(mob/target) if(..()) if(target.mind in ticker.mode.head_revolutionaries || is_shadow_or_thrall(target)) target.visible_message("[target] seems to resist the implant!", "You feel the corporate tendrils of Nanotrasen try to invade your mind!") @@ -33,7 +33,7 @@ return 1 return 0 -/obj/item/weapon/implant/loyalty/removed(mob/target, var/silent = 0) +/obj/item/weapon/implant/mindshield/removed(mob/target, var/silent = 0) if(..()) if(target.stat != DEAD && !silent) to_chat(target, "You feel a sense of liberation as Nanotrasen's grip on your mind fades away.") @@ -41,19 +41,19 @@ return 0 -/obj/item/weapon/implanter/loyalty +/obj/item/weapon/implanter/mindshield name = "implanter (mindshield)" -/obj/item/weapon/implanter/loyalty/New() - imp = new /obj/item/weapon/implant/loyalty(src) +/obj/item/weapon/implanter/mindshield/New() + imp = new /obj/item/weapon/implant/mindshield(src) ..() update_icon() -/obj/item/weapon/implantcase/loyalty +/obj/item/weapon/implantcase/mindshield name = "implant case - 'mindshield'" desc = "A glass case containing a mindshield implant." -/obj/item/weapon/implantcase/loyalty/New() - imp = new /obj/item/weapon/implant/loyalty(src) +/obj/item/weapon/implantcase/mindshield/New() + imp = new /obj/item/weapon/implant/mindshield(src) ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/implants/implant_traitor.dm b/code/game/objects/items/weapons/implants/implant_traitor.dm index bb80d50845d..47b993b6007 100644 --- a/code/game/objects/items/weapons/implants/implant_traitor.dm +++ b/code/game/objects/items/weapons/implants/implant_traitor.dm @@ -38,7 +38,7 @@ removed(M) qdel(src) return -1 - if(isloyal(H)) + if(ismindshielded(H)) H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.") removed(M) qdel(src) diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 141f9b14f89..53183e21d63 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -11,7 +11,7 @@ var/ready = 1 var/malfunction = 0 - var/list/obj/item/weapon/implant/loyalty/implant_list = list() + var/list/obj/item/weapon/implant/mindshield/implant_list = list() var/max_implants = 5 var/injection_cooldown = 600 var/replenish_cooldown = 6000 @@ -122,9 +122,9 @@ if(!istype(M, /mob/living/carbon)) return if(!implant_list.len) return - for(var/obj/item/weapon/implant/loyalty/imp in implant_list) + for(var/obj/item/weapon/implant/mindshield/imp in implant_list) if(!imp) continue - if(istype(imp, /obj/item/weapon/implant/loyalty)) + if(istype(imp, /obj/item/weapon/implant/mindshield)) M.visible_message("[M] has been implanted by the [src.name].") if(imp.implant(M)) @@ -135,7 +135,7 @@ /obj/machinery/implantchair/add_implants() for(var/i=0, iYou feel yourself agreeing with [user], and a surge of loyalty begins building.") target.Weaken(12) sleep(20) - if(isloyal(target)) + if(ismindshielded(target)) to_chat(user, "They are enslaved by Nanotrasen. You feel their interest in your cause wane and disappear.") user.visible_message("[user] stops talking for a moment, then moves back away from [target].") to_chat(target, "Your mindshield implant activates, protecting you from conversion.") diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 6926e08af52..69bba669de0 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -41,8 +41,8 @@ else if(eyes) //If they're not, check to see if their eyes got one of them there colour matrices. Will be null if eyes are robotic/the mob isn't colourblind and they have no default colour matrix. return eyes.get_colourmatrix() -/proc/isloyal(A) //Checks to see if the person contains a mindshield implant, then checks that the implant is actually inside of them - for(var/obj/item/weapon/implant/loyalty/L in A) +/proc/ismindshielded(A) //Checks to see if the person contains a mindshield implant, then checks that the implant is actually inside of them + for(var/obj/item/weapon/implant/mindshield/L in A) if(L && L.implanted) return 1 return 0 From 4114e137449b22b201b482fa3f2c19469d7acddf Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 9 Apr 2017 16:56:17 +0100 Subject: [PATCH 30/81] Updates map files with old lingo --- _maps/map_files/cyberiad/cyberiad.dmm | 4 ++-- _maps/map_files/cyberiad/z2.dmm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index c92b7a15630..fe0d5aaed3f 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -777,7 +777,7 @@ "aoW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/flasher/portable,/obj/effect/decal/warning_stripes/red/hollow,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) "aoX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/security/armoury) "aoY" = (/obj/structure/rack,/obj/item/weapon/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/storage/box/handcuffs,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/box/teargas{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) -"aoZ" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/lockbox/loyalty,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) +"aoZ" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/lockbox/mindshield,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) "apa" = (/obj/structure/table,/obj/effect/decal/warning_stripes/red/hollow,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/lock_buster,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) "apb" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/security/armoury) "apc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/light{dir = 8},/obj/structure/closet/secure_closet/security,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/seceqstorage) @@ -6010,7 +6010,7 @@ "clD" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration) "clE" = (/obj/machinery/vending/medical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration) "clF" = (/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) -"clG" = (/obj/structure/table,/obj/item/weapon/storage/lockbox/loyalty,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) +"clG" = (/obj/structure/table,/obj/item/weapon/storage/lockbox/mindshield,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "clH" = (/obj/structure/table,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration) "clI" = (/obj/item/weapon/ore/silver,/obj/item/weapon/ore/silver,/obj/structure/closet/crate,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/quartermaster/miningdock) "clJ" = (/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/quartermaster/miningdock) diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 9a0255b509d..a5692e0ca1e 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -253,6 +253,7 @@ "eS" = (/turf/unsimulated/floor{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/centcom/control) "eT" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/centcom/specops) "eU" = (/obj/structure/table/woodentable,/obj/item/stack/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"eV" = (/obj/structure/rack,/obj/item/weapon/implanter/adrenalin{pixel_x = 12; pixel_y = -12},/obj/item/weapon/implanter/emp{pixel_x = 9; pixel_y = -9},/obj/item/weapon/implanter/explosive{pixel_x = 6; pixel_y = -6},/obj/item/weapon/implanter/explosive_macro{pixel_x = 3; pixel_y = -3},/obj/item/weapon/implanter/freedom,/obj/item/weapon/implanter/krav_maga{pixel_x = -9; pixel_y = 9},/obj/item/weapon/implanter/mindshield{pixel_x = -6; pixel_y = 6},/obj/item/weapon/implanter/storage{pixel_x = -3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "eX" = (/obj/structure/flora/tree/pine,/turf/simulated/floor/holofloor{tag = "icon-snow"; icon_state = "snow"},/area/holodeck/source_snowfield) "eY" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor{tag = "icon-grimy"; icon_state = "grimy"; dir = 2},/area/holodeck/source_meetinghall) "eZ" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/source_basketball) @@ -485,7 +486,6 @@ "jE" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/twohanded/staff/broom,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "jF" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/twohanded/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "jG" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/holding{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/backpack/satchel,/obj/item/weapon/storage/backpack/holding{pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"jH" = (/obj/structure/rack,/obj/item/weapon/implanter/adrenalin{pixel_x = 12; pixel_y = -12},/obj/item/weapon/implanter/emp{pixel_x = 9; pixel_y = -9},/obj/item/weapon/implanter/explosive{pixel_x = 6; pixel_y = -6},/obj/item/weapon/implanter/explosive_macro{pixel_x = 3; pixel_y = -3},/obj/item/weapon/implanter/freedom,/obj/item/weapon/implanter/krav_maga{pixel_x = -9; pixel_y = 9},/obj/item/weapon/implanter/loyalty{pixel_x = -6; pixel_y = 6},/obj/item/weapon/implanter/storage{pixel_x = -3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "jI" = (/turf/space,/area/adminconstruction) "jJ" = (/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) "jK" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/light,/turf/simulated/floor/plating/airless,/area/syndicate_mothership) @@ -1621,7 +1621,7 @@ aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbW aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNDZDKDKDKDKDKEdDADTDKDUDKDVDWDXDYDADvaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfEgDKEaEbEcDKEiDADKDKDKDKDKDKDKEeDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNiQDAiRDKDKDKDKDKjfDAEjDKEkDKElDWDXDYEfaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAjGEhDKDKDKEhjHDADKDKDKDKDKDKDKEmDADvaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAjGEhDKDKDKEheVDADKDKDKDKDKDKDKEmDADvaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDuaNDADwDwDMEoDMDwDwDwDwDwDMEpDMDwDwDwEnaNDtDwEqErErEsDwDuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDADwDwEtDKDKDKDKDKDKDKDKDKDKDKDKEuDAEnaNDvDwEvEwExEyEwEzDwjIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEBDKECDKDKDKDKDKDKDKDKDKDKDKDKDKDKDAaNaNaNEDEEEFEwEwEwEGEDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN From fa96e00509ebe53c548354cfc02759814b6d3ac8 Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 9 Apr 2017 17:26:01 +0100 Subject: [PATCH 31/81] Oh right, Metastation. --- _maps/map_files/MetaStation/MetaStation.v41A.II.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index f713d4e31d8..c2a31e4d761 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -871,7 +871,7 @@ "aqM" = (/obj/structure/table,/obj/item/weapon/storage/box/evidence,/obj/item/weapon/storage/box/evidence,/obj/item/weapon/storage/box/evidence,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/security/warden) "aqN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/security/warden) "aqO" = (/obj/structure/filingcabinet/security{pixel_x = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 28},/turf/simulated/floor/plasteel{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/security/warden) -"aqP" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/lockbox/loyalty,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) +"aqP" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/lockbox/mindshield,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) "aqQ" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/security/warden) "aqR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/warden) "aqS" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/pod_3) From 24e9fbc5074ad72d1fb92e2ce9c0f57e5c088807 Mon Sep 17 00:00:00 2001 From: FlattestGuitar Date: Sun, 9 Apr 2017 22:35:53 +0200 Subject: [PATCH 32/81] Removes pre-confirmation warning from karma gifting. --- code/modules/karma/karma.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index 464ecd8ae23..b8909ff9e52 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -79,7 +79,7 @@ var/list/karma_spenders = list() to_chat(src, "You can't spend karma on someone connected from the same IP.") return 0 return 1 - + /mob/verb/spend_karma_list() set name = "Award Karma" @@ -118,8 +118,6 @@ var/list/karma_spenders = list() if(!M) to_chat(usr, "Please right click a mob to award karma directly, or use the 'Award Karma' verb to select a player from the player listing.") return - if(!can_give_karma_to_mob(M)) - return if(alert("Give [M.name] good karma?", "Karma", "Yes", "No") != "Yes") return if(!can_give_karma_to_mob(M)) From 04796bbc59fac2ae2101abebf4ba76de4aba290b Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 9 Apr 2017 16:40:02 -0400 Subject: [PATCH 33/81] Automatic changelog generation for PR #6894 [ci skip] --- html/changelogs/AutoChangeLog-pr-6894.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6894.yml diff --git a/html/changelogs/AutoChangeLog-pr-6894.yml b/html/changelogs/AutoChangeLog-pr-6894.yml new file mode 100644 index 00000000000..c3f0d65132b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6894.yml @@ -0,0 +1,21 @@ +author: "Fox McCloud" +delete-after: True +changes: + - tweak: "abductor glands now act as actual hearts; removing them induces heart failure" + - tweak: "plasma gland no longer gibs you, but makes you vomit plasma instead" + - tweak: "bodysnatcher gland no longer gibs you, but will deal brute damage instead" + - tweak: "bloody gland will now drain blood instead of dealing brute damage" + - tweak: "species change gland will now change your species until the gland is removed" + - tweak: "adjusted the origin tech on a few gland" + - tweak: "heart attacks will once again paralyse you and do slightly more brute damage" + - bugfix: "body snatch clones look more like their originator" + - tweak: "Abductors can no longer use guns (minus their own alien energy gun)" + - tweak: "Sending someone with an abductor teleport via the console will stun them for 3 cycles (doesn't apply with the advanced camera console)" + - rscadd: "Abductors can now purchase additional abductor vests" + - rscadd: "Abductors can lock/unlock vests" + - tweak: "Purchasing supplies from the abductor console will no longer increase the amount of experiments you must do" + - tweak: "Wonderprods will not induce sleep in those who are stunned OR sleeping" + - tweak: "altered the origin tech of abductor tools" + - rscadd: "Can make abductor surgery tables from regular tables by adding silver sheets to an abductor table frame" + - rscadd: "Added a bunch more abductee objectives" + - tweak: "abductors no long scream like girls" From 14c7ef82e6a17890e68f31cfba3d527d34b0c8f0 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 9 Apr 2017 16:40:43 -0400 Subject: [PATCH 34/81] Automatic changelog compile, [ci skip] --- html/changelog.html | 23 +++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 23 +++++++++++++++++++++++ html/changelogs/AutoChangeLog-pr-6894.yml | 21 --------------------- 3 files changed, 46 insertions(+), 21 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-6894.yml diff --git a/html/changelog.html b/html/changelog.html index 25c7c7efe57..014217de016 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,29 @@ -->

+

09 April 2017

+

Fox McCloud updated:

+
    +
  • abductor glands now act as actual hearts; removing them induces heart failure
  • +
  • plasma gland no longer gibs you, but makes you vomit plasma instead
  • +
  • bodysnatcher gland no longer gibs you, but will deal brute damage instead
  • +
  • bloody gland will now drain blood instead of dealing brute damage
  • +
  • species change gland will now change your species until the gland is removed
  • +
  • adjusted the origin tech on a few gland
  • +
  • heart attacks will once again paralyse you and do slightly more brute damage
  • +
  • body snatch clones look more like their originator
  • +
  • Abductors can no longer use guns (minus their own alien energy gun)
  • +
  • Sending someone with an abductor teleport via the console will stun them for 3 cycles (doesn't apply with the advanced camera console)
  • +
  • Abductors can now purchase additional abductor vests
  • +
  • Abductors can lock/unlock vests
  • +
  • Purchasing supplies from the abductor console will no longer increase the amount of experiments you must do
  • +
  • Wonderprods will not induce sleep in those who are stunned OR sleeping
  • +
  • altered the origin tech of abductor tools
  • +
  • Can make abductor surgery tables from regular tables by adding silver sheets to an abductor table frame
  • +
  • Added a bunch more abductee objectives
  • +
  • abductors no long scream like girls
  • +
+

06 April 2017

Fox McCloud updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index f6eea631b93..802259efe40 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4425,3 +4425,26 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Fixes autopsy report printing; print reports by clicking the device itself davipatury: - rscadd: Rapid Cable Layer now have an autolathe design. +2017-04-09: + Fox McCloud: + - tweak: abductor glands now act as actual hearts; removing them induces heart failure + - tweak: plasma gland no longer gibs you, but makes you vomit plasma instead + - tweak: bodysnatcher gland no longer gibs you, but will deal brute damage instead + - tweak: bloody gland will now drain blood instead of dealing brute damage + - tweak: species change gland will now change your species until the gland is removed + - tweak: adjusted the origin tech on a few gland + - tweak: heart attacks will once again paralyse you and do slightly more brute damage + - bugfix: body snatch clones look more like their originator + - tweak: Abductors can no longer use guns (minus their own alien energy gun) + - tweak: Sending someone with an abductor teleport via the console will stun them + for 3 cycles (doesn't apply with the advanced camera console) + - rscadd: Abductors can now purchase additional abductor vests + - rscadd: Abductors can lock/unlock vests + - tweak: Purchasing supplies from the abductor console will no longer increase the + amount of experiments you must do + - tweak: Wonderprods will not induce sleep in those who are stunned OR sleeping + - tweak: altered the origin tech of abductor tools + - rscadd: Can make abductor surgery tables from regular tables by adding silver + sheets to an abductor table frame + - rscadd: Added a bunch more abductee objectives + - tweak: abductors no long scream like girls diff --git a/html/changelogs/AutoChangeLog-pr-6894.yml b/html/changelogs/AutoChangeLog-pr-6894.yml deleted file mode 100644 index c3f0d65132b..00000000000 --- a/html/changelogs/AutoChangeLog-pr-6894.yml +++ /dev/null @@ -1,21 +0,0 @@ -author: "Fox McCloud" -delete-after: True -changes: - - tweak: "abductor glands now act as actual hearts; removing them induces heart failure" - - tweak: "plasma gland no longer gibs you, but makes you vomit plasma instead" - - tweak: "bodysnatcher gland no longer gibs you, but will deal brute damage instead" - - tweak: "bloody gland will now drain blood instead of dealing brute damage" - - tweak: "species change gland will now change your species until the gland is removed" - - tweak: "adjusted the origin tech on a few gland" - - tweak: "heart attacks will once again paralyse you and do slightly more brute damage" - - bugfix: "body snatch clones look more like their originator" - - tweak: "Abductors can no longer use guns (minus their own alien energy gun)" - - tweak: "Sending someone with an abductor teleport via the console will stun them for 3 cycles (doesn't apply with the advanced camera console)" - - rscadd: "Abductors can now purchase additional abductor vests" - - rscadd: "Abductors can lock/unlock vests" - - tweak: "Purchasing supplies from the abductor console will no longer increase the amount of experiments you must do" - - tweak: "Wonderprods will not induce sleep in those who are stunned OR sleeping" - - tweak: "altered the origin tech of abductor tools" - - rscadd: "Can make abductor surgery tables from regular tables by adding silver sheets to an abductor table frame" - - rscadd: "Added a bunch more abductee objectives" - - tweak: "abductors no long scream like girls" From 95661a8f1319065c9996bb67bad2857753030608 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 9 Apr 2017 16:55:32 -0400 Subject: [PATCH 35/81] Automatic changelog generation for PR #7061 [ci skip] --- html/changelogs/AutoChangeLog-pr-7061.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7061.yml diff --git a/html/changelogs/AutoChangeLog-pr-7061.yml b/html/changelogs/AutoChangeLog-pr-7061.yml new file mode 100644 index 00000000000..4ce7507aa29 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7061.yml @@ -0,0 +1,8 @@ +author: "Fox McCloud" +delete-after: True +changes: + - tweak: "High capacity cells have 10,000 charge instead of 15,000" + - tweak: "Mech equipment power costs minorly adjusted" + - tweak: "APCs charge a bit faster" + - tweak: "EMPs less effective against pods and mechs" + - bugfix: "Fixes not being able to recharge modular laptops/tablets" From 665632b58dbbaa00361ddde830dbcaae9225c5e3 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 9 Apr 2017 17:40:51 -0400 Subject: [PATCH 36/81] Automatic changelog compile, [ci skip] --- html/changelog.html | 5 +++++ html/changelogs/.all_changelog.yml | 5 +++++ html/changelogs/AutoChangeLog-pr-7061.yml | 8 -------- 3 files changed, 10 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-7061.yml diff --git a/html/changelog.html b/html/changelog.html index 014217de016..11dff528cb3 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -76,6 +76,11 @@
  • Can make abductor surgery tables from regular tables by adding silver sheets to an abductor table frame
  • Added a bunch more abductee objectives
  • abductors no long scream like girls
  • +
  • High capacity cells have 10,000 charge instead of 15,000
  • +
  • Mech equipment power costs minorly adjusted
  • +
  • APCs charge a bit faster
  • +
  • EMPs less effective against pods and mechs
  • +
  • Fixes not being able to recharge modular laptops/tablets

06 April 2017

diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 802259efe40..ac1feee47d6 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4448,3 +4448,8 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. sheets to an abductor table frame - rscadd: Added a bunch more abductee objectives - tweak: abductors no long scream like girls + - tweak: High capacity cells have 10,000 charge instead of 15,000 + - tweak: Mech equipment power costs minorly adjusted + - tweak: APCs charge a bit faster + - tweak: EMPs less effective against pods and mechs + - bugfix: Fixes not being able to recharge modular laptops/tablets diff --git a/html/changelogs/AutoChangeLog-pr-7061.yml b/html/changelogs/AutoChangeLog-pr-7061.yml deleted file mode 100644 index 4ce7507aa29..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7061.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Fox McCloud" -delete-after: True -changes: - - tweak: "High capacity cells have 10,000 charge instead of 15,000" - - tweak: "Mech equipment power costs minorly adjusted" - - tweak: "APCs charge a bit faster" - - tweak: "EMPs less effective against pods and mechs" - - bugfix: "Fixes not being able to recharge modular laptops/tablets" From e291a7ec6f48833f91bfb99fc3586d3f5eabe9ce Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 10 Apr 2017 01:10:20 +0100 Subject: [PATCH 37/81] Fixes 7082 --- code/game/objects/structures/lattice.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index bfb607585b0..ed320c71146 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -58,9 +58,9 @@ if(istype(C, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = C if(WT.remove_fuel(0, user)) - to_chat(user, "\blue Slicing lattice joints ...") - new /obj/item/stack/rods(src.loc) - qdel(src) + to_chat(user, "Slicing lattice joints...") + new /obj/item/stack/rods(src.loc) + qdel(src) return From 74242e9f89eb13f5c7ab297fa8053d474ac10503 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 9 Apr 2017 21:32:08 -0400 Subject: [PATCH 38/81] Automatic changelog generation for PR #7083 [ci skip] --- html/changelogs/AutoChangeLog-pr-7083.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7083.yml diff --git a/html/changelogs/AutoChangeLog-pr-7083.yml b/html/changelogs/AutoChangeLog-pr-7083.yml new file mode 100644 index 00000000000..3abd23b9a61 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7083.yml @@ -0,0 +1,4 @@ +author: "Purpose2" +delete-after: True +changes: + - bugfix: "Welders must now been fueled and active to cut lattices." From 4ff82f64912641202a86750fdc2c1748b14fcb9e Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 9 Apr 2017 22:18:18 -0400 Subject: [PATCH 39/81] Automatic changelog compile, [ci skip] --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 2 ++ html/changelogs/AutoChangeLog-pr-7083.yml | 4 ---- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-7083.yml diff --git a/html/changelog.html b/html/changelog.html index 11dff528cb3..efc46d87109 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -82,6 +82,10 @@
  • EMPs less effective against pods and mechs
  • Fixes not being able to recharge modular laptops/tablets
  • +

    Purpose2 updated:

    +
      +
    • Welders must now been fueled and active to cut lattices.
    • +

    06 April 2017

    Fox McCloud updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index ac1feee47d6..adc1da7c49c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4453,3 +4453,5 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: APCs charge a bit faster - tweak: EMPs less effective against pods and mechs - bugfix: Fixes not being able to recharge modular laptops/tablets + Purpose2: + - bugfix: Welders must now been fueled and active to cut lattices. diff --git a/html/changelogs/AutoChangeLog-pr-7083.yml b/html/changelogs/AutoChangeLog-pr-7083.yml deleted file mode 100644 index 3abd23b9a61..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7083.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Purpose2" -delete-after: True -changes: - - bugfix: "Welders must now been fueled and active to cut lattices." From c73eb10c1b3604b6b0422fd619e62399d77d6353 Mon Sep 17 00:00:00 2001 From: FlattestGuitar Date: Sun, 2 Apr 2017 19:48:34 +0200 Subject: [PATCH 40/81] Adds a fluff item for DesolateG --- code/game/objects/items/weapons/stunbaton.dm | 8 +++-- code/game/objects/items/weapons/teleprod.dm | 3 +- code/modules/customitems/item_defines.dm | 34 ++++++++++++++++--- icons/mob/inhands/fluff_lefthand.dmi | Bin 0 -> 324 bytes icons/mob/inhands/fluff_righthand.dmi | Bin 0 -> 321 bytes icons/obj/custom_items.dmi | Bin 58811 -> 60639 bytes 6 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 icons/mob/inhands/fluff_lefthand.dmi create mode 100644 icons/mob/inhands/fluff_righthand.dmi diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index f2bd9cafedf..ba6a96925a3 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -2,6 +2,7 @@ name = "stunbaton" desc = "A stun baton for incapacitating people with." icon_state = "stunbaton" + var/base_icon = "stunbaton" item_state = "baton" slot_flags = SLOT_BELT force = 10 @@ -48,11 +49,11 @@ /obj/item/weapon/melee/baton/update_icon() if(status) - icon_state = "[initial(name)]_active" + icon_state = "[base_icon]_active" else if(!bcell) - icon_state = "[initial(name)]_nocell" + icon_state = "[base_icon]_nocell" else - icon_state = "[initial(name)]" + icon_state = "[base_icon]" /obj/item/weapon/melee/baton/examine(mob/user) ..(user) @@ -194,6 +195,7 @@ name = "stunprod" desc = "An improvised stun baton." icon_state = "stunprod_nocell" + base_icon = "stunprod" item_state = "prod" w_class = 3 force = 3 diff --git a/code/game/objects/items/weapons/teleprod.dm b/code/game/objects/items/weapons/teleprod.dm index 0bc1b23f6d6..dfaa52ba396 100644 --- a/code/game/objects/items/weapons/teleprod.dm +++ b/code/game/objects/items/weapons/teleprod.dm @@ -2,6 +2,7 @@ name = "teleprod" desc = "A prod with a bluespace crystal on the end. The crystal doesn't look too fun to touch." icon_state = "teleprod_nocell" + base_icon = "teleprod" item_state = "teleprod" origin_tech = "combat=2;bluespace=4;materials=3" @@ -15,4 +16,4 @@ deductcharge(hitcost) do_teleport(user, get_turf(user), 50)//honk honk else if(iscarbon(M) && !M.anchored) - do_teleport(M, get_turf(M), 15) \ No newline at end of file + do_teleport(M, get_turf(M), 15) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index c58d932bf29..6cc353d0b17 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -235,6 +235,33 @@ to_chat(target, "You comb your tail with the [src].") used = 1 +/obj/item/device/fluff/desolate_baton_kit //DesolateG: Michael steampunk_witch + name = "stun baton converstion kit" + desc = "Some sci-fi looking parts for a stun baton." + icon = 'icons/obj/custom_items.dmi' + icon_state = "scifikit" + w_class = 2 + +/obj/item/device/fluff/desolate_baton_kit/afterattack(atom/target, mob/user, proximity) + if(!proximity || !ishuman(user) || user.incapacitated()) + return + + if(istype(target, /obj/item/weapon/melee/baton) && !istype(target, /obj/item/weapon/melee/baton/cattleprod)) + to_chat(user, "You modify the appearance of [target].") + //because batons use the initial() proc, we can't just swap the icon state, sadly + var/obj/item/weapon/melee/baton/the_baton = target + the_baton.base_icon = "desolate_baton" + the_baton.item_state = "desolate_baton" + the_baton.icon = 'icons/obj/custom_items.dmi' + the_baton.lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi' + the_baton.righthand_file = 'icons/mob/inhands/fluff_righthand.dmi' + the_baton.update_icon() + user.update_icons() + qdel(src) + return + + to_chat(user, "You can't modify [target]!") + /obj/item/device/fluff/cardgage_helmet_kit //captain cardgage: Richard Ulery name = "welding helmet modkit" desc = "Some spraypaint and a stencil, perfect for painting flames onto a welding helmet!" @@ -244,14 +271,14 @@ throwforce = 0 /obj/item/device/fluff/cardgage_helmet_kit/afterattack(atom/target, mob/user, proximity) - if(!proximity || !ishuman(user) || user.lying) + if(!proximity || !ishuman(user) || user.incapacitated()) return if(istype(target, /obj/item/clothing/head/welding)) to_chat(user, "You modify the appearance of [target].") var/obj/item/clothing/head/welding/flamedecal/P = new(get_turf(target)) - transfer_fingerprints_to(P) + target.transfer_fingerprints_to(P) qdel(target) qdel(src) return @@ -269,7 +296,7 @@ throwforce = 0 /obj/item/device/fluff/shadey_plasman_modkit/afterattack(atom/target, mob/user, proximity) - if(!proximity || !ishuman(user) || user.lying) + if(!proximity || !ishuman(user) || user.incapacitated()) return var/mob/living/carbon/human/H = user @@ -744,4 +771,3 @@ new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass(src) new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass(src) new /obj/item/weapon/reagent_containers/food/drinks/bottle/fluff/moonshine(src) - diff --git a/icons/mob/inhands/fluff_lefthand.dmi b/icons/mob/inhands/fluff_lefthand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8e3ccdbfbff910f7c852f7c0d1c4bb6796d12689 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSJOMr-t_Kbrkd>7^b^rCMorm;1 z&)5RR8B2ovf*Bm1-ADs+imE~)N?cNllZ!G7N;32F7#J$%1cwzAm45#cT=4Ph6D@CD zt#fD22X6>9xM=*~kfPf>r%nPP7H$r%$7#M!Uve&9v SUT6o}$>8bg=d#Wzp$Py1+H?W{ literal 0 HcmV?d00001 diff --git a/icons/mob/inhands/fluff_righthand.dmi b/icons/mob/inhands/fluff_righthand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..21dc49c50eadf1469613cfa275f254eefd81b392 GIT binary patch literal 321 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�!Q;o?>s6LKU+p`WrbkeJGii#xp6-%uur4u#)wF;W zzg@YJH$R%Qg|4r=m|qr6AW#P{0mZBA_lkreD9Ye5_nEnRTtF&ba>Y$5XQG>MPcqfv z${VNTkG~YN#4sT^sMvz&P-{0ajlG{vI`J7bN9}dLE0p33?oe_iu$TlP8}4ylFC5>1 zKrMX)BL6`O(zg?Q@|f$c{1sey2J|4t_z%k6GEBA{@JWYKd^_i%t~QyQR)-{S=K2eIhJDBS%w@ZSJ%)Z}1L zn6?)XhtZ&dACYIhPGhU^MK47Tc~tx*;x~MaPuv!5l6_3r(kukvHS*1Wdieeo6;*x9 zUO$nW42!a=DhrI)8*Ctj3XZ$_vmHRi%YGk6bQ3;G4(u}$BI`1lvEsS^XW<9#;eI(5 z*b`)k3->y0eP$3w$N8@{wnkoAs|!A)6mpFln*5J(0LTt<8!Ib^@1cdf@c_l*apnBs zDnEsa3~Kh>!U=JqErW~@Xf=aRWS|FuAszNvp(JrJe*ODy*AY-X@eEc|2zUE0HH)$ug+CoFN)CT1T!x5P*u=hI@ z>e$O%DX6|O4vH1#(tU`6{)Tu8bu`0=)^swVzB2%|LgT{zPZ`%4)l{~HZvrGiq=^*K zC;|e46crGI6hl!&`d|S+0>{hf37{`R*|_|3ZIrVyG>!0cZAHxjNaC6k&tBNP|gvmS!- zmmn5uvhWD%#IJ(OV7mHQB*1ZtAYeALt({E|=j)Z zYgvuNgW|?6TaQlFQ6t3DjWf829emBvrkZt3Gc9k;(fYv-T0!Y)`0V2&P@⩔av9z zqA?URqU{2?N?M3S=>T{kmyqZuH=}6;U=0@qPxc9e*|9tC90Z_%-(7v;&9x2)cj~nt z!XRbR{IP5@b=~gN-Ep-|U${a0B~<$cj) zBG({Y*wSvZRegs0Np7g(HXWlAkcAw+KK96aR4|ubz@AhufE?Cd{^m{mDT|s zCibsq+8-3pd>Q{l0>51UO&CZQ;NBn0{uEq&P*7ks4=09v>(l_5WwxA!dl56!2r(p&tQcY`)=USW0sWfEJ43| zJ%DIVNLgM+k*E4z!WI5nx*EJ@Fb|20?AB9bbQ}2efYuh`zWFh*@CVo%kcfemmfxvl z*k`V-@}Rdbl=lxvOUsRVDN40^co~j-zaJwAcX)UA_{of?*C?}A!{_e7V`5{Iva(dX zt9OF69Un~C8eRx&PS;>9+$lyAAXpgXeK$Kq$nrS;Bo4Ji5dg+(7Kri($8~yWAu}sL zN{vi*A1^SChTUU2fhzL_l(ht@0PfkRph6!n>NR=HX_f$K5b{T)Dcad@pAnNwzwQM9 ziOxX19EP{}Avi`CfVyQ>jlT%Ld7o>YX`T?XM^~BLcR~oGL{Qn55qscdIf2B?{GtK+ zXxJW{ko!zgF3?va<6H=`U%gcgfNxilUvJvX674C1^_!A?owxRg76!A|;LE1}sedzk+g@6xiRb8S396}n<>8=J-EvtmV;w&zt>hK%b9&CD%GG@{T1r8UbNi1ar_}# z+)-7XL%rZRphN&vXAB@)pxaPGP~PKG$-~OF(*~;E_Voi5hB# zV;Ck@M2G3HW!yfl9T?@c7R)SY6OUqI4siJKdY1zPfk-Ha9$v1-L_gU-4C&Z7p#|6l?UXVE@ zhX>cQQ_{+*GBTa7>Ww*zq=0E$-H)Q9KAK-w4ig=uyh$4y99256k85B=g%+PUZ;!f3@ zxw!%7%v)v>dw{^9BbNqLl`Y5#SSZ8o$l6KtPSFltH;~1=Ke)iBqyNOAyib1By-4PTdlN z5f;ca#ijAasX+j$E+Z;x1Pmf?7RnJ;F|#XS$OJd}V|g&Z)9bVF5n@ih$0G*A7pR+Z zsUETw4LxbMk7ai0Or}vTU0?jbT&1cUMpCR86g?jFw5YK)6yc0jD~pCEmOv-}ej4ae z$ciCDAN}=f^_SpXY0TzbllRlibj|Xtk82ord~UR8~#hcXU*Qrhk`muN3x;LPXpinaoJ} zJN+1ErF)Ho!5mv0AS!C)!yqF}Ogx}wyFk>Bb)gTsoNXRPr=w;a0qa+Sk;`3~wTXs? zv(!_2C*8M}lZe035ar6HSNKY=Eco;L4iw6U%OJf43L=Hzsh@eU7qtK(Y*VJWJnHBh zjENTVkX5tpu2%)|XMvu^P`~*M)rqUYYUALKLBXV&`{MgBaFCvJp1s@Lf}x@l-A;Q4Pt5rq%WF;MF~I4}&)r zv(CK37b;e5yEwGm>8=gj$S#5JifkjFK^phXeN6oXzWqUt8J*aO0o}P5_6Bkdw};k8 zskJj!GqMtVT!TKETEmc#7-~iNCV9}dx|6e!zMPL0(EmN|kvAh{h*Yzfq50hxI*g6B zS_VoU+Pp(le`LViLD;u5Q1!}BzQG3?DqoHz+nSVJjxVENR|W_7*fdQvJqsTxQ1J}R zJaPHk{rQ~rZ+XAMo8}|AwI{ODG=0*Y0^v6~jvUA{LONdv)kQAnT={8`)RhvrG&-`P zh*#Lxl2C79qKF?yq8-5(~v^g8Sy7){iPN7{{CGdA4DINBb6Yf&9xC zK1_znT}y>sGs6OrshiC*Esfy}1T`|5h(|(U-wb?&4(YW|eY~)c&dt%gwIv2 Date: Tue, 11 Apr 2017 18:53:39 -0400 Subject: [PATCH 41/81] Automatic changelog generation for PR #7068 [ci skip] --- html/changelogs/AutoChangeLog-pr-7068.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7068.yml diff --git a/html/changelogs/AutoChangeLog-pr-7068.yml b/html/changelogs/AutoChangeLog-pr-7068.yml new file mode 100644 index 00000000000..2923ca88d8c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7068.yml @@ -0,0 +1,4 @@ +author: "FalseIncarnate" +delete-after: True +changes: + - tweak: "Damage done to the shuttle engines by a shadowling's \"Extend Shuttle\" ability now prevent the shuttle from being recalled to CentComm." From 041132d60d3ae92095482d80e0f43be7f0070a56 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 11 Apr 2017 19:50:44 -0400 Subject: [PATCH 42/81] Automatic changelog compile, [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 4 ++++ html/changelogs/AutoChangeLog-pr-7068.yml | 4 ---- 3 files changed, 10 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-7068.yml diff --git a/html/changelog.html b/html/changelog.html index efc46d87109..2c6921bdff1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,12 @@ -->
    +

    11 April 2017

    +

    FalseIncarnate updated:

    +
      +
    • Damage done to the shuttle engines by a shadowling's "Extend Shuttle" ability now prevent the shuttle from being recalled to CentComm.
    • +
    +

    09 April 2017

    Fox McCloud updated:

    FzP4^qt?-6UoJYq2 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 literal 0 HcmV?d00001 From a53af728ae62a929cfb577571628668a81af0f68 Mon Sep 17 00:00:00 2001 From: TravellingMerchant Date: Sat, 8 Apr 2017 11:37:01 +0100 Subject: [PATCH 27/81] Defines the new Kidan Emotes --- code/modules/mob/living/carbon/human/emote.dm | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 06d49959b60..4a44b867f53 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -53,6 +53,19 @@ if(!found_slime_bodypart) //Everyone else fails, skip the emote attempt return + + if("clack", "clacks") + if(species.name == "Kidan") //Only Kidan can clack and rightfully so. + on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm' + else //Everyone else fails, skip the emote attempt + return + + if("click", "clicks") + if(species.name == "Kidan") //Only Kidan can click and rightfully so. + on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm' + else //Everyone else fails, skip the emote attempt + return + if("scream", "screams") on_CD = handle_emote_CD(50) //longer cooldown if("fart", "farts", "flip", "flips", "snap", "snaps") @@ -163,6 +176,40 @@ playsound(loc, 'sound/effects/slime_squish.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound. m_type = 2 + if("clack", "clacks") + var/M = null + if(param) + for(var/mob/A in view(null, null)) + if(param == A.name) + M = A + break + if(!M) + param = null + + if(param) + message = "[src] clacks their mandibles at [param]." + else + message = "[src] clacks their mandibles." + playsound(loc, 'sound/effects/Kidanclack.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound. + m_type = 2 + + if("click", "clicks") + var/M = null + if(param) + for(var/mob/A in view(null, null)) + if(param == A.name) + M = A + break + if(!M) + param = null + + if(param) + message = "[src] clicks their mandibles at [param]." + else + message = "[src] clicks their mandibles." + playsound(loc, 'sound/effects/Kidanclack2.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound. + m_type = 2 + if("yes") var/M = null if(param) @@ -225,12 +272,12 @@ if(!restrained()) message = "[src] is strumming the air and headbanging like a safari chimp." m_type = 1 - + if("dance") if(!restrained()) message = "[src] dances around happily." m_type = 1 - + if("jump") if(!restrained()) message = "[src] jumps!" @@ -836,11 +883,11 @@ // playsound(loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun if(locate(/obj/item/weapon/storage/bible) in get_turf(src)) to_chat(viewers(src), "[src] farts on the Bible!") - var/image/cross = image('icons/obj/storage.dmi',"bible") - var/adminbfmessage = "\blue [bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SMITE):" - for(var/client/X in admins) - if(check_rights(R_EVENT,0,X.mob)) - to_chat(X, adminbfmessage) + var/image/cross = image('icons/obj/storage.dmi',"bible") + var/adminbfmessage = "\blue [bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SMITE):" + for(var/client/X in admins) + if(check_rights(R_EVENT,0,X.mob)) + to_chat(X, adminbfmessage) else if(TOXIC_FARTS in mutations) message = "[src] unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart." else if(SUPER_FART in mutations) From 905e886949154e1fe53df98ff6e3d98d684d7e42 Mon Sep 17 00:00:00 2001 From: TravellingMerchant Date: Sun, 9 Apr 2017 15:32:17 +0100 Subject: [PATCH 28/81] Updates Chaplins Helmet sprite. --- icons/mob/head.dmi | Bin 229272 -> 229286 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 929e490f63a78683effcab109caed5ca11a1309a..a3233b8bac5d2b744a9949346c6d0b4a8991ee54 100644 GIT binary patch delta 144805 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