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