From 65fc980b202f50913b17a6d6f0d1880c13ee230a Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Thu, 4 Jun 2015 13:24:12 +0200 Subject: [PATCH 01/10] Stack splitting and cable merging fixes. Split stacks will now keep the same colors. Can now only join cables of the same color together, unless you are a borg. --- code/game/objects/items/stacks/stack.dm | 1 + code/modules/power/cable.dm | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index ab1f767a429..798b93955e5 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -252,6 +252,7 @@ var/orig_amount = src.amount if (transfer && src.use(transfer)) var/obj/item/stack/newstack = new src.type(loc, transfer) + newstack.color = color if (prob(transfer/orig_amount * 100)) transfer_fingerprints_to(newstack) if(blood_DNA) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index d73d60926e5..3058dc0696a 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -613,6 +613,12 @@ obj/structure/cable/proc/cableColor(var/colorC) // Items usable on a cable coil : // - Wirecutters : cut them duh ! // - Cable coil : merge cables +/obj/item/stack/cable_coil/proc/can_merge(var/obj/item/stack/cable_coil/C) + return color == C.color + +/obj/item/stack/cable_coil/cyborg/can_merge() + return 1 + /obj/item/stack/cable_coil/attackby(obj/item/weapon/W, mob/user) ..() if( istype(W, /obj/item/weapon/wirecutters) && src.get_amount() > 1) @@ -623,6 +629,11 @@ obj/structure/cable/proc/cableColor(var/colorC) return else if(istype(W, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/C = W + + if(!can_merge(C)) + user << "These coils do not go together." + return + if(C.get_amount() >= get_max_amount()) user << "The coil is too long, you cannot add any more cable to it." return From 6aaacd6063ac70e51de66cec0997963f78bac2fb Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Thu, 4 Jun 2015 13:27:44 +0200 Subject: [PATCH 02/10] Changelog entry. --- html/changelogs/PsiOmegaDelta-StackFixes.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/PsiOmegaDelta-StackFixes.yml diff --git a/html/changelogs/PsiOmegaDelta-StackFixes.yml b/html/changelogs/PsiOmegaDelta-StackFixes.yml new file mode 100644 index 00000000000..a21e4c610bf --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-StackFixes.yml @@ -0,0 +1,6 @@ +author: PsiOmegaDelta +delete-after: True + +changes: + - bugfix: "Split stacks no longer lose their coloring." + - tweak: "Can no longer merge cables of different colors." From 2373eb4bdd454c21e830c7878d16b6ee4d8883d8 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Thu, 4 Jun 2015 14:40:45 +0200 Subject: [PATCH 03/10] Fixes #9664. Datum pool no longer creates a new object just for the sake of it when initializing pool lists. Also bandaids an issue where water could be qdeled while being sprayed and reagents nulled, because someone calls spawn() qdel in new. Datum pool now also adds excess pool objects on the trash pile instead of calling del directly. --- code/__HELPERS/datum_pool.dm | 7 +++++-- code/game/objects/effects/chem/water.dm | 21 ++++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/code/__HELPERS/datum_pool.dm b/code/__HELPERS/datum_pool.dm index 79970faf7b6..5c13c0d8ba2 100644 --- a/code/__HELPERS/datum_pool.dm +++ b/code/__HELPERS/datum_pool.dm @@ -29,7 +29,7 @@ var/global/list/GlobalPool = list() if(!D) // So the GC knows we're pooling this type. if(!GlobalPool[get_type]) - GlobalPool[get_type] = list(new get_type) + GlobalPool[get_type] = list() if(islist(second_arg)) return new get_type (arglist(second_arg)) else @@ -58,7 +58,10 @@ var/global/list/GlobalPool = list() #ifdef DEBUG_ATOM_POOL world << text("DEBUG_DATUM_POOL: PlaceInPool([]) exceeds []. Discarding.", D.type, ATOM_POOL_COUNT) #endif - del(D) + if(garbage_collector) + garbage_collector.AddTrash(D) + else + del(D) return if(D in GlobalPool[D.type]) diff --git a/code/game/objects/effects/chem/water.dm b/code/game/objects/effects/chem/water.dm index 4ae012cc9ec..9f89842f0c5 100644 --- a/code/game/objects/effects/chem/water.dm +++ b/code/game/objects/effects/chem/water.dm @@ -17,17 +17,20 @@ if(!target) return for(var/i = 1 to step_count) + if(!loc) + return step_towards(src, target) var/turf/T = get_turf(src) - reagents.touch_turf(T) - var/mob/M = locate() in T - if(M) - reagents.splash_mob(M, reagents.total_volume) - break - for(var/atom/A in T) - reagents.touch(A) - if(T == get_turf(target)) - break + if(T && reagents) + reagents.touch_turf(T) + var/mob/M = locate() in T + if(M) + reagents.splash_mob(M, reagents.total_volume) + break + for(var/atom/A in T) + reagents.touch(A) + if(T == get_turf(target)) + break sleep(delay) sleep(10) qdel(src) From 6fb1ea85e1228cdab1c762025e7b9f979575c1d5 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Thu, 4 Jun 2015 15:18:51 +0200 Subject: [PATCH 04/10] Adds a notice to StaffWho that adminhelps are also sent to IRC. --- code/game/verbs/who.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index e96bc3b4da8..d877001fad3 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -98,6 +98,8 @@ else if (R_MOD & C.holder.rights || R_MENTOR & C.holder.rights) modmsg += "\t[C] is a [C.holder.rank]\n" num_mods_online++ - + if(config.admin_irc) + src << "Adminhelps are also sent to IRC. If no admins are available in game try anyway and an admin on IRC may see it and respond." msg = "Current Admins ([num_admins_online]):\n" + msg + "\n Current [config.mods_are_mentors ? "Mentors" : "Moderators"]([num_mods_online]):\n" + modmsg + src << msg From 05b4c97e1a62f99f5f9d406333e44c882d8e8a65 Mon Sep 17 00:00:00 2001 From: Dennok Date: Thu, 4 Jun 2015 16:40:31 +0300 Subject: [PATCH 05/10] fix #9666 up --- code/modules/shieldgen/shield_gen.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index 9f89ede0394..544998ce615 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -214,7 +214,7 @@ for(var/turf/O in covered_turfs) var/obj/effect/energy_field/E = new(O) field.Add(E) - qdel(covered_turfs) + covered_turfs = null for(var/mob/M in view(5,src)) M << "\icon[src] You hear heavy droning start up." From 224cbb41bf022e149fa8e37ad7edb3c95c4676ba Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Thu, 4 Jun 2015 19:32:05 +0200 Subject: [PATCH 06/10] Garbage/qdel changes. Moves atom/Destroy() into atom/movable/Destroy(). Is now a /tg/ copy-paste. Means deleting turfs no longer wipes everything on that turf and that pulling is canceled. qdel no longer willingly accepts lists. --- code/controllers/Processes/garbage.dm | 8 +------- code/game/atoms.dm | 12 ------------ code/game/atoms_movable.dm | 9 ++++++++- 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/code/controllers/Processes/garbage.dm b/code/controllers/Processes/garbage.dm index 757729dfa66..ade159f1ac6 100644 --- a/code/controllers/Processes/garbage.dm +++ b/code/controllers/Processes/garbage.dm @@ -85,14 +85,8 @@ var/list/delayed_garbage = list() /proc/qdel(var/datum/A) if(!A) return - if(istype(A, /list)) - var/list/L = A - for(var/E in L) - qdel(E) - return - if(!istype(A)) - //warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.") + warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.") del(A) if(garbage_collector) garbage_collector.dels++ diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 742c6389a95..79a531eb602 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -23,18 +23,6 @@ //Detective Work, used for the duplicate data points kept in the scanners var/list/original_atom -/atom/Destroy() - . = ..() - density = 0 - set_opacity(0) - - if(reagents) - qdel(reagents) - reagents = null - for(var/atom/movable/AM in contents) - qdel(AM) - invisibility = 101 - /atom/proc/assume_air(datum/gas_mixture/giver) return null diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index f86c135da40..95bf4aa94da 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -31,8 +31,15 @@ /atom/movable/Destroy() . = ..() - + if(reagents) + qdel(reagents) + for(var/atom/movable/AM in contents) + qdel(AM) loc = null + if (pulledby) + if (pulledby.pulling == src) + pulledby.pulling = null + pulledby = null /atom/movable/proc/initialize() return From 9ff27dc03840ee753b4dc68fa7afccbdd3b6e53a Mon Sep 17 00:00:00 2001 From: Karolis2011 Date: Thu, 4 Jun 2015 20:48:57 +0300 Subject: [PATCH 07/10] Now when welding sorting pipe, game update it's name --- code/modules/recycling/disposal-construction.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index c6c00a3dbbf..d88d5cb5947 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -289,6 +289,7 @@ SortP.sortType = sortType SortP.updatedir() SortP.updatedesc() + SortP.updatename() else if(ptype==6) // Disposal bin var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc) From 2507a8007bacdd6ba05ebf649844975adda49b06 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Fri, 5 Jun 2015 01:10:15 +0100 Subject: [PATCH 08/10] Comments out a section that requires a single object to be both /mob/living/carbon/human and /obj/item/clothing/head --- code/game/objects/items/weapons/storage/briefcase.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 0f534ade9ec..4193ef281b7 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -29,11 +29,14 @@ msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (?)") if (M.stat < 2 && M.health < 50 && prob(90)) - var/mob/H = M + // I'm not entirely sure what this bit of code is trying to achieve, but it doesn't achieve anything due to requiring a single object to be both a human and a hat + // Commented out pending an implementation that doesn't require humans to be hats and doesn't use '8' instead of.... whatever the hell '8' is supposed to represent ~GN +/* var/mob/H = M // ******* Check if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) M << "\red The helmet protects you from being hit hard in the head!" return +*/ var/time = rand(2, 6) if (prob(75)) M.Paralyse(time) From 67ccb6997b3a542e4eed478c7b963271bf083ac7 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Fri, 5 Jun 2015 09:00:19 +0100 Subject: [PATCH 09/10] Entirely removes briefcase instastun and pointless New() definition --- .../items/weapons/storage/briefcase.dm | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 4193ef281b7..ff3d60aec8a 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -10,43 +10,3 @@ w_class = 4 max_w_class = 3 max_storage_space = 16 - -/obj/item/weapon/storage/briefcase/New() - ..() - -/obj/item/weapon/storage/briefcase/attack(mob/living/M as mob, mob/living/user as mob) - //..() - - if ((CLUMSY in user.mutations) && prob(50)) - user << "\red The [src] slips out of your hand and hits your head." - user.take_organ_damage(10) - user.Paralyse(2) - return - - - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (?)") - - if (M.stat < 2 && M.health < 50 && prob(90)) - // I'm not entirely sure what this bit of code is trying to achieve, but it doesn't achieve anything due to requiring a single object to be both a human and a hat - // Commented out pending an implementation that doesn't require humans to be hats and doesn't use '8' instead of.... whatever the hell '8' is supposed to represent ~GN -/* var/mob/H = M - // ******* Check - if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))) - M << "\red The helmet protects you from being hit hard in the head!" - return -*/ - var/time = rand(2, 6) - if (prob(75)) - M.Paralyse(time) - else - M.Stun(time) - if(M.stat != 2) M.stat = 1 - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [] has been knocked unconscious!", M), 1, "\red You hear someone fall.", 2) - else - M << text("\red [] tried to knock you unconcious!",user) - M.eye_blurry += 3 - - return From cb7fb3aea936156d334ff6a0e896e5777ef11f81 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Fri, 5 Jun 2015 10:23:44 +0200 Subject: [PATCH 10/10] Changelog update. --- html/changelog.html | 7 +++++++ html/changelogs/.all_changelog.yml | 4 ++++ html/changelogs/PsiOmegaDelta-StackFixes.yml | 6 ------ 3 files changed, 11 insertions(+), 6 deletions(-) delete mode 100644 html/changelogs/PsiOmegaDelta-StackFixes.yml diff --git a/html/changelog.html b/html/changelog.html index 01820bee35b..3acfe088288 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,13 @@ -->
+

05 June 2015

+

PsiOmegaDelta updated:

+
    +
  • Split stacks no longer lose their coloring.
  • +
  • Can no longer merge cables of different colors.
  • +
+

04 June 2015

PsiOmegaDelta updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 499233b5a8b..a2b465ccabe 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1879,3 +1879,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. unless subverted/malfunctioning. - bugfix: Astral projecting mobs, such as wizards or cultists, may no longer respawn as something else while their body lives. +2015-06-05: + PsiOmegaDelta: + - bugfix: Split stacks no longer lose their coloring. + - tweak: Can no longer merge cables of different colors. diff --git a/html/changelogs/PsiOmegaDelta-StackFixes.yml b/html/changelogs/PsiOmegaDelta-StackFixes.yml deleted file mode 100644 index a21e4c610bf..00000000000 --- a/html/changelogs/PsiOmegaDelta-StackFixes.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: PsiOmegaDelta -delete-after: True - -changes: - - bugfix: "Split stacks no longer lose their coloring." - - tweak: "Can no longer merge cables of different colors."