From 026ec265d46d23eb3299ff844621329f9ccc71d1 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Mon, 23 Mar 2015 12:11:58 +0300 Subject: [PATCH 1/6] Fixed construction borg's Rglass --- code/modules/mob/living/silicon/robot/robot_modules.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 6add592da8..7aca17963b 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -196,7 +196,7 @@ var/obj/item/stack/sheet/glass/reinforced/cyborg/RG = new /obj/item/stack/sheet/glass/reinforced/cyborg(src) RG.synths = list(metal, glass) - src.modules += R + src.modules += RG /obj/item/weapon/robot_module/engineering name = "engineering robot module" From a9ee51bc646ebff52c9b16b1711c8d86f4af63b9 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Mon, 23 Mar 2015 23:02:43 +0300 Subject: [PATCH 2/6] Readded missing check for paper editing Removed it back when HTML in paper was a thing again adn never put back in, can possibly cause issues. Thanks @volas for noticing. --- code/modules/paperwork/paper.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 3608386f9a..c3a3cfe1ee 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -324,8 +324,7 @@ if(href_list["write"]) var/id = href_list["write"] //var/t = strip_html_simple(input(usr, "What text do you wish to add to " + (id=="end" ? "the end of the paper" : "field "+id) + "?", "[name]", null),8192) as message - //var/t = strip_html_simple(input("Enter what you want to write:", "Write", null, null) as message, MAX_MESSAGE_LEN) - var/t = input("Enter what you want to write:", "Write", null, null) as message + var/t = strip_html_simple(input("Enter what you want to write:", "Write", null, null) as message, MAX_PAPER_MESSAGE_LEN) var/obj/item/i = usr.get_active_hand() // Check to see if he still got that darn pen, also check if he's using a crayon or pen. var/iscrayon = 0 if(!istype(i, /obj/item/weapon/pen)) From a57ba2e26bb118227a6215f0549509b261f89e21 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Mar 2015 12:39:44 +1030 Subject: [PATCH 3/6] Fixes #8589 --- code/game/antagonist/station/rogue_ai.dm | 4 ++++ code/modules/mob/living/silicon/ai/ai.dm | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/antagonist/station/rogue_ai.dm b/code/game/antagonist/station/rogue_ai.dm index cc8a596496..372556c205 100644 --- a/code/game/antagonist/station/rogue_ai.dm +++ b/code/game/antagonist/station/rogue_ai.dm @@ -19,6 +19,10 @@ var/datum/antagonist/rogue_ai/malf var/station_captured var/can_nuke = 0 +/datum/antagonist/rogue_ai/New() + ..() + malf = src + /datum/antagonist/rogue_ai/proc/hack_apc(var/obj/machinery/power/apc/apc) hacked_apcs |= apc diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 9dcf84f776..5adf82f5e8 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -189,7 +189,7 @@ var/list/ai_verbs_default = list( src << radio_text - if (!(ticker && ticker.mode && (mind in malf.current_antagonists))) + if (malf && !(mind in malf.current_antagonists)) show_laws() src << "These laws may be changed by other players, or by you being the traitor." From ef50918b9c052bcb476335458f6ad2cb460f29a0 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Mar 2015 12:45:37 +1030 Subject: [PATCH 4/6] Hackfix for #8588 --- code/modules/hydroponics/seed_packets.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm index 21472e8ab2..093c4d7926 100644 --- a/code/modules/hydroponics/seed_packets.dm +++ b/code/modules/hydroponics/seed_packets.dm @@ -12,6 +12,8 @@ var/global/list/plant_seed_sprites = list() var/modified = 0 /obj/item/seeds/New() + while(!plant_controller) + sleep(30) update_seed() ..() From 45f28d537271a8ca01df2ee46894893a3b59482c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Mar 2015 13:20:24 +1030 Subject: [PATCH 5/6] Fixes #8485 --- code/game/machinery/machinery.dm | 6 ++--- .../structures/crates_lockers/crates.dm | 3 ++- code/game/objects/structures/grille.dm | 13 ++++++----- code/modules/clothing/spacesuits/rig/rig.dm | 23 ++++++++++--------- code/modules/power/apc.dm | 6 +++-- code/modules/power/cable.dm | 6 ++--- code/modules/power/smes.dm | 3 ++- 7 files changed, 33 insertions(+), 27 deletions(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 5a4e6d7255..101e699507 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -270,9 +270,9 @@ Class Procs: if(temp_apc && temp_apc.terminal && temp_apc.terminal.powernet) temp_apc.terminal.powernet.trigger_warning() - return 1 - else - return 0 + if(user.stunned) + return 1 + return 0 /obj/machinery/proc/default_deconstruction_crowbar(var/mob/user, var/obj/item/weapon/crowbar/C) if(!istype(C)) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 984da10be6..917d244afa 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -30,7 +30,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - return 2 + if(usr.stunned) + return 2 playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) for(var/obj/O in src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index c78754c7ed..b6407fd376 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -68,12 +68,12 @@ //Flimsy grilles aren't so great at stopping projectiles. However they can absorb some of the impact var/damage = Proj.damage var/passthrough = 0 - + //20% chance that the grille provides a bit more cover than usual. Support structure for example might take up 20% of the grille's area. //If they click on the grille itself then we assume they are aiming at the grille itself and the extra cover behaviour is always used. switch(Proj.damage_type) if(BRUTE) - //bullets + //bullets if(Proj.original == src || prob(20)) Proj.damage *= between(0, Proj.damage/60, 0.5) if(prob(max((damage-10)/25, 0))*100) @@ -86,11 +86,11 @@ if(!(Proj.original == src || prob(20))) Proj.damage *= 0.5 passthrough = 1 - + if(passthrough) . = -1 damage = between(0, (damage - Proj.damage)*(Proj.damage_type == BRUTE? 0.4 : 1), 10) //if the bullet passes through then the grille avoids most of the damage - + src.health -= damage*0.2 spawn(0) healthcheck() //spawn to make sure we return properly if the grille is deleted @@ -139,7 +139,7 @@ if(WINDOW.dir == dir_to_set)//checking this for a 2nd time to check if a window was made while we were waiting. user << "There is already a window facing this way there." return - + var/wtype = ST.created_window if (ST.use(1)) var/obj/structure/window/WD = new wtype(loc, dir_to_set, 1) @@ -197,7 +197,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - return 1 + if(user.stunned) + return 1 else return 0 return 0 diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index d003d64d59..cf0bf7ef79 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -688,27 +688,28 @@ //Todo /obj/item/weapon/rig/proc/malfunction() - return 0 - + return 0 + /obj/item/weapon/rig/emp_act(severity_class) //set malfunctioning if(emp_protection < 30) //for ninjas, really. malfunctioning += 10 if(malfunction_delay <= 0) - malfunction_delay = max(malfunction_delay, round(30/severity_class)) - + malfunction_delay = max(malfunction_delay, round(30/severity_class)) + //drain some charge if(cell) cell.emp_act(severity_class + 15) - + //possibly damage some modules - take_hit((100/severity_class), "electrical pulse", 1) + take_hit((100/severity_class), "electrical pulse", 1) /obj/item/weapon/rig/proc/shock(mob/user) if (electrocute_mob(user, cell, src)) spark_system.start() - return 1 + if(user.stunned) + return 1 return 0 - + /obj/item/weapon/rig/proc/take_hit(damage, source, is_emp=0) if(!installed_modules.len) @@ -740,7 +741,7 @@ dam_module = pick(damaged_modules) else if(valid_modules.len) dam_module = pick(valid_modules) - + if(!dam_module) return dam_module.damage++ @@ -748,11 +749,11 @@ if(!source) source = "hit" - if(wearer) + if(wearer) if(dam_module.damage >= 2) wearer << "The [source] has disabled your [dam_module.interface_name]!" else - wearer << "The [source] has damaged your [dam_module.interface_name]!" + wearer << "The [source] has damaged your [dam_module.interface_name]!" dam_module.deactivate() /obj/item/weapon/rig/proc/malfunction_check(var/mob/living/carbon/human/user) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 0e98e462b2..6bd96439ce 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -535,7 +535,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - return + if(user.stunned) + return C.use(10) user.visible_message(\ "[user.name] has added cables to the APC frame!",\ @@ -555,7 +556,8 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - return + if(usr.stunned) + return new /obj/item/stack/cable_coil(loc,10) user << "You cut the cables and dismantle the power terminal." del(terminal) // qdel diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 4c0d9dfbf7..d73d60926e 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -193,9 +193,9 @@ By design, d1 is the smallest direction and d2 is the highest var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - return 1 - else - return 0 + if(usr.stunned) + return 1 + return 0 //explosion handling /obj/structure/cable/ex_act(severity) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index deeeed0084..eec21c1a28 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -275,7 +275,8 @@ s.set_up(5, 1, src) s.start() building_terminal = 0 - return 0 + if(usr.stunned) + return 0 new /obj/item/stack/cable_coil(loc,10) user.visible_message(\ "[user.name] cut the cables and dismantled the power terminal.",\ From 7e615521ef76e8e09f27cb14518ec70844a2a36c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Mar 2015 13:51:44 +1030 Subject: [PATCH 6/6] Should fix issues with invisible seeds/products/plants. --- code/modules/hydroponics/seed_controller.dm | 4 +++- icons/obj/seeds.dmi | Bin 7374 -> 7330 bytes 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seed_controller.dm b/code/modules/hydroponics/seed_controller.dm index 84cbc727de..9b346b961c 100644 --- a/code/modules/hydroponics/seed_controller.dm +++ b/code/modules/hydroponics/seed_controller.dm @@ -66,7 +66,9 @@ var/global/datum/controller/plants/plant_controller // Set in New(). plant_sprites[base] = ikey for(var/icostate in icon_states('icons/obj/hydroponics_products.dmi')) - plant_product_sprites |= icostate + var/split = findtext(icostate,"-") + if(split) + plant_product_sprites |= copytext(icostate,1,split) // Populate the global seed datum list. for(var/type in typesof(/datum/seed)-/datum/seed) diff --git a/icons/obj/seeds.dmi b/icons/obj/seeds.dmi index 63d1ecd9435cc40b0460d361ab1e33483f12651a..530683ef9bf7afda4d4943f53c9e1950892c6abb 100644 GIT binary patch literal 7330 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 literal 7374 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