diff --git a/code/datums/beam.dm b/code/datums/beam.dm index d0b6d791..d97ee9a7 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -61,7 +61,8 @@ /datum/beam/proc/recalculate_in(time) if(timing_id) deltimer(timing_id) - timing_id = addtimer(CALLBACK(src, .proc/recalculate), time, TIMER_STOPPABLE) + if(!finished) + timing_id = addtimer(CALLBACK(src, .proc/recalculate), time, TIMER_STOPPABLE) /datum/beam/proc/after_calculate() if((sleep_time == null) || finished) //Does not automatically recalculate. diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm index fa6babbb..23977746 100644 --- a/code/game/objects/effects/proximity.dm +++ b/code/game/objects/effects/proximity.dm @@ -109,4 +109,4 @@ /obj/effect/abstract/proximity_checker/Crossed(atom/movable/AM) set waitfor = FALSE - monitor.hasprox_receiver.HasProximity(AM) + monitor?.hasprox_receiver.HasProximity(AM) diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 773914ec..4d1baf68 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -10,7 +10,7 @@ var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn. var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards. -/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases) +/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases, list/blood_dna) . = ..() if(gibtypes.len != gibamounts.len) stack_trace("Gib list amount length mismatch!") @@ -33,7 +33,7 @@ var/body_coloring = "" if(source_mob) if(!issilicon(source_mob)) - dna_to_add = source_mob.get_blood_dna_list() //ez pz + dna_to_add = blood_dna || source_mob.get_blood_dna_list() //ez pz if(ishuman(source_mob)) var/mob/living/carbon/human/H = source_mob if(H.dna.species.use_skintones) diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 75b6acfe..7da65b41 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -117,7 +117,7 @@ if(!O.reagents) continue var/reagent_list = pretty_string_from_reagent_list(O.reagents) - user.log_message("removed [O] ([reagent_list]) from [src]") + user.log_message("removed [O] ([reagent_list]) from [src]", LOG_GAME) beakers = list() to_chat(user, "You open the [initial(name)] assembly and remove the payload.") return // First use of the wrench remove beakers, then use the wrench to remove the activation mechanism. diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index fd8d2ce1..666e9907 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -311,7 +311,7 @@ if(ishuman(cultist)) var/mob/living/carbon/human/H = cultist H.eye_color = "f00" - H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) + H.dna?.update_ui_block(DNA_EYE_COLOR_BLOCK) ADD_TRAIT(H, TRAIT_CULT_EYES, "valid_cultist") H.update_body() diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 97d6ce3e..48a9879c 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -891,7 +891,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(new_human) new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ "Your link to the world fades. Your form breaks apart.") - for(var/obj/I in new_human) + for(var/obj/item/I in new_human) new_human.dropItemToGround(I, TRUE) new_human.dust() else if(choice == "Ascend as a Dark Spirit") diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 552a82ef..f61c8741 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -7,13 +7,14 @@ /mob/living/carbon/human/spawn_gibs(with_bodyparts, atom/loc_override) var/location = loc_override ? loc_override.drop_location() : drop_location() if(dna?.species?.gib_types) + var/blood_dna = get_blood_dna_list() var/datum/species/S = dna.species var/length = length(S.gib_types) if(length) var/path = (with_bodyparts && length > 1) ? S.gib_types[2] : S.gib_types[1] new path(location, src, get_static_viruses()) else - new S.gib_types(location, src, get_static_viruses()) + new S.gib_types(location, src, get_static_viruses(), blood_dna) else if(with_bodyparts) new /obj/effect/gibspawner/human(location, src, get_static_viruses()) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index ef4d9aef..c9b9963d 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -184,8 +184,9 @@ return TRUE /mob/living/simple_animal/bot/death(gibbed) - explode() - ..() + . = ..() + if(!gibbed) + explode() /mob/living/simple_animal/bot/proc/explode() qdel(src) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 487185e1..134dc9f0 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -332,8 +332,8 @@ speak_chance *= 1.27 // 20 crackers to go from 1% to 100% speech_shuffle_rate += 10 to_chat(user, "[src] eagerly devours the cracker.") - ..() - return + return // the cracker was deleted + return ..() //Bullets /mob/living/simple_animal/parrot/bullet_act(obj/item/projectile/Proj) diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 142388c3..9e098446 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -59,7 +59,12 @@ /obj/effect/accelerated_particle/proc/move() if(!step(src,dir)) - forceMove(get_step(src,dir)) + var/turf/T = get_step(src,dir) + if(T) + forceMove(T) + else + qdel(src) + return movement_range-- if(movement_range == 0) qdel(src) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 6dd37062..58f52f81 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -364,14 +364,17 @@ desc = "Decreases the cooldown of a kinetic accelerator. Not rated for minebot use." modifier = 2.5 minebot_upgrade = FALSE + var/decreased /obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = ..() if(.) - KA.overheat_time -= modifier + var/old = KA.overheat_time + KA.overheat_time = max(0, KA.overheat_time - modifier) + decreased = old - KA.overheat_time /obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) - KA.overheat_time += modifier + KA.overheat_time += decreased ..() /obj/item/borg/upgrade/modkit/cooldown/minebot diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 1f97035b..11f525a4 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -10,7 +10,7 @@ if(clear_conversion == REACTION_CLEAR_IMPURE | REACTION_CLEAR_INVERSE) for(var/id in results) var/datum/reagent/R = my_atom.reagents.has_reagent("[id]") - if(R.purity == 1) + if(!R || R.purity == 1) continue var/cached_volume = R.volume @@ -25,7 +25,6 @@ my_atom.reagents.add_reagent(R.impure_chem, impureVol, FALSE, other_purity = 1) R.cached_purity = R.purity R.purity = 1 - return //Called when temperature is above a certain threshold, or if purity is too low. /datum/chemical_reaction/proc/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH, Exploding = FALSE)