From bbc0eb94d39fecd0c1807c7744616b4b971f7bf8 Mon Sep 17 00:00:00 2001 From: TullyBurnalot Date: Sat, 20 May 2017 14:41:44 +0100 Subject: [PATCH 01/65] Adds a Coroner Report Printer --- code/game/objects/items/devices/autopsy.dm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 2839715d7d7..268ee2fae79 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -74,6 +74,18 @@ if(O.trace_chemicals[V] > 0 && !chemtraces.Find(V)) chemtraces += V +/obj/item/weapon/autopsy_scanner/attackby(obj/item/weapon/P, mob/user) + if(istype(P, /obj/item/weapon/pen)) + var/dead_name = input("Insert name of deceased individual") + var/dead_rank = input("Insert rank of deceased individual") + var/dead_tod = input("Insert time of death") + var/dead_cause = input("Insert cause of death") + var/dead_notes = input("Insert any relevant notes") + var/obj/item/weapon/paper/R = new(user.loc) + R.name = "Official Coroner's Report - [dead_name]" + R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report
Name of Deceased: [dead_name]
Rank of Deceased: [dead_rank]
Time of Death: [dead_tod]
Cause of Death: [dead_cause]
Additional Coroner's Notes: [dead_notes]" + user.put_in_hands(R) + /obj/item/weapon/autopsy_scanner/attack_self(mob/user) if(!wdata.len && !chemtraces.len) return @@ -181,4 +193,4 @@ M.visible_message("[user] scans the wounds on [M]'s [S] with [src]") add_data(S) - return 1 \ No newline at end of file + return 1 From 6c8ede0275437eb94a4b1ac1ef9c9611fdf35d99 Mon Sep 17 00:00:00 2001 From: TullyBurnalot Date: Sat, 20 May 2017 15:11:50 +0100 Subject: [PATCH 02/65] Adds sound --- code/game/objects/items/devices/autopsy.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 268ee2fae79..6396e9e20e4 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -83,7 +83,9 @@ var/dead_notes = input("Insert any relevant notes") var/obj/item/weapon/paper/R = new(user.loc) R.name = "Official Coroner's Report - [dead_name]" - R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report
Name of Deceased: [dead_name]
Rank of Deceased: [dead_rank]
Time of Death: [dead_tod]
Cause of Death: [dead_cause]
Additional Coroner's Notes: [dead_notes]" + R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report

Name of Deceased: [dead_name]

Rank of Deceased: [dead_rank]

Time of Death: [dead_tod]

Cause of Death: [dead_cause]

Additional Coroner's Notes: [dead_notes]" + playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) + sleep(10) user.put_in_hands(R) /obj/item/weapon/autopsy_scanner/attack_self(mob/user) From df4e30ae617e210f17bc9f1ce0b5d1ec566f15cc Mon Sep 17 00:00:00 2001 From: TullyBurnalot Date: Sat, 20 May 2017 15:48:18 +0100 Subject: [PATCH 03/65] Adds Chemical Traces, Signature Area --- code/game/objects/items/devices/autopsy.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 6396e9e20e4..6b7a842d274 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -80,10 +80,11 @@ var/dead_rank = input("Insert rank of deceased individual") var/dead_tod = input("Insert time of death") var/dead_cause = input("Insert cause of death") + var/dead_chems = input("Insert any chemical traces") var/dead_notes = input("Insert any relevant notes") var/obj/item/weapon/paper/R = new(user.loc) R.name = "Official Coroner's Report - [dead_name]" - R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report

Name of Deceased: [dead_name]

Rank of Deceased: [dead_rank]

Time of Death: [dead_tod]

Cause of Death: [dead_cause]

Additional Coroner's Notes: [dead_notes]" + R.info = "NanoTrasen Science Station Cyberiad - Coroner's Report

Name of Deceased: [dead_name]

Rank of Deceased: [dead_rank]

Time of Death: [dead_tod]

Cause of Death: [dead_cause]

Trace Chemicals: [dead_chems]

Additional Coroner's Notes: [dead_notes]

Coroner's Signature: " playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) sleep(10) user.put_in_hands(R) From 47c4cf35384b166afa7faeca690c653db8b2f5e6 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 24 May 2017 10:27:11 +0100 Subject: [PATCH 04/65] Adds a jobs board to the newscaster --- code/game/machinery/newscaster.dm | 30 ++++++++++++++++++++++++++++++ nano/styles/_formatting.less | 5 +++++ nano/templates/newscaster.tmpl | 18 ++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 6040f72ab6b..fbbe6f68cc8 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -68,6 +68,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co #define NEWSCASTER_D_NOTICE_FC 9 // D-Notice feed channel #define NEWSCASTER_W_ISSUE_H 10 // Wanted Issue handler #define NEWSCASTER_W_ISSUE 11 // STATIONWIDE WANTED ISSUE +#define NEWSCASTER_JOBS 12 // Available jobs /obj/machinery/newscaster name = "newscaster" @@ -94,6 +95,21 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co var/silence = 0 var/temp = null var/temp_back_screen = NEWSCASTER_MAIN + var/list/jobblacklist = list( + /datum/job/ai, + /datum/job/cyborg, + /datum/job/captain, + /datum/job/judge, + /datum/job/blueshield, + /datum/job/nanotrasenrep, + /datum/job/pilot, + /datum/job/brigdoc, + /datum/job/mechanic, + /datum/job/barber, + /datum/job/chaplain, + /datum/job/ntnavyofficer, + /datum/job/ntspecops, + /datum/job/civilian) var/static/REDACTED = "\[REDACTED\]" light_range = 0 @@ -252,6 +268,14 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co data["criminal"] = news_network.wanted_issue.author data["description"] = news_network.wanted_issue.body data["photo"] = news_network.wanted_issue.img ? icon2base64(news_network.wanted_issue.img) : 0 + if(12) + var/list/jobs = list() + data["jobs"] = jobs + for(var/datum/job/job in job_master.occupations) + if(job_blacklisted(job)) + continue + if(job.is_position_available()) + jobs[++jobs.len] = list("title" = job.title) return data /obj/machinery/newscaster/Topic(href, href_list) @@ -535,6 +559,9 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co if(can_scan(usr)) scan_user(usr) //Newscaster scans you + else if(href_list["jobs"]) + screen = NEWSCASTER_JOBS + nanomanager.update_uis(src) return 1 @@ -748,6 +775,9 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co ////////////////////////////////////helper procs +/obj/machinery/newscaster/proc/job_blacklisted(datum/job/job) + return (job.type in jobblacklist) + /obj/machinery/newscaster/proc/scan_user(mob/user) if(ishuman(user)) //User is a human var/mob/living/carbon/human/human_user = user diff --git a/nano/styles/_formatting.less b/nano/styles/_formatting.less index e8f65be969c..19ff288dd3f 100644 --- a/nano/styles/_formatting.less +++ b/nano/styles/_formatting.less @@ -156,6 +156,11 @@ float: left; } +.jobValues { + float: left; + width: 30%; +} + // CHROMELESS STUFF .fancy { diff --git a/nano/templates/newscaster.tmpl b/nano/templates/newscaster.tmpl index af4edb702ad..c589bde4702 100644 --- a/nano/templates/newscaster.tmpl +++ b/nano/templates/newscaster.tmpl @@ -31,6 +31,7 @@ Property of Nanotrasen
{{if data.wanted_issue}}
{{:helper.link('Read Wanted issue', 'exclamation-triangle', {'view_wanted' : 1})}}
{{/if}} +
{{:helper.link('View available NT jobs', 'share', {'jobs' : 1})}}
{{:helper.link('Create feed channel', 'plus', {'create_channel' : 1})}}
{{:helper.link('View feed channels', 'arrow-right', {'view' : 1})}}
{{:helper.link('Submit new feed story', 'share', {'create_feed_story' : 1})}}
@@ -297,5 +298,22 @@ Property of Nanotrasen
{{:helper.link('Back', 'arrow-left', {'setScreen' : 0})}}
+ {{else data.screen == 12}} +

CAREERS AT NANOTRASEN

+ Work for a better future.
+
+ {{for data.jobs}} +
+ {{:value.title}}
+
+ {{empty}} + No available jobs... + {{/for}} + +
+
+
{{:helper.link('Refresh', 'refresh', {'refresh' : 0})}}
+
{{:helper.link('Back', 'arrow-left', {'setScreen' : 1})}}
+
{{/if}} {{/if}} \ No newline at end of file From bf42389916d1cff7f4867e410a37c676c8283fa4 Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sat, 3 Jun 2017 14:20:38 +1200 Subject: [PATCH 05/65] Fixes slime people lmbs --- code/modules/mob/living/carbon/human/emote.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 1b15dccdc2c..6967d4e1598 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -789,6 +789,14 @@ emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob" else if(species.name == "Slime People") emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" + else if(species.name == "Drask") + emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob" + else if(species.name == "Kidan") + emotelist += "\nKidan specific emotes :- click(s), clack(s)" + else if(species.name == "Unathi") + emotelist += "\nUnathi specific emotes :- hiss(es)" + if(!species.name == "Slime People" && found_slime_bodypart) + emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" to_chat(src, emotelist) else From d1b8c2da1f6f22e3b3d5e699f10422ef0b620687 Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sat, 3 Jun 2017 14:28:28 +1200 Subject: [PATCH 06/65] found_slime_bodypart is a diffrent function --- code/modules/mob/living/carbon/human/emote.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 6967d4e1598..0365009e2bf 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -795,8 +795,11 @@ emotelist += "\nKidan specific emotes :- click(s), clack(s)" else if(species.name == "Unathi") emotelist += "\nUnathi specific emotes :- hiss(es)" - if(!species.name == "Slime People" && found_slime_bodypart) - emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" + if (!(species.name == "Slime People")) + for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! + if(L.dna.species in list("Slime People")) + emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" + break to_chat(src, emotelist) else From c1cc319f62515de040395d9234b78c58cce8f781 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 3 Jun 2017 18:29:50 +0100 Subject: [PATCH 07/65] Uses more intent defines --- code/game/gamemodes/miniantags/morph/morph.dm | 3 +-- code/game/machinery/dye_generator.dm | 2 +- code/game/objects/items/weapons/scissors.dm | 4 ++-- code/modules/customitems/item_defines.dm | 2 +- code/modules/food_and_drinks/drinks/drinks/cans.dm | 2 +- code/modules/martial_arts/martial.dm | 2 +- code/modules/mob/living/carbon/carbon_defenses.dm | 4 ++-- .../mob/living/carbon/human/human_attackhand.dm | 2 +- .../mob/living/carbon/human/interactive/functions.dm | 4 ++-- .../mob/living/carbon/human/interactive/interactive.dm | 6 +++--- code/modules/mob/living/simple_animal/bot/bot.dm | 4 ++-- code/modules/mob/living/simple_animal/bot/ed209bot.dm | 4 ++-- code/modules/mob/living/simple_animal/bot/mulebot.dm | 2 +- code/modules/mob/living/simple_animal/bot/secbot.dm | 4 ++-- code/modules/mob/living/simple_animal/hostile/alien.dm | 2 +- .../mob/living/simple_animal/hostile/illusion.dm | 2 +- .../simple_animal/hostile/megafauna/megafauna.dm | 4 ++-- code/modules/mob/living/simple_animal/spawner.dm | 4 ++-- code/modules/ninja/martial_art.dm | 10 +++++----- code/modules/projectiles/gun.dm | 4 ++-- code/modules/projectiles/guns/projectile/revolver.dm | 2 +- code/modules/recycling/conveyor2.dm | 2 +- 22 files changed, 37 insertions(+), 38 deletions(-) diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index be21008d5f2..809fa5ff34d 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -11,7 +11,7 @@ icon_living = "morph" icon_dead = "morph_dead" speed = 2 - a_intent = "harm" + a_intent = I_HARM stop_automated_movement = 1 status_flags = CANPUSH pass_flags = PASSTABLE @@ -168,4 +168,3 @@ eat(I) return target.attack_animal(src) - diff --git a/code/game/machinery/dye_generator.dm b/code/game/machinery/dye_generator.dm index a4d70d78023..02d203797be 100644 --- a/code/game/machinery/dye_generator.dm +++ b/code/game/machinery/dye_generator.dm @@ -88,7 +88,7 @@ overlays += I /obj/item/hair_dye_bottle/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != "help") + if(user.a_intent != I_HELP) ..() return if(!(M in view(1))) diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm index 5571640f08f..8654765d6f3 100644 --- a/code/game/objects/items/weapons/scissors.dm +++ b/code/game/objects/items/weapons/scissors.dm @@ -20,7 +20,7 @@ toolspeed = 0.75 /obj/item/weapon/scissors/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != "help") + if(user.a_intent != I_HELP) ..() return if(!(M in view(1))) //Adjacency test @@ -101,7 +101,7 @@ var/is_cutting = 0 //to prevent spam clicking this for huge accumulation of losebreath. /obj/item/weapon/scissors/safety/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != "help") + if(user.a_intent != I_HELP) ..() return if(!(M in view(1))) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index faf381ffd8d..bd96b480be8 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -30,7 +30,7 @@ usesound = 'sound/items/Welder2.ogg' /obj/item/device/fluff/tattoo_gun/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent == "harm") + if(user.a_intent == I_HARM) user.visible_message("[user] stabs [M] with the [src]!", "You stab [M] with the [src]!") to_chat(M, "[user] stabs you with the [src]!
You feel a tiny prick!") return diff --git a/code/modules/food_and_drinks/drinks/drinks/cans.dm b/code/modules/food_and_drinks/drinks/drinks/cans.dm index 89deed5dedd..796b6af37f9 100644 --- a/code/modules/food_and_drinks/drinks/drinks/cans.dm +++ b/code/modules/food_and_drinks/drinks/drinks/cans.dm @@ -32,7 +32,7 @@ if(canopened == 0) to_chat(user, "You need to open the drink!") return - else if(M == user && !reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head") + else if(M == user && !reagents.total_volume && user.a_intent == I_HARM && user.zone_sel.selecting == "head") user.visible_message("[user] crushes ["\the [src]"] on \his forehead!", "You crush \the [src] on your forehead.") crush(user) return diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 3f1705f4651..56fb71b20aa 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -207,7 +207,7 @@ to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") return switch(user.a_intent) - if("disarm") + if(I_DISARM) if(!wielded) return ..() if(!ishuman(target)) diff --git a/code/modules/mob/living/carbon/carbon_defenses.dm b/code/modules/mob/living/carbon/carbon_defenses.dm index 1c911a3f661..64268a35f83 100644 --- a/code/modules/mob/living/carbon/carbon_defenses.dm +++ b/code/modules/mob/living/carbon/carbon_defenses.dm @@ -20,7 +20,7 @@ /mob/living/carbon/attackby(obj/item/I, mob/user, params) if(lying) if(surgeries.len) - if(user != src && user.a_intent == "help") + if(user != src && user.a_intent == I_HELP) for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 @@ -37,4 +37,4 @@ for(var/datum/disease/D in user.viruses) if(D.IsSpreadByTouch()) ContractDisease(D) - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index b0d2fb3e315..2e0fa4803d6 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -18,7 +18,7 @@ ..() - if((M != src) && M.a_intent != "help" && check_shields(0, M.name, attack_type = UNARMED_ATTACK)) + if((M != src) && M.a_intent != I_HELP && check_shields(0, M.name, attack_type = UNARMED_ATTACK)) add_logs(M, src, "attempted to touch") visible_message("[M] attempted to touch [src]!") return 0 diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm index ad4d8226c4a..d4127409ce1 100644 --- a/code/modules/mob/living/carbon/human/interactive/functions.dm +++ b/code/modules/mob/living/carbon/human/interactive/functions.dm @@ -638,7 +638,7 @@ if(canmove) if((graytide || (TRAITS & TRAIT_MEAN)) || retal) interest += targetInterestShift - a_intent = "harm" + a_intent = I_HARM zone_sel.selecting = pick("chest","r_leg","l_leg","r_arm","l_arm","head") doing |= SNPC_FIGHTING if(retal) @@ -746,7 +746,7 @@ tryWalk(TARGET) else if(Adjacent(TARGET)) - a_intent = pick("disarm", "harm") + a_intent = pick(I_DISARM, I_HARM) M.attack_hand(src) timeout++ else if(timeout >= 10 || !(targetRange(M) > 14)) diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm index 9f27956b764..59350e03961 100644 --- a/code/modules/mob/living/carbon/human/interactive/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm @@ -431,7 +431,7 @@ var/mob/living/M = target if(istype(M)) if(health > 0) - if(M.a_intent == "help" && !incapacitated()) + if(M.a_intent == I_HELP && !incapacitated()) chatter() if(istype(target, /mob/living/carbon) && !retal && prob(SNPC_FUZZY_CHANCE_LOW)) var/mob/living/carbon/C = target @@ -439,7 +439,7 @@ tryWalk(target) else C.help_shake_act(src) - if(M.a_intent == "harm") + if(M.a_intent == I_HARM) retal = 1 retal_target = target @@ -658,7 +658,7 @@ if(grabbed_by.len > 0) for(var/obj/item/weapon/grab/G in grabbed_by) if(Adjacent(G)) - a_intent = "disarm" + a_intent = I_DISARM G.assailant.attack_hand(src) inactivity_period = 10 diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 063fc07badf..02a6c3aa88f 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -256,7 +256,7 @@ new /obj/effect/decal/cleanable/blood/oil(loc) /mob/living/simple_animal/bot/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == "help") + if(H.a_intent == I_HELP) interact(H) else return ..() @@ -329,7 +329,7 @@ ejectpai(user) else user.changeNext_move(CLICK_CD_MELEE) - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) if(health >= maxHealth) to_chat(user, "[src] does not need a repair!") return diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 8a160d25c4f..12b69a249b7 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -161,13 +161,13 @@ Auto Patrol[]"}, mode = BOT_HUNT /mob/living/simple_animal/bot/ed209/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == "harm") + if(H.a_intent == I_HARM) retaliate(H) return ..() /mob/living/simple_animal/bot/ed209/attackby(obj/item/weapon/W, mob/user, params) ..() - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry. return if(!istype(W, /obj/item/weapon/screwdriver) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. if(W.force && W.damtype != STAMINA)//If force is non-zero and damage type isn't stamina. diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index e95d2409921..e2f643d46e1 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -18,7 +18,7 @@ health = 50 maxHealth = 50 damage_coeff = list(BRUTE = 0.5, BURN = 0.7, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - a_intent = "harm" //No swapping + a_intent = I_HARM //No swapping buckle_lying = 0 mob_size = MOB_SIZE_LARGE radio_channel = "Supply" diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index a77429eb631..f1614e54816 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -173,13 +173,13 @@ Auto Patrol: []"}, mode = BOT_HUNT /mob/living/simple_animal/bot/secbot/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == "harm") + if(H.a_intent == I_HARM) retaliate(H) return ..() /mob/living/simple_animal/bot/secbot/attackby(obj/item/weapon/W, mob/user, params) ..() - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry. return if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. retaliate(user) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 85e0cba9073..1f1ab0d0431 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -141,7 +141,7 @@ name = "lusty xenomorph maid" melee_damage_lower = 0 melee_damage_upper = 0 - a_intent = "help" + a_intent = I_HELP friendly = "caresses" environment_smash = 0 icon_state = "maid" diff --git a/code/modules/mob/living/simple_animal/hostile/illusion.dm b/code/modules/mob/living/simple_animal/hostile/illusion.dm index b6cda2e0e3c..f08f5479a2a 100644 --- a/code/modules/mob/living/simple_animal/hostile/illusion.dm +++ b/code/modules/mob/living/simple_animal/hostile/illusion.dm @@ -7,7 +7,7 @@ icon_dead = "null" melee_damage_lower = 5 melee_damage_upper = 5 - a_intent = "harm" + a_intent = I_HARM attacktext = "gores" maxHealth = 100 health = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index a8102b94b94..7d5e157e068 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -5,7 +5,7 @@ desc = "Attack the weak point for massive damage." health = 1000 maxHealth = 1000 - a_intent = "harm" + a_intent = I_HARM sentience_type = SENTIENCE_BOSS environment_smash = 3 luminosity = 3 @@ -228,4 +228,4 @@ /proc/ClearScore(client/player) world.SetScores(player.ckey, "", global.medal_hub, global.medal_pass) -#undef MEDAL_PREFIX \ No newline at end of file +#undef MEDAL_PREFIX diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm index 46a05daba98..ac3f0ef44ca 100644 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ b/code/modules/mob/living/simple_animal/spawner.dm @@ -12,7 +12,7 @@ status_flags = 0 anchored = 1 AIStatus = AI_OFF - a_intent = "harm" + a_intent = I_HARM stop_automated_movement = 1 wander = 0 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) @@ -81,4 +81,4 @@ /mob/living/simple_animal/hostile/spawner/mining/basilisk name = "basilisk den" desc = "A den housing a nest of basilisks, bring a coat." - mob_type = /mob/living/simple_animal/hostile/asteroid/basilisk \ No newline at end of file + mob_type = /mob/living/simple_animal/hostile/asteroid/basilisk diff --git a/code/modules/ninja/martial_art.dm b/code/modules/ninja/martial_art.dm index 35969ab8d5e..705098c9298 100644 --- a/code/modules/ninja/martial_art.dm +++ b/code/modules/ninja/martial_art.dm @@ -162,7 +162,7 @@ if(!istype(A, /mob/living/carbon/human)) // Special moves only work on humans. user.pointed(A) return 0 - if(user.a_intent == "help") // No special move for help intent. + if(user.a_intent == I_HELP) // No special move for help intent. user.pointed(A) return 0 if(!(A in range(1,user))) // Is the target within one tile of us? @@ -173,10 +173,10 @@ var/mob/living/carbon/human/target = A switch(user.a_intent) - if("disarm") + if(I_DISARM) user_martial_art.wrist_wrench(user, target) - if("grab") + if(I_GRAB) user_martial_art.choke_hold(user, target) - if("harm") + if(I_HARM) user_martial_art.palm_strike(user, target) - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 0304f4a48a9..1417907bb6c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -117,7 +117,7 @@ if(flag) //It's adjacent, is the user, or is on the user's person if(target in user.contents) //can't shoot stuff inside us. return - if(!ismob(target) || user.a_intent == "harm") //melee attack + if(!ismob(target) || user.a_intent == I_HARM) //melee attack return if(target == user && user.zone_sel.selecting != "mouth") //so we can't shoot ourselves (unless mouth selected) return @@ -232,7 +232,7 @@ obj/item/weapon/gun/proc/newshot() feedback_add_details("gun_fired","[type]") /obj/item/weapon/gun/attack(mob/M as mob, mob/user) - if(user.a_intent == "harm") //Flogging + if(user.a_intent == I_HARM) //Flogging ..() else return diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index ef7a17fa28a..2c02695d84d 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -218,7 +218,7 @@ /obj/item/weapon/gun/projectile/revolver/russian/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) if(flag) if(!(target in user.contents) && ismob(target)) - if(user.a_intent == "harm") // Flogging action + if(user.a_intent == I_HARM) // Flogging action return if(isliving(user)) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 8896d939e2f..9e5b93f8927 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -140,7 +140,7 @@ update_move_direction() to_chat(user, "You rotate [src].") - else if(user.a_intent != "harm") + else if(user.a_intent != I_HARM) if(user.drop_item()) I.forceMove(loc) else From 59c13d47b534e7cee4a28eec6a6f952c05d3400f Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sun, 4 Jun 2017 17:28:40 +1200 Subject: [PATCH 08/65] Changed from an IF chain to case --- code/modules/mob/living/carbon/human/emote.dm | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 0365009e2bf..740f7aaa327 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -785,23 +785,26 @@ + " handshake-mob, hug(s)-(none)/mob, johnny, jump, laugh(s), look(s)-(none)/mob, moan(s), mumble(s), nod(s), pale(s), point(s)-atom, quiver(s), raise(s), salute(s)-(none)/mob, scream(s), shake(s)," \ + " shiver(s), shrug(s), sigh(s), signal(s)-#1-10,slap(s)-(none)/mob, smile(s),snap(s), sneeze(s), sniff(s), snore(s), stare(s)-(none)/mob, swag(s), tremble(s), twitch(es), twitch(es)_s," \ + " wag(s), wave(s), whimper(s), wink(s), yawn(s)" - if(species.name == "Machine") - emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob" - else if(species.name == "Slime People") - emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" - else if(species.name == "Drask") - emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob" - else if(species.name == "Kidan") - emotelist += "\nKidan specific emotes :- click(s), clack(s)" - else if(species.name == "Unathi") - emotelist += "\nUnathi specific emotes :- hiss(es)" - if (!(species.name == "Slime People")) - for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! - if(L.dna.species in list("Slime People")) - emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" - break - to_chat(src, emotelist) + switch(species.name) + if("Machine") + emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob" + if("Drask") + emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob" + if("Kidan") + emotelist += "\nKidan specific emotes :- click(s), clack(s)" + if("Unathi") + emotelist += "\nUnathi specific emotes :- hiss(es)" + + if (species.name == "Slime People") + emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" + else + for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! + if(L.dna.species in list("Slime People")) + emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" + break + + to_chat(src, emotelist) else to_chat(src, "Unusable emote '[act]'. Say *help for a list.") From dfdcca8c4607b9ec05eb5d63c9389696b94b7cf5 Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sun, 4 Jun 2017 18:15:53 +1200 Subject: [PATCH 09/65] Fixed formatting so it compiles --- code/modules/mob/living/carbon/human/emote.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 740f7aaa327..2b4dbb68db0 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -800,9 +800,9 @@ emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob" else for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! - if(L.dna.species in list("Slime People")) - emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" - break + if(L.dna.species in list("Slime People")) + emotelist += "\nSlime people body part specific emotes :- squish(es)-(none)/mob" + break to_chat(src, emotelist) else From abd27b5ef250a4c5c7d8e49a370d734b67008b2e Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sun, 4 Jun 2017 20:24:58 +1200 Subject: [PATCH 10/65] Machene People Completion Adds Buzz2 to machene people *help because it wasen't there before for some reason. --- code/modules/mob/living/carbon/human/emote.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 2b4dbb68db0..d1f73360874 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -788,7 +788,7 @@ switch(species.name) if("Machine") - emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob" + emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob, buzz2-(none)/mob" if("Drask") emotelist += "\nDrask specific emotes :- drone(s)-(none)/mob, hum(s)-(none)/mob, rumble(s)-(none)/mob" if("Kidan") From 998474fe36691646f53c50510bb666553e3f4d27 Mon Sep 17 00:00:00 2001 From: Vivalas Date: Sun, 4 Jun 2017 21:51:26 -0500 Subject: [PATCH 11/65] Adds security QOL stuff --- code/__HELPERS/mobs.dm | 4 ++ code/game/machinery/computer/security.dm | 4 -- code/game/machinery/doors/brigdoors.dm | 59 ++++++++++++++++-------- 3 files changed, 44 insertions(+), 23 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 0abf2ac1af3..f20be8c1c0b 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -464,3 +464,7 @@ proc/add_logs(mob/user, mob/target, what_done, var/object=null, var/addition=nul set hidden = 1 set name = ".mouse" LogMouseMacro(".mouse", params) + +/proc/update_all_mob_security_hud() + for(var/mob/living/carbon/human/H in mob_list) + H.sec_hud_set_security_status() \ No newline at end of file diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 16efcb7de76..fca20841cfa 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -485,10 +485,6 @@ /obj/machinery/computer/secure_data/proc/setTemp(text, list/buttons = list()) temp = list("text" = text, "buttons" = buttons, "has_buttons" = buttons.len > 0) -/obj/machinery/computer/secure_data/proc/update_all_mob_security_hud() - for(var/mob/living/carbon/human/H in mob_list) - H.sec_hud_set_security_status() - /obj/machinery/computer/secure_data/proc/create_record_photo(datum/data/record/R) // basically copy-pasted from the camera code but different enough that it has to be redone var/icon/photoimage = get_record_photo(R) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index a24af37dc72..4ecf6ba3318 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -29,32 +29,48 @@ var/timetoset = 0 // Used to set releasetime upon starting the timer var/obj/item/device/radio/Radio var/printed = 0 + var/datum/data/record/prisoner maptext_height = 26 maptext_width = 32 /obj/machinery/door_timer/proc/print_report() - var/logname = input(usr, "Name of the guilty?","[id] log name") - var/logcharges = stripped_multiline_input(usr, "What have they been charged with?","[id] log charges") + var/logname = input(usr, "Name of the guilty?","[id] log name") + var/logcharges = stripped_multiline_input(usr, "What have they been charged with?","[id] log charges") - if(!logname || !logcharges) - return 0 + if(!logname || !logcharges) + return 0 - for(var/obj/machinery/computer/prisoner/C in prisoncomputer_list) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(C.loc) - P.name = "[id] log - [logname] [worldtime2text()]" - P.info = "
[id] - Brig record



" - P.info += {"
[station_name()] - Security Department

-
Admission data:

- Log generated at: [worldtime2text()]
- Detainee: [logname]
- Duration: [timetoset/10] seconds
- Charge(s): [logcharges]
- Arresting Officer: [usr.name]


- This log file was generated automatically upon activation of a cell timer."} + for(var/obj/machinery/computer/prisoner/C in prisoncomputer_list) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(C.loc) + P.name = "[id] log - [logname] [worldtime2text()]" + P.info = "
[id] - Brig record



" + P.info += {"
[station_name()] - Security Department

+
Admission data:

+ Log generated at: [worldtime2text()]
+ Detainee: [logname]
+ Duration: [timetoset/10] seconds
+ Charge(s): [logcharges]
+ Arresting Officer: [usr.name]


+ This log file was generated automatically upon activation of a cell timer."} - playsound(C.loc, "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1) - cell_logs += P - return 1 + playsound(C.loc, "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1) + cell_logs += P + + var/datum/data/record/R = find_security_record("name", logname) + Radio.autosay("Detainee [logname] has been incarcerated for [timetoset/10] seconds for the charges of, '[logcharges]'. Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]", name, "Security", list(z)) + + if(R) + prisoner = R + R.fields["criminal"] = "Incarcerated" + var/mob/living/carbon/human/M = usr + var/rank = "UNKNOWN RANK" + if(istype(M) && M.wear_id) + var/obj/item/weapon/card/id/I = M.wear_id + rank = I.assignment + R.fields["comments"] += "Autogenerated by [name] on [current_date_string] [worldtime2text()]
Sentenced to [timetoset/10] seconds for the charges of \"[logcharges]\" by [rank] [usr.name]." + update_all_mob_security_hud() + + return 1 /obj/machinery/door_timer/initialize() ..() @@ -166,6 +182,10 @@ // Reset releasetime releasetime = 0 printed = 0 + if(prisoner) + prisoner.fields["criminal"] = "Released" + update_all_mob_security_hud() + prisoner = null for(var/obj/machinery/door/window/brigdoor/door in targets) if(!door.density) @@ -294,6 +314,7 @@ timer_start() else timer_end() + Radio.autosay("Timer stopped manually by [usr.name].", name, "Security", list(z)) else if(href_list["tp"]) //adjust timer, close door if not already closed From 837154727b1a06b3e81c351cbd3a2b1e4e646fa3 Mon Sep 17 00:00:00 2001 From: Vivalas Date: Sun, 4 Jun 2017 23:12:02 -0500 Subject: [PATCH 12/65] Fixes and formatting --- code/game/machinery/doors/brigdoors.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 4ecf6ba3318..5045acdafe8 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -57,7 +57,8 @@ cell_logs += P var/datum/data/record/R = find_security_record("name", logname) - Radio.autosay("Detainee [logname] has been incarcerated for [timetoset/10] seconds for the charges of, '[logcharges]'. Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]", name, "Security", list(z)) + Radio.autosay("Detainee [logname] has been incarcerated for [timetoset/10] seconds for the charges of, '[logcharges]'. \ + Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]", name, "Security", list(z)) if(R) prisoner = R @@ -67,6 +68,8 @@ if(istype(M) && M.wear_id) var/obj/item/weapon/card/id/I = M.wear_id rank = I.assignment + if(!R.fields["comments"] || !islist(R.fields["comments"])) //copied from security computer code because apparently these need to be initialized + R.fields["comments"] = list() R.fields["comments"] += "Autogenerated by [name] on [current_date_string] [worldtime2text()]
Sentenced to [timetoset/10] seconds for the charges of \"[logcharges]\" by [rank] [usr.name]." update_all_mob_security_hud() From 4d57fff5c930839994543b5cd5051702ecb40dd2 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 10 Jun 2017 09:43:36 +0100 Subject: [PATCH 13/65] Updates Intents --- code/__DEFINES/mob.dm | 8 +++--- code/_onclick/click.dm | 2 +- code/_onclick/hud/screen_objects.dm | 8 +++--- code/_onclick/other_mobs.dm | 2 +- code/game/dna/genes/goon_powers.dm | 8 +++--- code/game/gamemodes/miniantags/borer/borer.dm | 2 +- .../gamemodes/miniantags/guardian/guardian.dm | 14 +++++----- code/game/gamemodes/miniantags/morph/morph.dm | 2 +- .../miniantags/slaughter/slaughter.dm | 2 +- code/game/machinery/computer/computer.dm | 2 +- code/game/machinery/doors/firedoor.dm | 2 +- code/game/machinery/dye_generator.dm | 2 +- code/game/machinery/programmable_unloader.dm | 2 +- code/game/mecha/equipment/tools/work_tools.dm | 6 ++-- code/game/mecha/mecha.dm | 4 +-- code/game/objects/items/policetape.dm | 4 +-- .../game/objects/items/weapons/clown_items.dm | 2 +- code/game/objects/items/weapons/defib.dm | 4 +-- code/game/objects/items/weapons/kitchen.dm | 2 +- code/game/objects/items/weapons/scissors.dm | 4 +-- code/game/objects/items/weapons/stunbaton.dm | 2 +- .../objects/items/weapons/swords_axes_etc.dm | 2 +- code/game/objects/items/weapons/tools.dm | 4 +-- code/game/objects/structures/displaycase.dm | 6 ++-- code/game/objects/structures/mineral_doors.dm | 2 +- code/game/objects/structures/window.dm | 2 +- code/modules/clothing/gloves/miscellaneous.dm | 2 +- .../clothing/under/accessories/holster.dm | 2 +- code/modules/customitems/item_defines.dm | 2 +- code/modules/fish/fishtank.dm | 10 +++---- .../food_and_drinks/drinks/drinks/bottle.dm | 2 +- .../food_and_drinks/drinks/drinks/cans.dm | 2 +- code/modules/hydroponics/biogenerator.dm | 2 +- code/modules/hydroponics/seed_extractor.dm | 2 +- code/modules/martial_arts/martial.dm | 2 +- code/modules/mining/minebot.dm | 4 +-- .../mob/living/carbon/alien/alien_defenses.dm | 10 +++---- .../living/carbon/alien/humanoid/humanoid.dm | 8 +++--- .../mob/living/carbon/alien/larva/larva.dm | 4 +-- .../mob/living/carbon/carbon_defenses.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- .../living/carbon/human/human_attackalien.dm | 8 +++--- .../living/carbon/human/human_attackhand.dm | 10 +++---- .../mob/living/carbon/human/human_defense.dm | 4 +-- .../carbon/human/interactive/functions.dm | 4 +-- .../carbon/human/interactive/interactive.dm | 6 ++-- .../mob/living/carbon/human/species/apollo.dm | 2 +- code/modules/mob/living/carbon/slime/slime.dm | 18 ++++++------ code/modules/mob/living/living.dm | 6 ++-- code/modules/mob/living/living_defense.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 2 +- code/modules/mob/living/silicon/pai/pai.dm | 4 +-- .../silicon/robot/drone/drone_abilities.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 14 +++++----- .../mob/living/simple_animal/bot/bot.dm | 4 +-- .../mob/living/simple_animal/bot/ed209bot.dm | 4 +-- .../mob/living/simple_animal/bot/mulebot.dm | 2 +- .../mob/living/simple_animal/bot/secbot.dm | 4 +-- .../mob/living/simple_animal/constructs.dm | 2 +- .../living/simple_animal/friendly/corgi.dm | 4 +-- .../living/simple_animal/friendly/diona.dm | 2 +- .../simple_animal/friendly/farm_animals.dm | 2 +- .../living/simple_animal/friendly/mouse.dm | 2 +- .../mob/living/simple_animal/hostile/alien.dm | 4 +-- .../living/simple_animal/hostile/illusion.dm | 2 +- .../hostile/megafauna/megafauna.dm | 2 +- .../simple_animal/hostile/mining/goldgrub.dm | 2 +- .../simple_animal/hostile/mining_mobs.dm | 4 +-- .../living/simple_animal/hostile/mushroom.dm | 2 +- .../simple_animal/hostile/retaliate/clown.dm | 2 +- .../simple_animal/hostile/retaliate/drone.dm | 2 +- .../living/simple_animal/hostile/russian.dm | 2 +- .../simple_animal/hostile/spaceworms.dm | 2 +- .../living/simple_animal/hostile/statue.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 2 +- .../simple_animal/hostile/venus_human_trap.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 14 +++++----- .../mob/living/simple_animal/spawner.dm | 2 +- code/modules/mob/mob_defines.dm | 2 +- code/modules/mob/mob_grab.dm | 8 +++--- code/modules/mob/mob_helpers.dm | 28 +++++++++---------- code/modules/mob/transform_procs.dm | 8 +++--- code/modules/ninja/martial_art.dm | 8 +++--- code/modules/power/cable.dm | 2 +- code/modules/power/lighting.dm | 4 +-- code/modules/projectiles/gun.dm | 4 +-- .../projectiles/guns/projectile/revolver.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../chemistry/machinery/reagentgrinder.dm | 2 +- .../reagents/chemistry/reagents/misc.dm | 4 +-- code/modules/recycling/conveyor2.dm | 2 +- code/modules/spacepods/spacepod.dm | 4 +-- code/modules/surgery/organs/vocal_cords.dm | 8 +++--- code/modules/surgery/surgery.dm | 2 +- 94 files changed, 200 insertions(+), 200 deletions(-) diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm index c2295b9c5dc..22a4121b75c 100644 --- a/code/__DEFINES/mob.dm +++ b/code/__DEFINES/mob.dm @@ -92,10 +92,10 @@ #define APPEARANCE_ALL 32767 // Intents -#define I_HELP "help" -#define I_DISARM "disarm" -#define I_GRAB "grab" -#define I_HARM "harm" +#define INTENT_HELP "help" +#define INTENT_DISARM "disarm" +#define INTENT_GRAB "grab" +#define INTENT_HARM "harm" // AI wire/radio settings #define AI_CHECK_WIRELESS 1 diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 58928da83e0..b4bb8292ca2 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -169,7 +169,7 @@ /mob/proc/RangedAttack(var/atom/A, var/params) if(!mutations.len) return - if((LASER in mutations) && a_intent == I_HARM) + if((LASER in mutations) && a_intent == INTENT_HARM) LaserEyes(A) // moved into a proc below return else diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index cf0247e847a..a75fb116b13 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -70,14 +70,14 @@ var/_y = text2num(params2list(params)["icon-y"]) if(_x<=16 && _y<=16) - usr.a_intent_change(I_HARM) + usr.a_intent_change(INTENT_HARM) else if(_x<=16 && _y>=17) - usr.a_intent_change(I_HELP) + usr.a_intent_change(INTENT_HELP) else if(_x>=17 && _y<=16) - usr.a_intent_change(I_GRAB) + usr.a_intent_change(INTENT_GRAB) else if(_x>=17 && _y>=17) - usr.a_intent_change(I_DISARM) + usr.a_intent_change(INTENT_DISARM) else usr.a_intent_change("right") diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index ea9de45f295..87b78259593 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -30,7 +30,7 @@ /mob/living/carbon/human/RangedAttack(var/atom/A) if(!gloves && !mutations.len) return var/obj/item/clothing/gloves/G = gloves - if((LASER in mutations) && a_intent == I_HARM) + if((LASER in mutations) && a_intent == INTENT_HARM) LaserEyes(A) // moved into a proc below else if(istype(G) && G.Touch(A,0)) // for magic gloves diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 16f8dad4bdb..52b62f6cabf 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -600,13 +600,13 @@ thoughts = "haunted by their own mortality" switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) to_chat(user, "Mood: You sense benevolent thoughts from [M.name].") - if(I_DISARM) + if(INTENT_DISARM) to_chat(user, "Mood: You sense cautious thoughts from [M.name].") - if(I_GRAB) + if(INTENT_GRAB) to_chat(user, "Mood: You sense hostile thoughts from [M.name].") - if(I_HARM) + if(INTENT_HARM) to_chat(user, "Mood: You sense cruel thoughts from [M.name].") for(var/mob/living/L in view(7,M)) if(L == M) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index ea92b93f473..a9975618435 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -68,7 +68,7 @@ icon_living = "brainslug" icon_dead = "brainslug_dead" speed = 5 - a_intent = I_HARM + a_intent = INTENT_HARM stop_automated_movement = 1 status_flags = CANPUSH attacktext = "nips" diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm index 39acdabacc5..4825dea6ebb 100644 --- a/code/game/gamemodes/miniantags/guardian/guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/guardian.dm @@ -11,7 +11,7 @@ icon_living = "magicOrange" icon_dead = "magicOrange" speed = 0 - a_intent = I_HARM + a_intent = INTENT_HARM stop_automated_movement = 1 floating = 1 attack_sound = 'sound/weapons/punch1.ogg' @@ -218,7 +218,7 @@ //Fire. Low damage, low resistance, sets mobs on fire when bumping /mob/living/simple_animal/hostile/guardian/fire - a_intent = I_HELP + a_intent = INTENT_HELP melee_damage_lower = 10 melee_damage_upper = 10 attack_sound = 'sound/items/Welder.ogg' @@ -340,7 +340,7 @@ //Healer /mob/living/simple_animal/hostile/guardian/healer - a_intent = I_HARM + a_intent = INTENT_HARM friendly = "heals" speed = 0 melee_damage_lower = 15 @@ -362,7 +362,7 @@ icon_state = "seal" attacktext = "slaps" speak_emote = list("barks") - a_intent = I_HARM + a_intent = INTENT_HARM friendly = "heals" speed = 0 melee_damage_lower = 0 @@ -398,7 +398,7 @@ /mob/living/simple_animal/hostile/guardian/healer/ToggleMode() if(src.loc == summoner) if(toggle) - a_intent = I_HARM + a_intent = INTENT_HARM speed = 0 damage_transfer = 0.7 if(src.adminseal) @@ -408,7 +408,7 @@ to_chat(src, "You switch to combat mode.") toggle = FALSE else - a_intent = I_HELP + a_intent = INTENT_HELP speed = 1 damage_transfer = 1 if(src.adminseal) @@ -490,7 +490,7 @@ armour_penetration = 100 /mob/living/simple_animal/hostile/guardian/ranged - a_intent = I_HELP + a_intent = INTENT_HELP friendly = "quietly assesses" melee_damage_lower = 10 melee_damage_upper = 10 diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 809fa5ff34d..28ca711946a 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -11,7 +11,7 @@ icon_living = "morph" icon_dead = "morph_dead" speed = 2 - a_intent = I_HARM + a_intent = INTENT_HARM stop_automated_movement = 1 status_flags = CANPUSH pass_flags = PASSTABLE diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm index 19411dee6de..8fbc0563181 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm @@ -14,7 +14,7 @@ icon_state = "daemon" icon_living = "daemon" speed = 1 - a_intent = I_HARM + a_intent = INTENT_HARM stop_automated_movement = 1 status_flags = CANPUSH attack_sound = 'sound/misc/demon_attack1.ogg' diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index e343135b246..17147954372 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -135,7 +135,7 @@ return /obj/machinery/computer/attack_alien(mob/living/user) - if(isalien(user) && user.a_intent == I_HELP) + if(isalien(user) && user.a_intent == INTENT_HELP) var/mob/living/carbon/alien/humanoid/xeno = user if(xeno.has_fine_manipulation) return attack_hand(user) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 7ecf1f17920..bda658ef128 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -112,7 +112,7 @@ add_fingerprint(user) user.changeNext_move(CLICK_CD_MELEE) - if(can_force && (!glass || user.a_intent != I_HELP)) + if(can_force && (!glass || user.a_intent != INTENT_HELP)) user.visible_message("[user] begins forcing \the [src].", \ "You begin forcing \the [src].") if(do_after(user, force_open_time, target = src)) diff --git a/code/game/machinery/dye_generator.dm b/code/game/machinery/dye_generator.dm index 02d203797be..1d392d187cf 100644 --- a/code/game/machinery/dye_generator.dm +++ b/code/game/machinery/dye_generator.dm @@ -88,7 +88,7 @@ overlays += I /obj/item/hair_dye_bottle/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != I_HELP) + if(user.a_intent != INTENT_HELP) ..() return if(!(M in view(1))) diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm index 6b6b1938de9..039e894b86d 100644 --- a/code/game/machinery/programmable_unloader.dm +++ b/code/game/machinery/programmable_unloader.dm @@ -501,7 +501,7 @@ to_chat(H, "The boxing machine refuses to acknowledge you unless you face it head on!") return var/damage = 0 - if(H.a_intent != I_HARM) + if(H.a_intent != INTENT_HARM) damage += rand(0,5) else damage += rand(0,10) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 81fba15d1e8..4421eba9aae 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -51,7 +51,7 @@ else if(istype(target,/mob/living)) var/mob/living/M = target if(M.stat == DEAD) return - if(chassis.occupant.a_intent == I_HARM) + if(chassis.occupant.a_intent == INTENT_HARM) M.take_overall_damage(dam_force) if(!M) return @@ -101,11 +101,11 @@ else if(istype(target,/mob/living)) var/mob/living/M = target if(M.stat == DEAD) return - if(chassis.occupant.a_intent == I_HARM) + if(chassis.occupant.a_intent == INTENT_HARM) target.visible_message("[chassis] destroys [target] in an unholy fury.", "[chassis] destroys [target] in an unholy fury.") M.gib() - /*if(chassis.occupant.a_intent == I_DISARM) + /*if(chassis.occupant.a_intent == INTENT_DISARM) target.visible_message("[chassis] rips [target]'s arms off.", "[chassis] rips [target]'s arms off.")*/ else diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 9eab3e88cee..0fe8bbe069a 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -748,7 +748,7 @@ to_chat(user, "There's not enough wire to finish the task.") return - else if(isscrewdriver(W) && user.a_intent != I_HARM) + else if(isscrewdriver(W) && user.a_intent != INTENT_HARM) if(hasInternalDamage(MECHA_INT_TEMP_CONTROL)) clearInternalDamage(MECHA_INT_TEMP_CONTROL) to_chat(user, "You repair the damaged temperature controller.") @@ -776,7 +776,7 @@ to_chat(user, "There's already a powercell installed.") return - else if(iswelder(W) && user.a_intent != I_HARM) + else if(iswelder(W) && user.a_intent != INTENT_HARM) var/obj/item/weapon/weldingtool/WT = W if(health[user] lifts [src], allowing passage.
", "You lift [src], allowing passage.") src.density = 0 spawn(200) @@ -174,7 +174,7 @@ var/list/tape_roll_applications = list() breaktape(/obj/item/weapon/wirecutters,user) /obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob) - if(user.a_intent == I_HELP && ((!can_puncture(W) && src.allowed(user)))) + if(user.a_intent == INTENT_HELP && ((!can_puncture(W) && src.allowed(user)))) to_chat(user, "You can't break the [src] with that!") return user.visible_message("[user] breaks the [src]!", "You break the [src]!") diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 7be57f646c4..ad8a30bed07 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -19,7 +19,7 @@ //So this is a workaround. This also makes more sense from an IC standpoint. ~Carn if(user.client && (target in user.client.screen)) to_chat(user, "You need to take that [target.name] off before cleaning it.") - else if(target == user && user.a_intent == I_GRAB && ishuman(target)) + else if(target == user && user.a_intent == INTENT_GRAB && ishuman(target)) var/mob/living/carbon/human/muncher = user if(muncher && muncher.get_species() == "Drask") to_chat(user, "You take a bite of the [src.name]. Delicious!") diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index ee7a6d4764b..8705b86ea3a 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -319,7 +319,7 @@ to_chat(user, "The instructions on [defib] don't mention how to revive that...") return else - if(user.a_intent == I_HARM && !defib.safety) + if(user.a_intent == INTENT_HARM && !defib.safety) busy = 1 H.visible_message("[user] has touched [H.name] with [src]!", \ "[user] has touched [H.name] with [src]!") @@ -465,7 +465,7 @@ to_chat(user, "This unit is only designed to work on humanoid lifeforms.") return else - if(user.a_intent == I_HARM && !safety) + if(user.a_intent == INTENT_HARM && !safety) busy = 1 H.visible_message("[user] has touched [H.name] with [src]!", \ "[user] has touched [H.name] with [src]!") diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index c3763f4924e..13bc85999e0 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -40,7 +40,7 @@ if(!istype(M)) return ..() - if(user.a_intent != I_HELP) + if(user.a_intent != INTENT_HELP) if(user.zone_sel.selecting == "head" || user.zone_sel.selecting == "eyes") if((CLUMSY in user.mutations) && prob(50)) M = user diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm index 8654765d6f3..e5bd30fe609 100644 --- a/code/game/objects/items/weapons/scissors.dm +++ b/code/game/objects/items/weapons/scissors.dm @@ -20,7 +20,7 @@ toolspeed = 0.75 /obj/item/weapon/scissors/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != I_HELP) + if(user.a_intent != INTENT_HELP) ..() return if(!(M in view(1))) //Adjacency test @@ -101,7 +101,7 @@ var/is_cutting = 0 //to prevent spam clicking this for huge accumulation of losebreath. /obj/item/weapon/scissors/safety/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent != I_HELP) + if(user.a_intent != INTENT_HELP) ..() return if(!(M in view(1))) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 9a01f150ea9..c4c29a9542f 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -118,7 +118,7 @@ var/mob/living/L = M - if(user.a_intent != I_HARM) + if(user.a_intent != INTENT_HARM) if(status) user.do_attack_animation(L) baton_stun(L, user) diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index e55b2451347..3ce0f32d47a 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -46,7 +46,7 @@ return if(!isliving(target)) return - if(user.a_intent == I_HARM) + if(user.a_intent == INTENT_HARM) if(!..()) return if(!isrobot(target)) return else diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 3460699fbe4..8aabce1eb54 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -155,7 +155,7 @@ src.pixel_y = rand(0, 16) /obj/item/weapon/screwdriver/attack(mob/living/carbon/M, mob/living/carbon/user) - if(!istype(M) || user.a_intent == I_HELP) + if(!istype(M) || user.a_intent == INTENT_HELP) return ..() if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head") return ..() @@ -404,7 +404,7 @@ if(!S) return - if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP || S.open == 2) + if(!(S.status & ORGAN_ROBOT) || user.a_intent != INTENT_HELP || S.open == 2) return ..() if(!isOn()) //why wasn't this being checked already? diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 72638ff0943..9d343d0cbed 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -259,7 +259,7 @@ var/global/list/captain_display_cases = list() if(W.flags & ABSTRACT) to_chat(user, "You can't put this into the case.") return - if(user.a_intent == I_HARM) + if(user.a_intent == INTENT_HARM) if(locked && !destroyed) src.health -= W.force src.healthcheck() @@ -283,14 +283,14 @@ var/global/list/captain_display_cases = list() update_icon() /obj/structure/displaycase/attack_hand(mob/user as mob) - if(destroyed || (!locked && user.a_intent == I_HARM)) + if(destroyed || (!locked && user.a_intent == INTENT_HARM)) if(occupant) dump() to_chat(user, "You smash your fist into the delicate electronics at the bottom of the case, and deactivate the hover field.") src.add_fingerprint(user) update_icon() else - if(user.a_intent == I_HARM) + if(user.a_intent == INTENT_HARM) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) user.visible_message("[user.name] kicks \the [src]!", \ diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 43d08cccee9..b53ca70f9da 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -136,7 +136,7 @@ if(do_after(user, digTool.digspeed * hardness, target = src) && src) to_chat(user, "You finished digging.") deconstruct(TRUE) - else if(user.a_intent != I_HARM) + else if(user.a_intent != INTENT_HARM) attack_hand(user) else attacked_by(W, user) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 9da30e5fe82..126dd6e3a38 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -133,7 +133,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) user.visible_message("[user] smashes through [src]!") destroy() - else if(user.a_intent == I_HARM) + else if(user.a_intent == INTENT_HARM) user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) user.visible_message("[user.name] bangs against the [src.name]!", \ diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index ee5022a1793..da2eb1ba8fb 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -82,7 +82,7 @@ return FALSE if(cell) var/mob/living/carbon/human/H = loc - if(H.a_intent == I_HARM) + if(H.a_intent == INTENT_HARM) var/mob/living/carbon/C = A if(cell.use(stun_cost)) var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index 4c53d9c3c8d..69098f54138 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -60,7 +60,7 @@ if(istype(user.get_active_hand(),/obj) && istype(user.get_inactive_hand(),/obj)) to_chat(user, "You need an empty hand to draw the [holstered]!") else - if(user.a_intent == I_HARM) + if(user.a_intent == INTENT_HARM) usr.visible_message("[user] draws the [holstered], ready to shoot!", \ "You draw the [holstered], ready to shoot!") else diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index bd96b480be8..d770ea920e1 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -30,7 +30,7 @@ usesound = 'sound/items/Welder2.ogg' /obj/item/device/fluff/tattoo_gun/attack(mob/living/carbon/M as mob, mob/user as mob) - if(user.a_intent == I_HARM) + if(user.a_intent == INTENT_HARM) user.visible_message("[user] stabs [M] with the [src]!", "You stab [M] with the [src]!") to_chat(M, "[user] stabs you with the [src]!
You feel a tiny prick!") return diff --git a/code/modules/fish/fishtank.dm b/code/modules/fish/fishtank.dm index 45967dc8ac7..85ec9f292c4 100644 --- a/code/modules/fish/fishtank.dm +++ b/code/modules/fish/fishtank.dm @@ -513,7 +513,7 @@ /obj/machinery/fishtank/attack_animal(mob/living/simple_animal/M as mob) if(istype(M, /mob/living/simple_animal/pet/cat)) - if(M.a_intent == I_HELP) //Cats can try to fish in open tanks on help intent + if(M.a_intent == INTENT_HELP) //Cats can try to fish in open tanks on help intent if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open. M.visible_message("[M.name] stares at into \the [src] while sitting perfectly still.", "The lid is closed, so you stare into \the [src] intently.") else @@ -535,7 +535,7 @@ else attack_generic(M, M.harm_intent_damage) else if(istype(M, /mob/living/simple_animal/hostile/bear)) - if(M.a_intent == I_HELP) //Bears can try to fish in open tanks on help intent + if(M.a_intent == INTENT_HELP) //Bears can try to fish in open tanks on help intent if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open. M.visible_message("[M.name] scrapes it's claws along \the [src]'s lid.", "The lid is closed, so you scrape your claws against \the [src]'s lid.") else @@ -555,7 +555,7 @@ else if(M.melee_damage_upper > 0) //If the simple_animal has a melee_damage_upper defined, use that for the damage attack_generic(M, M.melee_damage_upper) - else if(M.a_intent == I_HARM) //Let any simple_animal try to break tanks when on harm intent + else if(M.a_intent == INTENT_HARM) //Let any simple_animal try to break tanks when on harm intent if(M.harm_intent_damage <= 0) return //If it doesn't do damage, don't bother with the attack attack_generic(M, M.harm_intent_damage) check_health() @@ -575,7 +575,7 @@ user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) user.visible_message("[user] smashes through [src]!") destroy() - else if(usr.a_intent == I_HARM) + else if(usr.a_intent == INTENT_HARM) user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) usr.visible_message("[usr.name] bangs against the [src.name]!", \ @@ -611,7 +611,7 @@ //Welders repair damaged tanks on help intent, damage on all others if(istype(O, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = O - if(user.a_intent == I_HELP) + if(user.a_intent == INTENT_HELP) if(W.isOn()) if(cur_health < max_health) playsound(loc, W.usesound, 50, 1) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index e1a517caaf3..011a4ffacde 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -47,7 +47,7 @@ if(!target) return - if(user.a_intent != I_HARM || !isGlass) + if(user.a_intent != INTENT_HARM || !isGlass) return ..() force = 15 //Smashing bottles over someoen's head hurts. diff --git a/code/modules/food_and_drinks/drinks/drinks/cans.dm b/code/modules/food_and_drinks/drinks/drinks/cans.dm index 796b6af37f9..267b80aed20 100644 --- a/code/modules/food_and_drinks/drinks/drinks/cans.dm +++ b/code/modules/food_and_drinks/drinks/drinks/cans.dm @@ -32,7 +32,7 @@ if(canopened == 0) to_chat(user, "You need to open the drink!") return - else if(M == user && !reagents.total_volume && user.a_intent == I_HARM && user.zone_sel.selecting == "head") + else if(M == user && !reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_sel.selecting == "head") user.visible_message("[user] crushes ["\the [src]"] on \his forehead!", "You crush \the [src] on your forehead.") crush(user) return diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index deac3c6660d..b9bb541f77a 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -68,7 +68,7 @@ return /obj/machinery/biogenerator/attackby(obj/item/O, mob/user, params) - if(user.a_intent == I_HARM) + if(user.a_intent == INTENT_HARM) return ..() if(processing) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 7f2c3587349..f5137d5743b 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -102,7 +102,7 @@ to_chat(user, "You add [O] to [name].") updateUsrDialog() return - else if(user.a_intent != I_HARM) + else if(user.a_intent != INTENT_HARM) to_chat(user, "You can't extract any seeds from \the [O.name]!") else return ..() diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 56fb71b20aa..1730ed13801 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -207,7 +207,7 @@ to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") return switch(user.a_intent) - if(I_DISARM) + if(INTENT_DISARM) if(!wielded) return ..() if(!ishuman(target)) diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 575fbf3b5b6..a1e7e775e23 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -11,7 +11,7 @@ status_flags = CANSTUN|CANWEAKEN|CANPUSH mouse_opacity = 1 faction = list("neutral") - a_intent = I_HARM + a_intent = INTENT_HARM atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 wander = 0 @@ -93,7 +93,7 @@ return /mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/M) - if(M.a_intent == I_HELP) + if(M.a_intent == INTENT_HELP) toggle_mode() switch(mode) if(MINEDRONE_COLLECT) diff --git a/code/modules/mob/living/carbon/alien/alien_defenses.dm b/code/modules/mob/living/carbon/alien/alien_defenses.dm index 65e32e2fae9..fef2e469848 100644 --- a/code/modules/mob/living/carbon/alien/alien_defenses.dm +++ b/code/modules/mob/living/carbon/alien/alien_defenses.dm @@ -15,7 +15,7 @@ In all, this is a lot like the monkey code. /N return switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) AdjustSleeping(-5) resting = 0 AdjustParalysis(-3) @@ -23,7 +23,7 @@ In all, this is a lot like the monkey code. /N AdjustWeakened(-3) visible_message("[M.name] nuzzles [src] trying to wake it up!") - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) return 1 @@ -50,11 +50,11 @@ In all, this is a lot like the monkey code. /N return 0 //this is horrible but 100% necessary switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) help_shake_act(M) - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) - if(I_HARM, I_DISARM) + if(INTENT_HARM, INTENT_DISARM) return 1 return 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index fff315c90e3..d37d83e8215 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -160,13 +160,13 @@ switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) help_shake_act(M) - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) - if(I_HARM) + if(INTENT_HARM) M.do_attack_animation(src) var/damage = rand(1, 9) if(prob(90)) @@ -191,7 +191,7 @@ playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) visible_message("[M] has attempted to punch [src]!") - if(I_DISARM) + if(INTENT_DISARM) if(!lying) if(prob(5))//Very small chance to push an alien down. Paralyse(2) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index df00e862b38..305f8ad45a9 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -127,10 +127,10 @@ switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) help_shake_act(M) - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) else diff --git a/code/modules/mob/living/carbon/carbon_defenses.dm b/code/modules/mob/living/carbon/carbon_defenses.dm index 64268a35f83..c5c1e4917e4 100644 --- a/code/modules/mob/living/carbon/carbon_defenses.dm +++ b/code/modules/mob/living/carbon/carbon_defenses.dm @@ -20,7 +20,7 @@ /mob/living/carbon/attackby(obj/item/I, mob/user, params) if(lying) if(surgeries.len) - if(user != src && user.a_intent == I_HELP) + if(user != src && user.a_intent == INTENT_HELP) for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 000a7a52bd0..cd86b4dbc12 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -335,7 +335,7 @@ /mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L as mob) switch(L.a_intent) - if(I_HELP) + if(INTENT_HELP) visible_message("[L] rubs its head against [src].") diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm index 015c73455ba..7c4039789a9 100644 --- a/code/modules/mob/living/carbon/human/human_attackalien.dm +++ b/code/modules/mob/living/carbon/human/human_attackalien.dm @@ -4,13 +4,13 @@ return 0 switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) visible_message("[M] caresses [src] with its scythe like arm.") - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) - if(I_HARM) + if(INTENT_HARM) M.do_attack_animation(src) if(w_uniform) w_uniform.add_fingerprint(M) @@ -33,7 +33,7 @@ apply_effect(4, WEAKEN, armor_block) updatehealth() - if(I_DISARM) + if(INTENT_DISARM) M.do_attack_animation(src) if(prob(80)) var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 2e0fa4803d6..59c8f3efa63 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -18,7 +18,7 @@ ..() - if((M != src) && M.a_intent != I_HELP && check_shields(0, M.name, attack_type = UNARMED_ATTACK)) + if((M != src) && M.a_intent != INTENT_HELP && check_shields(0, M.name, attack_type = UNARMED_ATTACK)) add_logs(M, src, "attempted to touch") visible_message("[M] attempted to touch [src]!") return 0 @@ -53,7 +53,7 @@ species.handle_attack_hand(src,M) switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) if(attacker_style && attacker_style.help_act(H, src))//adminfu only... return 1 if(can_operate(src)) @@ -99,14 +99,14 @@ else to_chat(M, "You need to stay still while performing CPR!") - if(I_GRAB) + if(INTENT_GRAB) if(attacker_style && attacker_style.grab_act(H, src)) return 1 else src.grabbedby(M) return 1 - if(I_HARM) + if(INTENT_HARM) //Vampire code if(M.mind && M.mind.vampire && (M.mind in ticker.mode.vampires) && !M.mind.vampire.draining && M.zone_sel && M.zone_sel.selecting == "head" && src != M) if(species && species.flags & NO_BLOOD)//why this hell were we never checkinf for this? @@ -168,7 +168,7 @@ forcesay(hit_appends) - if(I_DISARM) + if(INTENT_DISARM) if(attacker_style && attacker_style.disarm_act(H, src)) return 1 else diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 585ac587ffc..bbe57fa66f9 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -191,7 +191,7 @@ emp_act /mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone) if(!I || !user) return 0 - if((istype(I, /obj/item/weapon/kitchen/knife/butcher/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == I_HARM) + if((istype(I, /obj/item/weapon/kitchen/knife/butcher/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == INTENT_HARM) var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat = new /obj/item/weapon/reagent_containers/food/snacks/meat/human(get_turf(src.loc)) newmeat.name = src.real_name + newmeat.name newmeat.subjectname = src.real_name @@ -378,7 +378,7 @@ emp_act if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) /mob/living/carbon/human/mech_melee_attack(obj/mecha/M) - if(M.occupant.a_intent == I_HARM) + if(M.occupant.a_intent == INTENT_HARM) if(M.damtype == "brute") step_away(src,M,15) var/obj/item/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head")) diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm index d4127409ce1..eb7b767dc94 100644 --- a/code/modules/mob/living/carbon/human/interactive/functions.dm +++ b/code/modules/mob/living/carbon/human/interactive/functions.dm @@ -638,7 +638,7 @@ if(canmove) if((graytide || (TRAITS & TRAIT_MEAN)) || retal) interest += targetInterestShift - a_intent = I_HARM + a_intent = INTENT_HARM zone_sel.selecting = pick("chest","r_leg","l_leg","r_arm","l_arm","head") doing |= SNPC_FIGHTING if(retal) @@ -746,7 +746,7 @@ tryWalk(TARGET) else if(Adjacent(TARGET)) - a_intent = pick(I_DISARM, I_HARM) + a_intent = pick(INTENT_DISARM, INTENT_HARM) M.attack_hand(src) timeout++ else if(timeout >= 10 || !(targetRange(M) > 14)) diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm index 59350e03961..00b8e0a4544 100644 --- a/code/modules/mob/living/carbon/human/interactive/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm @@ -431,7 +431,7 @@ var/mob/living/M = target if(istype(M)) if(health > 0) - if(M.a_intent == I_HELP && !incapacitated()) + if(M.a_intent == INTENT_HELP && !incapacitated()) chatter() if(istype(target, /mob/living/carbon) && !retal && prob(SNPC_FUZZY_CHANCE_LOW)) var/mob/living/carbon/C = target @@ -439,7 +439,7 @@ tryWalk(target) else C.help_shake_act(src) - if(M.a_intent == I_HARM) + if(M.a_intent == INTENT_HARM) retal = 1 retal_target = target @@ -658,7 +658,7 @@ if(grabbed_by.len > 0) for(var/obj/item/weapon/grab/G in grabbed_by) if(Adjacent(G)) - a_intent = I_DISARM + a_intent = INTENT_DISARM G.assailant.attack_hand(src) inactivity_period = 10 diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index 4fcedc1844a..7fee37a17c2 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -58,7 +58,7 @@ /datum/species/wryn/handle_attack_hand(var/mob/living/carbon/human/H, var/mob/living/carbon/human/M) var/obj/item/organ/external/head/head_organ = H.get_organ("head") - if(M.a_intent == I_HARM) + if(M.a_intent == INTENT_HARM) if(H.handcuffed) if(!H.get_int_organ(/obj/item/organ/internal/wryn/hivenode)) return var/turf/p_loc = M.loc diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 85fed33c156..94ae7482437 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -241,7 +241,7 @@ switch(L.a_intent) - if(I_HELP) + if(INTENT_HELP) visible_message("[L] rubs its head against [src].") @@ -322,7 +322,7 @@ return else if(stat == DEAD && surgeries.len) - if(M.a_intent == I_HELP) + if(M.a_intent == INTENT_HELP) for(var/datum/surgery/S in surgeries) if(S.next_step(M, src)) return 1 @@ -343,10 +343,10 @@ switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) help_shake_act(M) - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) else @@ -393,10 +393,10 @@ return switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) visible_message("[M] caresses [src] with its scythe like arm.") - if(I_HARM) + if(INTENT_HARM) M.do_attack_animation(src) if(prob(95)) attacked += 10 @@ -416,10 +416,10 @@ visible_message("[M] has attempted to lunge at [name]!", \ "[M] has attempted to lunge at [name]!") - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) - if(I_DISARM) + if(INTENT_DISARM) M.do_attack_animation(src) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) var/damage = 5 @@ -460,7 +460,7 @@ /mob/living/carbon/slime/attackby(obj/item/W, mob/user, params) if(stat == DEAD && surgeries.len) - if(user.a_intent == I_HELP) + if(user.a_intent == INTENT_HELP) for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 06b6440f756..b120552d160 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -60,10 +60,10 @@ if(!M.buckled && !M.has_buckled_mobs()) var/mob_swap //the puller can always swap with it's victim if on grab intent - if(M.pulledby == src && a_intent == I_GRAB) + if(M.pulledby == src && a_intent == INTENT_GRAB) mob_swap = 1 //restrained people act if they were on 'help' intent to prevent a person being pulled from being seperated from their puller - else if((M.restrained() || M.a_intent == I_HELP) && (restrained() || a_intent == I_HELP)) + else if((M.restrained() || M.a_intent == INTENT_HELP) && (restrained() || a_intent == INTENT_HELP)) mob_swap = 1 if(mob_swap) //switch our position with M @@ -176,7 +176,7 @@ return 0 var/obj/item/hand_item = get_active_hand() if(istype(hand_item, /obj/item/weapon/gun) && A != hand_item) - if(a_intent == I_HELP || !ismob(A)) + if(a_intent == INTENT_HELP || !ismob(A)) visible_message("[src] points to [A] with [hand_item]") return 1 A.visible_message("[src] points [hand_item] at [A]!", diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 3aec754eabb..548f1fb357b 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -108,7 +108,7 @@ /mob/living/mech_melee_attack(obj/mecha/M) - if(M.occupant.a_intent == I_HARM) + if(M.occupant.a_intent == INTENT_HARM) if(M.damtype == "brute") step_away(src,M,15) switch(M.damtype) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 06021939ac9..84f731d3669 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -677,7 +677,7 @@ var/list/ai_verbs_default = list( switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) visible_message("[M] caresses [src]'s plating with its scythe like arm.") else //harm diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 3f1799c7c9f..3637b0e10b1 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -246,7 +246,7 @@ switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) for(var/mob/O in viewers(src, null)) if((O.client && !( O.blinded ))) O.show_message(text("[M] caresses [src]'s casing with its scythe like arm."), 1) @@ -508,7 +508,7 @@ /mob/living/silicon/pai/attack_hand(mob/user as mob) if(stat == DEAD) return - if(user.a_intent == I_HELP) + if(user.a_intent == INTENT_HELP) user.visible_message("[user] pets [src].") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) else 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 f9c711b4b17..ba4c616b2f3 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -44,7 +44,7 @@ //Actual picking-up event. /mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob) - if(M.a_intent == I_HELP) + if(M.a_intent == INTENT_HELP) get_scooped(M) ..() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 9d93d0baa77..1f4430c3aea 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -575,7 +575,7 @@ var/list/robot_verbs_default = list( return - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP) + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == INTENT_HELP) if(W == module_active) return if(!getBruteLoss()) @@ -594,7 +594,7 @@ var/list/robot_verbs_default = list( return - else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == I_HELP && (wiresexposed || istype(src,/mob/living/silicon/robot/drone))) + else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == INTENT_HELP && (wiresexposed || istype(src,/mob/living/silicon/robot/drone))) if(!getFireLoss()) to_chat(user, "Nothing to fix!") return @@ -818,15 +818,15 @@ var/list/robot_verbs_default = list( switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) for(var/mob/O in viewers(src, null)) if((O.client && !( O.blinded ))) O.show_message(text("[M] caresses [src]'s plating with its scythe like arm."), 1) - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) - if(I_HARM) + if(INTENT_HARM) M.do_attack_animation(src) var/damage = rand(10, 20) if(prob(90)) @@ -842,7 +842,7 @@ var/list/robot_verbs_default = list( visible_message("[M] took a swipe at [src]!", \ "[M] took a swipe at [src]!") - if(I_DISARM) + if(INTENT_DISARM) if(!(lying)) M.do_attack_animation(src) if(prob(85)) @@ -923,7 +923,7 @@ var/list/robot_verbs_default = list( diag_hud_set_borgcell() if(!opened && (!istype(user, /mob/living/silicon))) - if(user.a_intent == I_HELP) + if(user.a_intent == INTENT_HELP) user.visible_message("[user] pets [src]!", \ "You pet [src]!") diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 02a6c3aa88f..899608d0f1a 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -256,7 +256,7 @@ new /obj/effect/decal/cleanable/blood/oil(loc) /mob/living/simple_animal/bot/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == I_HELP) + if(H.a_intent == INTENT_HELP) interact(H) else return ..() @@ -329,7 +329,7 @@ ejectpai(user) else user.changeNext_move(CLICK_CD_MELEE) - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM) if(health >= maxHealth) to_chat(user, "[src] does not need a repair!") return diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 12b69a249b7..37699e820f2 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -161,13 +161,13 @@ Auto Patrol[]"}, mode = BOT_HUNT /mob/living/simple_animal/bot/ed209/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == I_HARM) + if(H.a_intent == INTENT_HARM) retaliate(H) return ..() /mob/living/simple_animal/bot/ed209/attackby(obj/item/weapon/W, mob/user, params) ..() - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM) // Any intent but harm will heal, so we shouldn't get angry. return if(!istype(W, /obj/item/weapon/screwdriver) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. if(W.force && W.damtype != STAMINA)//If force is non-zero and damage type isn't stamina. diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index e2f643d46e1..9f8725067b0 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -18,7 +18,7 @@ health = 50 maxHealth = 50 damage_coeff = list(BRUTE = 0.5, BURN = 0.7, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - a_intent = I_HARM //No swapping + a_intent = INTENT_HARM //No swapping buckle_lying = 0 mob_size = MOB_SIZE_LARGE radio_channel = "Supply" diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index f1614e54816..46a8ec12f76 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -173,13 +173,13 @@ Auto Patrol: []"}, mode = BOT_HUNT /mob/living/simple_animal/bot/secbot/attack_hand(mob/living/carbon/human/H) - if(H.a_intent == I_HARM) + if(H.a_intent == INTENT_HARM) retaliate(H) return ..() /mob/living/simple_animal/bot/secbot/attackby(obj/item/weapon/W, mob/user, params) ..() - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry. + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM) // Any intent but harm will heal, so we shouldn't get angry. return if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass. retaliate(user) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 54cf810a081..3daacefb108 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -10,7 +10,7 @@ response_harm = "punches" icon_dead = "shade_dead" speed = 0 - a_intent = I_HARM + a_intent = INTENT_HARM stop_automated_movement = 1 status_flags = CANPUSH attack_sound = 'sound/weapons/punch1.ogg' diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 97702a28027..bf4ac4a1664 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -557,8 +557,8 @@ /mob/living/simple_animal/pet/corgi/attack_hand(mob/living/carbon/human/M) . = ..() switch(M.a_intent) - if(I_HELP) wuv(1,M) - if(I_HARM) wuv(-1,M) + if(INTENT_HELP) wuv(1,M) + if(INTENT_HARM) wuv(-1,M) /mob/living/simple_animal/pet/corgi/proc/wuv(change, mob/M) if(change) diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm index e6e9d2f93f1..6bec35b98db 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona.dm @@ -51,7 +51,7 @@ /mob/living/simple_animal/diona/attack_hand(mob/living/carbon/human/M) //Let people pick the little buggers up. - if(M.a_intent == I_HELP) + if(M.a_intent == INTENT_HELP) if(M.species && M.species.name == "Diona") to_chat(M, "You feel your being twine with that of [src] as it merges with your biomass.") to_chat(src, "You feel your being twine with that of [M] as you merge with its biomass.") 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 840c988dc98..4f3d4588378 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -136,7 +136,7 @@ milk_content = min(50, milk_content+rand(5, 10)) /mob/living/simple_animal/cow/attack_hand(mob/living/carbon/M as mob) - if(!stat && M.a_intent == I_DISARM && icon_state != icon_dead) + if(!stat && M.a_intent == INTENT_DISARM && icon_state != icon_dead) M.visible_message("[M] tips over [src].","You tip over [src].") Weaken(30) icon_state = icon_dead diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index fdcf39dd51b..17740441153 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -77,7 +77,7 @@ client.time_died_as_mouse = world.time /mob/living/simple_animal/mouse/attack_hand(mob/living/carbon/human/M as mob) - if(M.a_intent == I_HELP) + if(M.a_intent == INTENT_HELP) get_scooped(M) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 1f1ab0d0431..88db29b88a7 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -18,7 +18,7 @@ melee_damage_upper = 25 attacktext = "slashes" speak_emote = list("hisses") - a_intent = I_HARM + a_intent = INTENT_HARM attack_sound = 'sound/weapons/bladeslice.ogg' atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 @@ -141,7 +141,7 @@ name = "lusty xenomorph maid" melee_damage_lower = 0 melee_damage_upper = 0 - a_intent = I_HELP + a_intent = INTENT_HELP friendly = "caresses" environment_smash = 0 icon_state = "maid" diff --git a/code/modules/mob/living/simple_animal/hostile/illusion.dm b/code/modules/mob/living/simple_animal/hostile/illusion.dm index f08f5479a2a..746c1789e16 100644 --- a/code/modules/mob/living/simple_animal/hostile/illusion.dm +++ b/code/modules/mob/living/simple_animal/hostile/illusion.dm @@ -7,7 +7,7 @@ icon_dead = "null" melee_damage_lower = 5 melee_damage_upper = 5 - a_intent = I_HARM + a_intent = INTENT_HARM attacktext = "gores" maxHealth = 100 health = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 7d5e157e068..dba3121f3a7 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -5,7 +5,7 @@ desc = "Attack the weak point for massive damage." health = 1000 maxHealth = 1000 - a_intent = I_HARM + a_intent = INTENT_HARM sentience_type = SENTIENCE_BOSS environment_smash = 3 luminosity = 3 diff --git a/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm index 3e6d98afd95..bd9c532bb45 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm @@ -19,7 +19,7 @@ melee_damage_upper = 0 attacktext = "barrels into" attack_sound = 'sound/weapons/punch1.ogg' - a_intent = I_HELP + a_intent = INTENT_HELP speak_emote = list("screeches") throw_message = "sinks in slowly, before being pushed out of " status_flags = CANPUSH diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 3298e334bd2..184f7b3ced3 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -11,7 +11,7 @@ response_disarm = "shoves" response_harm = "strikes" status_flags = 0 - a_intent = I_HARM + a_intent = INTENT_HARM var/throw_message = "bounces off of" var/icon_aggro = null // for swapping to when we get aggressive see_in_dark = 8 @@ -68,7 +68,7 @@ melee_damage_lower = 12 melee_damage_upper = 12 attacktext = "bites into" - a_intent = I_HARM + a_intent = INTENT_HARM speak_emote = list("chitters") attack_sound = 'sound/weapons/bladeslice.ogg' aggro_vision_range = 9 diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index d7984031052..25311673076 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -138,7 +138,7 @@ /mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/M as mob) ..() - if(M.a_intent == I_HARM) + if(M.a_intent == INTENT_HARM) Bruise() /mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index cce4b32235c..c2ba962e2e0 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -13,7 +13,7 @@ speak = list("HONK", "Honk!", "Welcome to clown planet!") emote_see = list("honks") speak_chance = 1 - a_intent = I_HARM + a_intent = INTENT_HARM maxHealth = 75 health = 75 speed = 0 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 df5b53f5368..d4a88b49e60 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -15,7 +15,7 @@ response_harm = "hits the" speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.") emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity") - a_intent = I_HARM + a_intent = INTENT_HARM stop_automated_movement_when_pulled = 0 health = 300 maxHealth = 300 diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index 30bdb8c95e2..2f639d9e6f7 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -18,7 +18,7 @@ melee_damage_upper = 15 attacktext = "punches" attack_sound = 'sound/weapons/punch1.ogg' - a_intent = I_HARM + a_intent = INTENT_HARM unsuitable_atmos_damage = 15 faction = list("russian") status_flags = CANPUSH diff --git a/code/modules/mob/living/simple_animal/hostile/spaceworms.dm b/code/modules/mob/living/simple_animal/hostile/spaceworms.dm index b1393e84ef9..27bd2f3ee1c 100644 --- a/code/modules/mob/living/simple_animal/hostile/spaceworms.dm +++ b/code/modules/mob/living/simple_animal/hostile/spaceworms.dm @@ -28,7 +28,7 @@ maxbodytemp = 350 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - a_intent = I_HARM //so they don't get pushed around + a_intent = INTENT_HARM //so they don't get pushed around environment_smash = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 168ed2d441c..6ddb86fd818 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -8,7 +8,7 @@ icon_living = "angel" icon_dead = "angel" gender = NEUTER - a_intent = I_HARM + a_intent = INTENT_HARM response_help = "touches" response_disarm = "pushes" diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 805059f25f7..469631951aa 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -18,7 +18,7 @@ melee_damage_upper = 10 attacktext = "punches" attack_sound = 'sound/weapons/punch1.ogg' - a_intent = I_HARM + a_intent = INTENT_HARM unsuitable_atmos_damage = 15 faction = list("syndicate") check_friendly_fire = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm index b4ac6212220..f27891f5965 100644 --- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm +++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm @@ -56,7 +56,7 @@ harm_intent_damage = 5 melee_damage_lower = 25 melee_damage_upper = 25 - a_intent = I_HARM + a_intent = INTENT_HARM attack_sound = 'sound/weapons/bladeslice.ogg' atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 0 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 1aa6c82b4a8..5e4057c66df 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -304,12 +304,12 @@ switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) if(health > 0) visible_message(" [M] [response_help] [src].") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - if(I_GRAB) + if(INTENT_GRAB) if(M == src || anchored) return if(!(status_flags & CANPUSH)) @@ -326,7 +326,7 @@ visible_message("[M] has grabbed [src] passively!") playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - if(I_HARM, I_DISARM) + if(INTENT_HARM, INTENT_DISARM) M.do_attack_animation(src) visible_message("[M] [response_harm] [src]!") playsound(loc, "punch", 25, 1, -1) @@ -338,13 +338,13 @@ switch(M.a_intent) - if(I_HELP) + if(INTENT_HELP) visible_message("[M] caresses [src] with its scythe like arm.") - if(I_GRAB) + if(INTENT_GRAB) grabbedby(M) - if(I_HARM, I_DISARM) + if(INTENT_HARM, INTENT_DISARM) M.do_attack_animation(src) var/damage = rand(15, 30) visible_message("[M] has slashed at [src]!", \ @@ -357,7 +357,7 @@ /mob/living/simple_animal/attack_larva(mob/living/carbon/alien/larva/L as mob) switch(L.a_intent) - if(I_HELP) + if(INTENT_HELP) visible_message("[L] rubs its head against [src].") diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm index ac3f0ef44ca..22b5fb705a9 100644 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ b/code/modules/mob/living/simple_animal/spawner.dm @@ -12,7 +12,7 @@ status_flags = 0 anchored = 1 AIStatus = AI_OFF - a_intent = I_HARM + a_intent = INTENT_HARM stop_automated_movement = 1 wander = 0 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 2988363ffb9..49b43136563 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -75,7 +75,7 @@ var/overeatduration = 0 // How long this guy is overeating //Carbon var/intent = null//Living var/shakecamera = 0 - var/a_intent = I_HELP//Living + var/a_intent = INTENT_HELP//Living var/m_intent = "run"//Living var/lastKnownIP = null var/atom/movable/buckled = null//Living diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index fffd02adf0a..ecc987530ab 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -316,7 +316,7 @@ var/mob/living/carbon/human/affected = affecting var/mob/living/carbon/human/attacker = assailant switch(assailant.a_intent) - if(I_HELP) + if(INTENT_HELP) /*if(force_down) to_chat(assailant, "You no longer pin [affecting] to the ground.") force_down = 0 @@ -324,10 +324,10 @@ //This specific example would allow you to stop pinning people to the floor without moving away from them. return - if(I_GRAB) + if(INTENT_GRAB) return - if(I_HARM) //This checks that the user is on harm intent. + if(INTENT_HARM) //This checks that the user is on harm intent. if(last_hit_zone == "head") //This checks the hitzone the user has selected. In this specific case, they have the head selected. if(affecting.lying) return @@ -368,7 +368,7 @@ //This specific example would allow you to squish people's eyes with a GRAB_NECK. - if(I_DISARM) //This checks that the user is on disarm intent. + if(INTENT_DISARM) //This checks that the user is on disarm intent. /* if(state < GRAB_AGGRESSIVE) to_chat(assailant, "You require a better grab to do this.") return diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 6c443b4aa30..e1a1bdc1d8b 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -319,20 +319,20 @@ proc/muffledspeech(phrase) return 0 //converts intent-strings into numbers and back -var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM) +var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) /proc/intent_numeric(argument) if(istext(argument)) switch(argument) - if(I_HELP) return 0 - if(I_DISARM) return 1 - if(I_GRAB) return 2 + if(INTENT_HELP) return 0 + if(INTENT_DISARM) return 1 + if(INTENT_GRAB) return 2 else return 3 else switch(argument) - if(0) return I_HELP - if(1) return I_DISARM - if(2) return I_GRAB - else return I_HARM + if(0) return INTENT_HELP + if(1) return INTENT_DISARM + if(2) return INTENT_GRAB + else return INTENT_HARM //change a mob's act-intent. Input the intent as a string such as "help" or use "right"/"left /mob/verb/a_intent_change(input as text) @@ -341,7 +341,7 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM) if(ishuman(src) || isalienadult(src) || isbrain(src)) switch(input) - if(I_HELP,I_DISARM,I_GRAB,I_HARM) + if(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) a_intent = input if("right") a_intent = intent_numeric((intent_numeric(a_intent)+1) % 4) @@ -352,14 +352,14 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM) else if(isrobot(src) || islarva(src)) switch(input) - if(I_HELP) - a_intent = I_HELP - if(I_HARM) - a_intent = I_HARM + if(INTENT_HELP) + a_intent = INTENT_HELP + if(INTENT_HARM) + a_intent = INTENT_HARM if("right","left") a_intent = intent_numeric(intent_numeric(a_intent) - 3) if(hud_used && hud_used.action_intent) - if(a_intent == I_HARM) + if(a_intent == INTENT_HARM) hud_used.action_intent.icon_state = "harm" else hud_used.action_intent.icon_state = "help" diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index c21733a7a39..51890a7337f 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -128,7 +128,7 @@ if("Drone") new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc) - new_xeno.a_intent = I_HARM + new_xeno.a_intent = INTENT_HARM new_xeno.key = key to_chat(new_xeno, "You are now an alien.") @@ -187,7 +187,7 @@ qdel(t) var/mob/living/simple_animal/pet/corgi/new_corgi = new /mob/living/simple_animal/pet/corgi (loc) - new_corgi.a_intent = I_HARM + new_corgi.a_intent = INTENT_HARM new_corgi.key = key to_chat(new_corgi, "You are now a Corgi. Yap Yap!") @@ -218,7 +218,7 @@ var/mob/new_mob = new mobpath(src.loc) new_mob.key = key - new_mob.a_intent = I_HARM + new_mob.a_intent = INTENT_HARM to_chat(new_mob, "You suddenly feel more... animalistic.") @@ -235,7 +235,7 @@ var/mob/new_mob = new mobpath(src.loc) new_mob.key = key - new_mob.a_intent = I_HARM + new_mob.a_intent = INTENT_HARM to_chat(new_mob, "You feel more... animalistic") new_mob.update_pipe_vision() diff --git a/code/modules/ninja/martial_art.dm b/code/modules/ninja/martial_art.dm index 705098c9298..1ea05b1073e 100644 --- a/code/modules/ninja/martial_art.dm +++ b/code/modules/ninja/martial_art.dm @@ -162,7 +162,7 @@ if(!istype(A, /mob/living/carbon/human)) // Special moves only work on humans. user.pointed(A) return 0 - if(user.a_intent == I_HELP) // No special move for help intent. + if(user.a_intent == INTENT_HELP) // No special move for help intent. user.pointed(A) return 0 if(!(A in range(1,user))) // Is the target within one tile of us? @@ -173,10 +173,10 @@ var/mob/living/carbon/human/target = A switch(user.a_intent) - if(I_DISARM) + if(INTENT_DISARM) user_martial_art.wrist_wrench(user, target) - if(I_GRAB) + if(INTENT_GRAB) user_martial_art.choke_hold(user, target) - if(I_HARM) + if(INTENT_HARM) user_martial_art.palm_strike(user, target) return 1 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index b70e847cab4..705e4ad8ed7 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -525,7 +525,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( if(!S) return - if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP || S.open == 2) + if(!(S.status & ORGAN_ROBOT) || user.a_intent != INTENT_HELP || S.open == 2) return ..() if(S.burn_dam) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 3f42b4d58ce..033e04e95ab 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -450,7 +450,7 @@ else if(TK in user.mutations) to_chat(user, "You telekinetically remove the light [fitting].") else - if(user.a_intent == I_DISARM || user.a_intent == I_GRAB) + if(user.a_intent == INTENT_DISARM || user.a_intent == INTENT_GRAB) to_chat(user, "You try to remove the light [fitting], but you burn your hand on it!") var/obj/item/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_hand") @@ -694,7 +694,7 @@ if(!proximity) return if(istype(target, /obj/machinery/light)) return - if(user.a_intent != I_HARM) + if(user.a_intent != INTENT_HARM) return shatter() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 1417907bb6c..1baac918966 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -117,7 +117,7 @@ if(flag) //It's adjacent, is the user, or is on the user's person if(target in user.contents) //can't shoot stuff inside us. return - if(!ismob(target) || user.a_intent == I_HARM) //melee attack + if(!ismob(target) || user.a_intent == INTENT_HARM) //melee attack return if(target == user && user.zone_sel.selecting != "mouth") //so we can't shoot ourselves (unless mouth selected) return @@ -232,7 +232,7 @@ obj/item/weapon/gun/proc/newshot() feedback_add_details("gun_fired","[type]") /obj/item/weapon/gun/attack(mob/M as mob, mob/user) - if(user.a_intent == I_HARM) //Flogging + if(user.a_intent == INTENT_HARM) //Flogging ..() else return diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 2c02695d84d..f5cfede882d 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -218,7 +218,7 @@ /obj/item/weapon/gun/projectile/revolver/russian/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) if(flag) if(!(target in user.contents) && ismob(target)) - if(user.a_intent == I_HARM) // Flogging action + if(user.a_intent == INTENT_HARM) // Flogging action return if(isliving(user)) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 6d4976e1d53..ff274a48993 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -243,7 +243,7 @@ proc/wabbajack(mob/living/M) M.create_attack_log("[M.real_name] ([M.ckey]) became [new_mob.real_name].") new_mob.attack_log = M.attack_log - new_mob.a_intent = I_HARM + new_mob.a_intent = INTENT_HARM if(M.mind) M.mind.transfer_to(new_mob) else diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 2714b8d1b16..839ce9c0a8d 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -151,7 +151,7 @@ return 1 if (!is_type_in_list(I, blend_items) && !is_type_in_list(I, juice_items)) - if(user.a_intent == I_HARM) + if(user.a_intent == INTENT_HARM) return ..() else to_chat(user, "Cannot refine into a reagent!") diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index 89233789903..241370668e0 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -373,8 +373,8 @@ color = "#FF83A5" /datum/reagent/love/on_mob_life(mob/living/M) - if(M.a_intent == I_HARM) - M.a_intent = I_HELP + if(M.a_intent == INTENT_HARM) + M.a_intent = INTENT_HELP if(prob(8)) var/lovely_phrase = pick("appreciated", "loved", "pretty good", "really nice", "pretty happy with yourself, even though things haven't always gone as well as they could") diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 9e5b93f8927..fc3baf62556 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -140,7 +140,7 @@ update_move_direction() to_chat(user, "You rotate [src].") - else if(user.a_intent != I_HARM) + else if(user.a_intent != INTENT_HARM) if(user.drop_item()) I.forceMove(loc) else diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index 2a111433948..c5dcf75c69a 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -296,7 +296,7 @@ to_chat(M, mymessage) /obj/spacepod/attackby(obj/item/W as obj, mob/user as mob, params) - if(user.a_intent == I_HARM) + if(user.a_intent == INTENT_HARM) ..() deal_damage(W.force) else @@ -408,7 +408,7 @@ obj/spacepod/proc/add_equipment(mob/user, var/obj/item/device/spacepod_equipment cargo_hold.max_combined_w_class += SPE.storage_mod["w_class"] /obj/spacepod/attack_hand(mob/user as mob) - if(user.a_intent == I_GRAB && unlocked) + if(user.a_intent == INTENT_GRAB && unlocked) var/mob/target if(pilot) target = pilot diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 05486c9046d..96b4872f0ff 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -324,25 +324,25 @@ var/static/regex/multispin_words = regex("like a record baby") //HELP INTENT else if((findtext(message, helpintent_words))) for(var/mob/living/carbon/human/H in listeners) - H.a_intent_change(I_HELP) + H.a_intent_change(INTENT_HELP) next_command = world.time + cooldown_meme //DISARM INTENT else if((findtext(message, disarmintent_words))) for(var/mob/living/carbon/human/H in listeners) - H.a_intent_change(I_DISARM) + H.a_intent_change(INTENT_DISARM) next_command = world.time + cooldown_meme //GRAB INTENT else if((findtext(message, grabintent_words))) for(var/mob/living/carbon/human/H in listeners) - H.a_intent_change(I_GRAB) + H.a_intent_change(INTENT_GRAB) next_command = world.time + cooldown_meme //HARM INTENT else if((findtext(message, harmintent_words))) for(var/mob/living/carbon/human/H in listeners) - H.a_intent_change(I_HARM) + H.a_intent_change(INTENT_HARM) next_command = world.time + cooldown_meme //THROW/CATCH diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 127077a621d..48ee29f3f45 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -90,7 +90,7 @@ if(target_zone == surgery.location) initiate(user, target, target_zone, tool, surgery) return 1//returns 1 so we don't stab the guy in the dick or wherever. - if(isrobot(user) && user.a_intent != I_HARM) //to save asimov borgs a LOT of heartache + if(isrobot(user) && user.a_intent != INTENT_HARM) //to save asimov borgs a LOT of heartache return 1 return 0 From 7cf499dcc18dc50e0a68e5d50ebc994cc99178dd Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 10 Jun 2017 10:12:14 +0100 Subject: [PATCH 14/65] Adds movement intents --- code/__DEFINES/mob.dm | 4 ++++ code/_onclick/hud/alien.dm | 4 ++-- code/_onclick/hud/alien_larva.dm | 4 ++-- code/_onclick/hud/human.dm | 2 +- code/_onclick/hud/monkey.dm | 2 +- code/_onclick/hud/screen_objects.dm | 10 +++++----- code/game/area/areas.dm | 4 ++-- code/game/machinery/flasher.dm | 12 ++++++------ code/game/objects/items/toys.dm | 2 +- code/game/objects/items/weapons/caution.dm | 2 +- code/modules/assembly/mousetrap.dm | 2 +- code/modules/clothing/clothing.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 4 ++-- .../mob/living/carbon/alien/humanoid/caste/hunter.dm | 2 +- .../mob/living/carbon/alien/humanoid/update_icons.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 6 +++--- .../mob/living/carbon/human/human_movement.dm | 8 ++++---- code/modules/mob/living/carbon/human/update_icons.dm | 4 ++-- code/modules/mob/living/living.dm | 4 ++-- code/modules/mob/mob_defines.dm | 4 ++-- code/modules/power/treadmill.dm | 4 ++-- code/modules/surgery/organs/vocal_cords.dm | 10 +++++----- 22 files changed, 51 insertions(+), 47 deletions(-) diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm index 22a4121b75c..36fffdd907a 100644 --- a/code/__DEFINES/mob.dm +++ b/code/__DEFINES/mob.dm @@ -97,6 +97,10 @@ #define INTENT_GRAB "grab" #define INTENT_HARM "harm" +// Movement Intents +#define MOVE_INTENT_WALK "walk" +#define MOVE_INTENT_RUN "run" + // AI wire/radio settings #define AI_CHECK_WIRELESS 1 #define AI_CHECK_RADIO 2 diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index 79d109c0c57..ff8b856e797 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -41,14 +41,14 @@ static_inventory += using using = new /obj/screen/act_intent/alien() - using.icon_state = (mymob.a_intent == "hurt" ? "harm" : mymob.a_intent) + using.icon_state = (mymob.a_intent == "hurt" ? INTENT_HARM : mymob.a_intent) using.screen_loc = ui_acti static_inventory += using action_intent = using using = new /obj/screen/mov_intent() using.icon = 'icons/mob/screen_alien.dmi' - using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") + using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking") using.screen_loc = ui_movi static_inventory += using move_intent = using diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index c4f453077ef..9e57fd9429b 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -14,7 +14,7 @@ using = new /obj/screen/mov_intent() using.icon = 'icons/mob/screen_alien.dmi' - using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") + using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking") static_inventory += using move_intent = using @@ -36,4 +36,4 @@ mymob.zone_sel = new /obj/screen/zone_sel/alien() mymob.zone_sel.update_icon(mymob) - static_inventory += mymob.zone_sel \ No newline at end of file + static_inventory += mymob.zone_sel diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index d543ce9c416..d309cc37e0f 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -81,7 +81,7 @@ using = new /obj/screen/mov_intent() using.icon = ui_style - using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") + using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking") using.screen_loc = ui_movi using.color = ui_color using.alpha = ui_alpha diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index e5d1e15512a..ae0fb3e1263 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -17,7 +17,7 @@ using = new /obj/screen/mov_intent() using.icon = ui_style - using.icon_state = (mymob.m_intent == "run" ? "running" : "walking") + using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking") using.screen_loc = ui_movi using.color = ui_color using.alpha = ui_alpha diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index a75fb116b13..260df783bf9 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -199,15 +199,15 @@ var/mob/living/carbon/C = usr if(C.legcuffed) to_chat(C, "You are legcuffed! You cannot run until you get [C.legcuffed] removed!") - C.m_intent = "walk" //Just incase + C.m_intent = MOVE_INTENT_WALK //Just incase C.hud_used.move_intent.icon_state = "walking" return 1 switch(usr.m_intent) - if("run") - usr.m_intent = "walk" + if(MOVE_INTENT_RUN) + usr.m_intent = MOVE_INTENT_WALK usr.hud_used.move_intent.icon_state = "walking" - if("walk") - usr.m_intent = "run" + if(MOVE_INTENT_WALK) + usr.m_intent = MOVE_INTENT_RUN usr.hud_used.move_intent.icon_state = "running" if(istype(usr,/mob/living/carbon/alien/humanoid)) usr.update_icons() diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index eb743afad62..140b6116cd6 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -307,7 +307,7 @@ var/mob/living/L = A if(!L.ckey) return - if((oldarea.has_gravity == 0) && (newarea.has_gravity == 1) && (L.m_intent == "run")) // Being ready when you change areas gives you a chance to avoid falling all together. + if((oldarea.has_gravity == 0) && (newarea.has_gravity == 1) && (L.m_intent == MOVE_INTENT_RUN)) // Being ready when you change areas gives you a chance to avoid falling all together. thunk(L) // Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch @@ -344,7 +344,7 @@ if(istype(get_turf(M), /turf/space)) // Can't fall onto nothing. return - if((istype(M,/mob/living/carbon/human/)) && (M.m_intent == "run")). + if((istype(M,/mob/living/carbon/human/)) && (M.m_intent == MOVE_INTENT_RUN)). M.Stun(5) M.Weaken(5) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 1b685f50197..58e4525a30c 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -51,7 +51,7 @@ /obj/machinery/flasher/attack_ai(mob/user) if(anchored) return flash() - + /obj/machinery/flasher/attack_ghost(mob/user) if(anchored && user.can_advanced_admin_interact()) return flash() @@ -92,7 +92,7 @@ if(istype(AM, /mob/living/carbon)) var/mob/living/carbon/M = AM - if((M.m_intent != "walk") && (anchored)) + if((M.m_intent != MOVE_INTENT_WALK) && (anchored)) flash() /obj/machinery/flasher/portable/attackby(obj/item/weapon/W as obj, mob/user as mob, params) @@ -119,11 +119,11 @@ anchored = 1.0 use_power = 1 idle_power_usage = 2 - active_power_usage = 4 - + active_power_usage = 4 + /obj/machinery/flasher_button/attack_ai(mob/user as mob) return attack_hand(user) - + /obj/machinery/flasher_button/attack_ghost(mob/user) if(user.can_advanced_admin_interact()) return attack_hand(user) @@ -150,4 +150,4 @@ sleep(50) icon_state = "launcherbtt" - active = 0 \ No newline at end of file + active = 0 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 575cf09a6b1..83b6d31a0ea 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -283,7 +283,7 @@ /obj/item/toy/snappop/Crossed(H as mob|obj) if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off var/mob/living/carbon/M = H - if(issilicon(H) || M.m_intent == "run") + if(issilicon(H) || M.m_intent == MOVE_INTENT_RUN) to_chat(M, "You step on the snap pop!") pop_burst(2, 0) diff --git a/code/game/objects/items/weapons/caution.dm b/code/game/objects/items/weapons/caution.dm index 250aff951fd..032decd7bc5 100644 --- a/code/game/objects/items/weapons/caution.dm +++ b/code/game/objects/items/weapons/caution.dm @@ -44,7 +44,7 @@ if(armed) if(istype(AM, /mob/living/carbon) && !istype(AM, /mob/living/carbon/brain)) var/mob/living/carbon/C = AM - if(C.m_intent != "walk") + if(C.m_intent != MOVE_INTENT_WALK) src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"") explosion(src.loc,-1,0,2) if(ishuman(C)) diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 7436d27a608..e22923fa965 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -101,7 +101,7 @@ if(armed) if(ishuman(AM)) var/mob/living/carbon/H = AM - if(H.m_intent == "run") + if(H.m_intent == MOVE_INTENT_RUN) triggered(H) H.visible_message("[H] accidentally steps on [src].", \ "You accidentally step on [src]") diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 2142d336fac..3d11f40b1c9 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -421,7 +421,7 @@ BLIND // can't see anything if(!istype(H) || !istype(T)) return 0 - if(H.m_intent == "run") + if(H.m_intent == MOVE_INTENT_RUN) if(shoe_sound_footstep >= 2) if(T.shoe_running_volume) playsound(src, shoe_sound, T.shoe_running_volume, 1) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index b5fa736dfc3..eef224e8378 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -273,7 +273,7 @@ Des: Removes all infected images from the alien. if(T.footstep_sounds["xeno"]) var/S = pick(T.footstep_sounds["xeno"]) if(S) - if(m_intent == "run") + if(m_intent == MOVE_INTENT_RUN) if(!(step_count % 2)) //every other turf makes a sound return 0 @@ -281,7 +281,7 @@ Des: Removes all infected images from the alien. range -= 0.666 //-(7 - 2) = (-5) = -5 | -5 - (0.666) = -5.666 | (7 + -5.666) = 1.334 | 1.334 * 3 = 4.002 | range(4.002) = range(4) var/volume = 5 - if(m_intent == "walk") + if(m_intent == MOVE_INTENT_WALK) return 0 //silent when walking if(buckled || lying || throwing) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 3782806db33..ddac1cc18e9 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -40,7 +40,7 @@ /mob/living/carbon/alien/humanoid/hunter/handle_environment() - if(m_intent == "run" || resting) + if(m_intent == MOVE_INTENT_RUN || resting) ..() else adjustPlasma(-heal_rate) diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 0d6545d0a0f..f1bcfc0eeaf 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -33,7 +33,7 @@ else if(lying || resting) icon_state = "alien[caste]_sleep" - else if(m_intent == "run") + else if(m_intent == MOVE_INTENT_RUN) icon_state = "alien[caste]_running" else icon_state = "alien[caste]_s" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 141d760287a..2ef62eae6e9 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -34,9 +34,9 @@ if(.) if(nutrition && stat != DEAD) nutrition -= hunger_drain / 10 - if(m_intent == "run") + if(m_intent == MOVE_INTENT_RUN) nutrition -= hunger_drain / 10 - if((FAT in mutations) && m_intent == "run" && bodytemperature <= 360) + if((FAT in mutations) && m_intent == MOVE_INTENT_RUN && bodytemperature <= 360) bodytemperature += 2 // Moving around increases germ_level faster @@ -936,7 +936,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, /mob/living/carbon/proc/slip(var/description, var/stun, var/weaken, var/tilesSlipped, var/walkSafely, var/slipAny) - if(flying || buckled || (walkSafely && m_intent == "walk")) + if(flying || buckled || (walkSafely && m_intent == MOVE_INTENT_WALK)) return 0 if((lying) && (!(tilesSlipped))) return 0 diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 87176a7a02a..85dd6e81f3c 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -47,12 +47,12 @@ if(T.footstep_sounds["human"]) var/S = pick(T.footstep_sounds["human"]) if(S) - if(m_intent == "run") + if(m_intent == MOVE_INTENT_RUN) if(!(step_count % 2)) //every other turf makes a sound return 0 var/range = -(world.view - 2) - if(m_intent == "walk") + if(m_intent == MOVE_INTENT_WALK) range -= 0.333 if(!shoes) range -= 0.333 @@ -65,7 +65,7 @@ //-(7 - 2) = (-5) = -5 | -5 - (0.333 * 2) = -5.666 | (7 + -5.666) = 1.334 | 1.334 * 3 = 4.002 | range(4.002) = range(4) var/volume = 13 - if(m_intent == "walk") + if(m_intent == MOVE_INTENT_WALK) volume -= 4 if(!shoes) volume -= 4 @@ -91,4 +91,4 @@ playsound(T, S, volume, 1, range) return 1 - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 1cb97bb3e19..9a8a9b91404 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -1092,8 +1092,8 @@ var/global/list/damage_icon_parts = list() if(legcuffed) overlays_standing[LEGCUFF_LAYER] = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "legcuff1") throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed) - if(m_intent != "walk") - m_intent = "walk" + if(m_intent != MOVE_INTENT_WALK) + m_intent = MOVE_INTENT_WALK if(hud_used && hud_used.move_intent) hud_used.move_intent.icon_state = "walking" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b120552d160..90003c12e65 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -937,11 +937,11 @@ . += config.run_speed else switch(m_intent) - if("run") + if(MOVE_INTENT_RUN) if(drowsyness > 0) . += 6 . += config.run_speed - if("walk") + if(MOVE_INTENT_WALK) . += config.walk_speed diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 49b43136563..959913972fa 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -76,7 +76,7 @@ var/intent = null//Living var/shakecamera = 0 var/a_intent = INTENT_HELP//Living - var/m_intent = "run"//Living + var/m_intent = MOVE_INTENT_RUN//Living var/lastKnownIP = null var/atom/movable/buckled = null//Living var/obj/item/l_hand = null//Living @@ -196,5 +196,5 @@ var/list/permanent_huds = list() var/list/actions = list() - + var/list/progressbars = null //for stacking do_after bars diff --git a/code/modules/power/treadmill.dm b/code/modules/power/treadmill.dm index 0dc2bbb5f76..5f8f8c1b8e4 100644 --- a/code/modules/power/treadmill.dm +++ b/code/modules/power/treadmill.dm @@ -70,11 +70,11 @@ // a reasonable approximation of movement speed var/mob_speed = M.movement_delay() switch(M.m_intent) - if("run") + if(MOVE_INTENT_RUN) if(M.drowsyness > 0) mob_speed += 6 mob_speed += config.run_speed - 1 - if("walk") + if(MOVE_INTENT_WALK) mob_speed += config.walk_speed - 1 mob_speed = BASE_MOVE_DELAY / max(1, BASE_MOVE_DELAY + mob_speed) speed = min(speed + inertia * mob_speed, mob_speed) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 96b4872f0ff..e44f20046db 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -305,8 +305,8 @@ var/static/regex/multispin_words = regex("like a record baby") else if((findtext(message, walk_words))) for(var/V in listeners) var/mob/living/L = V - if(L.m_intent != "walk") - L.m_intent = "walk" + if(L.m_intent != MOVE_INTENT_WALK) + L.m_intent = MOVE_INTENT_WALK if(L.hud_used) L.hud_used.move_intent.icon_state = "walking" next_command = world.time + cooldown_meme @@ -315,8 +315,8 @@ var/static/regex/multispin_words = regex("like a record baby") else if((findtext(message, run_words))) for(var/V in listeners) var/mob/living/L = V - if(L.m_intent != "run") - L.m_intent = "run" + if(L.m_intent != MOVE_INTENT_RUN) + L.m_intent = MOVE_INTENT_RUN if(L.hud_used) L.hud_used.move_intent.icon_state = "running" next_command = world.time + cooldown_meme @@ -452,4 +452,4 @@ var/static/regex/multispin_words = regex("like a record baby") next_command = world.time + cooldown_none message_admins("[key_name_admin(owner)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") - log_game("[key_name(owner)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") \ No newline at end of file + log_game("[key_name(owner)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") From e94880ad6708788dcad6df3cd70ef95c2465ee5d Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 10 Jun 2017 10:18:05 +0100 Subject: [PATCH 15/65] Fixes conflict --- code/game/objects/items/cardboard_cutouts.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index d815e8c262f..b076b7be43c 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -15,7 +15,7 @@ var/lastattacker = null /obj/item/cardboard_cutout/attack_hand(mob/living/user) - if(user.a_intent == I_HELP || pushed_over) + if(user.a_intent == INTENT_HELP || pushed_over) return ..() user.visible_message("[user] pushes over [src]!", "You push over [src]!") playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) @@ -185,4 +185,4 @@ dir = SOUTH /obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed - deceptive = TRUE \ No newline at end of file + deceptive = TRUE From 16acae31068b2e918227b7e4869c20453ed2ccc0 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sat, 10 Jun 2017 03:15:02 -0700 Subject: [PATCH 16/65] Ports Job Priority System MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This system allows the HoP to set up to 3 jobs as 'priority' jobs via the ID console. Priority jobs are highlighted in green to everyone who is late-joining. This allows the HoP to actively encourage late-arriving crew to take jobs the station needs, avoiding departments/roles being critically short-handed. ![](https://preview.ibb.co/esEEDF/job_priority_example.png) 🆑 Kyep add: HoPs can now set jobs as 'priority'. Priority jobs are highlighted on the latejoin screen. This allows HoPs to proactively broadcast that they need more people to fill those jobs - and reduces the chance of critical crew shortages. /🆑 --- code/game/jobs/job_controller.dm | 2 ++ code/game/machinery/computer/card.dm | 36 +++++++++++++++++++-- code/modules/mob/new_player/new_player.dm | 12 +++++++ nano/templates/identification_computer.tmpl | 1 + 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 82238f732b9..7179c5340cf 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -10,11 +10,13 @@ var/global/datum/controller/occupations/job_master var/list/occupations = list() var/list/name_occupations = list() //Dict of all jobs, keys are titles var/list/type_occupations = list() //Dict of all jobs, keys are types + var/list/prioritized_jobs = list() // List of jobs set to priority by HoP/Captain //Players who need jobs var/list/unassigned = list() //Debug info var/list/job_debug = list() + /datum/controller/occupations/proc/SetupOccupations(var/list/faction = list("Station")) occupations = list() diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index a6c072fec60..a749096dbb3 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -86,7 +86,9 @@ var/time_last_changed_position = 0 "current_positions" = job.current_positions, "total_positions" = job.total_positions, "can_open" = can_open_job(job), - "can_close" = can_close_job(job)))) + "can_close" = can_close_job(job), + "can_prioritize" = can_prioritize_job(job) + ))) return formatted @@ -165,6 +167,18 @@ var/time_last_changed_position = 0 return -1 return 0 +/obj/machinery/computer/card/proc/can_prioritize_job(datum/job/job) + if(job) + if(!job_blacklisted(job) && job_in_department(job, FALSE)) + if(job in job_master.prioritized_jobs) + return 2 + else + if(job_master.prioritized_jobs.len >= 3) + return 0 + return 1 + return -1 + + /obj/machinery/computer/card/proc/job_in_department(datum/job/targetjob, includecivs = 1) if(!scan || !scan.access) return 0 @@ -488,7 +502,25 @@ var/time_last_changed_position = 0 opened_positions[edit_job_target]-- log_game("[key_name(usr)] has closed a job slot for job \"[j]\".") nanomanager.update_uis(src) - + if("prioritize_job") + // TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY + if(is_authenticated(usr) && !target_dept) + var/priority_target = href_list["job"] + var/datum/job/j = job_master.GetJob(priority_target) + if(!j) + return 0 + if(!job_in_department(j)) + return 0 + var/priority = TRUE + if(j in job_master.prioritized_jobs) + job_master.prioritized_jobs -= j + priority = FALSE + else if(job_master.prioritized_jobs.len < 3) + job_master.prioritized_jobs += j + else + return 0 + log_game("[key_name(usr)] [priority ? "prioritized" : "unprioritized"] the job \"[j.title]\".") + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if(modify) modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 58c5ee4104d..a8276070ca0 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -362,6 +362,18 @@ else if(shuttle_master.emergency.mode >= SHUTTLE_CALL) dat += "The station is currently undergoing evacuation procedures.
" + if(length(job_master.prioritized_jobs)) + dat += "The station has flagged these jobs as high priority: " + var/amt = length(job_master.prioritized_jobs) + var/amt_count + for(var/datum/job/a in job_master.prioritized_jobs) + amt_count++ + if(amt_count != amt) + dat += " [a.title], " + else + dat += " [a.title].
" + + dat += "Choose from the following open positions:

" var/list/activePlayers = list() diff --git a/nano/templates/identification_computer.tmpl b/nano/templates/identification_computer.tmpl index da24f3c0e77..d7696b8630e 100644 --- a/nano/templates/identification_computer.tmpl +++ b/nano/templates/identification_computer.tmpl @@ -41,6 +41,7 @@ {{:value.title}}: {{:value.current_positions}}/{{:value.total_positions}} {{:helper.link('-', null, {'choice' : 'make_job_unavailable', 'job' : value.title}, value.can_close == 1 && data.authenticated ? null : 'disabled')}} {{:helper.link('+', null, {'choice' : 'make_job_available', 'job' : value.title}, value.can_open == 1 && data.authenticated ? null : 'disabled')}} + {{:helper.link('*', null, {'choice' : 'prioritize_job', 'job' : value.title}, value.can_prioritize > 0 && data.authenticated ? null : 'disabled')}} {{if value.can_prioritize == 2}}Priority Job {{/if}} {{/for}} From c371c2bee241cee16e5737c72aae73a8ce28b80f Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 10 Jun 2017 13:13:28 -0400 Subject: [PATCH 17/65] inital commi --- code/modules/clothing/head/jobs.dm | 15 +++++++++++++++ code/modules/clothing/suits/jobs.dm | 24 ++++++++++++++++++++++++ icons/mob/suit.dmi | Bin 429259 -> 431579 bytes icons/obj/clothing/hats.dmi | Bin 100526 -> 101513 bytes 4 files changed, 39 insertions(+) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 9c76701c2bb..5fff5ca3b7d 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -54,6 +54,21 @@ flags = BLOCKHAIR flags_cover = HEADCOVERSEYES +//Chaplain +/obj/item/clothing/head/monk_hood + name = "monk hood" + desc = "Wooden board not included." + icon_state = "monk_hood" + flags = BLOCKHAIR + flags_cover = HEADCOVERSEYES + +/obj/item/clothing/head/witchunter_hat + name = "witchunter hat" + desc = "This hat saw much use back in the day." + icon_state = "witchhunterhat" + item_state = "witchhunterhat" + flags_cover = HEADCOVERSEYES + /obj/item/clothing/head/det_hat name = "hat" desc = "Someone who wears this will look very smart." diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 0ccdf7027d3..9098abed686 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -101,6 +101,30 @@ "Vox" = 'icons/mob/species/vox/suit.dmi' ) +//Chaplain +/obj/item/clothing/suit/hooded/monk + name = "monk robe" + desc = "Wooden board not included." + icon_state = "monkrobe" + item_state = "monkrobe" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS + flags_inv = HIDESHOES|HIDEJUMPSUIT + hoodtype = /obj/item/clothing/head/monk_hood + allowed = list(/obj/item/weapon/storage/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) + +/obj/item/clothing/suit/witchhunter + name = "witchunter garb" + desc = "Dosen't weigh the same a a duck." + icon_state = "witchhunter" + item_state = "witchhunter" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + allowed = list(/obj/item/weapon/storage/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) + + //Chef + /obj/item/clothing/suit/toggle/chef + name = "chef's apron" + + //Chef /obj/item/clothing/suit/chef name = "chef's apron" diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 03c1180b1dcbc9e4cd149fee709c48377de3db7d..9d75c4af8801857d4823f37bc3da9e286771d882 100644 GIT binary patch delta 14734 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 delta 12355 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 R{PPP)S^kY&xr~wj{{h27qU8Vp delta 7972 zcmXY0Wk6NW)4t@TLAnHyM!FlMq&uZi8tJYBQX(xNNOyO4htl2M-5rh-EQ|(F7PqNQfX1h&Xg269fYH#!zzr!=b`@vXRO6*IpHuT;yZLSKM%d zc1OzZB~^z)rVRn${=w(^esT6u$odzdW>m3KyU5b2f{9bRr{42@|Fiz+#I*;6)^wl+ z`Yxr&dvzqZyLxh3V)0q1Ea|bi^w;kFDaT<5do1>@>saFa*U(IjeOv6>(0`RacX$qJ zxOM=YHj4UAqO*}!-FUF&=)z54M#~p6Z5UPm?fD8vTl&Yu;4}?+SZb0_X5ebdfP&7> zXoaiNOp4e*S&b#z-V7=4LMymq%#1j3T7MntIJc{kJ<29{A9;;I<=fm46>vydA6h*{ z5iQv2*PG}RX(l+i7E=#(_F6CYVvm{n zzmC4Rxf99ku(u!q_GV$Juo!w<|9YWc$20#}S)b;8vr9UXc-fm}(qv+kB1z~@nqoe3 zgrj{nM*I-Y>X=t%zB_1>6P`vlZZ|>4dlv<_;$pm5n1BW!gP>#sa&?r(3X2tIVhskA zZ{WoRm}&8YUG+xZp`iy4c*JB}f?on7sAJbUP-XJYVT2Q7-yVH_PWOBtxy|W+= zuIeNTxNP5+05@<(uj9+RDkud|A~WGK$dBrRu&X!6I4H;q*d(s>^;5>ERwRz$y@Cqh z>a6jxRyiFOdc>6)hvAQ$BXC3`S||XpP1m@oJ7zd@y-)aWzoFG|<}Y5R@_Y~Q2*6<6 zj4Bs&X!|RkURj49+s>+u+9_zZBnHsI3W*GoyOS~_v z*!G_rQNp%(Db;3KPo=qwQPQ>pEpI+)8~Q{z*A+hmhH#+-qEC&Ij>97{cw(}XIDD|_ z#Hqs$qE%-cD79fD4X}?DYCC>6$NZ)kV}(ofPJR=qILNyKVX!400^4v8??VP|qmMOV zYXT_?gD@azLl}ZlBXmcdR z)(2zoR2VJH#utJL_`zsu0)!cA-gU4mvm)K<6j6I2hp(FDQ{K#-Ld1Ep)h3TipPl_? zz90jxq?ad6tr0747GCFC5Ihp1JU8FDpGHNKQD583Edo{ZoJ*uX(;zV7bQ7l&L^|a3 z6DDYqV$Lz$*UV}3AoF$)QDwk8KGEAVBtp5oBnr7RjW;u5JfF=JCdm%<7L3-Gz~j@@ zUVXGz;i<<(o*XsYKl_=EoyjI2O)rV@>|LgJL`{XX;O8;JyCS2Mc^SkLLD!E>WGz4R zw1>P=!xO)L$ZAG^p7m^Ix9>}DC8KjjM3RAS;hW!P$Wxo4p zY5jc2fGkt4y=^7lbLRhkHh(3iEc{2Xn9pe0bW|rBl;VEWb%4|r9}x9rqss1q?fP#T zI(Ayc&lia<)N@r8gV5;s!F~n8&SpPWE0Z3SL26;{<;sq~oxJ8i<(L$2_L(Ljo#2;K zHZ1lf_OXtn=P^PQ6XaJ~bny770%i4^>7Xd27n zDcZWKPbKgi7WAbXCY;`^$YTEDO88o>7o`BUs6?0H*m z)42|gw|(os_>?vUe&Z0i;O9?DYXipJ)pcVPnZMz?2`OGW)Wx3TnD#wRvYlRS_(zJ$w>MDj(-Nq5M?_9xLWpum>h$YsV^-y5DcaGh*5 zYiFh3Ug)@$w-A#o`^nbUek*SxCRvxXvCw%dZy<(zhGeFvsrVw+bGZ9+SCq;`t##`x zsi07SSPr&7Jk$GB%!o8G-IY|!w^V}hx>TWJG&#SdrFi|S9S9ipu-a$h2W%zYs6z5%7I48yVm#pyl zBdij_9BYU7vqA#xh{HF*77_DjOw=KYzLF^LjrBEa0Dl{`WM07v?)TXdJFA$(pITiH zT#f%2Q`tjmsY_P`>vg_rmZmxjt#O}P59-q1eyJ$oh9wwW8=Fe>L=mX^dp6$%tETHU zPl5bkkhO_+lXUY}zo%#9y^=wL>!#ESKkU)HEKK5hfl8eVCLanznt$rD7AIsM33-H6 zvGwaw2%sDrI5Y?PON8*rg&BTN$*_!SAwD(<6(*!iuSx&xxf51rG6=*6&+LFK`q70# z)Yr-*6z=+lYCcX)nw58G&QngH1H9FkZ$pZG;p+(U-MWm0tJwARl$DlFV>!wc+Y8^g z1(^^g8OV&gI7Cf)XD*pDG(AnK{& z;qh^Ide_eI^aVVy+$U47j#eIkh*Xb=1QTotq=sneFME&zFDJi!Fp-gUD5~-zziSV& zn{^bTXlp5VAoR{;ZD?QZZ^|#qa0uV*TYU03@?&DMDt`CVg%oj){kO`@Aq@~_9v*_fj)2VH=e9Ij%v*>rPrK6y^&stT$|~Qd$UE{7j;CSoJq6Qd z;49I%O-?q%59l;!qQOyG*kU%84^!+liRk+kxBK$c7TBRI*P0@yG)nl07MS3F&o zFj788H-E^}Ot&M7R)86WgHuZHTCJaax=KcmQ*{?4lc&K+%5!OaLviNhd0=x4T!^G! z>DQ4Quh#6_i4rcpl&00JuG?Sb7JSqJd~;Cs>`>ovaRv4DP(k2EEVUnaiaEaTVNE*A+IdgjCK$=&HRITu#V+d##iZG^F;UGj(FGpSZq zRyHi#YLFwnp$?6*GVIDe*&Y9 zn4)6j`Y}4G?S1zl`DM3m9{QXjZk`awdE}~~k$}Ho+sosV$&eRZ9nRkcw|28muGP?j zTM_$)+qPA{yXUBEL>t;@^ljU+4^?P$itnst@lXeAU>1>cGM6QR&*3f|uCVvp)xdfJ z=JFED@vQjTeVtEOL_}^@*87rmrBejXX&ZQ6Yb8CSQC;3{!?V=(b;g$z7%cD3+?*VV z;Z%WyLbZI?;;wY>3*^Jua?C~2hEHT361Da9PV*IYmxzV0(Ry)vpH@&nm*%naM;Jkr zcM`JP?B;Z}rvm&83o9%t%Bro!YhE5{apN(Wkauq(1IiO8_o?n9+6~5z$>q0EDFV-s zYbm9Hz;^#Uma`IY=iJhgX!ebb&-SvDp)Sx!?Ezdwq6w;NOBDyVyaVW+h@<_bMISpE^Lb}xoR@qTvR z^?}tBnef>RO$f<~?N90nqU*6C9AQ01hJkMZg$3^Hb zxN$0f$sn(y0;jJ}5r}2-m#Cl?a%IGInVBzupiCeta`fVr_rxQPxV93vdJNjLurr5x z-@;Ba2*|Hu+fKKZKZvi3vRB>GQwXPhTdV`vtkmCJU(^026;6qZ!(C}Pk;<~+{;aF( zz?%|ICX|$vWaa*>Kw0FV2)F#mJ@&d1SW@i#d)Mao%b$@v4`)gjB3atE;?r%i9BM-} zZrctPpT$@4widDG8Wy@gh|EhE*p^Xrr>`Z)*4r*OMI-aNrm(d}>DJp$@382JDgrl1 zMa5C}56%L$wY5_-GaJsl1!ZLv+{}?JPl9a^7jnKgm+6>=H<)=BL0Do)<8I4Ia0MUe z=~ejn_|#bPxepy*r#3mFIkPPPkvts@y;EgdA2xVOEgB(F&d~TRn88SUo zESecMC}=MTN|=gx5&YG>s}J}Gib5q55JOd5MUz1;!up)53M0X%&u#x>;Jz|C1|}q} z&J|)o1q`d=t_ColiU%5pUUA#nz}zy9TtlOr@uv~w*<;OVewLF!wAFz#L%pak^Khc>hHS8x=mj=w}AU) z)Hoh9QE)cFry5D=#VrQ4QvtuhlDGJ#Ab2r ziRA9FkMHs?k$h}sMk=H@G%=Bo0Vux3BH;?(&ee@m5${~yHx3Il)*gMh9uRaZtMkLAO3^qD8meSB#?1$~X21w7KNiyO?L(<)y`@(_}77mWMJ|IqAnjaO? z?3)@$>?^c*82lM2MO&xP6&KfnEzRZUsL|<6l=Q_?VV!N|W+T5^j8EX=LWrf7qF{;e z99xy)f`OrvRs!pa`Z3H})@dv03_t19<1xxR>e;1jJM z3{5O@EPJMJwYoou21$CFr<6VwZg;Ghm&{H5Ywzkb2kH|n{! zl93+ggS1};P>q@FPM(_aMAhXr;3e%k2+*vvceDj`D0Njt5OVH&7knfapknNPlvf8{{ zumKLYJ~c3j{HAtu#N^$U8KLi@IKg9+QMUPxgj-MI3B6MO?@~#bb1xhvdhsWty}{vH z7ryjl)NkL&xXV(DcNn$Fe;bOC%#LWx8l;PQd(WPMmGyn{6xWdgJnzC3WH;tDUPw0Z zLISL@Hn{LWf;H~J0HA2ZE4H>l9mU|cm#AIVXiLUjj8MO*Af*YTa6O&Ki9@pD89_Zb zFy*9_5WM|tSXCnbr*vG;ty{2VKu*?^*`+pKn-M>SnFo{c(QSI%m)LK5^to?r?ajaA z*#JW`Gqe0PEoEg;hXT(sd?2SagBB#bl!}uiF98_Z}zZRLE{@Buc0!it3-- z=ZdkXwFeIGuGE;*z4_9C`M%CP4BLXo@04%B9tVXk&ZKadn=Cr zFg6#i;-CYF*}_%kEpa2HG0)jb2K%dvS9fdO+V-7~S3FCObhy@k(d)TfVSj4AzJR#;%Le*)or&vSv^}Iu^v6*Lo ziLOu?7#Mgu)@yRMY#()TY1Ctw+Jta^)2c+dZV<8YT1Un^sKgQ)FHRP1FX(+5 z?l7rz{)59crI5n;e(U_|YAr33)yobq>ZN~^aq$tixZrE2)}eMQO55j($W}>?wN{N_ z0MF;_w7xhF*C`)sW@cyq0%mLqm%rdT$alCpzA#-*hV3yV%*)Dj|2>z}Mu8&CN!YjM z(H7B5ea%UEKm3jC4_?zMFSTZhq|=934etN4t(FpDrJ|Vnz9<^ap7_{!?tbG}ht=`; z0=?s0wAa-(`jhHg2wF30f@&mhh44F?|mJ|=|dhSQM@~qFac~>NxLfx07={MLUNLm zUr&=*QFGI^xl)_)YYrZ<=Oy^g_M`z?Rjm5BFhfWYM+VbJ9#5Hho@k=qE=C2T`3uyM zbCnG3(W`Yl!qk+R=)!iC>$u>Sbc}0c=xD{-BVY*)M_*u)*+>7frs0JTM)7(O?6Buw z`N^&UTXnqP}MDHEw=ld+W za>o8SYGHFuv0Y!|Nq<9-F8%p4G3`-p4>i@Kx?TRWGs!>tLLXakM_GpH5LX-=lBjv& z!NQr?oZMW85-XPch0hg9c<0FU-c_b>1BVne%%QqxJ9|NK@#V{* zV`JR36;}(7$wHZlsba;NrOOw^3TM9C^WJ9k;s7!TXadKi!0y{^`r=I&&cV-S0AHt- zEla5h4|L7vgCk`Cpo$LC3n=E}MD>e{iNV^|lZ14C6gxU&zI+Ks3T#WO8*zfUyvQe6 zg(Jvl^QCHkTo$6Dp_!PN=!ycK1da4Sq-bJ671anFqlIVB9}oC)S^F)QQGU0gr{5;D z7VNh=anMFyfa{(P^Uod@)7kHTZW!omwU6w)4dIWUo;=I}Ot*~Klh54+C3Ldw1r`Za zSp9#~2xx3KkJ-bGId}c+#TPeId=qlxJyXmN=AYN@FF0S#J?~Mm!T=&>4|NY@j49gp zOt971`KG-|tLMLWZ})uVj{O}ox$78^Yr19slJZutvCc1j#q&pk2r*m1Lc7fgOq!l< z$Fq~`*-c1#Lep+pG%4c9^mcn%P&ty6CU`-gzbv<1f&P^~_ z*u5ZM;UQ-q@@BmxK|c#=TRYo@u92|A&hAQlGA$i&An45s7?vNNO_Yhd5)6?JodUWP( zpv|vptfQq(8O?|6A9;Cs6}KpD&@0)^9;H%YXzV*7p$dW%*4LBMa;tP2H0AaJAgQ;x zH5+f+%{9a{lQrUJ!8DCrhNZD1^tsPf7{i4kIE5F$jJS_npor|1fed*%DNqhf-1H zs%hzd>|bAYUt+Fu>^Cl_r)8!G&~e6Q7DT^o^HAlRUDffnZ%v_DeQ58r341ThhR$MN z)abv?CrL`b>OXHn%}dzPAA~B+HT9&nHc~oA^1pU?Un5Y6;phuUEkbqgoBV#PMabvb3U>s=6_^w^Goy` zQ`iu1=gGmKC0-5}+w%a;{}lIUNu)%-GZb(~){1GbaQT z;q*(7{_V60&1$TSZ2A(SBI+d0ROxWOc5PCn-R=14;9%D`d-=K>P;qbN<^K$=An4V- zJ0H~k{E(CGwu;Cr@+LS(M%FG>AuZ>}3dVPHZ8-o%m6MIM5VhU9%?qw77pUgJd}}vI zc*es38F-1r<^fG-H6k1wv0TBAIQak z==bwk0H~CdtlSC0GcN7#Y9?1!3<>CBOMqQ-tWk3-AqB)-OKGwSc@Y{?Vr51Bg$f$F2hF1`tzdu0mN`(5VI)p1x)=5lm9- znE*q>5Wq#i?L-~KVKxLBS$+g(g!Hswya0$z7x9&CMlO<^V~w|%XPD2P!S_EoflYzc zgmuGZxpq$p7`?dZR=!eC>7$V|I~f@naw{5U=VcVXHB|pl2c5)WGe&&F{!A!b!q1;n zSI1qV`GF=j6pFQ29S%I2(kFK4e|%55=jxYhI`RZ%Nc4Q}t`PLJLcGRLg= z?loHuX;-!%(iEwqLf|f%&hPSFcorV0+|^jJWSN2 z>q@iBSaY#wU~CYjem&f~ltv;dfy?)t3f;%9n~sgp4h0$l#kvRE@6j%xkVp|Br|cvl zo|rtVQNG<9BBCd;X?otH{j0|B^o?dKI;$qysaIHpq=?<$&VPNz|&G^Ci+DK&v>vhigO~3UNMgRTVl0r{+JXHaJ7d;DlS3mesSB{b<79oEUnrzWD zt=(;%_riMR$TXM}!ftL{ZMaDc%9HPU)EQ?ADuU9b?b@-VVnBrR|G^^9c%UGxE+lLa z4pdj&cO0?16U3QQH2hcKg(^Wg90phDhj29CE5^bs0mV!RPITWx|8?WaNPJX(MPS~C h!@t5NVn2{BUyPJ7!q`%+FQI&pjHIGOnV8Y{{{uUup&bAK From cc7c4869b9beb27501e7788b28cf580759dc7644 Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 10 Jun 2017 18:59:45 +0100 Subject: [PATCH 18/65] Actually fixes karma upon end-round shuttle --- code/modules/shuttle/emergency.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 5903035903b..3d459dd08a4 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -263,7 +263,7 @@ timer = world.time priority_announcement.Announce("The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.") for(var/mob/M in player_list) - if(!isnewplayer(M) && !M.client.karma_spent && !M.get_preference(DISABLE_KARMA_REMINDER)) + if(!isnewplayer(M) && !M.client.karma_spent && !(M.client.ckey in karma_spenders) && !M.get_preference(DISABLE_KARMA_REMINDER)) to_chat(M, "You have not yet spent your karma for the round; was there a player worthy of receiving your reward? Look under OOC tab, Award Karma.") if(SHUTTLE_ESCAPE) From 5e5c1c4238f9e590973a6608d24847cecf319a88 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sat, 10 Jun 2017 13:47:16 -0700 Subject: [PATCH 19/65] Makes pri jobs green in the latejoin list --- code/modules/mob/new_player/new_player.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index a8276070ca0..5a52ccf8c9e 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -363,7 +363,7 @@ dat += "The station is currently undergoing evacuation procedures.
" if(length(job_master.prioritized_jobs)) - dat += "The station has flagged these jobs as high priority: " + dat += "The station has flagged these jobs as high priority: " var/amt = length(job_master.prioritized_jobs) var/amt_count for(var/datum/job/a in job_master.prioritized_jobs) @@ -422,7 +422,10 @@ dat += "
" dat += "[jobcat]" for(var/datum/job/job in categorizedJobs[jobcat]["jobs"]) - dat += "[job.title] ([job.current_positions]) (Active: [activePlayers[job]])
" + if(job in job_master.prioritized_jobs) + dat += "[job.title] ([job.current_positions]) (Active: [activePlayers[job]])
" + else + dat += "[job.title] ([job.current_positions]) (Active: [activePlayers[job]])
" dat += "

" dat += "" From ae5ac9c247c968ca8a111973a28f4df195e72180 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 10 Jun 2017 17:46:06 -0400 Subject: [PATCH 20/65] Fixes a few more Simple Mob Speeds --- code/game/gamemodes/miniantags/revenant/revenant.dm | 1 + code/game/gamemodes/miniantags/slaughter/slaughter.dm | 2 +- code/modules/mob/living/simple_animal/constructs.dm | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index ca9e7b7ac28..338484a5ebc 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -35,6 +35,7 @@ anchored = 1 mob_size = MOB_SIZE_TINY pass_flags = PASSTABLE | PASSGRILLE | PASSMOB + speed = 1 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) var/essence = 75 //The resource of revenants. Max health is equal to three times this amount diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm index 8fbc0563181..25ebd7bc379 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm @@ -83,7 +83,7 @@ /mob/living/simple_animal/slaughter/Life() ..() if(boost Date: Sat, 10 Jun 2017 17:30:38 -0500 Subject: [PATCH 21/65] qdel memes --- code/game/machinery/doors/brigdoors.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 5045acdafe8..68987b63ebd 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -110,6 +110,7 @@ /obj/machinery/door_timer/Destroy() QDEL_NULL(Radio) targets.Cut() + prisoner = null return ..() //Main door timer loop, if it's timing and time is >0 reduce time by 1. From 44fd7f812b073142db5b936a980765343f476b23 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 10 Jun 2017 19:27:45 -0400 Subject: [PATCH 22/65] ta-dah --- config/example/game_options.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 549633d6a2d..7246e0773fa 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -48,7 +48,7 @@ ROBOT_DELAY 1.5 MONKEY_DELAY 1.5 ALIEN_DELAY 1.5 SLIME_DELAY 1.5 -ANIMAL_DELAY 1.5 +ANIMAL_DELAY 2.5 ## Comment for "normal" explosions, which ignore obstacles ## Uncomment for explosions that react to doors and walls From 9b0db44f47983c57fefaa6b39a6962dcc427fdc4 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 10 Jun 2017 22:36:49 -0400 Subject: [PATCH 23/65] fix --- code/modules/clothing/suits/jobs.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 9098abed686..f28c87109fc 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -120,8 +120,9 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS allowed = list(/obj/item/weapon/storage/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) - //Chef - /obj/item/clothing/suit/toggle/chef + + //Chef +/obj/item/clothing/suit/toggle/chef name = "chef's apron" From dd22ea04154ca87edc46497d4156cd6bb85ef33a Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 10 Jun 2017 22:53:13 -0400 Subject: [PATCH 24/65] missed icons --- .../crates_lockers/closets/secure/chaplain.dm | 3 +++ icons/mob/head.dmi | Bin 232810 -> 233507 bytes icons/mob/suit.dmi | Bin 431579 -> 431717 bytes icons/obj/clothing/hats.dmi | Bin 101513 -> 101053 bytes icons/obj/clothing/suits.dmi | Bin 136816 -> 137455 bytes 5 files changed, 3 insertions(+) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm index 7c58f4a2b1a..26272d66ac2 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm @@ -15,6 +15,9 @@ new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/suit/hooded/nun(src) new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) + new /obj/item/clothing/suit/hooded/monk(src) + new /obj/item/clothing/suit/witchhunter(src) + new /obj/item/clothing/head/witchunter_hat(src) new /obj/item/clothing/suit/holidaypriest(src) new /obj/item/clothing/under/wedding/bride_white(src) new /obj/item/weapon/storage/backpack/cultpack (src) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 3764c64aa50e80d85cdd4dc94e5d8b14a2ad8c70..f25715b9220050bed14f3b4d7e48190cb49baa02 100644 GIT binary patch delta 22951 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 diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 9d75c4af8801857d4823f37bc3da9e286771d882..ab9763b0c18bfd1e94910a418bbf59347cbd3465 100644 GIT binary patch delta 12551 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 delta 12437 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 aMiR!U2t8*Oi_wID9|f5=(p8d%0sjxXHih&6 diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 1fdb472d2119bb7979d02abfc00a174970758e1e..5c34785d51e1a4ae749b6f9c291e7c62c05e34b5 100644 GIT binary patch delta 8568 zcmZ8Hby!rr5ow)Zjdf%mhQ%-S>EdVz3+YR z{Wtf_ojGTE&fFXN1HCl?{TnG@f{6|Sfha;Jvp^t>-=3PfE>h;srk|~yT&x`(Kp^+j zycA{UC4Ri%vCHz^FP#UXuEonj7HCF&aP0+{yfg zne=4~Vj-x-$>k6w$(R~kVzuJE;1Z4RmDe!@)!~i!!eq(*@UyUjCH7-E_Y&hiPn_l5 zAD;EHmn-Tu&k9Gm_6FJ5SzyA>^mR& zc6!z16;sg4xUSsCoR`4S)kih@Hf>l;6tmi|Pu~Vg2oG32)f)m;{1h9lDHb4q`1f`v z=5<#^nVxLERpv#G&+!`oFUhu)&A zkuk6I5>5Ae>}`(Kxi!c{b$eB#itNV}wfiE^{7GvBefJoikU1K#-4iD;e4h5q~-Ip-Hre z)-wsKJjM#fGf;hnOVyD6mW<-b%mtmKDK*v{;e_(|w*|w=EH_L+1}j=)Id?|N$x6O> zW*RGs;HplvfQ$AofGkFXaO@hjl51qnL|hLwHgVq>wQtXJenF;9zvPb+(3t{q<#pxB zw-q{af**@5(9WdewhaXZUi#3Q##LB&vRpWkIW75-1wI!up~X> zes<6H?$b>M)_3+HwJwXs3YO0$vUGSQD6-D}D}R`Tf?Mv1@qy;M#U{_xZT{CcV!H(; zd3-FWVTr_dYvsh(s=e)@gXJ8G+Uu7 zbbIYt(r6m(fdbdOtQl%;bE5;5AG_A7;r`_qp(4`GU6+&<;z5-sU;5td#TYoBngxBE z{3D^#@h+~OF%pm?fkcGNp-L#&3MB4l+e9H1 zX6eoH0~c^o`+AXBIEnPP%VN0vaLgm@Wa7V2qIo%nN{E^~DjF3%;OW1WQ${!z47(!m-ru#7ti8^6v z>IMl9JF7emx?owj6?o_(>8HrNB9l>nc~8f6bB&jhSvfdJj5l8S~uymyL z)BalR2p>r39j@>CDz9DRL?$w`aS;|^aVpO?PoqHne$g+u@HpSE2P4xTH#hdc}4<7*eyEJi1{^iVjC2B{-pE0y3hXgo53VFf$b6x zXO>&k^Qzpga~mV!LyGUBx2(+t!oDGvB~ahHtSawT zPrPY_%pTqv79Y4NM=iY(`aHWkuuO%31V6h))4N3?Ac6BK*Z$=9_{xyUGLHoX;NCL! zezJB&=y?n7G>wM5xPRieIDBQlkH*Gn9+Zrtv(a+gy%KVaF_BKFUKvPqHN3CN zY;iGcQJ(M~8$yPpvbj*k3y{0}#0Ls#~kG;>{Gd}4d8zQGlTwZ16c|cwGn{@J+ zHp%XS;4dWk@#t7#($kW?uS?Ryhiu&EzhFXQXDdV|W8i1LBLr~qaO#$)kWP_qj(?Ix2evpq_lx#!`-J*?sa~8MYj7w? zL=)3c{hnGJS8|zE;D(l}((}-No$>v-q@e%SNN zVX^eNeuX(Hht{_+ecJ%LdP|l{?Qqw((x`#rWdux{65NupKO8Mq9!&3<;s#Ma|KRZ3 z^cnrp?VaR(a)%c;%+n6Ndsw->9ly{8enHuyTWMd-I?$zy{HaOBB=*)OtU9wCK4CUh z@D^lp7S4~qA0LaBLe5F>Yh(zZb?sWr^2Np#;4VyW zy&q-=WD^-V;?RhQMAp?^eibyhRqntm=d%PUV6VwNiTSeYVk_3N0tOXIJ7qPEK|~xt z6PQ4nv$M0jqGC>~&w2}d4F(6vu?LPOe--qtY)6u!N4zecIHFXocvNr9K?gi?v!T_v zAIKa%{$(U?;rWuyp7izzm<=B|votdsUsxzQxOO{PDGiiGdV>`qQ$i2K^jMB&?o?A{ z>3OXM4*g&TfC6XrNKxARQFg;V3S7siLVMMVmK zaY&qmH}egjaw>FR)zsCUuZMFOoeLiPE+x_~Ce9e^ud`naUbX->uZ=x!h|}-;nK5A1 zvW_k3o3ntAR`jES&7(qgWu?0C)spkWrQ=)$QuA`zoqP8b+vC|S_+~*Qyw8piyL&<( zb9jZ%g4ItLHV-{d`_WEWognTCza-KI_Hc;yVfd<7kOxa@2t2ZZOCKw@YC-mWjPekL9SEhK7WpAr*TPPQlb*81%R^ zlk61ZKI`ZA*#kzHPJ3ffKfqYa5hKSCOEaO3O8(@A(zXV9EE!X;^tY%R%Ix$sXjcPY zEw01L`LPS(xv~#-vcrm}I-m|Zne>OR4C;mt=`##Q^fv7JWeMcMiJ z!5-un{Lm#OBZ#O>&eM#2`h!7cIhgwod(O=J8`W3Xn7E%lnJycKO3}s0^--B>9jFo& z>r>x-0wZZ5$$WT#u3SRDzU=6>2F8(h_l_-KMOrO_Jj^w!`h*UPlI^(iYr5H%e+GfX z_#QtLjPJaqUlS8A%v95r^zuC@EKAe1CTP7|9QI7j^6Z z+JZ1NeV5HMXC9u3{Z>ayizP(#_Nz{NZBpG4q)z0|(CR*Tp@=3!(PYt8tQ=y?apU39 zlq*Kd&+Ir`W~lyTPOn7uPbDHyfcLc)Z!VWuUca86nwe2Xc$>1avbzX11qDSV6H~15 zx3PY(Pfz{hO-BFB|7e;nCL;Ci2-5Tmgk@cu(}H24SzFN8le3hAi;$LT|B}Zw@gLOY zzJ)IGi+^%T(KULKPd^v`r)dVl!Rxo!nSYgz08u6X7c?FJ0{ZI*f6alDmzQU{9KWWE%emjQvnm>zy{I2eh%d4kzZ_B(JSNokPn4=7>5J2tfVwr3LR@Lbqk z&CJqr!$oj#bQHbAp?>HpSxP6W?Ye?rZ3E99s{6g?@Qc3emQR87!H)0X|<7Aym69XH0(1wzj>rA(HZ^Cxk8d z{Y5LZy+HfVg_9mYzmBFpJz+U6K4mAJ#1Wh<_|nwT`tZ@dxV00%<4?OcW4;gnO+h)f zZ;h~NyXlY1xv{(PO^)UC5GXjaHIEpC1d!pP<97LGUlT}}@ampoB{aCRE<2Fc7DVyn zWqvbgMyNR}1$CwRmNq6f7TdR|2o)J3yiAHT_ppz{W$$=Xgn=q&}aU~51lK=bc zUa?M^15dx(bK^MOb$ch>c5bd;gT5GtCJr!2xs;khH83vOghX>50 zwiaQ<_6-k@RoA=uYUf5>pw81x2~Kl3-)OJ|H>Z@Bf7rs$%*v`)t^D>@8D7G|BHVlg zgl0xlELal`z68MpTZ zD-*9bf|L3;VbF>~39^y1_~k}_U(9cbKV+TXu`$JAmG5uFC_mBxo=pMJfqJnkdP6Z( zrt|AJXG5c-$Mg`q5ES2X?=4pGa?H^bK2?QG1`Dfmoi7!2WALJY+W1lDh%nS919lLk z+AyUxan!L6BcpU_&dY$CKUf&U$@vEIY2=Uji!cdUSqz&@ly)d|CpFZG`P6FaV#RBT z^ATP2dSGPmlKL31gY&>dm~Ynb-6q}vgjX2-9yJ%}yEi!wK33KStmo&itfH+NmOHPy zhP(JL4-G`uIgq_v*-3eDHf{}sVoyb-!xiw*>{nJ;y~Ioxi@|EI%{5Nw`NFeV;=U)Q zyq$<2ei1GIKt1O0C{o@Ev(B)^Phw_GCw49~>?o~Y?(_#zNO%Nh->RzeF{{pezTOCU zoobz5cJ_SM;8DlD*>I^IUiq{gepL!6A)XAJAB@#!-J^neMxMj3X%G~XQ&S_G1{gRF zdc%L&rP`97n)OyU`P`%oY|L&tjwHV+d0&l=8J58Wtl2Hpu*4Jo4i5_p8|UY9SmNKm zDANSAh$qscnZogszFLjR2B2^Vvt^6SQYynm&xix5*Y03{lS_6(!}qc>_G4Y}Y7`7< zpK?KBthuS_1v`7<1t_GW!T}kP8EV|pdo8LzaR0a+38gq0PUB2t7d>U!gXfmhpET z@mrXV%F82{+*{B3Tdf+*k84DcuXa#mJyq5GleC_pWJ-Db>3{FW{(M+eR= zb#;k|$P`^vDd0&o-0ee*(Gk14pEf4zL>CT zzJ-Bt{+T0(#V`5KlNz9uH0I*Y_2C&e&%1fplwt-m`FGkp-`ZG?u-;{hL>;Y<%SLD0N6SvOifgyW< zK+S>eIfmM|G^Mm^=Q*F5>kB{nR|Zb@yUAAW;}s zm(#vS`ZMTLoB+q=QmFR~4Ef^=OZ@Au^gn)X%+diVy!P1$^(H5;PWxL=`Jc=FIgy_?lZ-OioUA^+i(lszT0*3?DCp!;Q4HNk&FSvH&eDVvFkcS5`gQ-HcsU zJZo+@oC``1Q4eRy^i8n0abmto`p9f$$K#cMecb`@UR~T^qIie6McDB!`u6LH3Z6di zsH&{hy&6NP8kVCSZ3qQq*~>e?@<+> z7FTBBb`))xqe1==(}0YP?cL4%7&U`{z>m>UmA13U9i#`;Qw5sjz$XkA@bJnziT(B$ zoJ_#W0K%cQUpw8z953};juRWFB)YUux6oSP+g`)%m1erLGiB8$B7KpLq$bJxm)y)8-0=4+kdPtTVTJx!r{R6T1a+oE~@fjS00DA5J0G< z)f+=E+i=`;AhQJLi!S$nMehhbFGLQ^<RP zua*VQqp2eHgMp`~pt-rZM3@Nxu(ST_KscVU^?s~$I^Ct*G&2b3G|4Qyd4{OIxw#D9 zqF|D6w05YfrvkM-)ssy#;)#_N>WiPNF)O-ACH9xhH<02(zeGtd75M&YhL8m z-OBRM^yBUShHRyal=$4ce#O`o8{>d*p3}0^zDu+ykU&Gb1bCYu_&) z=Dis5=c;^Eq#Ux!VX|1WUO?oujr1|b({v6Fvgt2Iz=epXCXsQgW#`vk)ozoj)r&&i zxY)`(v&kh*$+129YoC__9=-gO#qvsn9iRro($_N(1sl)bPANDs$?4MXjta=wJ~1#_ z5`frUYq;l)qcbH zQcax!mJeu9T0*m1}$=~2) zfXP@9VJhY2)to(OglPN5S*f0rFJCl!XPL%uyI-^ka2-hkHM>UP#m&ag)P(pF?PVpk zX2#nq;}HSKt*)l#J7aU?HvB1{ucOMmcW39ZIr>+BK>33`h@CHL6t8672e_)813fPEDIyouv`7?J>(c}ubk`JQ$U4wb< zsq23U1p(S%Avs8=@&ldIOh1I^AU``>eigTW8*&G;nW{7o*SI;HMMHmKpx;NwO+y?J zPLq&Hlb`V?=6-JM%U<^lFZdk?y4YNHsIGfYdDFaN@l^kUV=LEs+bjK6eUH5#&8Xt) z+9wzXdACk&BeN%SYM7*Nl+mZot2`b?uH=TAT>!JZR$Bh6mzFl@cX(+OF@J)b%Z^cl zs>`IcM5fck6fF{|a#*6G>MWAS(q%wYrOLWQaWn)SCfxm-QPW3b4|4DCYTHRsk=;EF zTnt@IU%&Ua$3_XQ!yVps-!H))OT4D zWPO0ky`HgX@fqlJ;iTHyF>2(xy1IJ4(i8)SlpS}_I2Y4qtQQ*k?fz)4QZk8~6H(m| zv7A@^YQdmmcvy+u?O1Ih+cPOUSE}8^T_%Nvf9zx`ebqH1r)~Ul?S(wABP*TY=W*htvRHxvL zWGr(}EAEin%v~ zt}ibhsbEb|qjyZ{D^Kqnlki2(b3smD>ei3;=xDjfb0*|Ez|SqU9iDDCpn_~f?+6qP zo(mbx5l%r$JXW8s!Q5Y@dQgFi3R1SKXFy~TO!pA6Wm2Ka9{oy2OVDYCej7MWRB7{! zkCzv_V2b?Z8S?3I^T{O(92W?zOH*O4WPhx(+tWaDx{GBL=e#Y*^Q%2Njjv#W&?`UM zcq1|H&wY_tfw~M7k-+v+JJfn8@}AP_pE~sJ&wr)lb>Z zb@cQEtD=mya1}tbFZ>2W1;`?0l=4kh#}8nHU~u%}QJ)>JDJR+2@bH|%Mo&$J&cJeP zZuL#anu#9P=gJjb6QdK7@NC$YhR^tTF~?ucVkUJIfLjd7;<(+<=jTY;gH6Z@tLFo= z$toD;#8G#xgaC{%e*)y3iHQBZuAK`6bIxS8!`mQH_0@zc!0=j&!%rL(H~3XxGz?mf zUJSx~t8iB(ZqBK3>xLs11hpW;-P4#YjDjG0CxEjO@Dgm6h9b zU#BXFeC~A!lTk<8*MgC9AOv0rN#u~TbneB$H&f#b<6`}RXDuCK@_VgkIgM_jpI>dM zZfFparBhIIoRiAu;sz_4=;+L5=5ah{@dYFa#3TK*Z@;bc!N(`tjqfE+IP`N-qw?>A zu2?mYyQjKO0K$9TpO)=^62&mfBqsLl%oa)xBt9Z#-Xho3r=n$6KivNujP6Uupe7!) zjswXJ4fopZv$5>M-1)!UOLA8oMYz0)3KfO3K2=7gpHRG~n~>rp6zS!NReQ~eECTd! z5F*ye%hyRGoyY^TUV>se{SUsL6j1!kGRJ!v2lYlsNw%NH0G6 qk9Kh8>$Cq%F)BO5hSI%ySrPF?rx+RhOQxocl5sZ zpLf0Mx9+5og!h0w%p57eH@y&npmh5!Kk#`^-kIC~4Wj3?2IEK%){Tv`qP^j#NRj=0-E z03%gSG~r2~<+)jnK>-x79k7-A%JdwQd|sbi5HBOM`8lLh(Wusv~^jFa+|t)6{Z zC0mH!y`He+sSVjL>d^S7T#j!RY9RIFLFS_iFQwI1UR;%eiaJlNw3=!^NDs7qCXJEm z?~R%7I_PAuu;V3*k+v-4c~9yr6iC#=149WULV~DCY6LF@W1wxygcZ zzuigF>}Y&CaZQLBe^W|D2=xb3k%?hQgH;UbSGGq+I!}1ZH~K=otd(F-79;>C7Z$uI$D}Bj2aFtsG)z-wpZE%}nU$|KPT!Z(2{AM#AuI$n6VS zWsZWM78TgSm$BDGmA7_d>u2{^L;^pyOk37gYoA(%Cu)T3IgvoFOH8dLt)I)Ig+3PI zmHwbwTl_5)?Bt*%V%yB$}Rq6BlU*{`rFw@e+)e}`t3WkFOkAuW3A7Me(z`WNJ&9R&)Ngb44 zU6%t<$~crbi1?z$yU(EbLB7~ZZEma3g9N6>SThkhqOWW{qG@Fe5PreS_ki`XL+bY2 zN4Vr}L1~^K8+vFw>FpmL(re9G$H%CW`|s5*ayvEf+^?m`y`~)_`nm5im8FJb@&j#E zd^9eYlYJ+SHEteZ$CFZ%HuSZXPBI7MhEUmCm(d4 z%^rwrGv*3_qtT9w`WJtAJOgkgbJSXP!#FAl#Y`g1R?F45vC{_9_!L-|MWgN7`8hh1 z8`LE-c^nG82Fln#8oR8yJINanetoX(@<}0EH$y(NT0Cd)b~Rc@VasU0 z@=s%+*IEEe-rUFId!id!HJ)_zZ;|?)#9T7*siay7YXS6gw*uK->ZZV5{>ZgT-bsqi zhOl6-ZE^VO6lF(Oc*bC+8j17y8;dSOJ6R6DF5E{%c!^e*#Gn#G=dJ+nha+4?mm;V* znr^)J8gXGIj(g%x>QkH@nc6|`n-H!D!Budwji6NJ5+J8FP~y-E)~LHd-);oq}5tbD^(1$cVNLv}p&a4PdJ(QX1c9mgNL zL~3GCm)sAsod{aLrD_j(@rNZE%i{*GOgea_+mGQ%6g{Vw?Pu~7QxoQFF=seIDP%w^ z+T3cTG9y@GizJ4%H0Ko(?yrJTSH??x-xe@oXQ=R?53;Bm3St4JEi{d0#6B@T`dYM7 zjSkr6eXR#6MtubHHShjB(KyLabYnDNkJo%kwzajvOt7Z^ibjC{Qy`p}KIJgcXwxvY zTFZjcq3DW|A>$LTMl zF5^PtY79iL*Cb)&*I!o45TCa_8^t&fghjV}i*A!k7k7m961HBT&z;4g^7g#Tv4YY$ zkbDqF6Kkn3yPJGWoGMC_Msg6Wmh-cF4%A19q2SDozN-o;f40EIB1n!JvFxzt($(UR zQJs&A;()F9huGI|U)twx>XaC3ANDR(`z>SF8ZTf3<${6eqf8Zkxjoyw-^9M_+hI{K z9KFYjjgAu6pOXn3qx^M*@{?Df?MKYf1YODRx2y&~p0DPCwGPv??;0XX*8<>hQz@-( z_wA}E&+V+oNl)4pgGgL?4ue+rG{fG9Im&RBYSMd!16ud@_haF*ku(->Gack-_U4FhDS=+ln%aneJ0$d z4-_3e!Z9cgNk`~>89N&>RE^l^ju#3oys668oh7>oaslTJg>ZGV`H0|o=#do(2BX3^%}ea zqhmhVPw#l;|6XC-#p*jy24?y!GTEb9IEywl*br2CH%Nd2_1&88#+vHzcB8s5N1eZ7 zb}GpxeOUQ+IV^v9xLnevbM1q=t9-59+Tz1Dwe9Ip&8QP}l&&2{M!W)Fc3wtU7TsAYnV95x?Byji(?Ht2M76cG^BZPG zmQGV#5kpK@DzJt$R?cA4KeP=kt1hV8o(D(nHs|y=)+|wF9S=VOS8wEHy%D|ZD+&;s zo!LmatHrkra?fqHBWf>@Pr5jy-+>vk`}!w}`X%3EDLgx1=%+Ck4z*0rTcs4^_TU}H?FbySYGc5p1+yV)e_(`M(NwNkSWTdu)r7azHxHiJbp|ZLpJy5y zdY>P>`lV}Kdl|gtoL5^L8^ZQPbjRsOT8#g+#V?pc%;nJJvwBzFkxx>$P)OqbN3HCf z+m>c&Y{s8HlMu`My)KLGn2ueNSNb5MxreLw@FNWT&NjA=MU=|6y0}1Gvg4UuyoVRw z%8e?79WcVc`+i_(rQo_z@#6;e}loo zv^a2eYH4&!;I%c+@&SSW2(gpLLgju90Z3<#);@mUDT$ra;`{Nb$i^(IJTK7M z){0P>R$9Bh6pdAu$BI+0_z=F@qx9zWMjh<-89ELlra0J(6vmdtz!CoEHH+hejq#lH z+`@0VbKCArEC&5X=|Vam$$1E@0_&B1-sCw^qXlr{^)V_AbIrEJAYr8z666!O%Lu;P zilF%o$7E3zzq>-LAl;%UET-0BT~P1tKP%%{;o*kZpL#(TBnJU%aoQ#lz zh&xlA2!|Yex7RIthuco1HS54;2W6}jHYPCSSq4K9+>!?!i*+hNC|H%@fy&d>p0-aV zxcsG*{6!s`!}tpZL3TfX@&Otsz~9rMBp{Q<6ZjSP_I|xUPEHQ%g2i!XB#r2}+5Ehd z{J^bocPqGN$ngC10%V03xJ>#3)L3p8DT!C6bLNVMNLXF2In-qO{q|gPv_EZIlAF=a za6zl_16QhG=?)hV*Ku%!OWguDLMhVk7*d#>QKGz@^(i$5^NFxf1Z*F|^I|u_|{AzN+vO z++(f;L!T0T-aPU3?G#eF`1#W;v0b$|EZ3_lw=Ai1(9+B+e zN~E@YmaL6pV5?|eJm`FtjP}m(Br*rTJ3F+cJ%+&uJw{j8!th!RcuYA|(b|n5Ock@= zfBk{Jk@VhY6@}+0Qpf+k+SWq;9wuo->|W&+6sW7K%XoOa1R=BMX$>=GsUg^#pB`tF zv~vv?=t9P%=FJabOL|YWKu3Jp&)_hV3LWtd&5PaXmp)LOtHLUG*B?KAbk95HX>pRJ zI-8{07N2(f4g*nGT?;1uV8VKX>#JET^Y%~xaeeEY9}CVZeM37mIQdC@ktCx#nv4F0 z+d|2mn=1a~*JOgEf~F4VZ!Wh1>ia$ZJw2yrfVOT^?x19I5Dpze)s4@b92(Z@%3?#-^rM+h!k1P3VzuIg`RS(Hhlh<3l6h9e;2tZ7vz< zx|NvJyK(%V%P>Q)8yn{q4gv}r9RM7b#UmzGJP4hiA6q&w+L>{;80n^Egg>u!go-=Q zy8a3I4y8hX*x9+K*+`7k2!V($f9;OF4*%AT4~F=Dtpy}LED6KMqmS_9u=VQi%rSUb zd%GI8M_2}IdSEUw@zDx0))-{N(&I<kmOjk9z)_6Z+A?LA2xGF4tA>gydu@ zLHj?lk9?)S4ep=FG5ie`YTHErd~>}Z#SRVq&aciO4@GA z%22zCJq+yCKe;i`C1cYzDlF9EV)Hp(0 zB_0$E|0?73)v3S{i*JTatHM}ym)y3s2}+T&vM}0bB*VSTH%TFCh0VmLP9e%E*k`Sn zuy`{J7~f(+oL{=yf@{9CQ2~?2hmB{8Z_*^f-0LGNT?IN$_;$lt*YL?sv zS0~07e*Q60y@a1ZS`U<_k)OgF?zpz%Op6K~9Cp8>rHW|F>*{jI@Si1$TVuK|!L55& z1(Hl>N`+yPK=jgA@Ew;!2!e7UxujwG0k#4%1hjIJ?;dY zOOe!kI(9Xni!QjQeKuXQiw<}ENn10{9Q0yh%q{5p+RaKxH$n6r+Hychj~|_?3jP5l zPL-t9C)k7b;69V&=O-qdcb}+JguBRb8|;lY@veKACqpGp5{^o8pIH_V%`6@4IiQ)D zVbe|BNK5W)4NO6lUsvA*fA_Tby#8L$vHROwl*5W!Ae5&~>MTuTlJk079BZYyn62V8 z!*V;|aT|f}V7z2mZ^X#wsYF!q88-q_dXrhKqsja~{e6@&?(R(wZ7SsZeSNfpzv8!7 zNT&OL#ed;*_&wp2H3F0(E7`Er7qvxhF5bry!J(0Vs(Se?-k^L|*nxZQNwfV}glKCQ zf%4xZ0o{koE%R-jt_8D$0|Tra9MJPtWDOkqao4yf2%lY0Fiy~Nh82t*#E-u3JG$k- zwy|LsN0@-RIwgZKa4kY(lF)jFi}6qDN50v@9s=m4Jn(FDDr;^r=N%5amgPAsp^5jW zDs9(jUgWMzVCYxD4c!ty0<;uStkK;yU!XXX@p#R*nBj;ZTq=ge|4PPe;b*&>PeyeS z&cUl`=COm6kPdtbf$7*&RT^6sw#CE=^p%7J)&aug%lGt@(!oR z1#QJO<8Tiare5!u8^H17hx8lbidhVwZu!GLY9+*-uz#=jtJ2VAqLP}BK6>j&s1Xg*h#l$Bisw*!NJ+hcaHb7&g9*I2>P z!>GjV8&VRIOf0d_yZjP_n+{DM?CoC&uX;IV3__fpP;#~5cH5d%YlPmu>!XvKy&i`X zS1YiV-yErQ5_)#Ev(9cCko5P$#?Lm{ZB|3Du#M%Njfm_%i9BTr6_bt%{`w#@9B@F)By(^;OxaV)8Y~Xb}HWX0F zsjrU@2te24CdUtN&mvSfCwlqvrJ3V&(gd28!zM_yX|nmeGmZuxsYXs3ONXkkRR(of zD&;#9vKkAWku0u!h4|6*<~as&*Gp336O5n8But!sSI6coqIvYi?fVhAZY2Zo<=}+F z-bGDw<4Zr`3e-`5n{z4a{_>Y6NoQZJa)(yMhhWExL+*-;fER^(M!aldX|5{|0l5bp zSET|UuD1u! zZf#mtmr;7r&G5VoOJzE^Lf|Z*?5X>NTsOIDA=}G@9k=R)Z4Tzo$|EYP=OymqDPTGn z8JzhmEsaZZWMNn)NwVh(UY>qLjq`C}q5?JxbttW+^??Cz3c4thFAE9^YD@;nkV)ka zA>b>e29zSC;61DHT)JvVBRHy!N;H(LV3WnC;3 zEWLzGLPGIDL73e28T=O(Yb~bB6%h%vr&yiu+=b|O_j`6|M?fS%& zGWY zplhGbhSK?|ZvDi~%-Z~!MU?+_013!o{&+HKit)d4Fn~IHdy9-=F)jq&b;j(}6w&?` zWP2#R40M<*h*tlT+jpA7H{pu~E(tO^oPPAvBQp=;WJN{Vact ztC7GlEoG{qpAPJDo8bA5N;)M}_vRfB-HdU6#cwxJJaC~-{=&%4Oc$GgdtoXysrK5a zZo$3|@)LGxSfy3DkTZ8_yM2zj`p}s(0Br1cLN7kmXjdtS9lPnZe+0#TvO859<8-PO z%8DgV7#yZfnY}9FMpBX8=8a%V#v_Y!qD0B1hTg&#$4Qh3Cl72+)?IOOVLO6M%5_y! zJYNsc0rA}ko83)*Ucl44y=H3E=XW9LyW?*eZZPPQ_JlLdscagk69xkZx4JFrfE!oT zXlD>s#A>@+WHOk?Hwf96?OY~N-uX?l@gD4*H~A^eYe>wEo9U#T6H!oL%2>~z=BccN zfIw)AO0rTP3O;Hev_ME$BnqsHA6|Yz7V(0nuS348%1?H}E-Sa{Ac0$Fkn^=C17B*g zNd$zaW73n3bnzKpM*Qpwk(C2(XRJ#(!4o@1bBeYPb+UxMF*a=%)ooviZjK9D^sobz zy9kFK0WZPm9=(f|>FRDlW(nMPb_U6jGy}*9@3934@RhHhEKftr*8FG_)`X9DdpcI{ zf_eZ>Ui2XTJ4z@i1!{OtPsZ21#iXtwk0e?|X9KRBzRGi^-lYRVG62NgkPx)M4-ybc z#nrtY=khpy6c;6c?vp$9=Ad3#In<@L!SQt0G&k3De0EvnY1{qmQ!q9rAICMugufvJ zzdwWlur&nn`#~6x!#~zoJc>0@)MVq+ba#pjWy%e0I`;{{nV7GY8Xgyy?Q*lwpb&X6 z_Q5O)nyTo&|B_b#6tG^rcrgddY8uPpiRS`zn)JAlz&0c_v>WRDBq1tnn2xsk_{rX1 zTE>rLUfBuV|FGCMHR!a4oiz69bmvW6*FQ=oi<F~NV2(EYz` z41M+OI{WrW8c+g4vT=cp4K1s{C}RP zI$IKCR?Wg@t*v7}emvP?Iu2j`dAh~KCH@-MJ-PSCb7hiO-rnAdJ3lcvB%_kHsG(7* zsY4yo1JPx4LwnB%uT zCNW=Gkw-rNrbGv3{-c%u9}fASP$lp`$C>|Wng8`F{EYu;!w+aT+I#Fn==8M6Kg)oW M54!?W< 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 delta 23496 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 DvTLx? From 70bf8076c35a210ac294af03d785c412adb0ae26 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 11 Jun 2017 02:58:50 -0400 Subject: [PATCH 25/65] Spiderbot Rework --- .../simple_animal/friendly/spiderbot.dm | 249 +++++------------- 1 file changed, 68 insertions(+), 181 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index bc75bd554e5..3201d95a51e 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -1,53 +1,52 @@ /mob/living/simple_animal/spiderbot - - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = 500 - - var/obj/item/device/radio/borg/radio = null - var/mob/living/silicon/ai/connected_ai = null - var/obj/item/weapon/stock_parts/cell/cell = null - var/obj/machinery/camera/camera = null - var/obj/item/device/mmi/mmi = null - var/list/req_access = list(access_robotics) //Access needed to pop out the brain. - name = "Spider-bot" - desc = "A skittering robotic friend!" + desc = "A skittering robotic friend!" //More like ultimate shitter icon = 'icons/mob/robots.dmi' icon_state = "spiderbot-chassis" icon_living = "spiderbot-chassis" icon_dead = "spiderbot-smashed" wander = 0 universal_speak = 1 - health = 10 - maxHealth = 10 + health = 40 + maxHealth = 40 + melee_damage_lower = 2 + melee_damage_upper = 2 + melee_damage_type = BURN attacktext = "shocks" - attacktext = "shocks" - melee_damage_lower = 1 - melee_damage_upper = 3 + attack_sound = "sparks" response_help = "pets" response_disarm = "shoos" response_harm = "stomps on" - - var/obj/item/held_item = null //Storage for single item they can hold. - var/emagged = 0 //IS WE EXPLODEN? - var/syndie = 0 //IS WE SYNDICAT? (currently unused) - speed = -1 //Spiderbots gotta go fast. - //pass_flags = PASSTABLE //Maybe griefy? + speed = 0 mob_size = MOB_SIZE_SMALL speak_emote = list("beeps","clicks","chirps") + + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = 500 + can_hide = 1 ventcrawler = 2 loot = list(/obj/effect/decal/cleanable/blood/gibs/robot) del_on_death = 1 -/mob/living/simple_animal/spiderbot/attackby(var/obj/item/O as obj, var/mob/user as mob, params) + var/emagged = 0 //is it getting ready to explode? + var/obj/item/device/mmi/mmi = null - if(istype(O, /obj/item/device/mmi) || istype(O, /obj/item/device/mmi/posibrain)) +/mob/living/simple_animal/spiderbot/Destroy() + if(emagged) + QDEL_NULL(mmi) + explosion(get_turf(src), -1, -1, 3, 5) + else + eject_brain() + return ..() + +/mob/living/simple_animal/spiderbot/attackby(obj/item/O, mob/living/user, params) + if(istype(O, /obj/item/device/mmi)) var/obj/item/device/mmi/B = O - if(src.mmi) //There's already a brain in it. + if(mmi) //There's already a brain in it. to_chat(user, "There's already a brain in [src]!") return if(!B.brainmob) @@ -65,47 +64,49 @@ ghost_can_reenter = 1 break if(!ghost_can_reenter) - to_chat(user, "[O] is completely unresponsive; there's no point.") + to_chat(user, "[B] is completely unresponsive; there's no point.") return if(B.brainmob.stat == DEAD) - to_chat(user, "[O] is dead. Sticking it into the frame would sort of defeat the purpose.") + to_chat(user, "[B] 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, "[O] does not seem to fit.") + if(jobban_isbanned(B.brainmob, "Cyborg") || jobban_isbanned(B.brainmob, "nonhumandept")) + to_chat(user, "[B] does not seem to fit.") return - to_chat(user, "You install [O] in [src]!") + to_chat(user, "You install [B] in [src]!") user.drop_item() - src.mmi = O - src.transfer_personality(O) + B.forceMove(src) + mmi = B + transfer_personality(B) - O.loc = src - src.update_icon() + update_icon() return 1 - if(istype(O, /obj/item/weapon/weldingtool)) + else if(iswelder(O) && user.a_intent == INTENT_HELP) var/obj/item/weapon/weldingtool/WT = O + user.changeNext_move(CLICK_CD_MELEE) if(WT.remove_fuel(0)) if(health < maxHealth) - health += pick(1,1,1,2,2,3) - if(health > maxHealth) - health = maxHealth + adjustHealth(-5) + playsound(loc, WT.usesound, 50, 1) add_fingerprint(user) - for(var/mob/W in viewers(user, null)) - W.show_message(text("[user] has spot-welded some of the damage to [src]!"), 1) + visible_message("[user] has spot-welded some of the damage to [src]!") else 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)) + else if(istype(O, /obj/item/weapon/card/id) || istype(O, /obj/item/device/pda)) if(!mmi) to_chat(user, "There's no reason to swipe your ID - the spiderbot has no brain to remove.") return 0 + if(emagged) + to_chat(user, "[src] doesn't seem to respond.") + return 0 + var/obj/item/weapon/card/id/id_card if(istype(O, /obj/item/weapon/card/id)) @@ -117,63 +118,38 @@ if(access_robotics in id_card.access) to_chat(user, "You swipe your access card and pop the brain out of [src].") eject_brain() - - if(held_item) - held_item.loc = src.loc - held_item = null - return 1 else to_chat(user, "You swipe your card, with no effect.") return 0 else - if(O.force) - var/damage = O.force - if(O.damtype == STAMINA) - damage = 0 - adjustBruteLoss(damage) - for(var/mob/M in viewers(src, null)) - if((M.client && !( M.blinded ))) - M.show_message("[src] has been attacked with the [O] by [user]. ") - else - 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("[user] gently taps [src] with the [O]. ") + ..() -/mob/living/simple_animal/spiderbot/emag_act(user as mob) +/mob/living/simple_animal/spiderbot/emag_act(mob/living/user) if(emagged) - to_chat(user, "[src] is already overloaded - better run.") + to_chat(user, "[src] doesn't seem to respond.") return 0 else emagged = 1 - 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, "Your cell seems to be outputting a lot of power...") - spawn(200) - to_chat(src, "Internal heat sensors are spiking! Something is badly wrong with your cell!") - spawn(300) - src.explode() + to_chat(user, "You short out the security protocols and rewrite [src]'s internal memory.") + to_chat(src, "You have been emagged; you are now completely loyal to [user] and their every order!") + add_logs(user, src, "emagged") + maxHealth = 60 + health = 60 + melee_damage_lower = 15 + melee_damage_upper = 15 + attack_sound = 'sound/machines/defib_zap.ogg' -/mob/living/simple_animal/spiderbot/proc/transfer_personality(var/obj/item/device/mmi/M as obj) - - src.mind = M.brainmob.mind - src.mind.key = M.brainmob.key - src.ckey = M.brainmob.ckey - src.name = "Spider-bot ([M.brainmob.name])" - -/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("[src] makes an odd warbling noise, fizzles, and explodes.") - explosion(get_turf(loc), -1, -1, 3, 5) - eject_brain() - death() +/mob/living/simple_animal/spiderbot/proc/transfer_personality(obj/item/device/mmi/M) + mind = M.brainmob.mind + mind.key = M.brainmob.key + ckey = M.brainmob.ckey + name = "Spider-bot ([M.brainmob.name])" /mob/living/simple_animal/spiderbot/proc/update_icon() if(mmi) - if(istype(mmi,/obj/item/device/mmi)) + if(istype(mmi, /obj/item/device/mmi)) icon_state = "spiderbot-chassis-mmi" icon_living = "spiderbot-chassis-mmi" if(istype(mmi, /obj/item/device/mmi/posibrain)) @@ -186,99 +162,10 @@ /mob/living/simple_animal/spiderbot/proc/eject_brain() if(mmi) - var/turf/T = get_turf(loc) - if(T) - mmi.loc = T - if(mind) mind.transfer_to(mmi.brainmob) + var/turf/T = get_turf(src) + mmi.forceMove(T) + if(mind) + mind.transfer_to(mmi.brainmob) mmi = null - src.name = "Spider-bot" - update_icon() - -/mob/living/simple_animal/spiderbot/Destroy() - eject_brain() - return ..() - -/mob/living/simple_animal/spiderbot/New() - - radio = new /obj/item/device/radio/borg(src) - camera = new /obj/machinery/camera(src) - camera.c_tag = "Spiderbot-[real_name]" - camera.network = list("SS13") - - ..() - -/mob/living/simple_animal/spiderbot/death(gibbed) - if(camera) - camera.status = 0 - - if(held_item) - held_item.forceMove(src.loc) - held_item = null - ..() - -//Cannibalized from the parrot mob. ~Zuhayr - -/mob/living/simple_animal/spiderbot/verb/drop_held_item() - set name = "Drop held item" - set category = "Spiderbot" - set desc = "Drop the item you're holding." - - if(stat) - return - - if(!held_item) - to_chat(usr, "You have nothing to drop!") - return 0 - - if(istype(held_item, /obj/item/weapon/grenade)) - 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("[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 - return 1 - - return - -/mob/living/simple_animal/spiderbot/verb/get_item() - set name = "Pick up item" - set category = "Spiderbot" - set desc = "Allows you to take a nearby small item." - - if(stat) - return -1 - - if(held_item) - to_chat(src, "You are already holding \the [held_item]") - return 1 - - var/list/items = list() - for(var/obj/item/I in view(1,src)) - if(I.loc != src && I.w_class <= WEIGHT_CLASS_SMALL) - items.Add(I) - - var/obj/selection = input("Select an item.", "Pickup") in items - - if(selection) - for(var/obj/item/I in view(1, src)) - if(selection == I) - held_item = selection - selection.loc = src - 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, "\The [selection] is too far away.") - return 0 - - to_chat(src, "There is nothing of interest to take.") - return 0 - -/mob/living/simple_animal/spiderbot/examine(mob/user) - ..(user) - if(src.held_item) - to_chat(user, "It is carrying \a [src.held_item] [bicon(src.held_item)].") + name = "Spider-bot" + update_icon() \ No newline at end of file From 4dd13f00749a43478ff246160e29db7ef2085a77 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 11 Jun 2017 03:12:44 -0400 Subject: [PATCH 26/65] tweak --- code/modules/mob/living/simple_animal/friendly/spiderbot.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 3201d95a51e..bf648e537ab 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -34,6 +34,7 @@ var/emagged = 0 //is it getting ready to explode? var/obj/item/device/mmi/mmi = null + var/emagged_master = null //for administrative purposes, to see who emagged the spiderbot; also for a holder for if someone emags an empty frame first then inserts an MMI. /mob/living/simple_animal/spiderbot/Destroy() if(emagged) @@ -134,6 +135,7 @@ emagged = 1 to_chat(user, "You short out the security protocols and rewrite [src]'s internal memory.") to_chat(src, "You have been emagged; you are now completely loyal to [user] and their every order!") + emagged_master = user.name add_logs(user, src, "emagged") maxHealth = 60 health = 60 @@ -146,6 +148,8 @@ mind.key = M.brainmob.key ckey = M.brainmob.ckey name = "Spider-bot ([M.brainmob.name])" + if(emagged) + to_chat(src, "You have been emagged; you are now completely loyal to [emagged_master] and their every order!") /mob/living/simple_animal/spiderbot/proc/update_icon() if(mmi) From 536ddad052341173d61d52e61e8d1e7349e955c6 Mon Sep 17 00:00:00 2001 From: MarcellusPye Date: Sun, 11 Jun 2017 19:17:32 +1200 Subject: [PATCH 27/65] Hear formatting fix (#7469) * Initial Attempt * Fixed ending formatting * Make it work Screw byond strings * Switches from camelcase to lowercase * Uses strip_html_properly --- code/modules/mob/hear_say.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 568033f3606..062e1f4d44e 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -168,6 +168,7 @@ /mob/proc/hear_sleep(var/message) var/heard = "" if(prob(15)) + message = strip_html_properly(message) var/list/punctuation = list(",", "!", ".", ";", "?") var/list/messages = splittext(message, " ") var/R = rand(1, messages.len) From ef227542e0037fa240ff2a3f5e78a62926f7df23 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 11 Jun 2017 21:03:21 -0400 Subject: [PATCH 28/65] typofix --- .../structures/crates_lockers/closets/secure/chaplain.dm | 2 +- code/modules/clothing/head/jobs.dm | 4 ++-- code/modules/clothing/suits/jobs.dm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm index 26272d66ac2..d7fdab50e5a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm @@ -17,7 +17,7 @@ new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) new /obj/item/clothing/suit/hooded/monk(src) new /obj/item/clothing/suit/witchhunter(src) - new /obj/item/clothing/head/witchunter_hat(src) + new /obj/item/clothing/head/witchhunter_hat(src) new /obj/item/clothing/suit/holidaypriest(src) new /obj/item/clothing/under/wedding/bride_white(src) new /obj/item/weapon/storage/backpack/cultpack (src) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 5fff5ca3b7d..4a52555bf5f 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -62,8 +62,8 @@ flags = BLOCKHAIR flags_cover = HEADCOVERSEYES -/obj/item/clothing/head/witchunter_hat - name = "witchunter hat" +/obj/item/clothing/head/witchhunter_hat + name = "witchhunter hat" desc = "This hat saw much use back in the day." icon_state = "witchhunterhat" item_state = "witchhunterhat" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index f28c87109fc..5d200c9d4f8 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -113,7 +113,7 @@ allowed = list(/obj/item/weapon/storage/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) /obj/item/clothing/suit/witchhunter - name = "witchunter garb" + name = "witchhunter garb" desc = "Dosen't weigh the same a a duck." icon_state = "witchhunter" item_state = "witchhunter" From 256d6643d3e1355c90f623e834a37f48ffdc9920 Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Mon, 12 Jun 2017 21:39:33 -0400 Subject: [PATCH 29/65] Un-hides emergency cabinet. It was hidden behind a time display. Now it isn't. Resolves #7527. --- _maps/map_files/cyberiad/cyberiad.dmm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index afb8adfa849..f2be8c0e0d2 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -1720,6 +1720,7 @@ "aHd" = (/obj/structure/stool/bed,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aHe" = (/obj/machinery/camera{c_tag = "Fore Primary Hallway West"; dir = 4; network = list("SS13")},/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) "aHf" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore) +"aHg" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "aHh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) "aHi" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/twohanded/required/kirbyplants,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber) "aHj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber) @@ -2475,7 +2476,7 @@ "aVF" = (/obj/machinery/camera{c_tag = "Bar Storage"; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/reagentgrinder,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aVG" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aVH" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/weapon/storage/fancy/candle_box/eternal,/obj/item/weapon/storage/fancy/candle_box/eternal,/obj/item/weapon/storage/fancy/candle_box/eternal,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aVI" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"aVI" = (/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "aVJ" = (/obj/effect/decal/cleanable/blood/oil/streak,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aVK" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "aVL" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/fitness) @@ -2609,7 +2610,6 @@ "aYj" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/bridge) "aYk" = (/obj/machinery/door/window/eastright{name = "Coroner Office"; req_access_txt = "5"},/turf/simulated/floor/plasteel,/area/medical/morgue) "aYl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2) -"aYm" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "aYn" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aYo" = (/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes/stokcubes,/obj/item/weapon/storage/box/monkeycubes/neaeracubes,/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes/wolpincubes,/obj/item/weapon/storage/box/monkeycubes/farwacubes,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{tag = "icon-whitepurple (SOUTHEAST)"; icon_state = "whitepurple"; dir = 6},/area/medical/genetics) "aYp" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/computer/card/minor/rd,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) @@ -9114,7 +9114,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKybKxbKpaQZaQZaQZbndaSfaSfbCfbKCbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbKHbzFbKIbKKbKJbKMbKLbKObKNbKQbKPbKSbKRbKVbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbFObLrbLjbLsbLlbLmbLtbLobEobLvbLubLxbLwbLzbLybLBbLAbGabLDbEtaTHaTLaTKaTNaTMbHQaTObHQaSVbIbbHUbHQbIbbEubIebGqbLNbLEbLPbLSbLQbLIbLTbLKbLLbLMbLUbLObLVbEAbLXbLRbLYbEDbLZbMfbMabIpbLWbMgbEDbKubGGbMhbGHaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbMjbMibKpaSeaSebMbbMcaSebMdbCfbMebIBbMlbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMtbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObNdbEobMXbMYbMZbNabNfbNebNjbNgbNlbNkbNhbNibNnbNmbNqbNpbNrbLFaTQaTPbEtaTRaTTaTSaTUaSVbNAaTVaTWbGvbEubNKbNzbNLbNBbNBbNMbNDbNEbNFbNGbNHbNIbNJbNObNNbEAbNQbLRbNRbEDbNSbNPbNTbIpbIpbNUbEDbIzbGGbNWbGHaaaaaaaaaaaaaabbNXbNZbNVbNZbNVbNZbOaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbOgbKzbOibOhbOhbOhbOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbOvbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbOXbFObOYbEobOQbOQbORbPabOTbOUbOVbOWbPcbPbbOZbOZbPebPdbPhbPfbEtbNoaUOaTYbEtbEubPgbEubEuaUPbEubEubEubEubPrbPmbGqbPvbLEbLPbPxbNBbNEbPnbPobPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDbKubPAbGHbGHaaaaaaaaaaaaaabbPKbPCbPDbPEbPFbPGbPKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbPUbPObPPbPQbPQbPQbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebPXbBnbBnbPYbDXbOwbOubQhbQfbQbbQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObQAbEobQDbQBbQGbQEbQHbQCbQJbQIbQFbQFbQMbQKbQFbQFbQObQNbQPbQLaVyaVxbQTbQSaWIaVIaYmaYlaWObQVbRebQXbRgbRfbGqbRabRbbRcbRjbRibIabRkbPobPobRlbRhbPqbRmbEAbRnbRnbRobEDbRpbRybRqbRzbIpbREbEDbKubRFbGHaaaaaaaaaaaaaaaaabbRrbRsbPDbPFbPDbRtbNVaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbPUbPObPPbPQbPQbPQbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebPXbBnbBnbPYbDXbOwbOubQhbQfbQbbQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObQAbEobQDbQBbQGbQEbQHbQCbQJbQIbQFbQFbQMbQKbQFbQFbQObQNbQPbQLaVyaVxbQTbQSaWIaHgaVIaYlaWObQVbRebQXbRgbRfbGqbRabRbbRcbRjbRibIabRkbPobPobRlbRhbPqbRmbEAbRnbRnbRobEDbRpbRybRqbRzbIpbREbEDbKubRFbGHaaaaaaaaaaaaaaaaabbRrbRsbPDbPFbPDbRtbNVaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbRSbRRbRTbRRbRRbRRbRRbRUbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbRObRPbRPbRQbNYbRYbRXbRZbRVbRWbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQAbEobSqbSnbSnbSobSrbOUbStbSsbSvbSubSxbSwbSybSvbSAbSzbSDbSBaWSaWRbSGbSGbSEbSHbSJbSIbSLbSKbSNbSMbSPbSObSRbSQbSQbSSbSUbSTbIabSWbIdbIdbSXbSVbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDbTkbPtbThbTibTibTibTibTibThbPKbPFbPDbPFbPFbPGbPKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbTubKzbPPbPQbPQbPQbKzbKzbJfbKAbTsbTxbxbbTAbBnbTBbQdbTvbDXbTwbBnbBobBnbPWbOwbTybTzbRVbRWbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObQAbNebTZbTYbUbbUabUcbOUbUebUdbUibUhbUfbUgbUkbUjbUmbUlbUobUnbUqbUpbUsbUrbUubUtbUybUvbUDbQVbUwbQXbUxbUGbGrbUzbUAbUBbUCbUCbIabUIbUEbUFbIabUJbPqbUHbIabUKbUMbULbUObUNbUQbUPbUSbURbUUbUTbUWbUVbUYbUXbUXbUZbVbbVabQabVcbNZbNVbVdbNVbNZbVjaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbVobKzbPPbKzbKzbKzbKzbKzbJfbKAbTsbVpbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbRWbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObVPbEobOUbVQbOQbVSbVRbOUbUebVUbVTbVVbVXbVWbVYbVTbUebVZbWebWabWbbWabWcbWabWdbWdbWhbWfbWgbWgbWgbWmbWgbWgbWibWibWjbWkbWjbWjbIabIabIabIabIabWlbWnbLIbIabWobWrbWpbWqbWqbWvbWsbWtbWubWxbWwbWzbWybWBbWAbWAbWCbWEbWDbThbQabQabQabWFbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From b3cf6de12efa13542c7b47a66ecc79bcf4b73ec8 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 12 Jun 2017 23:58:59 -0400 Subject: [PATCH 30/65] Automatic changelog generation for PR #7539 [ci skip] --- html/changelogs/AutoChangeLog-pr-7539.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7539.yml diff --git a/html/changelogs/AutoChangeLog-pr-7539.yml b/html/changelogs/AutoChangeLog-pr-7539.yml new file mode 100644 index 00000000000..2d82f9dd58e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7539.yml @@ -0,0 +1,4 @@ +author: "KasparoVy" +delete-after: True +changes: + - bugfix: "Moves a hidden emergency locker to where it is visible." From d9192a17410ee0cad8a1a4c1d8d20b873c140887 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 13 Jun 2017 01:36:11 -0400 Subject: [PATCH 31/65] Automatic changelog generation for PR #7466 [ci skip] --- html/changelogs/AutoChangeLog-pr-7466.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7466.yml diff --git a/html/changelogs/AutoChangeLog-pr-7466.yml b/html/changelogs/AutoChangeLog-pr-7466.yml new file mode 100644 index 00000000000..1d8d9336859 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7466.yml @@ -0,0 +1,5 @@ +author: "Vivalas" +delete-after: True +changes: + - rscadd: "Brig timers will now update the records of those who are imprisoned in their cell, as long as their name is entered correctly." + - rscadd: "Sentences and arresting officers are announced over the security channel by brig timers, as well as the names of those who end timers manually." From 5131f91725019b95d43ef2bf55d2f60d6a225ca9 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 13 Jun 2017 01:46:13 -0400 Subject: [PATCH 32/65] Automatic changelog compile, [ci skip] --- html/changelog.html | 11 +++++++++++ html/changelogs/.all_changelog.yml | 8 ++++++++ html/changelogs/AutoChangeLog-pr-7466.yml | 5 ----- html/changelogs/AutoChangeLog-pr-7539.yml | 4 ---- 4 files changed, 19 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-7466.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7539.yml diff --git a/html/changelog.html b/html/changelog.html index 8321bac3afd..9af10b246e0 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,17 @@ --> -{{else}} +{{else}} {{if data.downloadname}}

Download Running

@@ -75,7 +75,7 @@ {{if data.hackedavailable}}

UNKNOWN software repository

- Please note that NanoTrasen does not recommend download of software from non-official servers. + Please note that Nanotrasen does not recommend download of software from non-official servers. {{for data.hacked_programs}}
@@ -99,4 +99,4 @@ {{/if}} {{/if}} {{/if}} -
NTOS v2.0.4b Copyright NanoTrasen 2557 - 2559 \ No newline at end of file +
NTOS v2.0.4b Copyright Nanotrasen 2557 - 2559 From 86d8d288fac8a7bfda2754e4a9dd254ff580b7ad Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 14 Jun 2017 08:06:31 +0100 Subject: [PATCH 41/65] Fixes more typos and missing full stops in descs... --- code/modules/spacepods/equipment.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/spacepods/equipment.dm b/code/modules/spacepods/equipment.dm index d1f78ffdf28..dcdbe564657 100644 --- a/code/modules/spacepods/equipment.dm +++ b/code/modules/spacepods/equipment.dm @@ -104,7 +104,7 @@ /obj/item/device/spacepod_equipment/weaponry/laser name = "laser system" - desc = "A weak laser system for space pods, fires concentrated bursts of energy" + desc = "A weak laser system for space pods, fires concentrated bursts of energy." icon_state = "weapon_laser" projectile_type = /obj/item/projectile/beam shot_cost = 600 @@ -113,7 +113,7 @@ // MINING LASERS /obj/item/device/spacepod_equipment/weaponry/mining_laser_basic name = "weak mining laser system" - desc = "A weak mining laser system for space pods, fires bursts of energy that cut through rock" + desc = "A weak mining laser system for space pods, fires bursts of energy that cut through rock." icon = 'icons/goonstation/pods/ship.dmi' icon_state = "pod_taser" projectile_type = /obj/item/projectile/kinetic/pod @@ -123,7 +123,7 @@ /obj/item/device/spacepod_equipment/weaponry/mining_laser name = "mining laser system" - desc = "A mining laser system for space pods, fires bursts of energy that cut through rock" + desc = "A mining laser system for space pods, fires bursts of energy that cut through rock." icon = 'icons/goonstation/pods/ship.dmi' icon_state = "pod_m_laser" projectile_type = /obj/item/projectile/kinetic/pod/regular @@ -133,7 +133,7 @@ /obj/item/device/spacepod_equipment/weaponry/mining_laser_hyper name = "enhanced mining laser system" - desc = "An enhanced mining laser system for space pods, fires bursts of energy that cut through rock" + desc = "An enhanced mining laser system for space pods, fires bursts of energy that cut through rock." icon = 'icons/goonstation/pods/ship.dmi' icon_state = "pod_w_laser" projectile_type = /obj/item/projectile/kinetic/pod/enhanced @@ -226,15 +226,15 @@ // Passenger Seat /obj/item/device/spacepod_equipment/sec_cargo/chair - name = "passanger seat" - desc = "A passenger seat for a spacepod" + name = "passenger seat" + desc = "A passenger seat for a spacepod." icon_state = "sec_cargo_chair" occupant_mod = 1 // Loot Box /obj/item/device/spacepod_equipment/sec_cargo/loot_box name = "loot box" - desc = "A small compartment to store valuables" + desc = "A small compartment to store valuables." icon_state = "sec_cargo_loot" storage_mod = list("slots" = 7, "w_class" = 14) From cf2162720dd24dee22a863873f03c8cf68e23436 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 14 Jun 2017 08:13:26 +0100 Subject: [PATCH 42/65] Typos, including fixes Soylent Viridians typo --- code/game/machinery/computer/HolodeckControl.dm | 2 +- code/modules/food_and_drinks/food/snacks.dm | 4 ++-- code/modules/food_and_drinks/recipes/recipes_microwave.dm | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index ba7aadc3054..72dcbb7deb6 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -546,7 +546,7 @@ power_channel = ENVIRON /obj/machinery/readybutton/attack_ai(mob/user as mob) - to_chat(user, "The station AI is not to interact with these devices") + to_chat(user, "The station AI is not to interact with these devices.") return /obj/machinery/readybutton/attackby(obj/item/weapon/W as obj, mob/user as mob, params) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index cbb049c883c..a34b5e2d1b3 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -788,8 +788,8 @@ filling_color = "#B8E6B5" list_reagents = list("nutriment" = 10, "vitamin" = 1) -/obj/item/weapon/reagent_containers/food/snacks/soylenviridians - name = "Soylen Virdians" +/obj/item/weapon/reagent_containers/food/snacks/soylentviridians + name = "Soylent Virdians" desc = "Not made of people. Honest." //Actually honest for once. icon_state = "soylent_yellow" trash = /obj/item/trash/waffles diff --git a/code/modules/food_and_drinks/recipes/recipes_microwave.dm b/code/modules/food_and_drinks/recipes/recipes_microwave.dm index 2fe0ccc28dd..24eeb7e0148 100644 --- a/code/modules/food_and_drinks/recipes/recipes_microwave.dm +++ b/code/modules/food_and_drinks/recipes/recipes_microwave.dm @@ -161,10 +161,10 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm -/datum/recipe/microwave/soylenviridians +/datum/recipe/microwave/soylentviridians reagents = list("flour" = 10) items = list(/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans) - result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians + result = /obj/item/weapon/reagent_containers/food/snacks/soylentviridians /datum/recipe/microwave/soylentgreen reagents = list("flour" = 10) From 767c156c61abb266ac2dc5f36fa9b169d96c07e6 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 14 Jun 2017 08:43:50 +0100 Subject: [PATCH 43/65] More description pedentry --- .../modules/food_and_drinks/food/condiment.dm | 4 +- code/modules/food_and_drinks/food/seafood.dm | 8 ++-- code/modules/food_and_drinks/food/snacks.dm | 38 +++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index d7ffca96843..dd31c502222 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -198,7 +198,7 @@ /obj/item/weapon/reagent_containers/food/condiment/pack name = "condiment pack" - desc = "A small plastic pack with condiments to put on your food" + desc = "A small plastic pack with condiments to put on your food." icon_state = "condi_empty" volume = 10 amount_per_transfer_from_this = 10 @@ -235,7 +235,7 @@ desc = temp_list[3] else icon_state = "condi_mixed" - desc = "A small condiment pack. The label says it contains [originalname]" + desc = "A small condiment pack. The label says it contains [originalname]." else icon_state = "condi_empty" desc = "A small condiment pack. It is empty." diff --git a/code/modules/food_and_drinks/food/seafood.dm b/code/modules/food_and_drinks/food/seafood.dm index 0a219ee2de6..a81483974b4 100644 --- a/code/modules/food_and_drinks/food/seafood.dm +++ b/code/modules/food_and_drinks/food/seafood.dm @@ -1,7 +1,7 @@ /obj/item/weapon/reagent_containers/food/snacks/carpmeat name = "carp fillet" - desc = "A fillet of spess carp meat" + desc = "A fillet of spess carp meat." icon = 'icons/obj/food/seafood.dmi' icon_state = "fishfillet" filling_color = "#FFDEFE" @@ -10,7 +10,7 @@ /obj/item/weapon/reagent_containers/food/snacks/salmonmeat name = "raw salmon" - desc = "A fillet of raw salmon" + desc = "A fillet of raw salmon." icon = 'icons/obj/food/seafood.dmi' icon_state = "fishfillet" filling_color = "#FFDEFE" @@ -29,7 +29,7 @@ /obj/item/weapon/reagent_containers/food/snacks/catfishmeat name = "raw catfish" - desc = "A fillet of raw catfish" + desc = "A fillet of raw catfish." icon = 'icons/obj/food/seafood.dmi' icon_state = "fishfillet" filling_color = "#FFDEFE" @@ -183,4 +183,4 @@ icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Hokki" bitesize = 3 - list_reagents = list("nutriment" = 2) \ No newline at end of file + list_reagents = list("nutriment" = 2) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index a34b5e2d1b3..662465f5361 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -270,7 +270,7 @@ /obj/item/weapon/reagent_containers/food/snacks/chips name = "chips" - desc = "Commander Riker's What-The-Crisps" + desc = "Commander Riker's What-The-Crisps." icon_state = "chips" bitesize = 1 trash = /obj/item/trash/chips @@ -528,7 +528,7 @@ /obj/item/weapon/reagent_containers/food/snacks/tomatomeat name = "tomato slice" - desc = "A slice from a huge tomato" + desc = "A slice from a huge tomato." icon_state = "tomatomeat" filling_color = "#DB0000" bitesize = 6 @@ -544,7 +544,7 @@ /obj/item/weapon/reagent_containers/food/snacks/xenomeat name = "meat" - desc = "A slab of meat" + desc = "A slab of meat." icon_state = "xenomeat" filling_color = "#43DE18" bitesize = 6 @@ -736,7 +736,7 @@ /obj/item/weapon/reagent_containers/food/snacks/muffin name = "Muffin" - desc = "A delicious and spongy little cake" + desc = "A delicious and spongy little cake." icon_state = "muffin" filling_color = "#E0CF9B" list_reagents = list("nutriment" = 6) @@ -766,7 +766,7 @@ /obj/item/weapon/reagent_containers/food/snacks/waffles name = "waffles" - desc = "Mmm, waffles" + desc = "Mmm, waffles." icon_state = "waffles" trash = /obj/item/trash/waffles filling_color = "#E6DEB5" @@ -947,7 +947,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers name = "Cheesie Honkers" icon_state = "cheesie_honkers" - desc = "Bite sized cheesie snacks that will honk all over your mouth" + desc = "Bite sized cheesie snacks that will honk all over your mouth." trash = /obj/item/trash/cheesie filling_color = "#FFA305" junkiness = 25 @@ -1059,7 +1059,7 @@ /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff name = "Spacy Liberty Duff" - desc = "Jello gelatin, from Alfred Hubbard's cookbook" + desc = "Jello gelatin, from Alfred Hubbard's cookbook." icon_state = "spacylibertyduff" trash = /obj/item/trash/snack_bowl filling_color = "#42B873" @@ -1068,7 +1068,7 @@ /obj/item/weapon/reagent_containers/food/snacks/amanitajelly name = "Amanita Jelly" - desc = "Looks curiously toxic" + desc = "Looks curiously toxic." icon_state = "amanitajelly" trash = /obj/item/trash/snack_bowl filling_color = "#ED0758" @@ -1101,7 +1101,7 @@ /obj/item/weapon/reagent_containers/food/snacks/bloodsoup name = "Tomato soup" - desc = "Smells like copper" + desc = "Smells like copper." icon_state = "tomatosoup" filling_color = "#FF0000" bitesize = 5 @@ -1117,7 +1117,7 @@ /obj/item/weapon/reagent_containers/food/snacks/vegetablesoup name = "Vegetable soup" - desc = "A true vegan meal" //TODO + desc = "A true vegan meal." //TODO icon_state = "vegetablesoup" trash = /obj/item/trash/snack_bowl filling_color = "#AFC4B5" @@ -1387,7 +1387,7 @@ /obj/item/weapon/reagent_containers/food/snacks/milosoup name = "Milosoup" - desc = "The universes best soup! Yum!!!" + desc = "The universe's best soup! Yum!!!" icon_state = "milosoup" trash = /obj/item/trash/snack_bowl bitesize = 5 @@ -1443,7 +1443,7 @@ /obj/item/weapon/reagent_containers/food/snacks/spesslaw name = "Spesslaw" - desc = "A lawyers favourite" + desc = "A lawyers favourite." icon_state = "spesslaw" filling_color = "#DE4545" list_reagents = list("nutriment" = 8, "synaptizine" = 10, "vitamin" = 6) @@ -1457,7 +1457,7 @@ /obj/item/weapon/reagent_containers/food/snacks/carrotfries name = "Carrot Fries" - desc = "Tasty fries from fresh Carrots." + desc = "Tasty fries from fresh carrots." icon_state = "carrotfries" trash = /obj/item/trash/plate filling_color = "#FAA005" @@ -1733,7 +1733,7 @@ /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice name = "Cheese Cake slice" - desc = "Slice of pure cheestisfaction" + desc = "Slice of pure cheestisfaction." icon_state = "cheesecake_slice" trash = /obj/item/trash/plate filling_color = "#FAF7AF" @@ -1808,7 +1808,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake name = "Chocolate Cake" - desc = "A cake with added chocolate" + desc = "A cake with added chocolate." icon_state = "chocolatecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice slices_num = 5 @@ -1904,7 +1904,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake name = "Apple Cake" - desc = "A cake centred with Apple" + desc = "A cake centerd with Apple." icon_state = "applecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice slices_num = 5 @@ -1999,7 +1999,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza name = "Mushroompizza" - desc = "Very special pizza" + desc = "Very special pizza." icon_state = "mushroompizza" slice_path = /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice slices_num = 6 @@ -2013,7 +2013,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza name = "Vegetable pizza" - desc = "No one of Tomato Sapiens were harmed during making this pizza" + desc = "No one of Tomato Sapiens were harmed during making this pizza." icon_state = "vegetablepizza" slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice slices_num = 6 @@ -2021,7 +2021,7 @@ /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice name = "Vegetable pizza slice" - desc = "A slice of the most green pizza of all pizzas not containing green ingredients " + desc = "A slice of the most green pizza of all pizzas not containing green ingredients." icon_state = "vegetablepizzaslice" filling_color = "#BAA14C" From 0560c5aa253236a29a0c3f4644c22884a7749eb9 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 14 Jun 2017 09:06:03 +0100 Subject: [PATCH 44/65] Additonal tweaks --- code/game/gamemodes/vampire/vampire_powers.dm | 2 +- code/modules/clothing/suits/jobs.dm | 2 +- code/modules/food_and_drinks/food/snacks.dm | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index 19b32c3abf3..c66a0304316 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -215,7 +215,7 @@ stat_allowed = 1 /obj/effect/proc_holder/spell/vampire/mob_aoe/glare/cast(list/targets, mob/user = usr) - user.visible_message("[user]'s eyes emit a blinding flash!") + user.visible_message("[user]'s eyes emit a blinding flash!") if(istype(user:glasses, /obj/item/clothing/glasses/sunglasses/blindfold)) to_chat(user, "You're blindfolded!") return diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 3412761175e..cd6a7de6ff1 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -253,7 +253,7 @@ /obj/item/clothing/suit/storage/ntrep name = "\improper Nanotrasen Representative jacket" - desc = "A fancy black jacket, standard issue to Nanotrasen Represenatives." + desc = "A fancy black jacket; standard issue to Nanotrasen Representatives." icon_state = "ntrep" item_state = "ntrep" blood_overlay_type = "coat" diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 662465f5361..bc8d0928b7e 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -1443,7 +1443,7 @@ /obj/item/weapon/reagent_containers/food/snacks/spesslaw name = "Spesslaw" - desc = "A lawyers favourite." + desc = "A lawyer's favourite." icon_state = "spesslaw" filling_color = "#DE4545" list_reagents = list("nutriment" = 8, "synaptizine" = 10, "vitamin" = 6) @@ -1904,7 +1904,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake name = "Apple Cake" - desc = "A cake centerd with Apple." + desc = "A cake centered with Apple." icon_state = "applecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice slices_num = 5 From 1f84807adbbf5dec45cd515b07954afea826a382 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 14 Jun 2017 09:50:47 +0100 Subject: [PATCH 45/65] dasvidaniya \the --- code/game/objects/structures/displaycase.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index f1d05d7012d..16d77587274 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -320,8 +320,8 @@ var/global/list/captain_display_cases = list() to_chat(src, "[bicon(src)] \The [src] is empty!") else user.changeNext_move(CLICK_CD_MELEE) - user.visible_message("[user.name] gently runs \his hands over \the [src] in appreciation of its contents.", \ - "You gently run your hands over \the [src] in appreciation of its contents.", \ + user.visible_message("[user.name] gently runs \his hands over [src] in appreciation of its contents.", \ + "You gently run your hands over [src] in appreciation of its contents.", \ "You hear someone streaking glass with their greasy hands.") #undef DISPLAYCASE_FRAME_CIRCUIT From e6000d5e2bb8335c25b917310e924a96906dc7d7 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 15 Jun 2017 01:57:50 +0100 Subject: [PATCH 46/65] Fixes siemens_coefficient oversight --- code/modules/mob/living/simple_animal/tribbles.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/tribbles.dm b/code/modules/mob/living/simple_animal/tribbles.dm index 78b28abf9f8..dfe4715edd5 100644 --- a/code/modules/mob/living/simple_animal/tribbles.dm +++ b/code/modules/mob/living/simple_animal/tribbles.dm @@ -242,7 +242,6 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, item_state = "furgloves" transfer_prints = TRUE transfer_blood = TRUE - siemens_coefficient = 0 // Equivalent to a winter coat's hood /obj/item/clothing/head/furcap From 72853dffd7c3c715cb35b663eb9b36632da1de8b Mon Sep 17 00:00:00 2001 From: Alffd Date: Wed, 14 Jun 2017 22:24:31 -0400 Subject: [PATCH 47/65] Makes kittens visible when resting --- icons/mob/pets.dmi | Bin 64769 -> 65704 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/pets.dmi b/icons/mob/pets.dmi index c47ca000f0c911596a374694737f561c19224ef7..4f46db21354aff38d94a9d29cd6e19d2be5b4cd3 100644 GIT binary patch delta 20346 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 Date: Thu, 15 Jun 2017 12:21:43 +0100 Subject: [PATCH 48/65] Stops multi-windoor creation --- code/game/objects/structures/windoor_assembly.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 0c273e7f1fa..a811ff35d1b 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -247,6 +247,9 @@ obj/structure/windoor_assembly/Destroy() if(do_after(user, 40 * W.toolspeed, target = src)) if(src.loc && src.electronics) + for(var/obj/machinery/door/window/WD in src.loc) + if(WD.dir == src.dir) + return density = 1 //Shouldn't matter but just incase to_chat(user, "You finish the windoor!") From b5aef382c959d9b679673064f5e9a8fe31946e1f Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Thu, 15 Jun 2017 23:06:01 -0400 Subject: [PATCH 49/65] Automatic changelog generation for PR #7558 [ci skip] --- html/changelogs/AutoChangeLog-pr-7558.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7558.yml diff --git a/html/changelogs/AutoChangeLog-pr-7558.yml b/html/changelogs/AutoChangeLog-pr-7558.yml new file mode 100644 index 00000000000..c354d7d5e7c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7558.yml @@ -0,0 +1,4 @@ +author: "Alffd" +delete-after: True +changes: + - bugfix: "Makes kittens visible when resting" From 46a1e3a2bd39f763317a48da94cbca240a8c2fc6 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 01:34:59 -0400 Subject: [PATCH 50/65] Automatic changelog compile, [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-7558.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-7558.yml diff --git a/html/changelog.html b/html/changelog.html index 9af10b246e0..a6b99ad01e1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,12 @@ -->
+

16 June 2017

+

Alffd updated:

+
    +
  • Makes kittens visible when resting
  • +
+

13 June 2017

KasparoVy updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 441df3d78e7..cc85e4b005d 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4915,3 +4915,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. their cell, as long as their name is entered correctly. - rscadd: Sentences and arresting officers are announced over the security channel by brig timers, as well as the names of those who end timers manually. +2017-06-16: + Alffd: + - bugfix: Makes kittens visible when resting diff --git a/html/changelogs/AutoChangeLog-pr-7558.yml b/html/changelogs/AutoChangeLog-pr-7558.yml deleted file mode 100644 index c354d7d5e7c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7558.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Alffd" -delete-after: True -changes: - - bugfix: "Makes kittens visible when resting" From fa0a5248eca76238887670fcfca00ffc4fc6a6a6 Mon Sep 17 00:00:00 2001 From: tigercat2000 Date: Fri, 16 Jun 2017 05:10:52 -0700 Subject: [PATCH 51/65] Fix languages with apostrophes being unable to be made default --- code/modules/mob/language.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index fb6d5ef5948..36d84b0f72d 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -639,7 +639,7 @@ if(L == default_language) . += "[L.name] (:[L.key]) - default - reset
    [L.desc]

    " else - . += "[L.name] (:[L.key]) - set default
    [L.desc]

    " + . += "[L.name] (:[L.key]) - set default
    [L.desc]

    " /mob/verb/check_languages() set name = "Check Known Languages" From f7aa9a4be1dc34521ff4a08b759635dbc0a3b44b Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 15:49:55 -0400 Subject: [PATCH 52/65] Automatic changelog generation for PR #7545 [ci skip] --- html/changelogs/AutoChangeLog-pr-7545.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7545.yml diff --git a/html/changelogs/AutoChangeLog-pr-7545.yml b/html/changelogs/AutoChangeLog-pr-7545.yml new file mode 100644 index 00000000000..4d1ee423ca7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7545.yml @@ -0,0 +1,4 @@ +author: "FreeStylaLT" +delete-after: True +changes: + - tweak: "Changed Araneus' spawn location so he wouldn't break tables at round-start anymore" From 66b5b33d2b6051351e142e1d809f49aacf4d7bf0 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 15:51:17 -0400 Subject: [PATCH 53/65] Automatic changelog generation for PR #7550 [ci skip] --- html/changelogs/AutoChangeLog-pr-7550.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7550.yml diff --git a/html/changelogs/AutoChangeLog-pr-7550.yml b/html/changelogs/AutoChangeLog-pr-7550.yml new file mode 100644 index 00000000000..aad9cd139ad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7550.yml @@ -0,0 +1,6 @@ +author: "Purpose2" +delete-after: True +changes: + - bugfix: "Soylen Viridians are now correctly Soylent Viridians. Nanotrasen will still not confirm rumours of the contents of these nor Soylent Greens however." + - bugfix: "Nanotrasen is now more consistent with brand management." + - bugfix: "An array of typos, grammatical tweaks and other pedantic fixes." From 66a9051c8a9a6a32949132a358e159c311805aaa Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 16:06:57 -0400 Subject: [PATCH 54/65] Automatic changelog generation for PR #7549 [ci skip] --- html/changelogs/AutoChangeLog-pr-7549.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7549.yml diff --git a/html/changelogs/AutoChangeLog-pr-7549.yml b/html/changelogs/AutoChangeLog-pr-7549.yml new file mode 100644 index 00000000000..491d71a3f50 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7549.yml @@ -0,0 +1,4 @@ +author: "Fethas" +delete-after: True +changes: + - tweak: "Public Wiggler Tail" From 07fac4271202f893cc3800b7938fe9f044d21863 Mon Sep 17 00:00:00 2001 From: alexkar598 Date: Fri, 16 Jun 2017 16:08:02 -0400 Subject: [PATCH 55/65] Fixes issue 7505 (Rename Spagetti to Spaghetti) (#7516) * rename spagetti to spaghetti * Rename Spagetti to Spaghetti in the dmi file too * trying to fix my things should learn to use git proporly one day * commit --- .../food_and_drinks/food/customizables.dm | 6 +++--- code/modules/food_and_drinks/food/snacks.dm | 20 +++++++++--------- .../kitchen_machinery/processor.dm | 2 +- .../recipes/recipes_microwave.dm | 16 +++++++------- .../carbon/human/interactive/functions.dm | 4 ++-- icons/obj/food/food.dmi | Bin 126868 -> 126869 bytes 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 7087410e6c4..b055711c928 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -21,7 +21,7 @@ ..() -/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/attackby(obj/item/W, mob/user, params) +/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta/S = new(get_turf(user)) S.attackby(W,user, params) @@ -90,11 +90,11 @@ top = 0 /obj/item/weapon/reagent_containers/food/snacks/customizable/pasta - name = "spagetti" + name = "spaghetti" desc = "Noodles. With stuff. Delicious." icon_state = "pasta_bot" baseicon = "pasta_bot" - basename = "spagetti" + basename = "spaghetti" add_overlays = 0 top = 0 diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index bc8d0928b7e..f98f870ed79 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -1013,10 +1013,10 @@ filling_color = "#C4BF76" list_reagents = list("nutriment" = 2) -/obj/item/weapon/reagent_containers/food/snacks/spagetti - name = "Spagetti" +/obj/item/weapon/reagent_containers/food/snacks/spaghetti + name = "Spaghetti" desc = "A bundle of raw spaghetti." - icon_state = "spagetti" + icon_state = "spaghetti" filling_color = "#EDDD00" list_reagents = list("nutriment" = 1, "vitamin" = 1) @@ -1400,10 +1400,10 @@ trash = /obj/item/trash/plate list_reagents = list("nutriment" = 8) -/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti - name = "Boiled Spagetti" +/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti + name = "Boiled Spaghetti" desc = "A plain dish of noodles, this sucks." - icon_state = "spagettiboiled" + icon_state = "spaghettiboiled" trash = /obj/item/trash/plate filling_color = "#FCEE81" list_reagents = list("nutriment" = 2, "vitamin" = 1) @@ -1425,7 +1425,7 @@ list_reagents = list("nutriment" = 7, "vitamin" = 2) /obj/item/weapon/reagent_containers/food/snacks/pastatomato - name = "Spagetti" + name = "spaghetti" desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!" icon_state = "pastatomato" trash = /obj/item/trash/plate @@ -1433,10 +1433,10 @@ bitesize = 4 list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4) -/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti - name = "Spagetti & Meatballs" +/obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti + name = "spaghetti & Meatballs" desc = "Now thats a nic'e meatball!" - icon_state = "meatballspagetti" + icon_state = "meatballspaghetti" trash = /obj/item/trash/plate filling_color = "#DE4545" list_reagents = list("nutriment" = 8, "synaptizine" = 5, "vitamin" = 4) diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 38edb2e2174..e2ae3f66285 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -85,7 +85,7 @@ /datum/food_processor_process/spaghetti input = /obj/item/weapon/reagent_containers/food/snacks/doughslice - output = /obj/item/weapon/reagent_containers/food/snacks/spagetti + output = /obj/item/weapon/reagent_containers/food/snacks/spaghetti /datum/food_processor_process/parsnip input = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip diff --git a/code/modules/food_and_drinks/recipes/recipes_microwave.dm b/code/modules/food_and_drinks/recipes/recipes_microwave.dm index 24eeb7e0148..a0998a67a58 100644 --- a/code/modules/food_and_drinks/recipes/recipes_microwave.dm +++ b/code/modules/food_and_drinks/recipes/recipes_microwave.dm @@ -351,12 +351,12 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/carrot, /obj/item/weapon/reagent_containers/food/snacks/grown/tomato) result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat -/datum/recipe/microwave/boiledspagetti +/datum/recipe/microwave/boiledspaghetti reagents = list("water" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/spagetti, + /obj/item/weapon/reagent_containers/food/snacks/spaghetti, ) - result = /obj/item/weapon/reagent_containers/food/snacks/boiledspagetti + result = /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti /datum/recipe/microwave/boiledrice reagents = list("water" = 5, "rice" = 10) @@ -368,7 +368,7 @@ /datum/recipe/microwave/pastatomato reagents = list("water" = 5) - items = list(/obj/item/weapon/reagent_containers/food/snacks/spagetti, /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, + items = list(/obj/item/weapon/reagent_containers/food/snacks/spaghetti, /obj/item/weapon/reagent_containers/food/snacks/grown/tomato, /obj/item/weapon/reagent_containers/food/snacks/grown/tomato) result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato @@ -376,19 +376,19 @@ items = list(/obj/item/seeds/poppy, /obj/item/weapon/reagent_containers/food/snacks/dough) result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel -/datum/recipe/microwave/meatballspagetti +/datum/recipe/microwave/meatballspaggetti reagents = list("water" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/spagetti, + /obj/item/weapon/reagent_containers/food/snacks/spaghetti, /obj/item/weapon/reagent_containers/food/snacks/meatball, /obj/item/weapon/reagent_containers/food/snacks/meatball, ) - result = /obj/item/weapon/reagent_containers/food/snacks/meatballspagetti + result = /obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti /datum/recipe/microwave/spesslaw reagents = list("water" = 5) items = list( - /obj/item/weapon/reagent_containers/food/snacks/spagetti, + /obj/item/weapon/reagent_containers/food/snacks/spaghetti, /obj/item/weapon/reagent_containers/food/snacks/meatball, /obj/item/weapon/reagent_containers/food/snacks/meatball, /obj/item/weapon/reagent_containers/food/snacks/meatball, diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm index eb7b767dc94..46706c45363 100644 --- a/code/modules/mob/living/carbon/human/interactive/functions.dm +++ b/code/modules/mob/living/carbon/human/interactive/functions.dm @@ -420,9 +420,9 @@ return doing |= SNPC_SPECIAL - var/static/list/customableTypes = list(/obj/item/weapon/reagent_containers/food/snacks/customizable,/obj/item/weapon/reagent_containers/food/snacks/breadslice,/obj/item/weapon/reagent_containers/food/snacks/bun,/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti,/obj/item/trash/plate,/obj/item/trash/bowl) + var/static/list/customableTypes = list(/obj/item/weapon/reagent_containers/food/snacks/customizable,/obj/item/weapon/reagent_containers/food/snacks/breadslice,/obj/item/weapon/reagent_containers/food/snacks/bun,/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough,/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti,/obj/item/trash/plate,/obj/item/trash/bowl) - var/static/list/rawtypes = list(/obj/item/weapon/reagent_containers/food/snacks/grown, /obj/item/weapon/reagent_containers/food/snacks/rawcutlet, /obj/item/weapon/reagent_containers/food/snacks/rawsticks, /obj/item/weapon/reagent_containers/food/snacks/salmonmeat, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, /obj/item/weapon/reagent_containers/food/snacks/catfishmeat, /obj/item/weapon/reagent_containers/food/snacks/spagetti, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/boiledrice, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/raw_bacon) + var/static/list/rawtypes = list(/obj/item/weapon/reagent_containers/food/snacks/grown, /obj/item/weapon/reagent_containers/food/snacks/rawcutlet, /obj/item/weapon/reagent_containers/food/snacks/rawsticks, /obj/item/weapon/reagent_containers/food/snacks/salmonmeat, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, /obj/item/weapon/reagent_containers/food/snacks/catfishmeat, /obj/item/weapon/reagent_containers/food/snacks/spaghetti, /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough, /obj/item/weapon/reagent_containers/food/snacks/doughslice, /obj/item/weapon/reagent_containers/food/snacks/meat, /obj/item/weapon/reagent_containers/food/snacks/boiledrice, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/raw_bacon) try var/list/allContents = getAllContents() diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 283684b9d46492e4c3cb81d821ea570fb3198bf0..5f8fb26d74c779ac40c4826fda902337c2139ec9 100644 GIT binary patch delta 831 zcmV-F1Hk;0-v^c72aqHIu(2hV1b;J^(vH`GsbH;%3yJMVU@CoWAHxDuLAvo9_xRYZ zk}f2^&|DCU4B{2r1_|i(Oc0{(1XT>*X-EK zGy`I4T!eQV2~(ktqX0JcR6v0Cb4`Obv{xvQb*#Cttq>cz6wer{h2R{gUVpwY(ks`% z9(uvDbx5Gd{)~dLJy9;y_1ZR}3kj##M7dDWfTV$~_a4Oi9FW+Z*s@0Q9cFkhaa@9# zedr|*RR9G6p*F!S`*gTppClI=X3=&OOY-9*>3RcWV^+)lUwSP`ujsbh4F9(5L(wBq4-sWXc;GEl6jTcp4GDU2nlue+fc7+{H5r#j;2Fp z^-RHv&vYC;pJ^OD(4#XotmZT=g(GzKuvDExf^{YjKhnEm;bf4>mw!Cd!iMEjxV+iH z11tHv1CR%P2jQ9th^INyupn=AvgUiXr5y+%JIh)Vt|eWa0`H`=uAXB7)6Y(W=>UG& zkP{8um9s>oai0?ntCyawtgepZUkrGAdwFU9?z=zzy_gO>vR}yUbuhrQ_h4|kVv+M# zPMotRU=NZwHlC(-#D9B6X9B`b636Blu*IDmR2N8X;uw41{)}R+lxH4GK)EoW;=*Tk zSyybyrH&)y!gatqH8*>(^!=beUslGkqR7@a%p*L#7foM)!e4Zeo9 zYFAoBLOYI|QYS8nEJpz%4i&WmG&Fn4{QvHWzCC^V?c?d=ub*%K2UA|ChpYKsAcNco Jx7-H-xaS?(lt2Ig delta 830 zcmV-E1Ht^2-v^Z62aqHIudyYU1b zx{&xnb3qI;h*xYEB%rr5L4fKw$OF4eF%1}?#)a3R_JB+m6gdq((`O?<4;mLWG&`G3Mlt6T$n z=mE>tAb|q=GYW?GM7dDcYukh_B%EOrV0Tcv;+5~s()8Te~l3Zw*McYv<$>SqIO{JY|7s5N)?(XblyT7xO?GDdQc0F?B zdO>&eM+GeC#So}p`f>=?Ie&dQ25gPK90WE=Uk(CWo0ma>b8g=>UT{rEWG{qR`{N@8 zvT0_M0`A{44@O6iKIFQPXx#NRBbI)BwHI zGX*O?({c2Crg8K@i_X-rn$xrtj?mG=Qgsdq)|ou~M(>J+lR+k5@_$SV8 zPBd^=&JvNneNHs2UV65&x;l=3G2rd(<)Qt%@BZ}nVmj=^zJuG-U;t454kU4GJWcI*_kWDe1O%NVj?FV*i90!{E|A*9G4{Cq8O0hY&peiXa$!Klh0pA= zuGo@G9Y@H4>wve#uVFkyK<|ihoyfoowPS2zJMhbZyhbP8Knsw%3k~ffWuaVF%x;QO zF6`hWSahrqgns^s#H_aHSV5&09jh(ePEgx19kTEZg)&+(0)IXYuCUs|E2yEfVw(R# zUL1Cz_k|}e)O*G{4li+R*_Sbpa<@7c3?SDq96-=Y`b>o_u-Aymd1f(p Date: Fri, 16 Jun 2017 16:08:04 -0400 Subject: [PATCH 56/65] Automatic changelog generation for PR #7516 [ci skip] --- html/changelogs/AutoChangeLog-pr-7516.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7516.yml diff --git a/html/changelogs/AutoChangeLog-pr-7516.yml b/html/changelogs/AutoChangeLog-pr-7516.yml new file mode 100644 index 00000000000..f3d9e52f4e8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7516.yml @@ -0,0 +1,4 @@ +author: "alexkar598" +delete-after: True +changes: + - bugfix: "Rename Spagetti to Spaghetti" From 879a029201c932c496388b8fb321745615f93d75 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 16:10:11 -0400 Subject: [PATCH 57/65] Automatic changelog compile, [ci skip] --- html/changelog.html | 18 ++++++++++++++++++ html/changelogs/.all_changelog.yml | 12 ++++++++++++ html/changelogs/AutoChangeLog-pr-7516.yml | 4 ---- html/changelogs/AutoChangeLog-pr-7545.yml | 4 ---- html/changelogs/AutoChangeLog-pr-7549.yml | 4 ---- html/changelogs/AutoChangeLog-pr-7550.yml | 6 ------ 6 files changed, 30 insertions(+), 18 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-7516.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7545.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7549.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7550.yml diff --git a/html/changelog.html b/html/changelog.html index a6b99ad01e1..d4cd18129fe 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -60,6 +60,24 @@
    • Makes kittens visible when resting
    +

    Fethas updated:

    +
      +
    • Public Wiggler Tail
    • +
    +

    FreeStylaLT updated:

    +
      +
    • Changed Araneus' spawn location so he wouldn't break tables at round-start anymore
    • +
    +

    Purpose2 updated:

    +
      +
    • Soylen Viridians are now correctly Soylent Viridians. Nanotrasen will still not confirm rumours of the contents of these nor Soylent Greens however.
    • +
    • Nanotrasen is now more consistent with brand management.
    • +
    • An array of typos, grammatical tweaks and other pedantic fixes.
    • +
    +

    alexkar598 updated:

    +
      +
    • Rename Spagetti to Spaghetti
    • +

    13 June 2017

    KasparoVy updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index cc85e4b005d..428a300f55f 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4918,3 +4918,15 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2017-06-16: Alffd: - bugfix: Makes kittens visible when resting + Fethas: + - tweak: Public Wiggler Tail + FreeStylaLT: + - tweak: Changed Araneus' spawn location so he wouldn't break tables at round-start + anymore + Purpose2: + - bugfix: Soylen Viridians are now correctly Soylent Viridians. Nanotrasen will + still not confirm rumours of the contents of these nor Soylent Greens however. + - bugfix: Nanotrasen is now more consistent with brand management. + - bugfix: An array of typos, grammatical tweaks and other pedantic fixes. + alexkar598: + - bugfix: Rename Spagetti to Spaghetti diff --git a/html/changelogs/AutoChangeLog-pr-7516.yml b/html/changelogs/AutoChangeLog-pr-7516.yml deleted file mode 100644 index f3d9e52f4e8..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7516.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "alexkar598" -delete-after: True -changes: - - bugfix: "Rename Spagetti to Spaghetti" diff --git a/html/changelogs/AutoChangeLog-pr-7545.yml b/html/changelogs/AutoChangeLog-pr-7545.yml deleted file mode 100644 index 4d1ee423ca7..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7545.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "FreeStylaLT" -delete-after: True -changes: - - tweak: "Changed Araneus' spawn location so he wouldn't break tables at round-start anymore" diff --git a/html/changelogs/AutoChangeLog-pr-7549.yml b/html/changelogs/AutoChangeLog-pr-7549.yml deleted file mode 100644 index 491d71a3f50..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7549.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fethas" -delete-after: True -changes: - - tweak: "Public Wiggler Tail" diff --git a/html/changelogs/AutoChangeLog-pr-7550.yml b/html/changelogs/AutoChangeLog-pr-7550.yml deleted file mode 100644 index aad9cd139ad..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7550.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Purpose2" -delete-after: True -changes: - - bugfix: "Soylen Viridians are now correctly Soylent Viridians. Nanotrasen will still not confirm rumours of the contents of these nor Soylent Greens however." - - bugfix: "Nanotrasen is now more consistent with brand management." - - bugfix: "An array of typos, grammatical tweaks and other pedantic fixes." From 5f0dbf2d702b9a70cb73364880a4f8a6f0b96371 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 16:10:33 -0400 Subject: [PATCH 58/65] Automatic changelog generation for PR #7529 [ci skip] --- html/changelogs/AutoChangeLog-pr-7529.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7529.yml diff --git a/html/changelogs/AutoChangeLog-pr-7529.yml b/html/changelogs/AutoChangeLog-pr-7529.yml new file mode 100644 index 00000000000..a177d4c385e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7529.yml @@ -0,0 +1,4 @@ +author: "Fethas" +delete-after: True +changes: + - rscadd: "Chaplains have some new clothes in thier locker." From a27ec36e1712897059d1dcfb4deae0c7ba6b93e3 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 16:29:57 -0400 Subject: [PATCH 59/65] Automatic changelog generation for PR #7381 [ci skip] --- html/changelogs/AutoChangeLog-pr-7381.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7381.yml diff --git a/html/changelogs/AutoChangeLog-pr-7381.yml b/html/changelogs/AutoChangeLog-pr-7381.yml new file mode 100644 index 00000000000..2c1179ab12f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7381.yml @@ -0,0 +1,4 @@ +author: "Purpose2" +delete-after: True +changes: + - rscadd: "Adds a jobs board to the Newscaster. See what roles are available before seeing the HoP!" From f7aa14f966eaaa9107f8439ce44b295474753dfe Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 16:32:12 -0400 Subject: [PATCH 60/65] Automatic changelog generation for PR #7531 [ci skip] --- html/changelogs/AutoChangeLog-pr-7531.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7531.yml diff --git a/html/changelogs/AutoChangeLog-pr-7531.yml b/html/changelogs/AutoChangeLog-pr-7531.yml new file mode 100644 index 00000000000..fcfc89023a5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7531.yml @@ -0,0 +1,11 @@ +author: "Fox McCloud" +delete-after: True +changes: + - tweak: "Spiderbots have been slowed down to human levels" + - tweak: "Spiderbots melee attack consistently deals 2 damage, deals burn, and plays a sparks sound" + - tweak: "Spiderbots no longer have a built in camera" + - tweak: "Spiderbots now have 40 health (previously 10)" + - tweak: "Attacking a spiderbot more consistent with other simple mobs" + - tweak: "Healing a spiderbot with a welder now plays a sound and incurs a cooldown" + - tweak: "Spiderbots can no longer carry items" + - tweak: "Emagging a spiderbot makes it loyal to the person who emagged it. Additionally, it gains 20 extra health, its shocks will do 15 damage, and will explode on death" From cb5edf81d692575b036b6297b545860939b770c1 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 16:35:26 -0400 Subject: [PATCH 61/65] Automatic changelog generation for PR #7362 [ci skip] --- html/changelogs/AutoChangeLog-pr-7362.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7362.yml diff --git a/html/changelogs/AutoChangeLog-pr-7362.yml b/html/changelogs/AutoChangeLog-pr-7362.yml new file mode 100644 index 00000000000..cc2a560726b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7362.yml @@ -0,0 +1,4 @@ +author: "TullyBurnalot" +delete-after: True +changes: + - rscadd: "Autopsy Scanners will now print out Coroner Reports when a pen is used on them" From a2416d1f8285dd47ca804e06450efeeba285e5ab Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 16:40:24 -0400 Subject: [PATCH 62/65] Automatic changelog generation for PR #7528 [ci skip] --- html/changelogs/AutoChangeLog-pr-7528.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7528.yml diff --git a/html/changelogs/AutoChangeLog-pr-7528.yml b/html/changelogs/AutoChangeLog-pr-7528.yml new file mode 100644 index 00000000000..2138f99575e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7528.yml @@ -0,0 +1,4 @@ +author: "Fox McCloud" +delete-after: True +changes: + - tweak: "tweaked Revenant and slaughter demon movement speed" From 1877df65aa61016b928582d4e26d34310117cc22 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 16:42:29 -0400 Subject: [PATCH 63/65] Automatic changelog generation for PR #7521 [ci skip] --- html/changelogs/AutoChangeLog-pr-7521.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7521.yml diff --git a/html/changelogs/AutoChangeLog-pr-7521.yml b/html/changelogs/AutoChangeLog-pr-7521.yml new file mode 100644 index 00000000000..fa6e773056a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7521.yml @@ -0,0 +1,4 @@ +author: "Kyep" +delete-after: True +changes: + - rscadd: "HoPs can now set jobs as 'priority'. Priority jobs are highlighted on the latejoin screen. This allows HoPs to proactively broadcast that they need more people to fill those jobs - and reduces the chance of critical crew shortages." From d343c6c8cfb2c39b4466dd88f1aa3381e95150e5 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 16 Jun 2017 22:03:09 +0100 Subject: [PATCH 64/65] Fixes implied src's --- code/game/objects/structures/windoor_assembly.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index a811ff35d1b..3cf48944814 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -247,8 +247,8 @@ obj/structure/windoor_assembly/Destroy() if(do_after(user, 40 * W.toolspeed, target = src)) if(src.loc && src.electronics) - for(var/obj/machinery/door/window/WD in src.loc) - if(WD.dir == src.dir) + for(var/obj/machinery/door/window/WD in loc) + if(WD.dir == dir) return density = 1 //Shouldn't matter but just incase From 22ba4318b4fdd183ad8c5b85f0d5c962f4fdb8c9 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 16 Jun 2017 18:32:29 -0400 Subject: [PATCH 65/65] Automatic changelog compile, [ci skip] --- html/changelog.html | 22 ++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 23 +++++++++++++++++++++++ html/changelogs/AutoChangeLog-pr-7362.yml | 4 ---- html/changelogs/AutoChangeLog-pr-7381.yml | 4 ---- html/changelogs/AutoChangeLog-pr-7521.yml | 4 ---- html/changelogs/AutoChangeLog-pr-7528.yml | 4 ---- html/changelogs/AutoChangeLog-pr-7529.yml | 4 ---- html/changelogs/AutoChangeLog-pr-7531.yml | 11 ----------- 8 files changed, 45 insertions(+), 31 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-7362.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7381.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7521.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7528.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7529.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-7531.yml diff --git a/html/changelog.html b/html/changelog.html index d4cd18129fe..ef82e8abc9e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -63,16 +63,38 @@

    Fethas updated:

    • Public Wiggler Tail
    • +
    • Chaplains have some new clothes in thier locker.
    • +
    +

    Fox McCloud updated:

    +
      +
    • tweaked Revenant and slaughter demon movement speed
    • +
    • Spiderbots have been slowed down to human levels
    • +
    • Spiderbots melee attack consistently deals 2 damage, deals burn, and plays a sparks sound
    • +
    • Spiderbots no longer have a built in camera
    • +
    • Spiderbots now have 40 health (previously 10)
    • +
    • Attacking a spiderbot more consistent with other simple mobs
    • +
    • Healing a spiderbot with a welder now plays a sound and incurs a cooldown
    • +
    • Spiderbots can no longer carry items
    • +
    • Emagging a spiderbot makes it loyal to the person who emagged it. Additionally, it gains 20 extra health, its shocks will do 15 damage, and will explode on death

    FreeStylaLT updated:

    • Changed Araneus' spawn location so he wouldn't break tables at round-start anymore
    +

    Kyep updated:

    +
      +
    • HoPs can now set jobs as 'priority'. Priority jobs are highlighted on the latejoin screen. This allows HoPs to proactively broadcast that they need more people to fill those jobs - and reduces the chance of critical crew shortages.
    • +

    Purpose2 updated:

    • Soylen Viridians are now correctly Soylent Viridians. Nanotrasen will still not confirm rumours of the contents of these nor Soylent Greens however.
    • Nanotrasen is now more consistent with brand management.
    • An array of typos, grammatical tweaks and other pedantic fixes.
    • +
    • Adds a jobs board to the Newscaster. See what roles are available before seeing the HoP!
    • +
    +

    TullyBurnalot updated:

    +
      +
    • Autopsy Scanners will now print out Coroner Reports when a pen is used on them

    alexkar598 updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 428a300f55f..8b6f0dbe0cc 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4920,13 +4920,36 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Makes kittens visible when resting Fethas: - tweak: Public Wiggler Tail + - rscadd: Chaplains have some new clothes in thier locker. + Fox McCloud: + - tweak: tweaked Revenant and slaughter demon movement speed + - tweak: Spiderbots have been slowed down to human levels + - tweak: Spiderbots melee attack consistently deals 2 damage, deals burn, and plays + a sparks sound + - tweak: Spiderbots no longer have a built in camera + - tweak: Spiderbots now have 40 health (previously 10) + - tweak: Attacking a spiderbot more consistent with other simple mobs + - tweak: Healing a spiderbot with a welder now plays a sound and incurs a cooldown + - tweak: Spiderbots can no longer carry items + - tweak: Emagging a spiderbot makes it loyal to the person who emagged it. Additionally, + it gains 20 extra health, its shocks will do 15 damage, and will explode on + death FreeStylaLT: - tweak: Changed Araneus' spawn location so he wouldn't break tables at round-start anymore + Kyep: + - rscadd: HoPs can now set jobs as 'priority'. Priority jobs are highlighted on + the latejoin screen. This allows HoPs to proactively broadcast that they need + more people to fill those jobs - and reduces the chance of critical crew shortages. Purpose2: - bugfix: Soylen Viridians are now correctly Soylent Viridians. Nanotrasen will still not confirm rumours of the contents of these nor Soylent Greens however. - bugfix: Nanotrasen is now more consistent with brand management. - bugfix: An array of typos, grammatical tweaks and other pedantic fixes. + - rscadd: Adds a jobs board to the Newscaster. See what roles are available before + seeing the HoP! + TullyBurnalot: + - rscadd: Autopsy Scanners will now print out Coroner Reports when a pen is used + on them alexkar598: - bugfix: Rename Spagetti to Spaghetti diff --git a/html/changelogs/AutoChangeLog-pr-7362.yml b/html/changelogs/AutoChangeLog-pr-7362.yml deleted file mode 100644 index cc2a560726b..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7362.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TullyBurnalot" -delete-after: True -changes: - - rscadd: "Autopsy Scanners will now print out Coroner Reports when a pen is used on them" diff --git a/html/changelogs/AutoChangeLog-pr-7381.yml b/html/changelogs/AutoChangeLog-pr-7381.yml deleted file mode 100644 index 2c1179ab12f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7381.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Purpose2" -delete-after: True -changes: - - rscadd: "Adds a jobs board to the Newscaster. See what roles are available before seeing the HoP!" diff --git a/html/changelogs/AutoChangeLog-pr-7521.yml b/html/changelogs/AutoChangeLog-pr-7521.yml deleted file mode 100644 index fa6e773056a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7521.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kyep" -delete-after: True -changes: - - rscadd: "HoPs can now set jobs as 'priority'. Priority jobs are highlighted on the latejoin screen. This allows HoPs to proactively broadcast that they need more people to fill those jobs - and reduces the chance of critical crew shortages." diff --git a/html/changelogs/AutoChangeLog-pr-7528.yml b/html/changelogs/AutoChangeLog-pr-7528.yml deleted file mode 100644 index 2138f99575e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7528.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fox McCloud" -delete-after: True -changes: - - tweak: "tweaked Revenant and slaughter demon movement speed" diff --git a/html/changelogs/AutoChangeLog-pr-7529.yml b/html/changelogs/AutoChangeLog-pr-7529.yml deleted file mode 100644 index a177d4c385e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7529.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fethas" -delete-after: True -changes: - - rscadd: "Chaplains have some new clothes in thier locker." diff --git a/html/changelogs/AutoChangeLog-pr-7531.yml b/html/changelogs/AutoChangeLog-pr-7531.yml deleted file mode 100644 index fcfc89023a5..00000000000 --- a/html/changelogs/AutoChangeLog-pr-7531.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: "Fox McCloud" -delete-after: True -changes: - - tweak: "Spiderbots have been slowed down to human levels" - - tweak: "Spiderbots melee attack consistently deals 2 damage, deals burn, and plays a sparks sound" - - tweak: "Spiderbots no longer have a built in camera" - - tweak: "Spiderbots now have 40 health (previously 10)" - - tweak: "Attacking a spiderbot more consistent with other simple mobs" - - tweak: "Healing a spiderbot with a welder now plays a sound and incurs a cooldown" - - tweak: "Spiderbots can no longer carry items" - - tweak: "Emagging a spiderbot makes it loyal to the person who emagged it. Additionally, it gains 20 extra health, its shocks will do 15 damage, and will explode on death"
+

13 June 2017

+

KasparoVy updated:

+
    +
  • Moves a hidden emergency locker to where it is visible.
  • +
+

Vivalas updated:

+
    +
  • Brig timers will now update the records of those who are imprisoned in their cell, as long as their name is entered correctly.
  • +
  • Sentences and arresting officers are announced over the security channel by brig timers, as well as the names of those who end timers manually.
  • +
+

10 June 2017

Alffd updated: