diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 4f73301e84..6eae870cfd 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -314,7 +314,7 @@
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, extra = 0, max_length = MAX_RECORD_LENGTH)
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
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 14e95ebdd9..54c94d8684 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -481,7 +481,7 @@ What a mess.*/
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, extra = 0, max_length = MAX_RECORD_LENGTH)
if (!t1 || active2 != a2)
return
active2.fields["notes"] = t1
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 4bb8e25e8b..2b2a2ee8b4 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -7,6 +7,9 @@
edge = 0
armor_penetration = 50
flags = NOBLOODY
+ var/lrange = 2
+ var/lpower = 2
+ var/lcolor = "#0099FF"
/obj/item/weapon/melee/energy/proc/activate(mob/living/user)
anchored = 1
@@ -19,6 +22,7 @@
edge = 1
w_class = active_w_class
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
+ set_light(lrange, lpower, lcolor)
/obj/item/weapon/melee/energy/proc/deactivate(mob/living/user)
anchored = 0
@@ -31,6 +35,7 @@
sharp = initial(sharp)
edge = initial(edge)
w_class = initial(w_class)
+ set_light(0,0)
/obj/item/weapon/melee/energy/attack_self(mob/living/user as mob)
if (active)
@@ -124,26 +129,33 @@
/obj/item/weapon/melee/energy/sword/New()
blade_color = pick("red","blue","green","purple")
+ lcolor = blade_color
/obj/item/weapon/melee/energy/sword/green/New()
blade_color = "green"
+ lcolor = "#008000"
/obj/item/weapon/melee/energy/sword/red/New()
blade_color = "red"
+ lcolor = "#FF0000"
/obj/item/weapon/melee/energy/sword/blue/New()
blade_color = "blue"
+ lcolor = "#0000FF"
/obj/item/weapon/melee/energy/sword/purple/New()
blade_color = "purple"
+ lcolor = "#800080"
/obj/item/weapon/melee/energy/sword/activate(mob/living/user)
if(!active)
user << "\The [src] is now energised."
+
..()
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
icon_state = "sword[blade_color]"
+
/obj/item/weapon/melee/energy/sword/deactivate(mob/living/user)
if(active)
user << "\The [src] deactivates!"
@@ -193,6 +205,7 @@
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
var/mob/living/creator
var/datum/effect/effect/system/spark_spread/spark_system
+ lcolor = "#00FF00"
/obj/item/weapon/melee/energy/blade/New()
@@ -201,6 +214,7 @@
spark_system.attach(src)
processing_objects |= src
+ set_light(lrange, lpower, lcolor)
/obj/item/weapon/melee/energy/blade/Destroy()
processing_objects -= src
diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm
index a2f5c78bd0..46887ce8f0 100644
--- a/code/game/objects/items/weapons/policetape.dm
+++ b/code/game/objects/items/weapons/policetape.dm
@@ -271,7 +271,7 @@ var/list/tape_roll_applications = list()
add_fingerprint(M)
if (!allowed(M)) //only select few learn art of not crumpling the tape
M << "You are not supposed to go past [src]..."
- if(M.a_intent == I_HELP)
+ if(M.a_intent == I_HELP && !(istype(M, /mob/living/simple_animal)))
return 0
crumple()
return ..(mover)
diff --git a/code/modules/nano/modules/law_manager.dm b/code/modules/nano/modules/law_manager.dm
index 2c691349e0..0d1c40a737 100644
--- a/code/modules/nano/modules/law_manager.dm
+++ b/code/modules/nano/modules/law_manager.dm
@@ -203,7 +203,13 @@
return law_sets
/datum/nano_module/law_manager/proc/is_malf(var/mob/user)
- return (is_admin(user) && !owner.is_slaved()) || owner.is_malf_or_traitor()
+ return (is_admin(user) && !owner.is_slaved()) || is_special_role(user)
+
+/datum/nano_module/law_manager/proc/is_special_role(var/mob/user)
+ if(user.mind.special_role)
+ return TRUE
+ else
+ return FALSE
/mob/living/silicon/proc/is_slaved()
return 0
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index f0bda3a3cc..33660f28c7 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -2889,12 +2889,12 @@
/obj/item/pizzabox/proc/closepizzabox()
- if( boxes.len > 0 )
+ if(boxes.len > 0)
return
open = !open
- if( open && pizza )
+ if(open && pizza)
ismessy = 1
update_icon()
@@ -2904,29 +2904,29 @@
overlays = list()
// Set appropriate description
- if( open && pizza )
+ if(open && pizza)
desc = "A box suited for pizzas. It appears to have a [pizza.name] inside."
- else if( boxes.len > 0 )
+ else if(boxes.len > 0)
desc = "A pile of boxes suited for pizzas. There appears to be [boxes.len + 1] boxes in the pile."
var/obj/item/pizzabox/topbox = boxes[boxes.len]
var/toptag = topbox.boxtag
- if( toptag != "" )
+ if(toptag != "")
desc = "[desc] The box on top has a tag, it reads: '[toptag]'."
else
desc = "A box suited for pizzas."
- if( boxtag != "" )
+ if(boxtag != "")
desc = "[desc] The box has a tag, it reads: '[boxtag]'."
// Icon states and overlays
- if( open )
- if( ismessy )
+ if(open)
+ if(ismessy)
icon_state = "pizzabox_messy"
else
icon_state = "pizzabox_open"
- if( pizza )
+ if(pizza)
var/image/pizzaimg = image("food.dmi", icon_state = pizza.icon_state)
pizzaimg.pixel_y = -3
overlays += pizzaimg
@@ -2935,33 +2935,33 @@
else
// Stupid code because byondcode sucks
var/doimgtag = 0
- if( boxes.len > 0 )
+ if(boxes.len > 0)
var/obj/item/pizzabox/topbox = boxes[boxes.len]
- if( topbox.boxtag != "" )
+ if(topbox.boxtag != "")
doimgtag = 1
else
- if( boxtag != "" )
+ if(boxtag != "")
doimgtag = 1
- if( doimgtag )
+ if(doimgtag)
var/image/tagimg = image("food.dmi", icon_state = "pizzabox_tag")
tagimg.pixel_y = boxes.len * 3
overlays += tagimg
icon_state = "pizzabox[boxes.len+1]"
-/obj/item/pizzabox/attack_hand( mob/user as mob )
+/obj/item/pizzabox/attack_hand(mob/user as mob)
if( open && pizza )
- user.put_in_hands( pizza )
+ user.put_in_hands(pizza)
- user << "\red You take the [src.pizza] out of the [src]."
+ user << "You take \the [src.pizza] out of the [src]."
src.pizza = null
update_icon()
return
- if( boxes.len > 0 )
- if( user.get_inactive_hand() != src )
+ if(boxes.len > 0)
+ if(user.get_inactive_hand() != src)
..()
return
@@ -2969,13 +2969,13 @@
boxes -= box
user.put_in_hands( box )
- user << "\red You remove the topmost [src] from your hand."
+ user << "You remove \the topmost [src] from your hand."
box.update_icon()
update_icon()
return
..()
-/obj/item/pizzabox/attack_self( mob/user as mob )
+/obj/item/pizzabox/attack_self(mob/user as mob)
closepizzabox()
@@ -2985,57 +2985,58 @@
closepizzabox()
/obj/item/pizzabox/attackby( obj/item/I as obj, mob/user as mob )
- if( istype(I, /obj/item/pizzabox/) )
+ if(istype(I, /obj/item/pizzabox/))
var/obj/item/pizzabox/box = I
- if( !box.open && !src.open )
+ if(!box.open && !src.open)
// Make a list of all boxes to be added
var/list/boxestoadd = list()
boxestoadd += box
for(var/obj/item/pizzabox/i in box.boxes)
boxestoadd += i
- if( (boxes.len+1) + boxestoadd.len <= 5 )
+ if((boxes.len+1) + boxestoadd.len <= 5)
user.drop_item()
box.loc = src
box.boxes = list() // Clear the box boxes so we don't have boxes inside boxes. - Xzibit
- src.boxes.Add( boxestoadd )
+ src.boxes.Add(boxestoadd)
box.update_icon()
update_icon()
- user << "\red You put the [box] ontop of the [src]!"
+ user << "You put \the [box] ontop of the [src]!"
else
- user << "\red The stack is too high!"
+ user << "\The stack is too high!"
else
- user << "\red Close the [box] first!"
+ user << "Close \the [box] first!"
return
- if( istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/) ) // Long ass fucking object name
+ if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/)) // Long ass fucking object name
- if( src.open )
- user.drop_item()
- I.loc = src
- src.pizza = I
-
- update_icon()
-
- user << "\red You put the [I] in the [src]!"
+ if(open)
+ if(!pizza)
+ user.drop_item()
+ I.loc = src
+ pizza = I
+ update_icon()
+ user << "You put \the [I] in \the [src]!"
+ else
+ user << "\The [src] is full! It already has a [pizza] inside."
else
- user << "\red You try to push the [I] through the lid but it doesn't work!"
+ user << "You try to push \the [I] through the lid but it doesn't work!"
+
return
- if( istype(I, /obj/item/weapon/pen/) )
-
- if( src.open )
+ if(istype(I, /obj/item/weapon/pen/))
+ if(open)
return
var/t = sanitize(input("Enter what you want to add to the tag:", "Write", null, null) as text, 30)
var/obj/item/pizzabox/boxtotagto = src
- if( boxes.len > 0 )
+ if(boxes.len > 0)
boxtotagto = boxes[boxes.len]
boxtotagto.boxtag = copytext("[boxtotagto.boxtag][t]", 1, 30)
diff --git a/html/changelogs/Yoshax-Bugfix.yml b/html/changelogs/Yoshax-Bugfix.yml
new file mode 100644
index 0000000000..0654b2b9e2
--- /dev/null
+++ b/html/changelogs/Yoshax-Bugfix.yml
@@ -0,0 +1,40 @@
+################################
+# 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
+#################################
+
+# Your name.
+author: Yoshax
+
+# 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: "You can now only fit one pizza per box, and pizzas will no longer vanish to pizza gnomes."
+ - rscadd: "Energy swords will now produce a small light. The light is determined by the color of the blade."
+ - bugfix: "Simple mobs such as slimes, or carp, will now ignore intent requirements for passing applied tape."
+ - bugfix: "Long records will no longer be devoured by long-record-goblins when attempting to edit them using a console in-round."
+ - bugfix: "AIs with special roles will now get access to the fancy law manager."
\ No newline at end of file