diff --git a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm index 3c2aae36bc1..53f9c618c63 100644 --- a/code/modules/mob/living/basic/farm_animals/bee/_bee.dm +++ b/code/modules/mob/living/basic/farm_animals/bee/_bee.dm @@ -100,13 +100,8 @@ return ..() /mob/living/basic/bee/death(gibbed) - if(beehome) - beehome.bees -= src - beehome = null - beegent = null - if(flags_1 & HOLOGRAM_1 || gibbed) - return ..() - spawn_corpse() + if(!(flags_1 & HOLOGRAM_1) && !gibbed) + spawn_corpse() return ..() /// Leave something to remember us by diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 0292d6a42dd..bf218c12099 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -99,6 +99,7 @@ #include "bake_a_cake.dm" #include "barsigns.dm" #include "baseturfs.dm" +#include "bee.dm" #include "bespoke_id.dm" #include "binary_insert.dm" #include "bitrunning.dm" diff --git a/code/modules/unit_tests/bee.dm b/code/modules/unit_tests/bee.dm new file mode 100644 index 00000000000..dad3a4d1a73 --- /dev/null +++ b/code/modules/unit_tests/bee.dm @@ -0,0 +1,15 @@ +/// Test beegent transfer +/datum/unit_test/beegent + +/datum/unit_test/beegent/Run() + var/mob/living/basic/bee/bee = allocate(__IMPLIED_TYPE__) + var/turf/bee_turf = get_turf(bee) + var/datum/reagent/picked = GLOB.chemical_reagents_list[/datum/reagent/toxin/fentanyl] + bee.assign_reagent(picked) + bee.death() + var/obj/item/trash/bee/dead_bee = locate() in bee_turf + TEST_ASSERT_NOTNULL(dead_bee, "The bee did not leave a corpse.") + TEST_ASSERT_EQUAL(dead_bee.beegent, picked, "The bee's corpse did not have the correct beegent assigned.") + TEST_ASSERT(dead_bee.reagents.has_reagent(/datum/reagent/toxin/fentanyl), "The bee's corpse did not contain any of the beegent.") + // clean up, we aren't allocated + QDEL_NULL(dead_bee)