diff --git a/code/game/objects/items/food/burgers.dm b/code/game/objects/items/food/burgers.dm index adbedb934a1..c6d64b17b4c 100644 --- a/code/game/objects/items/food/burgers.dm +++ b/code/game/objects/items/food/burgers.dm @@ -164,7 +164,7 @@ switch(paranormal_activity) if(97 to 100) audible_message("[src] rattles a length of chain.") - playsound(loc,'sound/spookoween/chain_rattling.ogg', 300, TRUE) + playsound(loc,'sound/misc/chain_rattling.ogg', 300, TRUE) if(91 to 96) say(pick("OoOoOoo.", "OoooOOooOoo!!")) if(84 to 90) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 1d2c624c0d9..b4edf7173f9 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -957,7 +957,7 @@ structure_check() searches for nearby cultist structures required for the invoca add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, NONE) addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"human_apoc",TRUE), duration) images += A - SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult.ogg'),sound('sound/spookoween/ghost_whisper.ogg'),sound('sound/spookoween/ghosty_wind.ogg'))) + SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult.ogg'),sound('sound/voice/ghost_whisper.ogg'),sound('sound/misc/ghosty_wind.ogg'))) else var/construct = pick("floater","artificer","behemoth") var/image/B = image('icons/mob/mob.dmi',M,construct, ABOVE_MOB_LAYER) diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 1c9e73527ac..d9dabfe9e85 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -194,7 +194,7 @@ attack_sound = 'sound/items/bikehorn.ogg' attack_vis_effect = null - feast_sound = 'sound/spookoween/scary_horn2.ogg' + feast_sound = 'sound/misc/scary_horn.ogg' deathsound = 'sound/misc/sadtrombone.ogg' icon_state = "bowmon" diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index 1bc1b40bfef..d479807a337 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -467,6 +467,28 @@ result = /obj/item/food/cookie/sugar subcategory = CAT_PASTRY +/datum/crafting_recipe/food/spookyskull + time = 15 + name = "Skull cookie" + reqs = list( + /obj/item/food/pastrybase = 1, + /datum/reagent/consumable/sugar = 5, + /datum/reagent/consumable/milk = 5 + ) + result = /obj/item/food/cookie/sugar/spookyskull + subcategory = CAT_PASTRY + +/datum/crafting_recipe/food/spookycoffin + time = 15 + name = "Coffin cookie" + reqs = list( + /obj/item/food/pastrybase = 1, + /datum/reagent/consumable/sugar = 5, + /datum/reagent/consumable/coffee = 5 + ) + result = /obj/item/food/cookie/sugar/spookycoffin + subcategory = CAT_PASTRY + /datum/crafting_recipe/food/fortunecookie time = 15 name = "Fortune cookie" diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm deleted file mode 100644 index 7ab589394d1..00000000000 --- a/code/modules/holiday/halloween.dm +++ /dev/null @@ -1,276 +0,0 @@ -/////////////////////////////////////// -///////////HALLOWEEN CONTENT/////////// -/////////////////////////////////////// - - -//spooky recipes - -/datum/recipe/sugarcookie/spookyskull - reagents_list = list(/datum/reagent/consumable/flour = 5, /datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/milk = 5) - items = list( - /obj/item/food/egg, - ) - result = /obj/item/food/cookie/sugar/spookyskull - -/datum/recipe/sugarcookie/spookycoffin - reagents_list = list(/datum/reagent/consumable/flour = 5, /datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/coffee = 5) - items = list( - /obj/item/food/egg, - ) - result = /obj/item/food/cookie/sugar/spookycoffin - -////////////////////////////// -//Spookoween trapped closets// -////////////////////////////// - -#define SPOOKY_SKELETON 1 -#define ANGRY_FAITHLESS 2 -#define SCARY_BATS 3 -#define INSANE_CLOWN 4 -#define HOWLING_GHOST 5 - -//Spookoween variables -/obj/structure/closet - var/trapped = 0 - var/mob/trapped_mob - -/obj/structure/closet/Initialize(mapload) - . = ..() - if(prob(30)) - set_spooky_trap() - -/obj/structure/closet/dump_contents() - ..() - trigger_spooky_trap() - -/obj/structure/closet/proc/set_spooky_trap() - if(prob(0.1)) - trapped = INSANE_CLOWN - return - if(prob(1)) - trapped = ANGRY_FAITHLESS - return - if(prob(15)) - trapped = SCARY_BATS - return - if(prob(20)) - trapped = HOWLING_GHOST - return - else - var/mob/living/carbon/human/H = new(loc) - H.makeSkeleton() - H.health = 1e5 - insert(H) - trapped_mob = H - trapped = SPOOKY_SKELETON - return - -/obj/structure/closet/proc/trigger_spooky_trap() - if(!trapped) - return - - else if(trapped == SPOOKY_SKELETON) - visible_message(span_userdanger("BOO!")) - playsound(loc, 'sound/spookoween/girlscream.ogg', 300, TRUE) - trapped = 0 - QDEL_IN(trapped_mob, 90) - - else if(trapped == HOWLING_GHOST) - visible_message(span_userdanger("[pick("OooOOooooOOOoOoOOooooOOOOO", "BooOOooOooooOOOO", "BOO!", "WoOOoOoooOooo")]")) - playsound(loc, 'sound/spookoween/ghosty_wind.ogg', 300, TRUE) - new /mob/living/simple_animal/shade/howling_ghost(loc) - trapped = 0 - - else if(trapped == SCARY_BATS) - visible_message(span_userdanger("Protect your hair!")) - playsound(loc, 'sound/spookoween/bats.ogg', 300, TRUE) - var/number = rand(1,3) - for(var/i=0,i < number,i++) - new /mob/living/simple_animal/hostile/retaliate/bat(loc) - trapped = 0 - - else if(trapped == ANGRY_FAITHLESS) - visible_message(span_userdanger("The closet bursts open!")) - visible_message(span_userdanger("THIS BEING RADIATES PURE EVIL! YOU BETTER RUN!!!")) - playsound(loc, 'sound/hallucinations/wail.ogg', 300, TRUE) - var/mob/living/simple_animal/hostile/faithless/F = new(loc) - trapped = 0 - QDEL_IN(F, 120) - - else if(trapped == INSANE_CLOWN) - visible_message(span_userdanger("...")) - playsound(loc, 'sound/spookoween/scary_clown_appear.ogg', 300, TRUE) - spawn_atom_to_turf(/mob/living/simple_animal/hostile/clown_insane, loc, 1, FALSE) - trapped = 0 - -//don't spawn in crates -/obj/structure/closet/crate/trigger_spooky_trap() - return - -/obj/structure/closet/crate/set_spooky_trap() - return - - -//////////////////// -//Spookoween Ghost// -//////////////////// - -/mob/living/simple_animal/shade/howling_ghost - name = "ghost" - real_name = "ghost" - icon = 'icons/mob/mob.dmi' - maxHealth = 1e6 - health = 1e6 - speak_emote = list("howls") - emote_hear = list("wails","screeches") - density = FALSE - anchored = TRUE - incorporeal_move = 1 - layer = 4 - var/timer = 0 - -/mob/living/simple_animal/shade/howling_ghost/Initialize(mapload) - . = ..() - icon_state = pick("ghost","ghostian","ghostian2","ghostking","ghost1","ghost2") - icon_living = icon_state - status_flags |= GODMODE - timer = rand(1,15) - -/mob/living/simple_animal/shade/howling_ghost/Life() - ..() - timer-- - if(prob(20)) - roam() - if(timer == 0) - spooky_ghosty() - timer = rand(1,15) - -/mob/living/simple_animal/shade/howling_ghost/proc/EtherealMove(direction) - forceMove(get_step(src, direction)) - setDir(direction) - -/mob/living/simple_animal/shade/howling_ghost/proc/roam() - if(prob(80)) - var/direction = pick(NORTH,SOUTH,EAST,WEST,NORTHEAST,NORTHWEST,SOUTHEAST,SOUTHWEST) - EtherealMove(direction) - -/mob/living/simple_animal/shade/howling_ghost/proc/spooky_ghosty() - if(prob(20)) //haunt - playsound(loc, pick('sound/spookoween/ghosty_wind.ogg','sound/spookoween/ghost_whisper.ogg','sound/spookoween/chain_rattling.ogg'), 300, TRUE) - if(prob(10)) //flickers - var/obj/machinery/light/L = locate(/obj/machinery/light) in view(5, src) - if(L) - L.flicker() - if(prob(5)) //poltergeist - var/obj/item/I = locate(/obj/item) in view(3, src) - if(I) - var/direction = pick(NORTH,SOUTH,EAST,WEST,NORTHEAST,NORTHWEST,SOUTHEAST,SOUTHWEST) - step(I,direction) - return - -/mob/living/simple_animal/shade/howling_ghost/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - . = 0 - -/////////////////////////// -//Spookoween Insane Clown// -/////////////////////////// - -///Insane clown mob. Basically a clown that haunts you. -/mob/living/simple_animal/hostile/clown_insane - name = "insane clown" - desc = "Some clowns do not manage to be accepted, and go insane. This is one of them." - icon = 'icons/mob/clown_mobs.dmi' - icon_state = "scary_clown" - icon_living = "scary_clown" - icon_dead = "scary_clown" - icon_gib = "scary_clown" - speak = list("...", ". . .") - maxHealth = INFINITY - health = INFINITY - emote_see = list("silently stares") - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - unsuitable_atmos_damage = 0 - minbodytemp = 0 - maxbodytemp = INFINITY - var/timer - -/mob/living/simple_animal/hostile/clown_insane/Initialize(mapload) - . = ..() - status_flags |= GODMODE //Slightly easier to maintain. - -/mob/living/simple_animal/hostile/clown_insane/Destroy() - timer = null - return ..() - -/mob/living/simple_animal/hostile/clown_insane/ex_act() - return - -///Adds a timer to call stalk() on Aggro -/mob/living/simple_animal/hostile/clown_insane/Aggro() - . = ..() - timer = addtimer(CALLBACK(src, .proc/stalk), 30, TIMER_STOPPABLE|TIMER_UNIQUE) - -/mob/living/simple_animal/hostile/clown_insane/LoseAggro() - . = ..() - if(timer) - deltimer(timer) - timer = null - -///Plays scary noises and adds some timers. -/mob/living/simple_animal/hostile/clown_insane/proc/stalk() - var/mob/living/M = target - if(!istype(M)) - LoseAggro() - return - if(M.stat == DEAD) - playsound(M.loc, 'sound/spookoween/insane_low_laugh.ogg', 100, TRUE) - qdel(src) - return - playsound(M, pick('sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg', 'sound/spookoween/scary_horn3.ogg'), 100, TRUE) - timer = addtimer(CALLBACK(src, .proc/stalk), 30, TIMER_STOPPABLE|TIMER_UNIQUE) - addtimer(CALLBACK(src, .proc/teleport_to_target), 12, TIMER_STOPPABLE|TIMER_UNIQUE) - -///Does what's in the name. Teleports to target.loc. Called from a timer. -/mob/living/simple_animal/hostile/clown_insane/proc/teleport_to_target() - if(target && isturf(target.loc)) //Hiding in lockers works to get rid of this thing. - forceMove(target.loc) - -/mob/living/simple_animal/hostile/clown_insane/MoveToTarget() - return - -/mob/living/simple_animal/hostile/clown_insane/AttackingTarget() - return - -/mob/living/simple_animal/hostile/clown_insane/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - . = 0 - if(prob(5)) - playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, TRUE) - -/mob/living/simple_animal/hostile/clown_insane/attackby(obj/item/O, mob/user) - if(istype(O, /obj/item/nullrod)) - if(prob(5)) - visible_message(span_notice("[src] finally found the peace it deserves. You hear honks echoing off into the distance.")) - playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, TRUE) - qdel(src) - else - visible_message(span_danger("[src] seems to be resisting the effect!")) - return - return ..() - -///////////////////////// -// Spooky Uplink Items // -///////////////////////// - -/datum/uplink_item/dangerous/crossbow/candy - name = "Candy Corn Crossbow" - desc = "A standard miniature energy crossbow that uses a hard-light projector to transform bolts into candy corn. Happy Halloween!" - category = "Holiday" - item = /obj/item/gun/energy/kinetic_accelerator/crossbow/halloween - surplus = 0 - -/datum/uplink_item/device_tools/emag/hack_o_lantern - name = "Hack-o'-Lantern" - desc = "An emag fitted to support the Halloween season. Candle not included." - category = "Holiday" - item = /obj/item/card/emag/halloween - surplus = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm index 1317cff6804..301c06a21e7 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm @@ -134,7 +134,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/rage() ranged_cooldown = world.time + 100 - playsound(src,'sound/spookoween/insane_low_laugh.ogg', 200, 1) + playsound(src,'sound/voice/insane_low_laugh.ogg', 200, 1) visible_message(span_warning("[src] starts picking up speed!")) color = "#FF0000" set_varspeed(0) diff --git a/code/modules/spells/spell_types/voice_of_god.dm b/code/modules/spells/spell_types/voice_of_god.dm index 0fc89e3f3fc..58c76b47753 100644 --- a/code/modules/spells/spell_types/voice_of_god.dm +++ b/code/modules/spells/spell_types/voice_of_god.dm @@ -42,4 +42,4 @@ power_mod = 0.1 cooldown_mod = 0.5 spans = list("clown") - speech_sound = 'sound/spookoween/scary_horn2.ogg' + speech_sound = 'sound/misc/scary_horn.ogg' diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 27d5df84bbf..2616d873bbb 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -612,6 +612,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 50 purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS) +/datum/uplink_item/stealthy_weapons/crossbow/New() + . = ..() + if(SSevents.holidays?[HALLOWEEN]) + item = /obj/item/gun/energy/kinetic_accelerator/crossbow/halloween + desc += " Happy Halloween!" + /datum/uplink_item/stealthy_weapons/origami_kit name = "Boxed Origami Kit" desc = "This box contains a guide on how to craft masterful works of origami, allowing you to transform normal pieces of paper into \ @@ -1393,6 +1399,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/card/emag cost = 4 +/datum/uplink_item/device_tools/emag/New() + . = ..() + if(SSevents.holidays?[HALLOWEEN]) + item = /obj/item/card/emag/halloween + desc += " This one is fitted to support the Halloween season. Candle not included." + /datum/uplink_item/device_tools/syndie_jaws_of_life name = "Syndicate Jaws of Life" desc = "Based on a Nanotrasen model, this powerful tool can be used as both a crowbar and a pair of wirecutters. \ diff --git a/sound/spookoween/chain_rattling.ogg b/sound/misc/chain_rattling.ogg similarity index 100% rename from sound/spookoween/chain_rattling.ogg rename to sound/misc/chain_rattling.ogg diff --git a/sound/spookoween/ghosty_wind.ogg b/sound/misc/ghosty_wind.ogg similarity index 100% rename from sound/spookoween/ghosty_wind.ogg rename to sound/misc/ghosty_wind.ogg diff --git a/sound/spookoween/scary_horn2.ogg b/sound/misc/scary_horn.ogg similarity index 100% rename from sound/spookoween/scary_horn2.ogg rename to sound/misc/scary_horn.ogg diff --git a/sound/spookoween/bats.ogg b/sound/spookoween/bats.ogg deleted file mode 100644 index fb428debcb3..00000000000 Binary files a/sound/spookoween/bats.ogg and /dev/null differ diff --git a/sound/spookoween/girlscream.ogg b/sound/spookoween/girlscream.ogg deleted file mode 100644 index 8ded518f47f..00000000000 Binary files a/sound/spookoween/girlscream.ogg and /dev/null differ diff --git a/sound/spookoween/scary_clown_appear.ogg b/sound/spookoween/scary_clown_appear.ogg deleted file mode 100644 index 05ab18f70b0..00000000000 Binary files a/sound/spookoween/scary_clown_appear.ogg and /dev/null differ diff --git a/sound/spookoween/scary_horn.ogg b/sound/spookoween/scary_horn.ogg deleted file mode 100644 index a0b05821bb2..00000000000 Binary files a/sound/spookoween/scary_horn.ogg and /dev/null differ diff --git a/sound/spookoween/scary_horn3.ogg b/sound/spookoween/scary_horn3.ogg deleted file mode 100644 index 0aaefe1583a..00000000000 Binary files a/sound/spookoween/scary_horn3.ogg and /dev/null differ diff --git a/sound/spookoween/ghost_whisper.ogg b/sound/voice/ghost_whisper.ogg similarity index 100% rename from sound/spookoween/ghost_whisper.ogg rename to sound/voice/ghost_whisper.ogg diff --git a/sound/spookoween/insane_low_laugh.ogg b/sound/voice/insane_low_laugh.ogg similarity index 100% rename from sound/spookoween/insane_low_laugh.ogg rename to sound/voice/insane_low_laugh.ogg