From be8bffbc5ba9f8c8214dbf3a81bca9ca2ce8aaeb Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Mon, 7 Oct 2013 20:13:39 +0100 Subject: [PATCH 1/3] Ported code from /tg/station to make brig timer panels and status displays use maptext instead of expensive icon procs. Signed-off-by: Mloc-Argent --- code/game/machinery/doors/brigdoors.dm | 34 ++-- code/game/machinery/status_display.dm | 244 ++++++++++--------------- 2 files changed, 113 insertions(+), 165 deletions(-) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index a5eb560e3c..978b605786 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -1,3 +1,8 @@ +#define CHARS_PER_LINE 5 +#define FONT_SIZE "5pt" +#define FONT_COLOR "#09f" +#define FONT_STYLE "Arial Black" + //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 /////////////////////////////////////////////////////////////////////////////////////////////// @@ -23,6 +28,8 @@ var/list/obj/machinery/targets = list() var/timetoset = 0 // Used to set releasetime upon starting the timer + maptext_height = 26 + maptext_width = 32 /obj/machinery/door_timer/New() ..() @@ -271,13 +278,14 @@ set_picture("ai_bsod") return if(src.timing) - var/disp1 = uppertext(id) + var/disp1 = id var/timeleft = timeleft() var/disp2 = "[add_zero(num2text((timeleft / 60) % 60),2)]~[add_zero(num2text(timeleft % 60), 2)]" - spawn( 5 ) - update_display(disp1, disp2) + if(length(disp2) > CHARS_PER_LINE) + disp2 = "Error" + update_display(disp1, disp2) else - update_display("SET","TIME") + if(maptext) maptext = "" return @@ -291,16 +299,9 @@ //Checks to see if there's 1 line or 2, adds text-icons-numbers/letters over display // Stolen from status_display /obj/machinery/door_timer/proc/update_display(var/line1, var/line2) - if(line2 == null) // single line display - overlays.Cut() - overlays += texticon(line1, 23, -13) - else // dual line display - overlays.Cut() - overlays += texticon(line1, 23, -9) - overlays += texticon(line2, 23, -17) - // return an icon of a time text string (tn) - // valid characters are 0-9 and : - // px, py are pixel offsets + var/new_text = {"
[line1]
[line2]
"} + if(maptext != new_text) + maptext = new_text //Actual string input to icon display for loop, with 5 pixel x offsets for each letter. @@ -360,3 +361,8 @@ id = "Cell 6" dir = 4 pixel_x = 32 + +#undef FONT_SIZE +#undef FONT_COLOR +#undef FONT_STYLE +#undef CHARS_PER_LINE \ No newline at end of file diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 9c37b8212c..c62f1a236a 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -1,3 +1,9 @@ +#define CHARS_PER_LINE 5 +#define FONT_SIZE "5pt" +#define FONT_COLOR "#09f" +#define FONT_STYLE "Arial Black" +#define SCROLL_SPEED 2 + // Status display // (formerly Countdown timer display) @@ -25,15 +31,14 @@ var/index1 // display index for scrolling messages or 0 if non-scrolling var/index2 - var/lastdisplayline1 = "" // the cached last displays - var/lastdisplayline2 = "" - var/frequency = 1435 // radio frequency var/supply_display = 0 // true if a supply shuttle display - var/repeat_update = 0 // true if we are going to update again this ptick var/friendc = 0 // track if Friend Computer mode + maptext_height = 26 + maptext_width = 32 + // new display // register for radio system New() @@ -47,9 +52,8 @@ process() if(stat & NOPOWER) - overlays.Cut() + remove_display() return - update() emp_act(severity) @@ -62,173 +66,114 @@ // set what is displayed proc/update() - if(friendc && mode!=4) //Makes all status displays except supply shuttle timer display the eye -- Urist set_picture("ai_friend") return - if(mode==0) - overlays.Cut() - return - - if(mode==3) // alert picture, no change - return - - if(mode==1) // shuttle timer - if(emergency_shuttle.online) - var/displayloc - if(emergency_shuttle.location == 1) - displayloc = "ETD " + switch(mode) + if(0) //blank + remove_display() + if(1) //emergency shuttle timer + if(emergency_shuttle.online) + var/line1 + var/line2 = get_shuttle_timer() + if(emergency_shuttle.location == 1) + line1 = "-ETD-" + else + line1 = "-ETA-" + if(length(line2) > CHARS_PER_LINE) + line2 = "Error!" + update_display(line1, line2) else - displayloc = "ETA " + remove_display() + if(2) //custom messages + var/line1 + var/line2 - var/displaytime = get_shuttle_timer() - if(lentext(displaytime) > 5) - displaytime = "**~**" - - update_display(displayloc, displaytime) - return - else - overlays.Cut() - return - - if(mode==4) // supply shuttle timer - var/disp1 - var/disp2 - if(supply_shuttle.moving) - disp1 = "SPPLY" - disp2 = get_supply_shuttle_timer() - if(lentext(disp1) > 5) - disp1 = "**~**" - - else - if(supply_shuttle.at_station) - disp1 = "SPPLY" - disp2 = "STATN" + if(!index1) + line1 = message1 else - disp1 = "SPPLY" - disp2 = "AWAY" + line1 = copytext(message1+"|"+message1, index1, index1+CHARS_PER_LINE) + var/message1_len = length(message1) + index1 += SCROLL_SPEED + if(index1 > message1_len) + index1 -= message1_len - update_display(disp1, disp2) + if(!index2) + line2 = message2 + else + line2 = copytext(message2+"|"+message2, index2, index2+CHARS_PER_LINE) + var/message2_len = length(message2) + index2 += SCROLL_SPEED + if(index2 > message2_len) + index2 -= message2_len + update_display(line1, line2) + if(4) // supply shuttle timer + var/line1 = "SUPPLY" + var/line2 + if(supply_shuttle.moving) + line2 = get_supply_shuttle_timer() + if(lentext(line2) > CHARS_PER_LINE) + line2 = "Error" + else + if(supply_shuttle.at_station) + line2 = "Docked" + else + line1 = "" + update_display(line1, line2) + + examine() + set src in view() + . = ..() + switch(mode) + if(1,2,4) + usr << "The display says:
\t[message1]
\t[message2]" - - if(mode==2) - var/line1 - var/line2 - - if(!index1) - line1 = message1 - else - line1 = copytext(message1+message1, index1, index1+5) - if(index1++ > (lentext(message1))) - index1 = 1 - - if(!index2) - line2 = message2 - else - line2 = copytext(message2+message2, index2, index2+5) - if(index2++ > (lentext(message2))) - index2 = 1 - - update_display(line1, line2) - - // the following allows 2 updates per process, giving faster scrolling - if((index1 || index2) && repeat_update) // if either line is scrolling - // and we haven't forced an update yet - - spawn(5) - repeat_update = 0 - update() // set to update again in 5 ticks - repeat_update = 1 - - proc/set_message(var/m1, var/m2) + proc/set_message(m1, m2) if(m1) - index1 = (lentext(m1) > 5) - message1 = uppertext(m1) + index1 = (length(m1) > CHARS_PER_LINE) + message1 = m1 else message1 = "" index1 = 0 if(m2) - index2 = (lentext(m2) > 5) - message2 = uppertext(m2) + index2 = (length(m2) > CHARS_PER_LINE) + message2 = m2 else - message2 = null + message2 = "" index2 = 0 - repeat_update = 1 - proc/set_picture(var/state) + proc/set_picture(state) picture_state = state - overlays.Cut() + remove_display() overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) - proc/update_display(var/line1, var/line2) - - if(line1 == lastdisplayline1 && line2 == lastdisplayline2) - return // no change, no need to update - - lastdisplayline1 = line1 - lastdisplayline2 = line2 - - if(line2 == null) // single line display - overlays.Cut() - overlays += texticon(line1, 23, -13) - else // dual line display - - overlays.Cut() - overlays += texticon(line1, 23, -9) - overlays += texticon(line2, 23, -17) - - - // return shuttle timer as text + proc/update_display(line1, line2) + var/new_text = {"
[line1]
[line2]
"} + if(maptext != new_text) + maptext = new_text proc/get_shuttle_timer() var/timeleft = emergency_shuttle.timeleft() if(timeleft) - return "[add_zero(num2text((timeleft / 60) % 60),2)]~[add_zero(num2text(timeleft % 60), 2)]" - // note ~ translates into a blinking : + return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]" return "" proc/get_supply_shuttle_timer() if(supply_shuttle.moving) var/timeleft = round((supply_shuttle.eta_timeofday - world.timeofday) / 10,1) - return "[add_zero(num2text((timeleft / 60) % 60),2)]~[add_zero(num2text(timeleft % 60), 2)]" - // note ~ translates into a blinking : + if(timeleft < 0) + return "Late" + return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]" return "" - - - - // return an icon of a time text string (tn) - // valid characters are 0-9 and : - // px, py are pixel offsets - proc/texticon(var/tn, var/px = 0, var/py = 0) - var/image/I = image('icons/obj/status_display.dmi', "blank") - - - var/len = lentext(tn) - - for(var/d = 1 to len) - - - var/char = copytext(tn, len-d+1, len-d+2) - - if(char == " ") - continue - - var/image/ID = image('icons/obj/status_display.dmi', icon_state=char) - - ID.pixel_x = -(d-1)*5 + px - ID.pixel_y = py - - I.overlays += ID - - return I - - - - + proc/remove_display() + if(overlays.len) + overlays.Cut() + if(maptext) + maptext = "" receive_signal(datum/signal/signal) @@ -318,16 +263,6 @@ set_picture("ai_facepalm") if("Friend Computer") set_picture("ai_friend") - if("Tribunal") - set_picture("tribunal") - if("Beer mug") - set_picture("ai_beer") - if("Dwarf") - set_picture("ai_dwarf") - if("Fishtank") - set_picture("ai_fishtank") - if("Plump Helmet") - set_picture("ai_plump") return @@ -338,5 +273,12 @@ proc/set_picture(var/state) picture_state = state - overlays.Cut() + if(overlays.len) + overlays.Cut() overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) + +#undef CHARS_PER_LINE +#undef FOND_SIZE +#undef FONT_COLOR +#undef FONT_STYLE +#undef SCROLL_SPEED \ No newline at end of file From ebf2ba2d4a4d3cd010490c151026e0b03245deb5 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Mon, 7 Oct 2013 17:41:51 +0100 Subject: [PATCH 2/3] Fixes. Made glowshrooms and intercoms not use a ridiculous internal loop, and fixed a pickup luminosity bug with glowshrooms. fixes #3708 Fixes #3718 Fixes #3702 Signed-off-by: Mloc-Argent --- code/game/atoms.dm | 1 + code/game/machinery/washing_machine.dm | 3 +++ code/game/objects/effects/glowshroom.dm | 24 +++++++++++------- .../objects/items/devices/radio/intercom.dm | 18 +++++++------ .../admin/permissionverbs/permissionedit.dm | 4 +-- .../reagent_containers/food/snacks/grown.dm | 2 +- code/setup.dm | 1 + icons/obj/power_cond_cyan.dmi | Bin 5980 -> 5913 bytes 8 files changed, 33 insertions(+), 20 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 44440e8288..2fae612a5b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -418,6 +418,7 @@ its easier to just keep the beam vertical. //returns 1 if made bloody, returns 0 otherwise /atom/proc/add_blood(mob/living/carbon/human/M as mob) + if(flags & NOBLOODY) return 0 .=1 if (!( istype(M, /mob/living/carbon/human) )) return 0 diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 27a000fd70..12ab6f5176 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -27,6 +27,9 @@ set category = "Object" set src in oview(1) + if(!istype(usr, /mob/living)) //ew ew ew usr, but it's the only way to check. + return + if( state != 4 ) usr << "The washing machine cannot run in this state." return diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 9dd3c79c71..425034ba48 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -16,6 +16,8 @@ var/spreadChance = 40 var/spreadIntoAdjacentChance = 60 var/evolveChance = 2 + var/lastTick = 0 + var/spreaded = 1 /obj/effect/glowshroom/single spreadChance = 0 @@ -40,15 +42,21 @@ else //if on the floor, glowshroom on-floor sprite icon_state = "glowshroomf" - spawn(delay) - SetLuminosity(round(potency/10)) - Spread() + processing_objects += src -/obj/effect/glowshroom/proc/Spread() - set background = 1 - var/spreaded = 1 + SetLuminosity(round(potency/10)) + lastTick = world.timeofday - while(spreaded) +/obj/effect/glowshroom/Del() + processing_objects -= src + ..() + +/obj/effect/glowshroom/process() + if(!spreaded) + return + + if(((world.timeofday - lastTick) > delay) || ((world.timeofday - lastTick) < 0)) + lastTick = world.timeofday spreaded = 0 for(var/i=1,i<=yield,i++) @@ -90,8 +98,6 @@ if(prob(evolveChance)) //very low chance to evolve on its own potency += rand(4,6) - sleep(delay) - /obj/effect/glowshroom/proc/CalcDir(turf/location = loc) set background = 1 var/direction = 16 diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index c230a3f5a9..931c2ba598 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -5,13 +5,18 @@ anchored = 1 w_class = 4.0 canhear_range = 2 + flags = FPRINT | CONDUCT | TABLEPASS | NOBLOODY var/number = 0 var/anyai = 1 var/mob/living/silicon/ai/ai = list() + var/last_tick //used to delay the powercheck /obj/item/device/radio/intercom/New() - spawn(5) - checkpower() + ..() + processing_objects += src + +/obj/item/device/radio/intercom/Del() + processing_objects -= src ..() /obj/item/device/radio/intercom/attack_ai(mob/user as mob) @@ -51,10 +56,9 @@ return ..() -/obj/item/device/radio/intercom/proc/checkpower() - - // Simple loop, checks for power. Strictly for intercoms - while(src) +/obj/item/device/radio/intercom/process() + if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0)) + last_tick = world.timeofday if(!src.loc) on = 0 @@ -69,5 +73,3 @@ icon_state = "intercom-p" else icon_state = "intercom" - - sleep(30) \ No newline at end of file diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index 5b805ac8bd..3bd563aaf5 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -12,8 +12,8 @@ Permissions Panel - - + +
diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm index dd3010ca63..c47103e282 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm @@ -886,7 +886,7 @@ user.SetLuminosity(round(user.luminosity + (potency/10),1)) /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/dropped(mob/user) - user.SetLuminosity(round(user.luminosity + (potency/10),1)) + user.SetLuminosity(round(user.luminosity - (potency/10),1)) SetLuminosity(round(potency/10,1)) diff --git a/code/setup.dm b/code/setup.dm index 9c3d2a84e0..e5ad466880 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -189,6 +189,7 @@ var/MAX_EXPLOSION_RANGE = 14 #define CONDUCT 64 // conducts electricity (metal etc.) #define FPRINT 256 // takes a fingerprint #define ON_BORDER 512 // item has priority to check when entering or leaving +#define NOBLOODY 2048 // used to items if they don't want to get a blood overlay #define GLASSESCOVERSEYES 1024 #define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags diff --git a/icons/obj/power_cond_cyan.dmi b/icons/obj/power_cond_cyan.dmi index 6e1fa1238e6e50ac61a3de2c46636ae8ad297f1a..34d981f55f70b4feb4c08f4d8face283de1599ac 100644 GIT binary patch delta 5619 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 Iv3Jz}0Y|r>82|tP From 3d2f92f92c9836673051cc8a8a6fb985106b2531 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Mon, 7 Oct 2013 18:31:18 +0100 Subject: [PATCH 3/3] Made energy weapons not get a bloody overlay. Signed-off-by: Mloc-Argent --- code/game/objects/items/weapons/melee/energy.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 0d46aa3a34..627d689b1a 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -1,5 +1,6 @@ /obj/item/weapon/melee/energy var/active = 0 + flags = FPRINT | TABLEPASS | NOBLOODY suicide_act(mob/user) viewers(user) << pick("\red [user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.", \ @@ -15,7 +16,7 @@ throw_speed = 1 throw_range = 5 w_class = 3.0 - flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS + flags = FPRINT | CONDUCT | NOSHIELD | TABLEPASS | NOBLOODY origin_tech = "combat=3" attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") @@ -33,7 +34,7 @@ throw_speed = 1 throw_range = 5 w_class = 2.0 - flags = FPRINT | TABLEPASS | NOSHIELD + flags = FPRINT | TABLEPASS | NOSHIELD | NOBLOODY origin_tech = "magnets=3;syndicate=4" attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -51,6 +52,6 @@ throw_speed = 1 throw_range = 1 w_class = 4.0//So you can't hide it in your pocket or some such. - flags = FPRINT | TABLEPASS | NOSHIELD + flags = FPRINT | TABLEPASS | NOSHIELD | NOBLOODY attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") var/datum/effect/effect/system/spark_spread/spark_system \ No newline at end of file