diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 57d59b310e8..bafa2efaaa7 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -1185,8 +1185,8 @@
name = "gift"
desc = "PRESENTS!!!! eek!"
icon = 'icons/obj/items.dmi'
- icon_state = "gift"
- item_state = "gift"
+ icon_state = "gift1"
+ item_state = "gift1"
pressure_resistance = 70
/obj/item/weapon/a_gift/New()
diff --git a/code/game/gamemodes/events/holidays/Christmas.dm b/code/game/gamemodes/events/holidays/Christmas.dm
index 4c023b26d4b..2ee79e7c65b 100644
--- a/code/game/gamemodes/events/holidays/Christmas.dm
+++ b/code/game/gamemodes/events/holidays/Christmas.dm
@@ -1,17 +1,63 @@
/proc/Christmas_Game_Start()
- for(var/obj/structure/flora/tree/pine/xmas_tree in world)
- if(xmas_tree.z != 1) continue
- for(var/turf/simulated/floor/T in orange(1,xmas_tree))
+ for(var/obj/structure/flora/tree/pine/xmas in world)
+ if(xmas.z != 1) continue
+ for(var/turf/simulated/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/corgi/Ian/Ian in mob_list)
Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian))
/proc/ChristmasEvent()
- for(var/obj/structure/flora/tree/pine/xmas_tree in world)
- var/mob/living/simple_animal/hostile/tree/evil_tree = new /mob/living/simple_animal/hostile/tree(xmas_tree.loc)
- evil_tree.icon_state = xmas_tree.icon_state
+ 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
- del(xmas_tree)
\ No newline at end of file
+ del(xmas)
+
+/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/New()
+ ..()
+
+/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*", "You pull \an [src] with [target]! *pop*", "You hear a *pop*.")
+ 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'Is it me or can you smell carrots?'",
+ "Why couldn't the snowman get laid?\n\nHe was frigid!",
+ "Where are santa's helpers educated?\n\nNowhere, they're ELF-taught.",
+ "What happened to the man who stole advent calanders?\n\nHe got 25 days.",
+ "What does Santa get when he gets stuck in a chimney?\n\nClaus-trophobia.",
+ "Where do you find chili beans?\n\nThe north pole.",
+ "What do you get from eating tree decorations?\n\nTinsilitis!",
+ "What do snowmen wear on their heads?\n\nIce caps!",
+ "Why is Christmas just like life on ss13?\n\nYou do all the work and the fat guy gets all the credit.",
+ "Why doesn’t Santa have any children?\n\nBecause he only comes down the chimney.")
+ 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
+ flags = FPRINT|TABLEPASS
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index 45a7f661ab5..442ab99a10e 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -7,6 +7,12 @@
/*
* Gifts
*/
+
+
+/obj/item/weapon/a_gift/New()
+ ..()
+ icon_state = "gift[pick("1", "2", "3")]"
+
/obj/item/weapon/gift/attack_self(mob/user as mob)
user.drop_item()
if(src.gift)
@@ -21,7 +27,6 @@
del(src)
return
-
/obj/effect/spresent/relaymove(mob/user as mob)
if (user.stat)
return
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index 369e5e0a22e..bc9192f2369 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -21,8 +21,8 @@
icon_state = "pine_c"
/obj/structure/flora/tree/pine/New()
- icon_state = "pine_c"
..()
+ icon_state = "pine_c"
/obj/structure/flora/tree/dead
icon = 'icons/obj/flora/deadtrees.dmi'
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index a7308e9f14f..4e660e33dc0 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/obj/christmas.dmi b/icons/obj/christmas.dmi
new file mode 100644
index 00000000000..a42d14ecff5
Binary files /dev/null and b/icons/obj/christmas.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index b8c1bd2379b..d680b619a3e 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ