Christmas time is once a year..

Made changes to allow casino manual to fit into the casino wallet for easy reading.
Made Santa's sack! Only he can take presents from it!
Made the new presents have a nice wide selection of gifts, but chaos presents are disabled so far!
Fixed 'the cake' somewhat and made a grenade to spawn its components.
made Santa's coat.
made an overdrive version of the confetti gun.
This commit is contained in:
Shadowfire
2020-12-17 17:20:24 +01:00
parent 35ddbf4589
commit 6b70b133ba
13 changed files with 228 additions and 60 deletions

View File

@@ -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 = {"<html>
<head>

View File

@@ -14,3 +14,61 @@
pixel_y = rand(-10,10)
icon_state = "gift[pick("1", "2", "3")]_[pick("g", "r", "b", "y", "p")]"
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,"<span class='notice'>You bind the sack, none can make off with it now!</span> ")
else
anchored = 0
to_chat(usr,"<span class='You unbind the sack, you can now drag it off. But so can anyone else!</span> ")
else
to_chat(usr, span("warning", "Only Santa can bind and unbind his sack!"))
return
/obj/structure/event/santa_sack/attack_hand(mob/user as mob)
. = ..()
if(usr.ckey != santa_ckey)
to_chat(usr, span("warning", "Only Santa can give presents! (Be nice or you might end up in Santa's sack!)"))
return
var/list/receivers = list()
for(var/mob/living/R in oview(user.loc,1))
receivers += R
var/mob/living/T = input("Choose who to give a present to.") as null| mob in view(user.loc,1)
if(!T || !T.ckey)
return
if(ckey_log[T.ckey])
to_chat(usr, span("warning", "This one already got a present!"))
return
new /obj/item/weapon/a_gift/advanced(src.loc)
for(var/mob/O in view(src, null))
O.show_message("<span class='warning'>Santa pulls out a present for [T.name]! \"Merry Christmas!</span>",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

View File

@@ -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)
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(I)
I.add_fingerprint(M)
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

View File

@@ -113,3 +113,37 @@
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
/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

View File

@@ -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"

View File

@@ -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, "<span class='notice'>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!</span>")
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("<span class='warning'>It has been done! \The Infinity Cake has been assembled!</span>",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

View File

@@ -49,3 +49,9 @@
/obj/item/weapon/gun/launcher/confetti_cannon/handle_post_fire(mob/user)
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -2070,6 +2070,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"