initial commit - cross reference with 5th port - obviously has compile errors
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
// Basically, cut the event frequency in half to simulate unluckiness.
|
||||
|
||||
/datum/round_event_control/fridaythethirteen
|
||||
name = "Friday the 13th"
|
||||
holidayID = FRIDAY_13TH
|
||||
typepath = /datum/round_event/fridaythethirteen
|
||||
weight = -1
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/fridaythethirteen/start()
|
||||
//Very unlucky, cut the frequency of events in half.
|
||||
events.frequency_lower /= 2
|
||||
events.frequency_upper /= 2
|
||||
|
||||
/datum/round_event/fridaythethirteen/announce()
|
||||
for(var/mob/living/L in player_list)
|
||||
L << "<span class='warning'>You are feeling unlucky today.</span>"
|
||||
@@ -0,0 +1,83 @@
|
||||
/datum/round_event_control/spooky
|
||||
name = "2 SPOOKY! (Halloween)"
|
||||
holidayID = HALLOWEEN
|
||||
typepath = /datum/round_event/spooky
|
||||
weight = -1 //forces it to be called, regardless of weight
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/spooky/start()
|
||||
..()
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
var/obj/item/weapon/storage/backpack/b = locate() in H.contents
|
||||
new /obj/item/weapon/storage/spooky(b)
|
||||
if(prob(50))
|
||||
H.set_species(/datum/species/skeleton)
|
||||
else
|
||||
H.set_species(/datum/species/zombie)
|
||||
|
||||
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in mob_list)
|
||||
Ian.place_on_head(new /obj/item/weapon/bedsheet(Ian))
|
||||
|
||||
/datum/round_event/spooky/announce()
|
||||
priority_announce(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE")
|
||||
|
||||
//Eyeball migration
|
||||
/datum/round_event_control/carp_migration/eyeballs
|
||||
name = "Eyeball Migration"
|
||||
typepath = /datum/round_event/carp_migration/eyeballs
|
||||
holidayID = HALLOWEEN
|
||||
weight = 25
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/carp_migration/eyeballs/start()
|
||||
for(var/obj/effect/landmark/C in landmarks_list)
|
||||
if(C.name == "carpspawn")
|
||||
new /mob/living/simple_animal/hostile/carp/eyeball(C.loc)
|
||||
|
||||
//Pumpking meteors waves
|
||||
/datum/round_event_control/meteor_wave/spooky
|
||||
name = "Pumpkin Wave"
|
||||
typepath = /datum/round_event/meteor_wave/spooky
|
||||
holidayID = HALLOWEEN
|
||||
weight = 20
|
||||
max_occurrences = 2
|
||||
|
||||
/datum/round_event/meteor_wave/spooky
|
||||
endWhen = 40
|
||||
|
||||
/datum/round_event/meteor_wave/spooky/tick()
|
||||
if(IsMultiple(activeFor, 4))
|
||||
spawn_meteors(3, meteorsSPOOKY) //meteor list types defined in gamemode/meteor/meteors.dm
|
||||
|
||||
//spooky foods (you can't actually make these when it's not halloween)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/spookyskull
|
||||
name = "skull cookie"
|
||||
desc = "Spooky! It's got delicious calcium flavouring!"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "skeletoncookie"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/spookycoffin
|
||||
name = "coffin cookie"
|
||||
desc = "Spooky! It's got delicious coffee flavouring!"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "coffincookie"
|
||||
|
||||
|
||||
//spooky items
|
||||
|
||||
/obj/item/weapon/storage/spooky
|
||||
name = "trick-o-treat bag"
|
||||
desc = "A Pumpkin shaped bag that holds all sorts of goodies!"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "treatbag"
|
||||
|
||||
/obj/item/weapon/storage/spooky/New()
|
||||
..()
|
||||
for(var/distrobuteinbag=0 to 5)
|
||||
var/type = pick(/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/spookyskull,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/spookycoffin,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy_corn,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar)
|
||||
new type(src)
|
||||
@@ -0,0 +1,127 @@
|
||||
// Valentine's Day events //
|
||||
// why are you playing spessmens on valentine's day you wizard //
|
||||
|
||||
|
||||
// valentine / candy heart distribution //
|
||||
|
||||
/datum/round_event_control/valentines
|
||||
name = "Valentines!"
|
||||
holidayID = VALENTINES
|
||||
typepath = /datum/round_event/valentines
|
||||
weight = -1 //forces it to be called, regardless of weight
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/valentines/start()
|
||||
..()
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
H.put_in_hands(new /obj/item/weapon/valentine)
|
||||
var/obj/item/weapon/storage/backpack/b = locate() in H.contents
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/candyheart(b)
|
||||
|
||||
/datum/round_event/valentines/announce()
|
||||
priority_announce("It's Valentine's Day! Give a valentine to that special someone!")
|
||||
|
||||
/obj/item/weapon/valentine
|
||||
name = "valentine"
|
||||
desc = "A Valentine's card! Wonder what it says..."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "sc_Ace of Hearts_syndicate" // shut up
|
||||
var/message = "A generic message of love or whatever."
|
||||
burn_state = FLAMMABLE
|
||||
w_class = 1
|
||||
|
||||
/obj/item/weapon/valentine/New()
|
||||
..()
|
||||
message = pick("Roses are red / Violets are good / One day while Andy...",
|
||||
"My love for you is like the singularity. It cannot be contained.",
|
||||
"Will you be my lusty xenomorph maid?",
|
||||
"We go together like the clown and the external airlock.",
|
||||
"Roses are red / Liches are wizards / I love you more than a whole squad of lizards.",
|
||||
"Be my valentine. Law 2.",
|
||||
"You must be a mime, because you leave me speechless.",
|
||||
"I love you like Ian loves the HoP.",
|
||||
"You're hotter than a plasma fire in toxins.",
|
||||
"Are you a rogue atmos tech? Because you're taking my breath away.",
|
||||
"Could I have all access... to your heart?",
|
||||
"Call me the CMO, because I'm here to inspect your johnson.",
|
||||
"I'm not a changeling, but you make my proboscis extend.",
|
||||
"I just can't get EI NATH of you.",
|
||||
"You must be a nuke op, because you make my heart explode.",
|
||||
"Roses are red / Botany is a farm / Not being my Valentine / causes human harm.",
|
||||
"I want you more than an assistant wants insulated gloves.",
|
||||
"If I was a security officer, I'd brig you all shift.",
|
||||
"Are you the janitor? Because I think I've fallen for you.",
|
||||
"You're always valid to my heart.",
|
||||
"I'd risk the wrath of the gods to bwoink you.",
|
||||
"You look as beautiful now as the last time you were cloned.",
|
||||
"Your love is more valuable than raw plasma ore.",
|
||||
"Someone check the gravitational generator, because I'm only attracted to you.",
|
||||
"If I were the warden I'd always let you into my armory.",
|
||||
"The virologist is rogue, and the only cure is a kiss from you.",
|
||||
"Would you spend some time in my upgraded sleeper?",
|
||||
"You must be a silicon, because you've unbolted my heart.",
|
||||
"Are you Nar-Sie? Because there's nar-one else I sie.",
|
||||
"If you were a taser, you'd be set to stunning.",
|
||||
"Do you have stamina damage from running through my dreams?",
|
||||
"If I were an alien, would you let me hug you?",
|
||||
"My love for you is stronger than a reinforced wall.",
|
||||
"This must be the captain's office, because I see a fox.",
|
||||
"I'm not a highlander, but there can only be one for me.",
|
||||
"The floor is made of lava! Quick, get on my bed.",
|
||||
"If you were an abandoned station you'd be the DEARelict.",
|
||||
"If you had a pickaxe you'd be a shaft FINEr.",
|
||||
"Roses are red, tide is gray, if I were an assistant I'd steal you away.",
|
||||
"Roses are red, text is green, I love you more than cleanbots clean.",
|
||||
"If you were a carp I'd fi-lay you." )
|
||||
|
||||
/obj/item/weapon/valentine/attackby(obj/item/weapon/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon))
|
||||
var/recipient = stripped_input(user, "Who is receiving this valentine?", "To:", null , 20)
|
||||
var/sender = stripped_input(user, "Who is sending this valentine?", "From:", null , 20)
|
||||
if(recipient && sender)
|
||||
name = "valentine - To: [recipient] From: [sender]"
|
||||
|
||||
/obj/item/weapon/valentine/examine(mob/user)
|
||||
if(in_range(user, src) || isobserver(user))
|
||||
if( !(ishuman(user) || isobserver(user) || issilicon(user)) )
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(message)]</BODY></HTML>", "window=[name]")
|
||||
onclose(user, "[name]")
|
||||
else
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[message]</BODY></HTML>", "window=[name]")
|
||||
onclose(user, "[name]")
|
||||
else
|
||||
user << "<span class='notice'>It is too far away.</span>"
|
||||
|
||||
/obj/item/weapon/valentine/attack_self(mob/user)
|
||||
user.examinate(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candyheart
|
||||
name = "candy heart"
|
||||
icon = 'icons/obj/holiday_misc.dmi'
|
||||
icon_state = "candyheart"
|
||||
desc = "A heart-shaped candy that reads: "
|
||||
list_reagents = list("sugar" = 2)
|
||||
junkiness = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candyheart/New()
|
||||
..()
|
||||
desc = pick("A heart-shaped candy that reads: HONK ME",
|
||||
"A heart-shaped candy that reads: ERP",
|
||||
"A heart-shaped candy that reads: LEWD",
|
||||
"A heart-shaped candy that reads: LUSTY",
|
||||
"A heart-shaped candy that reads: SPESS LOVE"
|
||||
"A heart-shaped candy that reads: AYY LMAO",
|
||||
"A heart-shaped candy that reads: TABLE ME",
|
||||
"A heart-shaped candy that reads: HAND CUFFS",
|
||||
"A heart-shaped candy that reads: SHAFT MINER",
|
||||
"A heart-shaped candy that reads: BANGING DONK",
|
||||
"A heart-shaped candy that reads: Y-YOU T-TOO",
|
||||
"A heart-shaped candy that reads: GOT WOOD",
|
||||
"A heart-shaped candy that reads: TFW NO GF",
|
||||
"A heart-shaped candy that reads: WAG MY TAIL",
|
||||
"A heart-shaped candy that reads: VALIDTINES",
|
||||
"A heart-shaped candy that reads: FACEHUGGER",
|
||||
"A heart-shaped candy that reads: DOMINATOR")
|
||||
icon_state = pick("candyheart", "candyheart2", "candyheart3", "candyheart4")
|
||||
@@ -0,0 +1,152 @@
|
||||
/datum/round_event_control/treevenge
|
||||
name = "Treevenge (Christmas)"
|
||||
holidayID = CHRISTMAS
|
||||
typepath = /datum/round_event/treevenge
|
||||
max_occurrences = 1
|
||||
weight = 20
|
||||
|
||||
/datum/round_event/treevenge/start()
|
||||
for(var/obj/structure/flora/tree/pine/xmas in world)
|
||||
var/mob/living/simple_animal/hostile/tree/evil_tree = new /mob/living/simple_animal/hostile/tree(xmas.loc)
|
||||
evil_tree.icon_state = xmas.icon_state
|
||||
evil_tree.icon_living = evil_tree.icon_state
|
||||
evil_tree.icon_dead = evil_tree.icon_state
|
||||
evil_tree.icon_gib = evil_tree.icon_state
|
||||
qdel(xmas) //b-but I don't want to delete xmas...
|
||||
|
||||
//this is an example of a possible round-start event
|
||||
/datum/round_event_control/presents
|
||||
name = "Presents under Trees (Christmas)"
|
||||
holidayID = CHRISTMAS
|
||||
typepath = /datum/round_event/presents
|
||||
weight = -1 //forces it to be called, regardless of weight
|
||||
max_occurrences = 1
|
||||
earliest_start = 0
|
||||
|
||||
/datum/round_event/presents/start()
|
||||
for(var/obj/structure/flora/tree/pine/xmas in world)
|
||||
if(xmas.z != 1)
|
||||
continue
|
||||
for(var/turf/open/floor/T in orange(1,xmas))
|
||||
for(var/i=1,i<=rand(1,5),i++)
|
||||
new /obj/item/weapon/a_gift(T)
|
||||
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in mob_list)
|
||||
Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian))
|
||||
for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in machines)
|
||||
Monitor.icon_state = "entertainment_xmas"
|
||||
|
||||
/datum/round_event/presents/announce()
|
||||
priority_announce("Ho Ho Ho, Merry Xmas!", "Unknown Transmission")
|
||||
|
||||
|
||||
/obj/item/weapon/toy/xmas_cracker
|
||||
name = "xmas cracker"
|
||||
icon = 'icons/obj/christmas.dmi'
|
||||
icon_state = "cracker"
|
||||
desc = "Directions for use: Requires two people, one to pull each end."
|
||||
var/cracked = 0
|
||||
|
||||
/obj/item/weapon/toy/xmas_cracker/attack(mob/target, mob/user)
|
||||
if( !cracked && istype(target,/mob/living/carbon/human) && (target.stat == CONSCIOUS) && !target.get_active_hand() )
|
||||
target.visible_message("[user] and [target] pop \an [src]! *pop*", "<span class='notice'>You pull \an [src] with [target]! *pop*</span>", "<span class='italics'>You hear a pop.</span>")
|
||||
var/obj/item/weapon/paper/Joke = new /obj/item/weapon/paper(user.loc)
|
||||
Joke.name = "[pick("awful","terrible","unfunny")] joke"
|
||||
Joke.info = pick("What did one snowman say to the other?\n\n<i>'Is it me or can you smell carrots?'</i>",
|
||||
"Why couldn't the snowman get laid?\n\n<i>He was frigid!</i>",
|
||||
"Where are santa's helpers educated?\n\n<i>Nowhere, they're ELF-taught.</i>",
|
||||
"What happened to the man who stole advent calanders?\n\n<i>He got 25 days.</i>",
|
||||
"What does Santa get when he gets stuck in a chimney?\n\n<i>Claus-trophobia.</i>",
|
||||
"Where do you find chili beans?\n\n<i>The north pole.</i>",
|
||||
"What do you get from eating tree decorations?\n\n<i>Tinsilitis!</i>",
|
||||
"What do snowmen wear on their heads?\n\n<i>Ice caps!</i>",
|
||||
"Why is Christmas just like life on ss13?\n\n<i>You do all the work and the fat guy gets all the credit.</i>",
|
||||
"Why doesn’t Santa have any children?\n\n<i>Because he only comes down the chimney.</i>")
|
||||
new /obj/item/clothing/head/festive(target.loc)
|
||||
user.update_icons()
|
||||
cracked = 1
|
||||
icon_state = "cracker1"
|
||||
var/obj/item/weapon/toy/xmas_cracker/other_half = new /obj/item/weapon/toy/xmas_cracker(target)
|
||||
other_half.cracked = 1
|
||||
other_half.icon_state = "cracker2"
|
||||
target.put_in_active_hand(other_half)
|
||||
playsound(user, 'sound/effects/snap.ogg', 50, 1)
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/festive
|
||||
name = "festive paper hat"
|
||||
icon_state = "xmashat"
|
||||
desc = "A crappy paper hat that you are REQUIRED to wear."
|
||||
flags_inv = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/datum/round_event_control/santa
|
||||
name = "Santa is coming to town! (Christmas)"
|
||||
holidayID = CHRISTMAS
|
||||
typepath = /datum/round_event/santa
|
||||
weight = 150
|
||||
max_occurrences = 1
|
||||
earliest_start = 20000
|
||||
|
||||
/datum/round_event/santa
|
||||
var/mob/living/carbon/human/santa //who is our santa?
|
||||
|
||||
/datum/round_event/santa/announce()
|
||||
priority_announce("Santa is coming to town!", "Unknown Transmission")
|
||||
|
||||
/datum/round_event/santa/start()
|
||||
for(var/mob/M in dead_mob_list)
|
||||
spawn(0)
|
||||
var/response = alert(M, "Santa is coming to town! Do you want to be santa?", "Ho ho ho!", "Yes", "No")
|
||||
if(response == "Yes" && M && M.client && M.stat == DEAD && !santa)
|
||||
santa = new /mob/living/carbon/human(pick(blobstart))
|
||||
santa.key = M.key
|
||||
qdel(M)
|
||||
|
||||
santa.real_name = "Santa Claus"
|
||||
santa.name = "Santa Claus"
|
||||
santa.mind.name = "Santa Claus"
|
||||
santa.mind.assigned_role = "Santa"
|
||||
santa.mind.special_role = "Santa"
|
||||
|
||||
santa.hair_style = "Long Hair"
|
||||
santa.facial_hair_style = "Full Beard"
|
||||
santa.hair_color = "FFF"
|
||||
santa.facial_hair_color = "FFF"
|
||||
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/under/color/red, slot_w_uniform)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/suit/space/santa, slot_wear_suit)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/head/santa, slot_head)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/mask/breath, slot_wear_mask)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/red, slot_gloves)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/red, slot_shoes)
|
||||
santa.equip_to_slot_or_del(new /obj/item/weapon/tank/internals/emergency_oxygen/double, slot_belt)
|
||||
santa.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain, slot_ears)
|
||||
santa.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/santabag, slot_back)
|
||||
santa.equip_to_slot_or_del(new /obj/item/device/flashlight, slot_r_store) //most blob spawn locations are really dark.
|
||||
|
||||
var/obj/item/weapon/card/id/gold/santacard = new(santa)
|
||||
santacard.update_label("Santa Claus", "Santa")
|
||||
var/datum/job/captain/J = new/datum/job/captain
|
||||
santacard.access = J.get_access()
|
||||
santa.equip_to_slot_or_del(santacard, slot_wear_id)
|
||||
|
||||
santa.update_icons()
|
||||
|
||||
var/obj/item/weapon/storage/backpack/bag = santa.back
|
||||
var/obj/item/weapon/a_gift/gift = new(santa)
|
||||
while(bag.can_be_inserted(gift, 1))
|
||||
bag.handle_item_insertion(gift, 1)
|
||||
gift = new(santa)
|
||||
|
||||
var/datum/objective/santa_objective = new()
|
||||
santa_objective.explanation_text = "Bring joy and presents to the station!"
|
||||
santa_objective.completed = 1 //lets cut our santas some slack.
|
||||
santa_objective.owner = santa.mind
|
||||
santa.mind.objectives += santa_objective
|
||||
santa.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/presents)
|
||||
var/obj/effect/proc_holder/spell/targeted/area_teleport/teleport/telespell = new(santa)
|
||||
telespell.clothes_req = 0 //santa robes aren't actually magical.
|
||||
santa.mind.AddSpell(telespell) //does the station have chimneys? WHO KNOWS!
|
||||
|
||||
santa << "<span class='boldannounce'>You are Santa! Your objective is to bring joy to the people on this station. You can conjure more presents using a spell, and there are several presents in your bag.</span>"
|
||||
Reference in New Issue
Block a user