diff --git a/code/game/machinery/casino_ch.dm b/code/game/machinery/casino_ch.dm index 2cfe0384a2..3467543048 100644 --- a/code/game/machinery/casino_ch.dm +++ b/code/game/machinery/casino_ch.dm @@ -650,6 +650,7 @@ icon = 'icons/obj/casino_ch.dmi' icon_state ="casinomanual" author = "Sleazy Serpent Saren" + w_class = 2 // To allow it to be stuffed away into wallets for easy readings during events title = "A dummy guide to losing your thalers" dat = {"
diff --git a/code/game/machinery/event/christmas_ch.dm b/code/game/machinery/event/christmas_ch.dm index 6eebd1352d..c930d27b53 100644 --- a/code/game/machinery/event/christmas_ch.dm +++ b/code/game/machinery/event/christmas_ch.dm @@ -13,4 +13,62 @@ pixel_x = rand(-10,10) pixel_y = rand(-10,10) icon_state = "gift[pick("1", "2", "3")]_[pick("g", "r", "b", "y", "p")]" - return \ No newline at end of file + return + +/obj/structure/event/santa_sack + + name = "Santa's sack" + desc = "A huge velvet sack full of presents! Only those who has been nice gets one from Santa!" + icon = 'icons/obj/storage_ch.dmi' + icon_state = "santasack" + + var/santa_ckey = null //The ckey set for the person acting as Santa, will be the only one able to anchor/unachor as well as retrieve presents. + var/list/nice_list_log = list() //The log that will contain all characters and their ckeys that the santa has given a gift to. + var/list/ckey_log = list() //The log that ensures nobody is naughty and tries to trick Santa into giving them twice! + anchored = 1.0 + density = 1 + +/obj/structure/event/santa_sack/verb/setanchor() + set name = "Bind/unbind sack" + set category = "Object" + set src in view(1) + + if(usr.incapacitated()) + return + if(usr.ckey == santa_ckey) + if(anchored == 0) + anchored = 1 + to_chat(usr,"You bind the sack, none can make off with it now! ") + else + anchored = 0 + to_chat(usr,"Santa pulls out a present for [T.name]! \"Merry Christmas!",1) + + var/santa_log = "[T.ckey] playing as [T.name] got a present!" + nice_list_log[++nice_list_log.len] = santa_log + ckey_log[user.ckey] = TRUE + //Currently doesnt have an ingame way to show. Can only be viewed through View-Variables, to ensure theres no chance of players ckeys exposed - Jack \ No newline at end of file diff --git a/code/game/objects/items/weapons/gift_wrappaper_ch.dm b/code/game/objects/items/weapons/gift_wrappaper_ch.dm index 0d9539ba11..ebcd7bb176 100644 --- a/code/game/objects/items/weapons/gift_wrappaper_ch.dm +++ b/code/game/objects/items/weapons/gift_wrappaper_ch.dm @@ -15,6 +15,7 @@ pixel_x = rand(-10,10) pixel_y = rand(-10,10) + /* DISABLED FOR NOW: STRONG TOYS IN REWARDS OF POOL - Jack chaos = rand(1, 100) if(chaos == 1) icon_state = "gift_chaos" @@ -22,60 +23,114 @@ else icon_state = "gift[pick("1", "2", "3")]_[pick("g", "r", "b", "y", "p")]" chaos = FALSE + */ + icon_state = "gift[pick("1", "2", "3")]_[pick("g", "r", "b", "y", "p")]" item_state = icon_state + chaos = FALSE return /obj/item/weapon/a_gift/advanced/attack_self(mob/M as mob) //WIP - add more items to list! - Jack - var/gift_type = pick( - /obj/item/weapon/storage/wallet, - /obj/item/weapon/storage/photo_album, - /obj/item/weapon/storage/box/snappops, - /obj/item/weapon/storage/fancy/crayons, - /obj/item/weapon/storage/backpack/holding, - /obj/item/weapon/storage/belt/champion, - /obj/item/weapon/soap/deluxe, - /obj/item/weapon/pickaxe/silver, - /obj/item/weapon/pen/invisible, - /obj/item/weapon/lipstick/random, - /obj/item/weapon/grenade/smokebomb, - /obj/item/weapon/corncob, - /obj/item/weapon/contraband/poster, - /obj/item/weapon/book/manual/barman_recipes, - /obj/item/weapon/book/manual/chef_recipes, - /obj/item/weapon/bikehorn, - /obj/item/weapon/beach_ball, - /obj/item/weapon/beach_ball/holoball, - /obj/item/toy/balloon, - /obj/item/toy/blink, - /obj/item/toy/crossbow, - /obj/item/weapon/gun/projectile/revolver/capgun, - /obj/item/toy/katana, - /obj/item/toy/mecha/deathripley, - /obj/item/toy/mecha/durand, - /obj/item/toy/mecha/fireripley, - /obj/item/toy/mecha/gygax, - /obj/item/toy/mecha/honk, - /obj/item/toy/mecha/marauder, - /obj/item/toy/mecha/mauler, - /obj/item/toy/mecha/odysseus, - /obj/item/toy/mecha/phazon, - /obj/item/toy/mecha/ripley, - /obj/item/toy/mecha/seraph, - /obj/item/toy/spinningtoy, - /obj/item/toy/sword, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus, - /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, - /obj/item/device/paicard, - /obj/item/device/instrument/violin, - /obj/item/weapon/storage/belt/utility/full, - /obj/item/clothing/accessory/tie/horrible) + var/gift_type_advanced = pick( + /obj/item/device/binoculars/spyglass, + /obj/item/device/bodysnatcher, + /obj/item/device/cataloguer/advanced, + /obj/item/device/flashlight/slime, + /obj/item/device/lightreplacer, + /obj/item/weapon/book/tome, + /obj/item/weapon/cell/device/weapon/recharge/alien/hybrid, + /obj/item/weapon/disk/nifsoft/compliance, + /obj/item/weapon/implanter/adrenalin, + /obj/item/weapon/lego, + /obj/item/weapon/moneybag, + /obj/item/weapon/pickaxe/diamonddrill, + /obj/item/weapon/rcd/advanced/loaded, + /obj/item/weapon/bluespace_harpoon, + /obj/item/weapon/storage/backpack/dufflebag/syndie, + /obj/item/weapon/storage/belt/medical/alien, + /obj/item/weapon/storage/toolbox/syndicate/powertools, + /obj/item/weapon/surgical/FixOVein/alien, + /obj/item/weapon/surgical/bone_clamp/alien, + /obj/item/weapon/surgical/cautery/alien, + /obj/item/weapon/surgical/circular_saw/alien, + /obj/item/weapon/surgical/hemostat/alien, + /obj/item/weapon/surgical/retractor/alien, + /obj/item/weapon/surgical/scalpel/alien, + /obj/item/weapon/surgical/surgicaldrill/alien, + /obj/item/weapon/sword/fluff/joanaria/scisword, + /obj/item/weapon/tool/wrench/alien, + /obj/item/weapon/tool/wirecutters/alien, + /obj/item/weapon/tool/screwdriver/alien, + /obj/item/weapon/tool/crowbar/alien, + /obj/item/weapon/weldingtool/alien, + /obj/item/weapon/twohanded/fireaxe/fluff/mjollnir, + /obj/item/weapon/gun/launcher/confetti_cannon/overdrive, + /obj/item/weapon/gun/energy/sizegun, + /obj/item/weapon/gun/energy/netgun, + /obj/item/weapon/storage/belt/utility/alien, + /obj/item/clothing/suit/armor/alien, + /obj/item/clothing/glasses/monocoole, + /obj/item/weapon/reagent_containers/spray/chemsprayer, + /obj/item/weapon/reagent_containers/glass/beaker/bluespace, + /obj/item/weapon/reagent_containers/glass/beaker/noreact, + /obj/item/weapon/storage/box/casino/costume_whitebunny, + /obj/item/weapon/storage/box/casino/costume_blackbunny, + /obj/item/weapon/storage/box/casino/costume_sexymime, + /obj/item/weapon/storage/box/casino/costume_sexyclown, + /obj/item/weapon/storage/box/casino/costume_nyangirl, + /obj/item/weapon/storage/box/casino/costume_wizard, + /obj/item/weapon/storage/box/casino/costume_chicken, + /obj/item/weapon/storage/box/casino/costume_gladiator, + /obj/item/weapon/storage/box/casino/costume_pirate, + /obj/item/weapon/storage/box/casino/costume_commie, + /obj/item/weapon/storage/box/casino/costume_imperiummonk, + /obj/item/weapon/storage/box/casino/costume_plaguedoctor, + /obj/item/weapon/storage/box/casino/costume_cutewitch, + /obj/item/weapon/grenade/spawnergrenade/casino, + /obj/item/weapon/grenade/spawnergrenade/casino/goat, + /obj/item/weapon/grenade/spawnergrenade/casino/armadillo, + /obj/item/weapon/grenade/spawnergrenade/casino/cat, + /obj/item/weapon/grenade/spawnergrenade/casino/chicken, + /obj/item/weapon/grenade/spawnergrenade/casino/cow, + /obj/item/weapon/grenade/spawnergrenade/casino/corgi, + /obj/item/weapon/grenade/spawnergrenade/casino/fox, + /obj/item/weapon/grenade/spawnergrenade/casino/lizard, + /obj/item/weapon/grenade/spawnergrenade/casino/penguin, + /obj/item/weapon/grenade/spawnergrenade/casino/snake, + /obj/item/weapon/grenade/spawnergrenade/casino/yithian, + /obj/item/weapon/grenade/spawnergrenade/casino/tindalos, + /obj/item/weapon/grenade/spawnergrenade/casino/fennec, + /obj/item/weapon/grenade/spawnergrenade/casino/redpanda, + /obj/item/weapon/grenade/spawnergrenade/casino/horse, + /obj/item/weapon/grenade/spawnergrenade/casino/otie, + /obj/item/weapon/grenade/spawnergrenade/casino/otie/chubby, + /obj/item/weapon/grenade/spawnergrenade/casino/zorgoia, + /obj/item/weapon/grenade/confetti) - if(!ispath(gift_type,/obj/item)) return + var/gift_type_chaos = pick( + /obj/item/weapon/lego/gib, + /obj/item/weapon/grenade/spawnergrenade/casino/infinitycake, + /obj/item/weapon/gun/energy/meteorgun, + /obj/item/weapon/grenade/spawnergrenade/casino/universal_technomancer, + /obj/item/weapon/spellbook, + /obj/item/weapon/book/tome/imbued) - var/obj/item/I = new gift_type(M) - M.remove_from_mob(src) - M.put_in_hands(I) - I.add_fingerprint(M) - qdel(src) - return \ No newline at end of file + if(!ispath(gift_type_advanced,/obj/item)) return + + var/obj/item/I1 = new gift_type_advanced(M) + + if(chaos == TRUE) + var/obj/item/I2 = new gift_type_chaos(M) + M.remove_from_mob(src) + M.put_in_hands(I2) + I2.add_fingerprint(M) + + qdel(src) + return + else + M.remove_from_mob(src) + M.put_in_hands(I1) + I1.add_fingerprint(M) + + qdel(src) + return \ No newline at end of file diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade_ch.dm b/code/game/objects/items/weapons/grenades/spawnergrenade_ch.dm index 48f4e42a74..d1c22a3b3e 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade_ch.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade_ch.dm @@ -112,4 +112,38 @@ /obj/item/weapon/grenade/spawnergrenade/casino/zorgoia desc = "It is set to detonate in 5 seconds. It will release a zorgoia that has been won from the golden goose casino!" name = "Casino Creature Container (Zorgoia)" - spawner_type = /mob/living/simple_mob/otie/zorgoia/friendly \ No newline at end of file + spawner_type = /mob/living/simple_mob/otie/zorgoia/friendly + +/obj/item/weapon/grenade/spawnergrenade/casino/infinitycake + desc = "Some say a cheese in his hubris made a cake to rival the gods. Sometimes it appears where it is least expected, only to vanish a few hours later.." + name = "Mysterious Grenade" + spawner_type = null + +/obj/item/weapon/grenade/spawnergrenade/casino/infinitycake/detonate() + + var/turf/T = get_turf(src) + playsound(T, 'sound/effects/phasein.ogg', 100, 1) + + new /obj/structure/thecake(T) + new /obj/item/weapon/thecake_layer(T) + new /obj/item/weapon/thecake_layer/three(T) + new /obj/item/weapon/thecake_layer/four(T) + new /obj/item/weapon/thecake_layer/five(T) + new /obj/item/weapon/thecake_layer/six(T) + + qdel(src) + return + +/obj/item/weapon/grenade/spawnergrenade/casino/universal_technomancer + name = "Mysterious grenade (Tell an admin on server or discord before playing with!)" + desc = "Sometimes one wishes upon a lucky star and obtains by pure chance great power! (TELL AN ADMIN ON DISCORD OR SERVER BEFORE PLAYING WITH)" + +/obj/item/weapon/grenade/spawnergrenade/casino/universal_technomancer/detonate() + var/turf/T = get_turf(src) + playsound(T, 'sound/effects/phasein.ogg', 100, 1) + + new /obj/item/weapon/technomancer_catalog/universal(T) + new /obj/item/weapon/technomancer_core/universal(T) + + qdel(src) + return \ No newline at end of file diff --git a/code/modules/clothing/suits/hooded_ch.dm b/code/modules/clothing/suits/hooded_ch.dm new file mode 100644 index 0000000000..c3e0d4252f --- /dev/null +++ b/code/modules/clothing/suits/hooded_ch.dm @@ -0,0 +1,12 @@ + + +/obj/item/clothing/suit/storage/hooded/wintercoat/security/santa + name = "Santa's coat" + icon = 'icons/obj/clothing/uniforms_ch.dmi' + icon_override = 'icons/mob/suit_ch.dmi' + icon_state = "santacoat" + item_state_slots = list(slot_r_hand_str = "coatsecurity", slot_l_hand_str = "coatsecurity") + hoodtype = /obj/item/clothing/head/hood/winter/security/santa + +/obj/item/clothing/head/hood/winter/security/santa + name = "Santa's hood" \ No newline at end of file diff --git a/code/modules/food/food/thecake_ch.dm b/code/modules/food/food/thecake_ch.dm index 7f9a9a84dc..0ea095d29a 100644 --- a/code/modules/food/food/thecake_ch.dm +++ b/code/modules/food/food/thecake_ch.dm @@ -193,10 +193,10 @@ if(edible == 1) HasSliceMissing() if(slices <= 0) - user << "The cake hums away quietly as the singulo powered goodness slowly recovers the large amount of lost mass, best to give it a moment before cutting another slice." + to_chat(usr, span("warning", "The cake hums away quietly as the singulo powered goodness slowly recovers the large amount of lost mass, best to give it a moment before cutting another slice.")) return else - user << "You cut a slice of the cake. The slice looks like the cake was just baked, and you can see before your eyes as the spot where you cut the slice slowly regenerates!" + to_chat(user, "You cut a slice of the cake. The slice looks like the cake was just baked, and you can see before your eyes as the spot where you cut the slice slowly regenerates!") slices = slices - 1 new /obj/item/weapon/reagent_containers/food/snacks/thecakeslice(src.loc) @@ -206,23 +206,24 @@ if(istype(W,/obj/item/weapon/thecake_layer)) var/obj/item/weapon/thecake_layer/C = W if(C.layer_stage == 5) - user << "Finally! The cherry on the top, the almighty infinity cake is complete!" + for(var/mob/O in view(src, null)) + O.show_message("It has been done! \The Infinity Cake has been assembled!",1) qdel(W) stage++ desc = desclist[stage] - icon_state = "thecake_stage-[stage]" + icon_state = "thecake_finished" edible = 1 name = "The Infinity Cake!" else if(stage == maxstages) - user << "The cake is already done!" + to_chat(usr, span("warning", "The cake is already done!")) else if(stage == C.layer_stage) - user << "You add another layer to the cake, nice." + to_chat(usr, span("warning", "You add another layer to the cake, nice.")) qdel(W) stage++ desc = desclist[stage] icon_state = "thecake_stage-[stage]" else - user << "Hmm, doesnt seem like this layer is supposed to be added there?" + to_chat(usr, span("warning", "Hmm, doesnt seem like this layer is supposed to be added there?")) // Chaos cake diff --git a/code/modules/projectiles/guns/launcher/confetti_ch.dm b/code/modules/projectiles/guns/launcher/confetti_ch.dm index 984cf0ccb1..ac474a2366 100644 --- a/code/modules/projectiles/guns/launcher/confetti_ch.dm +++ b/code/modules/projectiles/guns/launcher/confetti_ch.dm @@ -48,4 +48,10 @@ return chambered /obj/item/weapon/gun/launcher/confetti_cannon/handle_post_fire(mob/user) - chambered = null \ No newline at end of file + chambered = null + +/obj/item/weapon/gun/launcher/confetti_cannon/overdrive + name = "overdrive confetti cannon" + desc = "For those times when you absolutely need colored paper everywhere, EVERYWHERE." + confetti_charge = 50 + max_confetti = 50 \ No newline at end of file diff --git a/icons/mob/suit_ch.dmi b/icons/mob/suit_ch.dmi index e2c15488d7..d3f8ad6477 100644 Binary files a/icons/mob/suit_ch.dmi and b/icons/mob/suit_ch.dmi differ diff --git a/icons/obj/clothing/uniforms_ch.dmi b/icons/obj/clothing/uniforms_ch.dmi index 6c669115f8..579761990a 100644 Binary files a/icons/obj/clothing/uniforms_ch.dmi and b/icons/obj/clothing/uniforms_ch.dmi differ diff --git a/icons/obj/food64x64_ch.dmi b/icons/obj/food64x64_ch.dmi index 69fbb084ba..8ccb9be4a0 100644 Binary files a/icons/obj/food64x64_ch.dmi and b/icons/obj/food64x64_ch.dmi differ diff --git a/icons/obj/food_ch.dmi b/icons/obj/food_ch.dmi index 8919f7ba86..160f41e687 100644 Binary files a/icons/obj/food_ch.dmi and b/icons/obj/food_ch.dmi differ diff --git a/icons/obj/storage_ch.dmi b/icons/obj/storage_ch.dmi index e516e3a6aa..49c90f2e90 100644 Binary files a/icons/obj/storage_ch.dmi and b/icons/obj/storage_ch.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 4234ab7f29..01bc6a2985 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2071,6 +2071,7 @@ #include "code\modules\clothing\suits\bio.dm" #include "code\modules\clothing\suits\bio_vr.dm" #include "code\modules\clothing\suits\hooded.dm" +#include "code\modules\clothing\suits\hooded_ch.dm" #include "code\modules\clothing\suits\hooded_vr.dm" #include "code\modules\clothing\suits\hooded_yw.dm" #include "code\modules\clothing\suits\jobs.dm"