diff --git a/code/modules/holiday/halloween/bartholomew.dm b/code/modules/holiday/halloween/bartholomew.dm
index e403ce4c91..129f4e29b6 100644
--- a/code/modules/holiday/halloween/bartholomew.dm
+++ b/code/modules/holiday/halloween/bartholomew.dm
@@ -31,6 +31,9 @@
say("It doesn't seem like that's magical enough!")
/obj/item/barthpot/attack_hand(mob/user)
+ if(!active)
+ say("Meow!")
+ return
say("Hello there, I'm Bartholomew, Jacqueline's Familiar.")
sleep(20)
say("I'm currently seeking items to put into my pot, if we get the right items, it should crystalise into a magic candy!")
diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm
index 689c3dc2b8..b2f69df2e4 100644
--- a/code/modules/holiday/halloween/jacqueen.dm
+++ b/code/modules/holiday/halloween/jacqueen.dm
@@ -34,8 +34,8 @@
real_name = "Jacqueline"
icon = 'icons/obj/halloween_items.dmi'
icon_state = "jacqueline"
- maxHealth = INFINITY
- health = INFINITY
+ maxHealth = 25
+ health = 25
density = FALSE
speech_span = "spooky"
friendly = "pets"
@@ -69,6 +69,7 @@
/mob/living/simple_animal/jacq/attack_hand(mob/living/carbon/human/M)
if(!active)
+ say("Hello there [gender_check(M)]!")
return ..()
if(!ckey)
canmove = FALSE
@@ -78,6 +79,7 @@
/mob/living/simple_animal/jacq/attack_paw(mob/living/carbon/monkey/M)
if(!active)
+ say("Hello there [gender_check(M)]!")
return ..()
if(!ckey)
canmove = FALSE
@@ -105,10 +107,19 @@
return FALSE
+/mob/living/simple_animal/jacq/proc/gender_check(mob/living/carbon/C)
+ var/gender = "lamb"
+ if(C)
+ if(C.gender == MALE)
+ gender = "laddie"
+ if(C.gender == FEMALE)
+ gender = "lassie"
+ return gender
+
//Ye wee bugger, gerrout of it. Ye've nae tae enjoy reading the code fer mae secrets like.
/mob/living/simple_animal/jacq/proc/chit_chat(mob/living/carbon/C)
//Very important
- var/gender = "lamb"
+ var/gender = gender_check(C)
if(C)
if(C.gender == MALE)
gender = "laddie"
@@ -285,7 +296,7 @@
objective += " [L2.name]."
brainwash(C, objective)
if(2)
- visible_message("[src] waves their arms around, \"Off comes your head, atleast you're not dead.\"")
+ visible_message("[src] waves their arms around, \"Off comes your head, a pumpkin taking it's stead!\"")
C.reagents.add_reagent("pumpkinmutationtoxin", 5)
if(3)
visible_message("[src] waves their arms around, \"If only you had a better upbringing, your ears are now full of my singing!\"")
@@ -372,8 +383,8 @@
/datum/reagent/mutationtoxin/pumpkinhead
name = "Pumpkin head mutation toxin"
id = "pumpkinmutationtoxin"
- race = /datum/species/dullahan
- mutationtext = "The pain subsides. You feel your head roll off your shoulders."
+ race = /datum/species/dullahan/pumpkin
+ mutationtext = "The pain subsides. You feel your head roll off your shoulders... and you smell pumpkin."
//I couldn't get the replace head sprite with a pumpkin to work so, it is what it is.
/mob/living/simple_animal/jacq/proc/check_candies(mob/living/carbon/C)
diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
index 936d6d9002..eba4ff6d2f 100644
--- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
@@ -13,9 +13,12 @@
blacklisted = TRUE
limbs_id = "human"
skinned_type = /obj/item/stack/sheet/animalhide/human
+ var/pumpkin = FALSE
var/obj/item/dullahan_relay/myhead
+/datum/species/dullahan/pumpkin
+ pumpkin = TRUE
/datum/species/dullahan/check_roundstart_eligible()
if(SSevents.holidays && SSevents.holidays[HALLOWEEN])
@@ -27,6 +30,11 @@
H.flags_1 &= ~HEAR_1
var/obj/item/bodypart/head/head = H.get_bodypart(BODY_ZONE_HEAD)
if(head)
+ if(pumpkin)//Pumpkinhead!
+ head.animal_origin = 100
+ head.icon = 'icons/obj/clothing/hats.dmi'
+ head.icon_state = "hardhat1_pumpkin_j"
+ head.custom_head = TRUE
head.drop_limb()
head.flags_1 = HEAR_1
head.throwforce = 25
@@ -67,7 +75,7 @@
/obj/item/organ/brain/dullahan
decoy_override = TRUE
- organ_flags = 0
+ organ_flags = ORGAN_NO_SPOIL//Do not decay
/obj/item/organ/tongue/dullahan
zone = "abstract"
diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm
index 46ee10a3fd..23d49e98bb 100644
--- a/code/modules/surgery/bodyparts/head.dm
+++ b/code/modules/surgery/bodyparts/head.dm
@@ -32,6 +32,8 @@
var/lip_style = null
var/lip_color = "white"
+ //If the head is a special sprite
+ var/custom_head
/obj/item/bodypart/head/can_dismember(obj/item/I)
if(!((owner.stat == DEAD) || owner.InFullCritical()))
@@ -128,6 +130,8 @@
add_overlay(standing)
/obj/item/bodypart/head/get_limb_icon(dropped)
+ if(custom_head)
+ return
cut_overlays()
. = ..()
if(dropped) //certain overlays only appear when the limb is being detached from its owner.