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