diff --git a/SQL/migrate/V033__robot_module.sql b/SQL/migrate/V033__robot_module.sql
new file mode 100644
index 00000000000..f6dd364e70e
--- /dev/null
+++ b/SQL/migrate/V033__robot_module.sql
@@ -0,0 +1,6 @@
+--
+-- Renaming colomn because we are fixing spelling
+--
+
+ALTER TABLE `ss13_characters_flavour`
+ CHANGE COLUMN `robot_miner` `robot_mining` TEXT NULL DEFAULT NULL AFTER `robot_rescue`;
diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm
index 76e94c9792f..7c8613072b7 100644
--- a/code/ZAS/Fire.dm
+++ b/code/ZAS/Fire.dm
@@ -109,7 +109,7 @@ turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0)
var/obj/effect/decal/cleanable/liquid_fuel/fuel = locate() in src
LAZYINITLIST(zone.fire_tiles)
zone.fire_tiles |= src
- if(fuel)
+ if(fuel)
LAZYADD(zone.fuel_objs, fuel)
var/obj/effect/decal/cleanable/foam/extinguisher_foam = locate() in src
@@ -388,7 +388,15 @@ datum/gas_mixture/proc/check_recombustability(list/fuel_objs)
if(total_combustables > 0)
//slows down the burning when the concentration of the reactants is low
- var/damping_multiplier = min(1, active_combustables / (total_moles/group_multiplier))
+ var/damping_multiplier
+ if(!total_moles || !group_multiplier)
+ damping_multiplier = min(1, active_combustables)
+ else if(!total_moles)
+ damping_multiplier = min(1, active_combustables / group_multiplier)
+ else if(!group_multiplier)
+ damping_multiplier = min(1, active_combustables / total_moles)
+ else
+ damping_multiplier = min(1, active_combustables / (total_moles/group_multiplier))
//weight the damping mult so that it only really brings down the firelevel when the ratio is closer to 0
damping_multiplier = 2*damping_multiplier - (damping_multiplier*damping_multiplier)
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 0ef10a19461..8f6f779445a 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -256,7 +256,7 @@
switch(href_list["field"])
if("fingerprint")
if (istype(src.active1, /datum/data/record))
- var/t1 = sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text)
+ var/t1 = sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
return
src.active1.fields["fingerprint"] = t1
@@ -274,55 +274,55 @@
src.active1.fields["age"] = t1
if("mi_dis")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text)
+ var/t1 = sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["mi_dis"] = t1
if("mi_dis_d")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message)
+ var/t1 = sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["mi_dis_d"] = t1
if("ma_dis")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text)
+ var/t1 = sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["ma_dis"] = t1
if("ma_dis_d")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message)
+ var/t1 = sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["ma_dis_d"] = t1
if("alg")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text)
+ var/t1 = sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["alg"] = t1
if("alg_d")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message)
+ var/t1 = sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["alg_d"] = t1
if("cdi")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text)
+ var/t1 = sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["cdi"] = t1
if("cdi_d")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message)
+ var/t1 = sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["cdi_d"] = t1
if("notes")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message, extra = 0)
+ var/t1 = sanitize(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message,MAX_PAPER_MESSAGE_LEN, extra = 0)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["notes"] = t1
@@ -337,21 +337,21 @@
src.temp = text("Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
", src, src, src, src, src, src, src, src)
if("b_dna")
if (istype(src.active2, /datum/data/record))
- var/t1 = sanitize(input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) as text)
+ var/t1 = sanitize(input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) as text, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active2.fields["b_dna"] = t1
if("vir_name")
var/datum/data/record/v = locate(href_list["edit_vir"])
if (v)
- var/t1 = sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text)
+ var/t1 = sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
return
v.fields["name"] = t1
if("vir_desc")
var/datum/data/record/v = locate(href_list["edit_vir"])
if (v)
- var/t1 = sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message)
+ var/t1 = sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
return
v.fields["description"] = t1
@@ -458,7 +458,7 @@
if (!( istype(src.active2, /datum/data/record) ))
return
var/a2 = src.active2
- var/t1 = sanitize(input("Add Comment:", "Med. records", null, null) as message)
+ var/t1 = sanitize(input("Add Comment:", "Med. records", null, null) as message, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
var/counter = 1
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index f7cc4e625ed..66965257362 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -413,7 +413,7 @@ What a mess.*/
if (!( istype(active2, /datum/data/record) ))
return
var/a2 = active2
- var/t1 = sanitize(input("Add Comment:", "Secure. records", null, null) as message)
+ var/t1 = sanitize(input("Add Comment:", "Secure. records", null, null) as message, MAX_PAPER_MESSAGE_LEN)
if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2))
return
var/counter = 1
@@ -455,19 +455,19 @@ What a mess.*/
switch(href_list["field"])
if("name")
if (istype(active1, /datum/data/record))
- var/t1 = sanitizeName(input("Please input name:", "Secure. records", active1.fields["name"], null) as text)
+ var/t1 = sanitizeName(input("Please input name:", "Secure. records", active1.fields["name"], null) as text, MAX_PAPER_MESSAGE_LEN)
if (!t1 || active1 != a1)
return
active1.fields["name"] = t1
if("id")
if (istype(active2, /datum/data/record))
- var/t1 = sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text)
+ var/t1 = sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text, MAX_PAPER_MESSAGE_LEN)
if (!t1 || active1 != a1)
return
active1.fields["id"] = t1
if("fingerprint")
if (istype(active1, /datum/data/record))
- var/t1 = sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text)
+ var/t1 = sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text, MAX_PAPER_MESSAGE_LEN)
if (!t1 || active1 != a1)
return
active1.fields["fingerprint"] = t1
@@ -485,31 +485,31 @@ What a mess.*/
active1.fields["age"] = t1
if("mi_crim")
if (istype(active2, /datum/data/record))
- var/t1 = sanitize(input("Please input minor disabilities list:", "Secure. records", active2.fields["mi_crim"], null) as text)
+ var/t1 = sanitize(input("Please input minor disabilities list:", "Secure. records", active2.fields["mi_crim"], null) as text, MAX_PAPER_MESSAGE_LEN)
if (!t1 || active2 != a2)
return
active2.fields["mi_crim"] = t1
if("mi_crim_d")
if (istype(active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message)
+ var/t1 = sanitize(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message, MAX_PAPER_MESSAGE_LEN)
if (!t1 || active2 != a2)
return
active2.fields["mi_crim_d"] = t1
if("ma_crim")
if (istype(active2, /datum/data/record))
- var/t1 = sanitize(input("Please input major diabilities list:", "Secure. records", active2.fields["ma_crim"], null) as text)
+ var/t1 = sanitize(input("Please input major diabilities list:", "Secure. records", active2.fields["ma_crim"], null) as text, MAX_PAPER_MESSAGE_LEN)
if (!t1 || active2 != a2)
return
active2.fields["ma_crim"] = t1
if("ma_crim_d")
if (istype(active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize major dis.:", "Secure. records", active2.fields["ma_crim_d"], null) as message)
+ var/t1 = sanitize(input("Please summarize major dis.:", "Secure. records", active2.fields["ma_crim_d"], null) as message, MAX_PAPER_MESSAGE_LEN)
if (!t1 || active2 != a2)
return
active2.fields["ma_crim_d"] = t1
if("notes")
if (istype(active2, /datum/data/record))
- var/t1 = sanitize(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message, extra = 0)
+ var/t1 = sanitize(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message,MAX_PAPER_MESSAGE_LEN, extra = 0)
if (!t1 || active2 != a2)
return
active2.fields["notes"] = t1
@@ -537,7 +537,7 @@ What a mess.*/
alert(usr, "You do not have the required rank to do this!")
if("species")
if (istype(active1, /datum/data/record))
- var/t1 = sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message)
+ var/t1 = sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message, MAX_PAPER_MESSAGE_LEN)
if (!t1 || active1 != a1)
return
active1.fields["species"] = t1
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index c38d9609a4f..1963a53da34 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -910,12 +910,14 @@
/obj/machinery/porta_turret/ion
installation = /obj/item/weapon/gun/energy/rifle/ionrifle
- lethal = 1
- lethal_icon = 1
- egun = 0
+ lethal = 0
+ lethal_icon = 0
+ egun = 1
sprite_set = "ion"
+ projectile = /obj/item/projectile/ion/stun
eprojectile = /obj/item/projectile/ion
+ shot_sound = 'sound/weapons/Laser.ogg'
eshot_sound = 'sound/weapons/Laser.ogg'
/obj/machinery/porta_turret/crossbow
diff --git a/code/global.dm b/code/global.dm
index e0e324c3b36..0f3ca59886a 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -115,7 +115,7 @@ var/list/robot_module_types = list(
"Construction",
"Medical",
"Rescue",
- "Miner",
+ "Mining",
"Custodial",
"Service",
"Clerical",
diff --git a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
index 2bab0568828..1a7435835cb 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
@@ -234,7 +234,8 @@
/mob/living/carbon/alien/diona/proc/check_status_as_organ()
if (istype(gestalt, /mob/living/carbon/human) && !QDELETED(gestalt))
var/mob/living/carbon/human/H = gestalt
-
+ if(!H.bad_internal_organs)
+ return
if (health < maxHealth)
if (!(src in H.bad_internal_organs))
H.bad_internal_organs.Add(src)
diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm
index 746a2f94ae9..c248fe841b4 100644
--- a/code/modules/mob/living/carbon/resist.dm
+++ b/code/modules/mob/living/carbon/resist.dm
@@ -37,25 +37,25 @@
"\The [src] attempts to escape [wear_suit]!",
"You attempt to escape [wear_suit]. (This will take around 6 minutes and you need to stand still)"
)
- if (!do_after(src, 1.5 MINUTES, act_target = wear_suit))
+ if (!do_after(src, 1.5 MINUTES, act_target = src))
return
visible_message(
"\The [src] is shifting in their [wear_suit]!",
"You start to loosen the [wear_suit]."
)
- if (!do_after(src, 1.5 MINUTES, act_target = wear_suit))
+ if (!do_after(src, 1.5 MINUTES, act_target = src))
return
visible_message(
"\The [src] is moving in their [wear_suit]!",
"You slip one of your arms out of the [wear_suit]."
)
- if (!do_after(src, 1.5 MINUTES, act_target = wear_suit))
+ if (!do_after(src, 1.5 MINUTES, act_target = src))
return
visible_message(
"\The [src] is moving around in their [wear_suit] - it looks like they are about to break out!",
"You start to pull loose the straps on the straightjacket[wear_suit]."
)
- if (do_after(src, 1.5 MINUTES, act_target = wear_suit))
+ if (do_after(src, 1.5 MINUTES, act_target = src))
var/obj/ex_suit = wear_suit
remove_from_mob(wear_suit)
ex_suit.forceMove(get_turf(src))
@@ -199,7 +199,7 @@
return ..()
/mob/living/carbon/escape_buckle()
-
+
if(!buckled) return
if(!restrained())
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 60d06899196..77f2da8a27b 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -3,7 +3,7 @@ var/global/list/robot_modules = list(
"Service" = /obj/item/weapon/robot_module/clerical/butler,
"Clerical" = /obj/item/weapon/robot_module/clerical/general,
"Research" = /obj/item/weapon/robot_module/research,
- "Miner" = /obj/item/weapon/robot_module/miner,
+ "Mining" = /obj/item/weapon/robot_module/miner,
"Rescue" = /obj/item/weapon/robot_module/medical/rescue,
"Medical" = /obj/item/weapon/robot_module/medical/general,
"Security" = /obj/item/weapon/robot_module/security/general,
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index bca31628658..6237a15c324 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -106,16 +106,22 @@ mob/living/simple_animal/hostile/hitby(atom/movable/AM as mob|obj,var/speed = TH
/mob/living/simple_animal/hostile/proc/Found(var/atom/A)
return
+/mob/living/simple_animal/hostile/proc/see_target()
+ return (target_mob in view(7)) ? (TRUE) : (FALSE)
+
/mob/living/simple_animal/hostile/proc/MoveToTarget()
stop_automated_movement = 1
if(QDELETED(target_mob) || SA_attackable(target_mob))
LoseTarget()
+ if(!see_target())
+ LoseTarget()
if(target_mob in targets)
if(ranged)
if(get_dist(src, target_mob) <= 6)
+ walk(src, 0) // We gotta stop moving if we are in range
OpenFire(target_mob)
else
- walk_to(src, target_mob, 1, move_to_delay)
+ walk_to(src, target_mob, 6, move_to_delay)
else
stance = HOSTILE_STANCE_ATTACKING
walk_to(src, target_mob, 1, move_to_delay)
@@ -129,6 +135,8 @@ mob/living/simple_animal/hostile/hitby(atom/movable/AM as mob|obj,var/speed = TH
if(!(target_mob in targets))
LoseTarget()
return 0
+ if(!see_target())
+ LoseTarget()
if(get_dist(src, target_mob) <= 1) //Attacking
AttackingTarget()
attacked_times += 1
@@ -140,6 +148,8 @@ mob/living/simple_animal/hostile/hitby(atom/movable/AM as mob|obj,var/speed = TH
setClickCooldown(attack_delay)
if(!Adjacent(target_mob))
return
+ if(!see_target())
+ LoseTarget()
if(isliving(target_mob))
var/mob/living/L = target_mob
L.attack_generic(src,rand(melee_damage_lower,melee_damage_upper),attacktext)
@@ -162,7 +172,6 @@ mob/living/simple_animal/hostile/hitby(atom/movable/AM as mob|obj,var/speed = TH
/mob/living/simple_animal/hostile/proc/LostTarget()
return
-
/mob/living/simple_animal/hostile/proc/ListTargets(var/dist = 7)
var/list/L = view(src, dist)
@@ -200,6 +209,8 @@ mob/living/simple_animal/hostile/hitby(atom/movable/AM as mob|obj,var/speed = TH
/mob/living/simple_animal/hostile/proc/OpenFire(target_mob)
+ if(!see_target())
+ LoseTarget()
var/target = target_mob
visible_message(" [src] fires at [target]!")
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index 660964566d7..83592e885df 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -416,7 +416,7 @@
var/turf/our_turf = get_turf(src)
for(var/mob/M in mob_list)
var/turf/their_turf = get_turf(M)
- if(their_turf.z == our_turf.z)
+ if(their_turf && (their_turf.z == our_turf.z))
M.update_gravity(M.mob_has_gravity())
if(M.client)
if(!M) return
diff --git a/html/changelogs/Sindorman-bugfixes.yml b/html/changelogs/Sindorman-bugfixes.yml
new file mode 100644
index 00000000000..99662baff94
--- /dev/null
+++ b/html/changelogs/Sindorman-bugfixes.yml
@@ -0,0 +1,42 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+#################################
+
+# Your name.
+author: PoZe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - bugfix: "Straighjacket escape progress is no displayed above mob."
+ - spellcheck: "Renamed cyborg Miner module into Mining."
+ - rscadd: "Hostile mobs now check if they can see their target before moving towards or engaging."
+ - bugfix: "Ranged hostile mobs no longer get in point blank range to shoot their target."
+ - bugfix: "Security/Medical records sections max character limit was increases from 1024 to 3072, to keep it consistent with records in character setup."
+ - bugfix: "Fixed turret sprites for Energy turret. Added lethal mode sprite and connected code wise to Ionrifle turret"
diff --git a/icons/mob/screen/robot.dmi b/icons/mob/screen/robot.dmi
index ac162aa87fa..5ead6cbaf96 100644
Binary files a/icons/mob/screen/robot.dmi and b/icons/mob/screen/robot.dmi differ
diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi
index 1bdd2b76275..485a0eeb174 100644
Binary files a/icons/obj/turrets.dmi and b/icons/obj/turrets.dmi differ