Files
GS13NG/code/modules/holiday/halloween/bartholomew.dm
T
Lin efa02148d1 Merge pull request #15275 from keronshb/halloweenball2021
Spookystation (Ball Map) and Vector Cars
2021-11-17 16:26:07 +00:00

165 lines
7.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/obj/effect/landmark/barthpot
name = "barthpot"
/obj/item/barthpot
name = "Bartholomew"
icon = 'icons/obj/halloween_items.dmi'
icon_state = "barthpot"
anchored = TRUE
var/items_list = list()
speech_span = "spooky"
resistance_flags = INDESTRUCTIBLE
var/active = TRUE
var/BallTutorial = FALSE
/obj/item/barthpot/attackby(obj/item/I, mob/user, params)
if(BallTutorial)
say("Hello and welcome to the annual Citadelstation Spookyball 2021! CENTCOM requisitioned this old hospital as a new colony site two years ago, and were back again after a few additions here and there. Next to me you can find all the tools youll need to build a nice private house, if youre here for that kind of thing. The axes will chop trees, and give you wood. Shovels will remove grass and things, which you can use the grass to make beds and backets. The pickaxe will allow you pick out the nearby rocks, if youre more interested in building a cave dwelling. Finally the umbrella and light sources are because its spooky, and it might rain! As for interesting spots; Theres the old abandoned mansion which you can get to by going through the entrance and towards the east. Theres also a mech arena directly south, and a racetrack in the caves to the right of the arena, follow the lanterns. And make sure to explore the caves too! Lots of neat things to find!")
return
if(!active)
say("Meow!")
return
for(var/I2 in items_list)
if(istype(I, I2))
qdel(I)
new /obj/item/reagent_containers/food/snacks/special_candy(loc)
to_chat(user, "<span class='notice'>You add the [I.name] to the pot and watch as it melts into the mixture, a candy crystalising in it's wake.</span>")
say("Hooray! Thank you!")
items_list -= I2
return
say("It doesn't seem like that's magical enough!")
/obj/item/barthpot/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
if(BallTutorial)
say("Hello and welcome to the annual Citadelstation Spookyball 2021! CENTCOM requisitioned this old hospital as a new colony site two years ago, and were back again after a few additions here and there. Next to me you can find all the tools youll need to build a nice private house, if youre here for that kind of thing. The axes will chop trees, and give you wood. Shovels will remove grass and things, which you can use the grass to make beds and backets. The pickaxe will allow you pick out the nearby rocks, if youre more interested in building a cave dwelling. Finally the umbrella and light sources are because its spooky, and it might rain! As for interesting spots; Theres the old abandoned mansion which you can get to by going through the entrance and towards the east. Theres also a mech arena directly south, and a racetrack in the caves to the right of the arena, follow the lanterns. And make sure to explore the caves too! Lots of neat things to find!")
return
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!")
if(!iscarbon(user))
say("Though... I'm not sure you can help me.")
var/message = "From what I can tell, "
if(LAZYLEN(items_list) < 5)
generate_items()
for(var/I2 in items_list)
if(!I2)
items_list -= I2
continue
var/obj/item/I3 = new I2
message += "a [I3.name], "
message += "currently seem to have the most magic potential."
sleep(15)
say("[message]")
sleep(15)
//To help people find her
for(var/mob/living/simple_animal/jacq/J in GLOB.simple_animals[1])
var/turf/L1 = J.loc
if(!L1) //Incase someone uh.. puts her in a locker
return
var/area/L2 = L1.loc
if(L2)
say("Also, it seems that Jacqueline is currently at the [L2], if you're looking for her too.")
/obj/item/barthpot/proc/generate_items()
var/length = LAZYLEN(items_list)
var/rand_items = list(/obj/item/bodybag = 1,
/obj/item/clothing/glasses/meson = 2,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/clothing/gloves/color/fyellow = 1,
/obj/item/clothing/head/hardhat = 1,
/obj/item/clothing/head/hardhat/red = 1,
/obj/item/clothing/head/that = 1,
/obj/item/clothing/head/ushanka = 1,
/obj/item/clothing/head/welding = 1,
/obj/item/clothing/mask/gas = 10,
/obj/item/clothing/suit/hazardvest = 1,
/obj/item/clothing/suit/hooded/flashsuit = 1,
/obj/item/assembly/prox_sensor = 4,
/obj/item/assembly/timer = 3,
/obj/item/flashlight = 6,
/obj/item/flashlight/pen = 1,
/obj/item/flashlight/glowstick = 4,
/obj/item/multitool = 2,
/obj/item/radio = 2,
/obj/item/t_scanner = 5,
/obj/item/airlock_painter = 1,
/obj/item/stack/cable_coil = 6,
/obj/item/stack/medical/suture = 1,
/obj/item/stack/rods = 3,
/obj/item/stack/sheet/cardboard = 2,
/obj/item/stack/sheet/metal = 1,
/obj/item/stack/sheet/mineral/plasma = 1,
/obj/item/stack/sheet/rglass = 1,
/obj/item/coin = 1,
/obj/item/crowbar = 4,
/obj/item/extinguisher = 3,
/obj/item/hand_labeler = 1,
/obj/item/paper = 6,
/obj/item/pen = 5,
/obj/item/reagent_containers/spray/pestspray = 1,
/obj/item/reagent_containers/rag = 3,
/obj/item/stock_parts/cell = 3,
/obj/item/storage/belt/utility = 2,
/obj/item/storage/box = 4,
/obj/item/reagent_containers/food/drinks/sillycup = 1,
/obj/item/storage/box/donkpockets = 1,
/obj/item/storage/box/lights/mixed = 1,
/obj/item/storage/box/hug/medical = 1,
/obj/item/storage/fancy/cigarettes = 1,
/obj/item/storage/toolbox = 1,
/obj/item/screwdriver = 3,
/obj/item/tank/internals/emergency_oxygen = 2,
/obj/item/vending_refill/cola = 1,
/obj/item/weldingtool = 3,
/obj/item/wirecutters = 2,
/obj/item/wrench = 4,
/obj/item/weaponcrafting/receiver = 1,
/obj/item/geiger_counter = 3,
/obj/item/reagent_containers/food/snacks/grown/citrus/orange = 5,
/obj/item/assembly/infra = 1,
/obj/item/assembly/igniter = 2,
/obj/item/assembly/signaler = 2,
/obj/item/assembly/mousetrap = 5,
/obj/item/reagent_containers/syringe = 5,
/obj/item/clothing/gloves = 8,
/obj/item/storage/toolbox = 2,
/obj/item/reagent_containers/pill = 2,
/obj/item/clothing/shoes = 8,
/obj/item/clothing/head = 3,
/obj/item/reagent_containers/food/snacks = 5,
/obj/item/reagent_containers/syringe/dart = 2,
/obj/item/reagent_containers/food/drinks/soda_cans = 5,
/obj/item/reagent_containers/food/drinks/drinkingglass = 4,
/obj/item/reagent_containers/food/drinks = 6,
/obj/item/reagent_containers/food/snacks/grown/apple = 1,
/obj/item/reagent_containers/food/snacks/grown/banana = 2)
if(length >= 5)
return TRUE
//var/metalist = pickweight(GLOB.maintenance_loot)
for(var/i = length, i <= 5, i+=1)
var/obj/item = pickweight(rand_items)
if(!item)
i-=1
continue
for(var/obj/item_dupe in items_list) //No duplicates
if(item_dupe == item)
i-=1
continue
items_list += item
return TRUE
/obj/item/pinpointer/jacq
name = "The Jacq-Tracq"
desc = "A handheld tracking device that locks onto witchy signals."
/obj/item/pinpointer/jacq/attack_self(mob/living/user)
for(var/mob/living/simple_animal/jacq/J in GLOB.simple_animals[1])
target = J
..()