diff --git a/code/modules/holiday/halloween/bartholomew.dm b/code/modules/holiday/halloween/bartholomew.dm
index 8a3681808c..dafcc5a309 100644
--- a/code/modules/holiday/halloween/bartholomew.dm
+++ b/code/modules/holiday/halloween/bartholomew.dm
@@ -3,16 +3,18 @@
/obj/effect/landmark/barthpot/Initialize()
new /obj/item/barthpot(loc)
+ new /mob/living/simple_animal/pet/cat/jacq(loc)
/obj/item/barthpot
name = "Bartholomew"
icon = 'icons/obj/halloween_items.dmi'
icon_state = "barthpot"
anchored = TRUE
- var/list/items_list
+ var/items_list = list()
+ speech_span = "spooky"
/obj/item/barthpot/Destroy()
- var/n = new src(loc)
+ var/obj/item/barthpot/n = new src(loc)
n.items_list = items_list
..()
@@ -20,33 +22,40 @@
/obj/item/barthpot/attackby(obj/item/I, mob/user, params)
if(I)
for(var/obj/item/I2 in items_list)
- if(I == I2)
+ if(I.type == I2.type)
qdel(I)
new /obj/item/reagent_containers/food/snacks/special_candy(loc)
say("Hooray! Thank you!")
+ items_list -= I2
return
+ say("It doesn't seem like that's magical enough!")
+/obj/item/barthpot/attack_hand(mob/user)
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!")
if(!iscarbon(user))
say("Though... I'm not sure you can help me.")
- var/mob/living/carbon/C = user
+ //var/mob/living/carbon/C = user
/* I'm putting too much effort into this, so I'm dialing it back
var/choices_pot = list("Check items", "Ask a question")
var/choice_pot = input(usr, "What will you do?", "What will you do?") in choices_reward
switch(choice_pot)
- if("Check items")
- var/message = "From what I can tell, "
- if(LAZYLEN(items_list) < 5)
- generate_items()
- for(var/obj/item/I2 in items_list)
- message += "[I2.name], "
- message += "currently seem to have the most magic potential."
- if("Ask a question")
+ if("Check items")*/
+ var/message = "From what I can tell, "
+ if(LAZYLEN(items_list) < 5)
+ generate_items()
+ for(var/obj/item/I2 in items_list)
+ message += "[I2.name], "
+ message += "currently seem to have the most magic potential."
+ say("[message]")
-/obj/item/barthpot
-
-
-/obj/item/barthpot/proc/chit_chat(mob/living/carbon/C)
+/obj/item/barthpot/proc/generate_items()
+ var/length = LAZYLEN(items_list)
+ if(length == 5)
+ return TRUE
+ var/metalist = GLOB.maintenance_loot
+ for(var/i = length, i <= 5, i+=1)
+ items_list += pick(metalist)
+ return TRUE
diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm
index 94a75781f9..4ed73208c4 100644
--- a/code/modules/holiday/halloween/jacqueen.dm
+++ b/code/modules/holiday/halloween/jacqueen.dm
@@ -7,91 +7,64 @@
#define JACQ_EXPELL (1<<5)
#define JACQ_DATE (1<<6)
-////ROUND EVENT
-
-/datum/round_event_control/jacqueline
- name = "Jacqueline the Pumpqueen"
- holidayID = "Jacqueline"
- typepath = /datum/round_event/jacq
- weight = -1 //forces it to be called, regardless of weight
- max_occurrences = 1
- earliest_start = 0 MINUTES
-
-/datum/round_event/jacq/start()
- ..()
- for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in GLOB.mob_living_list)
- new /mob/living/simple_animal/jacq(Ian.loc)//She poofs on init, so it doesn't matter, so long as Ian exists.
-
/////// MOBS
//Whacha doing in here like? Yae wan tae ruin ta magicks?
-/mob/living/simple_animal/jacq
+/mob/living/simple_animal/pet/cat/jacq
name = "Jacqueline the Pumpqueen"
real_name = "Jacqueline"
icon = 'icons/obj/halloween_items.dmi'
icon_state = "jacqueline"
maxHealth = INFINITY
- health = 20
+ health = INFINITY
density = FALSE
- var/destinations = list("Bar", "Brig", "Bridge", "Chapel", "Chemistry", "Cyrogenics", "Engineering", "Xenobiology")
- var/tricked = list() //Those who have been tricked
var/progression = list() //Keep track of where people are in the story.
-/mob/living/simple_animal/jacq/Initialize()
+/mob/living/simple_animal/pet/cat/jacq/Initialize()
poof()
-/mob/living/simple_animal/jacq/Destroy() //I.e invincible
+/mob/living/simple_animal/pet/cat/jacq/Destroy() //I.e invincible
visible_message("[src] cackles, \"You'll nae get rid a me that easily!\"")
playsound(loc, 'sound/spookoween/ahaha.ogg', 100, 1)
- var/mob/living/simple_animal/jacq/Jacq = new src.type(loc)
+ var/mob/living/simple_animal/pet/cat/jacq/Jacq = new src.type(loc)
Jacq.tricked = tricked
Jacq.progression = progression
..()
-/mob/living/simple_animal/jacq/death() //What is alive may never die
+/mob/living/simple_animal/pet/cat/jacq/death() //What is alive may never die
visible_message("[src] cackles, \"You'll nae get rid a me that easily!\"")
playsound(loc, 'sound/spookoween/ahaha.ogg', 100, 1)
health = 20
poof()
-/mob/living/simple_animal/jacq/attack_hand(mob/living/carbon/human/M)
- if(M.a_intent == INTENT_HELP)
- chit_chat(M)
- M.Stun(0)
- else
- ..()
+/mob/living/simple_animal/pet/cat/jacq/attack_hand(mob/living/carbon/human/M)
+ chit_chat(M)
+ ..()
-/mob/living/simple_animal/jacq/attack_paw(mob/living/carbon/monkey/M)
- if(M.a_intent == INTENT_HELP)
- chit_chat(M)
- M.Stun(0)
- else
- ..()
+/mob/living/simple_animal/pet/cat/jacq/attack_paw(mob/living/carbon/monkey/M)
+ chit_chat(M)
+ ..()
-/mob/living/simple_animal/jacq/proc/poof()
+/mob/living/simple_animal/pet/cat/jacq/proc/poof()
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
var/datum/effect_system/smoke_spread/chem/s = new()
R.add_reagent("secretcatchem", (10))
s.set_up(R, 1, loc)
s.start()
- for(var/i = 1, i <= 5, i+=1)//try 5 times to teleport
- var/area/A = GLOB.sortedAreas["[pick(destinations)]"]
- message_admins("[A] Trying")
- if(A && istype(A))
- if(forceMove(safepick(get_area_turfs(A))))
- message_admins("[A] Moved")
- return TRUE
+ var/hp_list = list()
+ for(var/obj/machinery/holopad/hp in world)
+ hp_list += "hp"
+
+ var/obj/machinery/holopad/hp = pick(hp_list)
+ if(forceMove(pick(hp.loc)))
+ return TRUE
+
message_admins("Failed to move")
return FALSE
//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/L)
- var/mob/living/carbon/C = L
- if(!iscarbon(L))
- //Maybe? It seems like a lot of faff for something that is very unlikely to happen.
- return
- C.Stun(1000)//You're talking, don't leave.
+/mob/living/simple_animal/pet/cat/jacq/proc/chit_chat(mob/living/carbon/C)
//Very important
var/gender = "lamb"
if(C)
@@ -102,13 +75,12 @@
if(!progression["[C.real_name]"] || !(progression["[C.real_name]"] & JACQ_HELLO))
visible_message("[src] smiles ominously at [L], \"Well halo there [gender]! Ah'm Jacqueline, tae great Pumpqueen, great tae meet ye.\"")
- sleep(50)
+ sleep(20)
visible_message("[src] continues, says, \"Ah'm sure yae well stunned, but ah've got nae taem fer that. Ah'm after the candies around this station. If yae get mae enoof o the wee buggers, Ah'll give ye a treat, or if yae feeling bold, Ah ken trick ye instead.\" giving [L] a wide grin.")
if(!progression["[C.real_name]"])
progression["[C.real_name]"] += JACQ_HELLO //TO MAKE SURE THAT THE LIST ENTRY EXISTS.
else
progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_HELLO
- return
var/choices = list("Trick", "Treat", "How do I get candies?")
var/choice = input(C, "Trick or Treat?", "Trick or Treat?") in choices
@@ -126,7 +98,7 @@
visible_message("[src] says, \"Gae find my familiar; Bartholomew. Ee's tendin the cauldron which ken bring oot t' magic energy in items scattered aroond. Knowing him, ee's probably gone tae somewhere with books.\"")
return
-/mob/living/simple_animal/jacq/proc/treat(mob/living/carbon/C, gender)
+/mob/living/simple_animal/pet/cat/jacq/proc/treat(mob/living/carbon/C, gender)
visible_message("[src] gives off a glowing smile, \"What ken Ah offer ye? I can magic up an object, a potion or a plushie fer ye.\"")
var/choices_reward = list("Object - 3 candies", "Potion - 2 candies", "Plushie - 1 candy", "Can I ask you a question instead?")
var/choice_reward = input(usr, "Trick or Treat?", "Trick or Treat?") in choices_reward
@@ -144,6 +116,8 @@
// panic()
var/reward = new new_obj(C.loc)
C.put_in_hands(reward)
+ poof()
+ return
if("Potion - 2 candies")
if(!take_candies(C, 2))
visible_message("[src] raises an eyebrown, \"It's 2 candies per potion [gender]! Thems the rules!\"")
@@ -151,6 +125,8 @@
var/reward = new /obj/item/reagent_containers/potion_container(C.loc)
C.put_in_hands(reward)
+ poof()
+ return
if("Plushie - 1 candy")
if(!take_candies(C, 1))
visible_message("[src] raises an eyebrown, \"It's 1 candy per plushie [gender]! Thems the rules!\"")
@@ -158,6 +134,8 @@
var/reward = new /obj/item/toy/plush/random(C.loc)
C.put_in_hands(reward)
+ poof()
+ return
//chitchats!
if("Can I ask you a question instead?")
@@ -191,7 +169,7 @@
visible_message("[src] says, \"A question? Sure, it'll cost you a candy though!\"")
choices += "Nevermind"
//Candies for chitchats
- var/choice = input(usr, "What do you want to ask?", "What do you want to ask?") in choices
+ var/choice = input(C, "What do you want to ask?", "What do you want to ask?") in choices
if(!take_candies(C, 1))
visible_message("[src] raises an eyebrown, \"It's a candy per question [gender]! Thems the rules!\"")
return
@@ -229,7 +207,7 @@
visible_message("[src] shurgs, \"Suit yerself then.\"")
-/mob/living/simple_animal/jacq/proc/trick(mob/living/carbon/C, gender)
+/mob/living/simple_animal/pet/cat/jacq/proc/trick(mob/living/carbon/C, gender)
var/option
if(ishuman(C))
option = rand(1,7)
@@ -280,7 +258,7 @@
poof()
//Blame Fel
-/mob/living/simple_animal/jacq/proc/dating_start(mob/living/carbon/C, gender)
+/mob/living/simple_animal/pet/cat/jacq/proc/dating_start(mob/living/carbon/C, gender)
var/candies = pollGhostCandidates("Do you want to go on a date with [C] as Jacqueline the great pumpqueen?")
//sleep(30) //If the poll doesn't autopause.
if(candies)
@@ -341,7 +319,7 @@ var/datum/reagent/mutationtoxin/pumpkinhead
mutationtext = "The pain subsides. You feel your head roll off your shoulders."
//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)
+/mob/living/simple_animal/pet/cat/jacq/proc/check_candies(mob/living/carbon/C)
var/invs = C.get_contents()
var/candy_count = 0
for(var/item in invs)
@@ -349,7 +327,7 @@ var/datum/reagent/mutationtoxin/pumpkinhead
candy_count++
return candy_count
-/mob/living/simple_animal/jacq/proc/take_candies(mob/living/carbon/C, candy_amount = 1)
+/mob/living/simple_animal/pet/cat/jacq/proc/take_candies(mob/living/carbon/C, candy_amount = 1)
var/inv = C.get_contents()
var/candies = list()
for(var/item in inv)
diff --git a/icons/obj/halloween_items.dmi b/icons/obj/halloween_items.dmi
index f2577f90ca..fc5c4803fb 100644
Binary files a/icons/obj/halloween_items.dmi and b/icons/obj/halloween_items.dmi differ