diff --git a/code/datums/elements/ghost_role_eligibility.dm b/code/datums/elements/ghost_role_eligibility.dm index 519a34e01f..81fd593d5f 100644 --- a/code/datums/elements/ghost_role_eligibility.dm +++ b/code/datums/elements/ghost_role_eligibility.dm @@ -15,6 +15,7 @@ var/mob/M = target if(!(M in eligible_mobs)) eligible_mobs += M + RegisterSignal(M, COMSIG_MOB_GHOSTIZE, .proc/get_ghost_flags) if(penalize) //penalizing them from making a ghost role / midround antag comeback right away. var/penalty = CONFIG_GET(number/suicide_reenter_round_timer) MINUTES var/roundstart_quit_limit = CONFIG_GET(number/roundstart_suicide_time_limit) MINUTES @@ -32,12 +33,12 @@ else if(timeouts[M.ckey] == CANT_REENTER_ROUND) return timeouts[M.ckey] = max(timeouts[M.ckey],penalty) - RegisterSignal(M,COMSIG_MOB_GHOSTIZE,.proc/get_ghost_flags) /datum/element/ghost_role_eligibility/Detach(mob/M) . = ..() if(M in eligible_mobs) eligible_mobs -= M + UnregisterSignal(M, COMSIG_MOB_GHOSTIZE) /datum/element/ghost_role_eligibility/proc/get_all_ghost_role_eligible(silent = FALSE) var/list/candidates = list() diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index 2156581cb1..9edaa7605c 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -31,6 +31,7 @@ //MUT_EXTRA - A mutation that is in the mutations tab, and can be given and taken away through though the DNA console. Has a 0 before it's name in the mutation section of the dna console //MUT_OTHER Cannot be interacted with by players through normal means. I.E. wizards mutate + var/list/conflicts //any mutations that might conflict. put mutation typepath defines in here. make sure to enter it both ways (so that A conflicts with B, and B with A) var/can_chromosome = CHROMOSOME_NONE //can we take chromosomes? 0: CHROMOSOME_NEVER never, 1:CHROMOSOME_NONE yeah, 2: CHROMOSOME_USED no, already have one var/chromosome_name //purely cosmetic var/modified = FALSE //ugly but we really don't want chromosomes and on_acquiring to overlap and apply double the powers @@ -60,6 +61,14 @@ return TRUE if(limb_req && !H.get_bodypart(limb_req)) return TRUE + for(var/M in H.dna.mutations)//check for conflicting powers + var/datum/mutation/human/mewtayshun = M + if(LAZYLEN(mewtayshun.conflicts)) + for(var/cons in mewtayshun.conflicts) + var/datum/mutation/human/conflicter = cons + if(conflicter == type) + to_chat(H, "You feel your genes resisting something.") + return TRUE owner = H dna = H.dna dna.mutations += src diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index cc286058f1..7c2c954bcc 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -75,6 +75,7 @@ quality = POSITIVE difficulty = 16 instability = 5 + conflicts = list(GIGANTISM) locked = TRUE // Default intert species for now, so locked from regular pool. /datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner) @@ -333,6 +334,7 @@ desc = "The cells within the subject spread out to cover more area, making the subject appear larger." quality = MINOR_NEGATIVE difficulty = 12 + conflicts = list(DWARFISM) /datum/mutation/human/gigantism/on_acquiring(mob/living/carbon/human/owner) if(..()) diff --git a/code/game/machinery/computer/arcade/minesweeper.dm b/code/game/machinery/computer/arcade/minesweeper.dm index 3e32c4ceeb..5c30489b00 100644 --- a/code/game/machinery/computer/arcade/minesweeper.dm +++ b/code/game/machinery/computer/arcade/minesweeper.dm @@ -159,6 +159,8 @@ if(CHECK_BITFIELD(obj_flags, EMAGGED) && !exploding_hell) exploding_hell = TRUE explode_EVERYTHING() + if(QDELETED(src)) + return if(mine_sound) switch(rand(1,3)) //Play every time a mine is hit if(1) @@ -367,10 +369,10 @@ var/row_limit = rows-1 var/column_limit = columns-1 var/mine_limit_v2 = mine_limit - if(rows > 11) - row_limit = 10 - if(columns > 11) - column_limit = 10 + if(rows > 21) + row_limit = 20 + if(columns > 21) + column_limit = 20 if(mine_limit > (rows*columns) * 0.25) mine_limit_v2 = 24 message_admins("[key_name_admin(user)] failed an emagged Minesweeper arcade and has unleashed an explosion armageddon of size [row_limit],[column_limit] around [ADMIN_LOOKUPFLW(user.loc)]!") @@ -378,12 +380,27 @@ explosion(loc, 2, 5, 10, 15) //Thought you could survive by putting as few mines as possible, huh?? else explosion(loc, 1, 3, rand(1,5), rand(1,10)) - for(var/y69=y-row_limit;y69