diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm
index 8054d8c6a4..35a68cecc6 100644
--- a/code/game/objects/items/gift.dm
+++ b/code/game/objects/items/gift.dm
@@ -8,6 +8,14 @@
* Gifts
*/
+/var/static/blacklisted_items = typecacheof(list(
+ /obj/effect,
+ /obj/belly,
+ /obj/mafia_game_board,
+ /obj/docking_port,
+ /obj/shapeshift_holder,
+ /obj/screen))
+
GLOBAL_LIST_EMPTY(possible_gifts)
/obj/item/a_gift
@@ -95,7 +103,7 @@ GLOBAL_LIST_EMPTY(possible_gifts)
var/list/gift_types_list = subtypesof(/obj/item)
for(var/V in gift_types_list)
var/obj/item/I = V
- if((!initial(I.icon_state)) || (!initial(I.item_state)) || (initial(I.item_flags) & ABSTRACT))
+ if((!initial(I.icon_state)) || (!initial(I.item_state)) || (initial(I.item_flags) & ABSTRACT) || (is_type_in_typecache(I, blacklisted_items)))
gift_types_list -= V
GLOB.possible_gifts = gift_types_list
var/gift_type = pick(GLOB.possible_gifts)
diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm
index 16151c4191..90016954fc 100644
--- a/code/modules/holiday/halloween/jacqueen.dm
+++ b/code/modules/holiday/halloween/jacqueen.dm
@@ -50,6 +50,13 @@
var/cached_z
/// I'm busy, don't move.
var/busy = FALSE
+ var/static/blacklisted_items = typecacheof(list(
+ /obj/effect,
+ /obj/belly,
+ /obj/mafia_game_board,
+ /obj/docking_port,
+ /obj/shapeshift_holder,
+ /obj/screen))
/mob/living/simple_animal/jacq/Initialize()
..()
@@ -112,7 +119,7 @@
/mob/living/simple_animal/jacq/proc/jacqrunes(message, mob/living/carbon/C) //Displays speechtext over Jacq for the user only.
var/atom/hearer = C
- var/list/spans = list("spooky")
+ var/list/spans = list("spooky")
new /datum/chatmessage(message, src, hearer, spans)
@@ -228,10 +235,13 @@
return
var/new_obj = pick(subtypesof(/obj))
- //for(var/item in blacklist)
- // if(new_obj == item)
- // panic()
+ for(var/item in blacklisted_items)
+ if(is_type_in_typecache(new_obj, blacklisted_items))
+ new_obj = /obj/item/reagent_containers/food/snacks/special_candy
var/reward = new new_obj(C.loc)
+ if(new_obj == /obj/item/reagent_containers/food/snacks/special_candy)
+ new new_obj(C.loc)
+ new new_obj(C.loc) //Giving them back their candies in case it's something from the blacklist or if the game literally rolled candies. What rotten luck.
C.put_in_hands(reward)
visible_message("[src] waves her hands, magicking up a [reward] from thin air, \"There ye are [gender], enjoy! \"")
jacqrunes("There ye are [gender], enjoy!", C)