diff --git a/SQL/Aurora_SQL_Schema.sql b/SQL/Aurora_SQL_Schema.sql
index f2dd7018bf9..59865d55f89 100644
--- a/SQL/Aurora_SQL_Schema.sql
+++ b/SQL/Aurora_SQL_Schema.sql
@@ -251,7 +251,7 @@ CREATE TABLE `ss13_directives` (
CREATE TABLE `ss13_feedback` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`time` datetime NOT NULL,
- `round_id` int(8) NOT NULL,
+ `game_id` varchar(32) NOT NULL,
`var_name` varchar(32) CHARACTER SET latin1 NOT NULL,
`var_value` int(16) DEFAULT NULL,
`details` text CHARACTER SET latin1,
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 88196e5747b..7560e8420b3 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -719,8 +719,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
/datum/supply_packs/weapons
name = "Weapons crate"
- contains = list(/obj/item/weapon/gun/energy/rifle,
- /obj/item/weapon/gun/energy/rifle,
+ contains = list(/obj/item/weapon/gun/energy/rifle/laser,
+ /obj/item/weapon/gun/energy/rifle/laser,
/obj/item/weapon/gun/projectile/sec,
/obj/item/weapon/gun/projectile/sec,
/obj/item/ammo_magazine/c45m,
diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm
index 3f9b6954a09..8a1e02b7811 100644
--- a/code/defines/procs/statistics.dm
+++ b/code/defines/procs/statistics.dm
@@ -99,49 +99,3 @@ proc/statistic_cycle()
while(1)
sql_poll_population()
sleep(6000)
-
-//This proc is used for feedback. It is executed at round end.
-proc/sql_commit_feedback()
- if(!config.sql_enabled || !config.sql_stats)
- return
-
- if(!blackbox)
- log_game("Round ended without a blackbox recorder. No feedback was sent to the database.")
- return
-
- //content is a list of lists. Each item in the list is a list with two fields, a variable name and a value. Items MUST only have these two values.
- var/list/datum/feedback_variable/content = blackbox.get_round_feedback()
-
- if(!content)
- log_game("Round ended without any feedback being generated. No feedback was sent to the database.")
- return
-
- establish_db_connection(dbcon)
- if(!dbcon.IsConnected())
- log_game("SQL ERROR during feedback reporting. Failed to connect.")
- else
-
- var/DBQuery/max_query = dbcon.NewQuery("SELECT MAX(roundid) AS max_round_id FROM ss13_feedback")
- max_query.Execute()
-
- var/newroundid
-
- while(max_query.NextRow())
- newroundid = max_query.item[1]
-
- if(!(isnum(newroundid)))
- newroundid = text2num(newroundid)
-
- if(isnum(newroundid))
- newroundid++
- else
- newroundid = 1
-
- for(var/datum/feedback_variable/item in content)
- var/variable = item.get_variable()
- var/value = item.get_value()
-
- var/DBQuery/query = dbcon.NewQuery("INSERT INTO ss13_feedback (id, roundid, time, variable, value) VALUES (null, [newroundid], Now(), '[variable]', '[value]')")
- if(!query.Execute())
- var/err = query.ErrorMsg()
- log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
diff --git a/code/game/gamemodes/events/holidays/Christmas.dm b/code/game/gamemodes/events/holidays/Christmas.dm
index 9c68ab879ee..94a985e9161 100644
--- a/code/game/gamemodes/events/holidays/Christmas.dm
+++ b/code/game/gamemodes/events/holidays/Christmas.dm
@@ -61,3 +61,9 @@
body_parts_covered = 0
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+/obj/item/clothing/head/festive/santa
+ name = "santa hat"
+ icon_state = "santahat"
+ body_parts_covered = HEAD
+ desc = "A cheap fabric santa hat, with a fake beard and a little bell at the end."
+
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index bea0c443a74..ba8f037d168 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -108,10 +108,8 @@
if ((src.disable) || (src.last_flash && world.time < src.last_flash + 150))
return
- if(istype(AM, /mob/living/carbon))
- var/mob/living/carbon/M = AM
- if ((M.m_intent != "walk") && (src.anchored))
- src.flash()
+ if (src.anchored)
+ src.flash()
/obj/machinery/flasher/portable/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 18729bd0b0c..c3ef365a8b3 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -723,7 +723,7 @@
vend_power_usage = 85000 //85 kJ to heat a 250 mL cup of coffee
products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25,/obj/item/weapon/reagent_containers/food/drinks/tea = 25,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 25)
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/ice = 10)
- prices = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 10, /obj/item/weapon/reagent_containers/food/drinks/tea = 10, /obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 12)
+ prices = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 30, /obj/item/weapon/reagent_containers/food/drinks/tea = 30, /obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 32)
@@ -739,10 +739,10 @@
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 6, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 3,
/obj/item/weapon/reagent_containers/food/snacks/meatsnack = 2, /obj/item/weapon/reagent_containers/food/snacks/maps = 2, /obj/item/weapon/reagent_containers/food/snacks/nathisnack = 2)
contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6)
- prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 5,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 10,/obj/item/weapon/reagent_containers/food/snacks/chips = 7,
- /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 10,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 2,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 5,
- /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 5, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 8, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 30,
- /obj/item/weapon/reagent_containers/food/snacks/meatsnack = 12, /obj/item/weapon/reagent_containers/food/snacks/maps = 13, /obj/item/weapon/reagent_containers/food/snacks/nathisnack = 14)
+ prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 25,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 30,/obj/item/weapon/reagent_containers/food/snacks/chips = 27,
+ /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 30,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 22,/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 25,
+ /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 25, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 28, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 50,
+ /obj/item/weapon/reagent_containers/food/snacks/meatsnack = 32, /obj/item/weapon/reagent_containers/food/snacks/maps = 33, /obj/item/weapon/reagent_containers/food/snacks/nathisnack = 34)
/obj/machinery/vending/cola
@@ -756,10 +756,10 @@
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 10,/obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 10,
/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 10)
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko = 5, /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 6)
- prices = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 5,/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 1,
- /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 6,/obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 5,
- /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 2,/obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 5,
- /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 3,/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 6)
+ prices = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 25,/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 21,
+ /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 26,/obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 25,
+ /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 22,/obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 25,
+ /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 23,/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 26)
idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan.
//This one's from bay12
@@ -784,7 +784,7 @@
products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/flame/lighter/random = 4)
contraband = list(/obj/item/weapon/flame/lighter/zippo = 4)
premium = list(/obj/item/weapon/storage/fancy/cigar = 5,/obj/item/weapon/storage/fancy/cigarettes/killthroat = 5 )
- prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15,/obj/item/weapon/storage/box/matches = 1,/obj/item/weapon/flame/lighter/random = 2)
+ prices = list(/obj/item/weapon/storage/fancy/cigarettes = 520,/obj/item/weapon/storage/box/matches = 22,/obj/item/weapon/flame/lighter/random = 22)
/obj/machinery/vending/medical
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index a76d28778b0..5faacc45736 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -1246,7 +1246,7 @@
set_dir(dir_in)
pr_manage_warnings.resume_sounds(src)
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
- if(!hasInternalDamage() && cell.charge >= cell.maxcharge && health >= initial(health))
+ if(cell && !hasInternalDamage() && cell.charge >= cell.maxcharge && health >= initial(health))
narrator_message(NOMINAL)
return 1
else
@@ -1458,7 +1458,7 @@
Powercell charge: [isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]
Air source: [use_internal_tank?"Internal Airtank":"Environment"]
Airtank pressure: [tank_pressure]kPa
- Airtank temperature: [tank_temperature]K|[tank_temperature - T0C]°C
+ Airtank temperature: [isnum(tank_temperature) ? "[tank_temperature]K|[tank_temperature - T0C]°C" : "Unknown"]
Cabin pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
Cabin temperature: [return_temperature()]K|[return_temperature() - T0C]°C
Lights: [lights?"on":"off"]
@@ -1986,9 +1986,22 @@
process(var/obj/mecha/mecha)
+
if (!mecha)
return
+ if (!mecha.cell)
+ if((mecha.power_alert_status || mecha.damage_alert_status))
+ // No cell will kill warnings.
+ // Makes sense, caution systems are battery powered.
+ mecha.power_alert_status = 0//cancel the alert status
+ power_warning_delay = initial(power_warning_delay)//Reset the delay
+ stop_sound(1, mecha)
+ mecha.damage_alert_status = 0
+ damage_warning_delay = initial(damage_warning_delay)//Reset the delay
+ stop_sound(2, mecha)
+ return
+
if (!mecha.power_alert_status && mecha.cell)//If we're in the fine status
if (mecha.cell.charge < (mecha.cell.maxcharge*0.3))//but power is below 30%
mecha.power_alert_status = 1//Switch to the alert status
@@ -1998,6 +2011,7 @@
//No 'else' here, we want this to run in the same proc if the alert status was just enabled
if (mecha.power_alert_status)//IF we're in either warning status
+
if (mecha.cell.charge >= (mecha.cell.maxcharge*0.3))//But power has risen back above danger levels
mecha.power_alert_status = 0//cancel the alert status
power_warning_delay = initial(power_warning_delay)//Reset the delay
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index fc4b0ba0dcb..73de783335b 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -91,14 +91,16 @@ var/global/list/image/splatter_cache=list()
S.blood_overlay.color = basecolor
S.overlays.Cut()
S.overlays += S.blood_overlay
- S.blood_DNA |= blood_DNA.Copy()
+ if(blood_DNA)
+ S.blood_DNA |= blood_DNA.Copy()
else if (hasfeet)//Or feet
perp.feet_blood_color = basecolor
perp.track_blood = max(amount,perp.track_blood)
if(!perp.feet_blood_DNA)
perp.feet_blood_DNA = list()
- perp.feet_blood_DNA |= blood_DNA.Copy()
+ if (blood_DNA)
+ perp.feet_blood_DNA |= blood_DNA.Copy()
else if (perp.buckled && istype(perp.buckled, /obj/structure/bed/chair/wheelchair))
var/obj/structure/bed/chair/wheelchair/W = perp.buckled
W.bloodiness = 4
@@ -124,7 +126,8 @@ var/global/list/image/splatter_cache=list()
user << "You get some of \the [src] on your hands."
if (!user.blood_DNA)
user.blood_DNA = list()
- user.blood_DNA |= blood_DNA.Copy()
+ if (blood_DNA)
+ user.blood_DNA |= blood_DNA.Copy()
user.bloody_hands += taken
user.hand_blood_color = basecolor
user.update_inv_gloves(1)
@@ -213,21 +216,21 @@ var/global/list/image/splatter_cache=list()
/obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions)
- spawn (0)
- var/direction = pick(directions)
- for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
- sleep(3)
- if (i > 0)
- var/obj/effect/decal/cleanable/blood/b = PoolOrNew(/obj/effect/decal/cleanable/blood/splatter, src.loc)
- b.basecolor = src.basecolor
- b.update_icon()
- for(var/datum/disease/D in src.viruses)
- var/datum/disease/ND = D.Copy(1)
- b.viruses += ND
- ND.holder = b
+ spawn (0)
+ var/direction = pick(directions)
+ for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
+ sleep(3)
+ if (i > 0)
+ var/obj/effect/decal/cleanable/blood/b = PoolOrNew(/obj/effect/decal/cleanable/blood/splatter, src.loc)
+ b.basecolor = src.basecolor
+ b.update_icon()
+ for(var/datum/disease/D in src.viruses)
+ var/datum/disease/ND = D.Copy(1)
+ b.viruses += ND
+ ND.holder = b
- if (step_to(src, get_step(src, direction), 0))
- break
+ if (step_to(src, get_step(src, direction), 0))
+ break
/obj/effect/decal/cleanable/mucus
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index cc52bf7bbf9..c28198f89a3 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -52,3 +52,11 @@
..()
pixel_x += rand(-10, 10)
pixel_y += rand(-10, 10)
+
+/obj/effect/overlay/snow
+ name = "snow"
+ icon = 'icons/turf/overlays.dmi'
+ icon_state = "snowfloor"
+ density = 0
+ anchored = 1
+ layer = 3
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 9aadab791ae..54f634bfe14 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -973,3 +973,12 @@
item_state = "inflatable"
icon = 'icons/obj/clothing/belts.dmi'
slot_flags = SLOT_BELT
+
+/obj/item/toy/xmastree
+ name = "miniature Christmas tree"
+ desc = "Now with 99% less pine needles."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "tinyxmastree"
+ w_class = 1
+ force = 1
+ throwforce = 1
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index ea6dc884bd7..5c6c0a29904 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -1,6 +1,7 @@
/* Gifts and wrapping paper
* Contains:
* Gifts
+ * X-mas Gifts
* Wrapping Paper
*/
@@ -187,3 +188,165 @@
user << "You need more paper."
else
user << "They are moving around too much. A straightjacket would help."
+
+/*
+ * Xmas Gifts
+ */
+/obj/item/weapon/xmasgift
+ name = "christmas gift"
+ desc = "PRESENTS!!!! eek!"
+ icon = 'icons/obj/items.dmi'
+ icon_state = "gift1"
+ item_state = "gift1"
+ w_class = 1
+
+/obj/item/weapon/xmasgift/New()
+ ..()
+ var/gift_benefactor = pick("John Rolf","Isaac Bureaurgard","David Montrello","Sarah Karpac","Camille Rodgers","Luke Lawrence","Goliath Grills","Torbjorn","Odin","Jesus DeSanto","Santa Claus","Ms. Claus","Mr. Claus","Bjorn","Frodo","Gandalf","Elrond",
+ "Robert Heinlen","Martin Fresco","Lawrence Chamberlain","Buster Kilrain","Nerevar","Neville Trouserkepling","Adam Sortings","Eve's Grocers","Father Christmas","Adolph Romkippler","Adolf Strange","Camille","Maximilian von Biesel","Max","Bob Wallace",
+ "The Grinch","Cicilia Simon","John F. Kennedy","Joseph Dorn","Mendell City","Ta’Akaix’Scay’extiih’aur Zo’ra","Ta'Akaix'Vaur'skiyet'sca Zo'ra","Miranda Trasen","Jiub","The Biesellian National Guard","The ERT","Baal D. Griffon","Hephaestus Industries","The Sol Alliance (Sorry about the blockade!")
+ var/pick_emotion = pick("love","platonic admiration","approval","love (not in a sexual way or anything, though)","apathy", "schadenfreude","love","God's blessing","Santa's blessing","Non-demoninational deity's blessing","love","compassion","appreciation",
+ "respect","begrudging respect","love")
+ desc = "To: The NSS Exodus
From: [gift_benefactor], with [pick_emotion]"
+
+ return
+
+/obj/item/weapon/xmasgift/ex_act()
+ qdel(src)
+ return
+
+/obj/item/weapon/xmasgift/small/attack_self(mob/M as mob)
+ 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/soap/deluxe,
+ /obj/item/weapon/pen/invisible,
+ /obj/item/weapon/lipstick/random,
+ /obj/item/weapon/corncob,
+ /obj/item/weapon/bikehorn,
+ /obj/item/toy/balloon,
+ /obj/item/toy/blink,
+ /obj/item/toy/gun,
+ /obj/item/toy/prize/deathripley,
+ /obj/item/toy/prize/durand,
+ /obj/item/toy/prize/fireripley,
+ /obj/item/toy/prize/gygax,
+ /obj/item/toy/prize/honk,
+ /obj/item/toy/prize/marauder,
+ /obj/item/toy/prize/mauler,
+ /obj/item/toy/prize/odysseus,
+ /obj/item/toy/prize/phazon,
+ /obj/item/toy/prize/ripley,
+ /obj/item/toy/prize/seraph,
+ /obj/item/device/paicard,
+ /obj/item/clothing/accessory/horrible,
+ /obj/item/weapon/coin/silver,
+ /obj/item/device/camera,
+ /obj/item/weapon/coin/gold,
+ /obj/item/bluespace_crystal,
+ /obj/item/weapon/flame/lighter/zippo,
+ /obj/item/device/taperecorder,
+ /obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
+ /obj/item/toy/bosunwhistle,
+ /obj/item/clothing/mask/fakemoustache,
+ /obj/item/clothing/mask/gas/clown_hat,
+ /obj/item/clothing/mask/gas/mime,
+ /obj/item/clothing/head/festive/santa,
+ /obj/item/stack/material/animalhide/lizard,
+ /obj/item/stack/material/animalhide/cat,
+ /obj/item/stack/material/animalhide/corgi,
+ /obj/item/stack/material/animalhide/human,
+ /obj/item/stack/material/animalhide/monkey,
+ /obj/item/stack/material/animalhide/xeno,
+ /obj/item/trash/cheesie,
+ /obj/item/trash/raisins,
+ /obj/item/trash/koisbar,
+ /obj/item/weapon/xmasgift/medium,
+ /obj/item/toy/syndicateballoon,
+ /obj/item/toy/xmastree)
+
+ var/atom/movable/I = new gift_type(M)
+ M.remove_from_mob(src)
+ M.put_in_hands(I)
+ M << "You open the gift, revealing your new [I.name]! Just what you always wanted!"
+ qdel(src)
+ return
+
+/obj/item/weapon/xmasgift/medium
+ icon_state = "gift2"
+ item_state = "gift2"
+ w_class = 2
+
+/obj/item/weapon/xmasgift/medium/attack_self(mob/M as mob)
+ var/gift_type = pick(
+ /obj/item/weapon/sord,
+ /obj/item/weapon/storage/belt/champion,
+ /obj/item/weapon/pickaxe/silver,
+ /obj/item/weapon/grenade/smokebomb,
+ /obj/item/weapon/contraband/poster,
+ /obj/item/weapon/book/manual/barman_recipes,
+ /obj/item/weapon/book/manual/chef_recipes,
+ /obj/item/weapon/banhammer,
+ /obj/item/toy/crossbow,
+ /obj/item/toy/katana,
+ /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/clothing/accessory/horrible,
+ /obj/item/weapon/storage/box/donkpockets,
+ /obj/item/weapon/reagent_containers/food/drinks/teapot,
+ /obj/item/device/flashlight/lantern,
+ /obj/item/clothing/mask/balaclava,
+ /obj/item/clothing/accessory/badge/old,
+ /obj/item/clothing/mask/gas/clown_hat,
+ /obj/item/clothing/mask/gas/mime,
+ /obj/item/clothing/shoes/galoshes,
+ /mob/living/simple_animal/lizard,
+ /mob/living/simple_animal/mouse/brown,
+ /mob/living/simple_animal/mouse/gray,
+ /mob/living/simple_animal/mouse/white,
+ /obj/item/weapon/xmasgift/small,
+ /obj/item/weapon/tank/jetpack/void,
+ /obj/item/weapon/xmasgift/large,
+ /obj/item/weapon/reagent_containers/food/snacks/pudding)
+
+ var/atom/movable/I = new gift_type(M)
+ M.remove_from_mob(src)
+ M.put_in_hands(I)
+ M << "You open the gift, revealing your new [I.name]! Just what you always wanted!"
+ qdel(src)
+ return
+
+/obj/item/weapon/xmasgift/large
+ icon_state = "gift3"
+ item_state = "gift3"
+ w_class = 3
+
+/obj/item/weapon/xmasgift/large/attack_self(mob/M as mob)
+ var/gift_type = pick(
+ /obj/item/weapon/inflatable_duck,
+ /obj/item/weapon/beach_ball,
+ /obj/item/clothing/under/redcoat,
+ /obj/item/clothing/under/syndicate/tracksuit,
+ /obj/item/clothing/under/rank/clown,
+ /obj/item/clothing/under/mime,
+ /mob/living/simple_animal/cat/kitten,
+ /mob/living/simple_animal/chick,
+ /mob/living/simple_animal/corgi/puppy,
+ /mob/living/simple_animal/mushroom,
+ /mob/living/carbon/human/monkey/nupnup,
+ /obj/item/weapon/xmasgift/medium,
+ /obj/item/weapon/tank/jetpack,
+ /obj/structure/plushie/drone,
+ /obj/structure/plushie/ivancarp,)
+
+ var/atom/movable/I = new gift_type(M)
+ M.remove_from_mob(src)
+ M.put_in_hands(I)
+ M << "You open the gift, revealing your new [I.name]! Just what you always wanted!"
+ qdel(src)
+ return
diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm
index ef09223b0d3..87fe3f34665 100644
--- a/code/game/objects/items/weapons/traps.dm
+++ b/code/game/objects/items/weapons/traps.dm
@@ -98,19 +98,19 @@
/obj/item/weapon/beartrap/Crossed(AM as mob|obj)
if(deployed && isliving(AM))
var/mob/living/L = AM
- if(L.m_intent == "run")
- L.visible_message(
- "[L] steps on \the [src].",
- "You step on \the [src]!",
- "You hear a loud metallic snap!"
- )
- attack_mob(L)
- if(!buckled_mob)
- anchored = 0
- deployed = 0
- update_icon()
+ L.visible_message(
+ "[L] steps on \the [src].",
+ "You step on \the [src]!",
+ "You hear a loud metallic snap!"
+ )
+ attack_mob(L)
+ if(!buckled_mob)
+ anchored = 0
+ deployed = 0
+ update_icon()
..()
+
/obj/item/weapon/beartrap/update_icon()
..()
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index 3ecfa6149df..9db922bf876 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -204,3 +204,17 @@
name = "\improper Escape Arm"
desc = "A direction sign, pointing out which way the escape shuttle dock is."
icon_state = "direction_evac"
+
+/obj/structure/sign/christmas/lights
+ name = "Christmas lights"
+ desc = "Flashy."
+ icon = 'icons/obj/christmas.dmi'
+ icon_state = "xmaslights"
+ layer = 5
+
+/obj/structure/sign/christmas/wreath
+ name = "wreath"
+ desc = "Prickly and overrated."
+ icon = 'icons/obj/christmas.dmi'
+ icon_state = "doorwreath"
+ layer = 5
\ No newline at end of file
diff --git a/code/game/turfs/unsimulated/floor.dm b/code/game/turfs/unsimulated/floor.dm
index b2e78363346..a465edaf518 100644
--- a/code/game/turfs/unsimulated/floor.dm
+++ b/code/game/turfs/unsimulated/floor.dm
@@ -3,6 +3,12 @@
icon = 'icons/turf/floors.dmi'
icon_state = "Floor3"
+/turf/unsimulated/floor/xmas
+ name = "snow"
+ icon = 'icons/turf/snow.dmi'
+ icon_state = "snow"
+ footstep_sound = "grassstep"
+
/turf/unsimulated/mask
name = "mask"
icon = 'icons/turf/walls.dmi'
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index c9fa2b486e4..dac8991b79a 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -5,7 +5,7 @@ Add custom items to this file, their sprites into their own dmi. in the icons/ob
All custom items with worn sprites must follow the contained sprite system: http://forums.aurorastation.org/viewtopic.php?f=23&t=6798
*/
-/obj/item/clothing/accessory/fluff/antique_pocket_watch //Antique Pocket Watch - Eric Derringer - xelnagahunter - Done
+/obj/item/clothing/accessory/fluff/antique_pocket_watch //Antique Pocket Watch - Eric Derringer - xelnagahunter
name = "antique pocket watch"
icon = 'icons/obj/custom_items/pocket_watch.dmi'
icon_state = "pocket_watch_close"
@@ -25,12 +25,12 @@ All custom items with worn sprites must follow the contained sprite system: http
desc = "Inside the pocket watch, there is a collection of numbers, displaying '[worldtime2text()]'. On the inside of the lid, there is another sequence of numbers etched into the lid itself."
-/obj/item/clothing/head/soft/sec/corp/fluff/mendoza_cap //Mendoza's cap - Chance Mendoza - loow - DONE
+/obj/item/clothing/head/soft/sec/corp/fluff/mendoza_cap //Mendoza's cap - Chance Mendoza - loow
name = "well-worn corporate security cap"
desc = "A baseball hat in corporate colors.'C. Mendoza' is embroidered in fine print on the bill. On the underside of the cap, in dark ink, the phrase 'Gamble till you're Lucky!' is written in loopy cursive handwriting."
-/obj/item/clothing/head/fluff/ziva_bandana //Ziva's Bandana - Ziva Ta'Kim - sierrakomodo - DONE
+/obj/item/clothing/head/fluff/ziva_bandana //Ziva's Bandana - Ziva Ta'Kim - sierrakomodo
name = "old bandana"
desc = "An old orange-ish-yellow bandana. It has a few stains from engine grease, and the color has been dulled."
icon = 'icons/obj/custom_items/motaki_bandana.dmi'
@@ -39,7 +39,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/suit/armor/vest/fluff/zubari_jacket //Fancy Jacket - Zubari Akenzua - filthyfrankster - DONE
+/obj/item/clothing/suit/armor/vest/fluff/zubari_jacket //Fancy Jacket - Zubari Akenzua - filthyfrankster
name = "fancy jacket"
desc = "A well tailored unathi styled armored jacket, fitted for one too."
icon = 'icons/obj/custom_items/zubari_jacket.dmi'
@@ -48,7 +48,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/suit/unathi/mantle/fluff/yinzr_mantle //Heirloom Unathi Mantle - Sslazhir Yinzr - alberyk - DONE
+/obj/item/clothing/suit/unathi/mantle/fluff/yinzr_mantle //Heirloom Unathi Mantle - Sslazhir Yinzr - alberyk
name = "heirloom unathi mantle"
desc = "A withered mantle sewn from threshbeast's hides, the pauldrons that holds it on the shoulders seems to be the remains of some kind of old armor."
icon = 'icons/obj/custom_items/yinzr_mantle.dmi'
@@ -58,7 +58,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/glasses/fluff/nebula_glasses //chich eyewear - Roxy Wallace - nebulaflare - DONE
+/obj/item/clothing/glasses/fluff/nebula_glasses //chich eyewear - Roxy Wallace - nebulaflare
name = "chic eyewear"
desc = "A stylish pair of glasses. They look custom made."
icon = 'icons/obj/custom_items/nebula_glasses.dmi'
@@ -87,7 +87,7 @@ All custom items with worn sprites must follow the contained sprite system: http
add_fingerprint(user)
user << "You slot the [W] back into its place in the frames of the [src]."
-/obj/item/weapon/disk/fluff/nebula_chip //data chip - Roxy Wallace - nebulaflare - DONE
+/obj/item/weapon/disk/fluff/nebula_chip //data chip - Roxy Wallace - nebulaflare
name = "data chip"
desc = "A small green chip."
icon = 'icons/obj/custom_items/nebula_chip.dmi'
@@ -95,7 +95,7 @@ All custom items with worn sprites must follow the contained sprite system: http
w_class = 1
-/obj/item/clothing/gloves/swat/fluff/hawk_gloves //Sharpshooter gloves - Hawk Silverstone - nebulaflare - DONE
+/obj/item/clothing/gloves/swat/fluff/hawk_gloves //Sharpshooter gloves - Hawk Silverstone - nebulaflare
name = "\improper sharpshooter gloves"
desc = "These tactical gloves are tailor made for a marksman."
icon = 'icons/obj/custom_items/hawk_gloves.dmi'
@@ -103,7 +103,7 @@ All custom items with worn sprites must follow the contained sprite system: http
item_state = "swat_gl"
-/obj/item/clothing/accessory/fluff/karima_datadrive //Data Drive Pendant - Kyyir'ry'avii Mo'Taki - nebulaflare - DONE
+/obj/item/clothing/accessory/fluff/karima_datadrive //Data Drive Pendant - Kyyir'ry'avii Mo'Taki - nebulaflare
name = "data drive"
desc = "A small necklace, the pendant flips open to reveal a data drive."
icon = 'icons/obj/custom_items/motaki_datadrive.dmi'
@@ -112,7 +112,7 @@ All custom items with worn sprites must follow the contained sprite system: http
slot_flags = SLOT_MASK
-/obj/item/clothing/ears/skrell/fluff/dompesh_cloth // Skrell Purple Head Cloth - Shkor-Dyet Dom'Pesh - mofo1995 - DONE
+/obj/item/clothing/ears/skrell/fluff/dompesh_cloth //Skrell Purple Head Cloth - Shkor-Dyet Dom'Pesh - mofo1995
name = "male skrell purple head cloth"
desc = "A purple cloth band worn by male skrell around their head tails."
icon = 'icons/obj/custom_items/dompesh_cloth.dmi'
@@ -121,7 +121,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/weapon/fluff/kiara_altar // Pocket Altar - Kiara Branwen - nursiekitty - DONE
+/obj/item/weapon/fluff/kiara_altar //Pocket Altar - Kiara Branwen - nursiekitty
name = "pocket altar"
desc = "A black tin box with a symbol painted over it. It shimmers in the light."
icon = 'icons/obj/custom_items/kiara_altar.dmi'
@@ -139,7 +139,7 @@ All custom items with worn sprites must follow the contained sprite system: http
desc = "A black tin box with a symbol painted over it. It shimmers in the light."
-/obj/item/clothing/head/det_hat/fluff/bell_hat //Brown Hat - Avery Bell - serveris6 - DONE
+/obj/item/clothing/head/det_hat/fluff/bell_hat //Brown Hat - Avery Bell - serveris6
name = "brown hat"
desc = "A worn mid 20th century brown hat. It seems to have aged very well."
icon = 'icons/obj/custom_items/bell_hat.dmi'
@@ -147,7 +147,7 @@ All custom items with worn sprites must follow the contained sprite system: http
item_state = "bell_hat"
contained_sprite = 1
-/obj/item/clothing/suit/storage/det_suit/fluff/bell_coat //Pinned Brown Coat - Avery Bell - serveris6 - DONE
+/obj/item/clothing/suit/storage/det_suit/fluff/bell_coat //Pinned Brown Coat - Avery Bell - serveris6
name = "pinned brown coat"
desc = "A worn mid 20th century brown trenchcoat. If you look closely at the breast, you can see an ID flap stitched into the leather - 'Avery Bell, Silhouette Co.'."
icon = 'icons/obj/custom_items/bell_coat.dmi'
@@ -156,12 +156,12 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/under/syndicate/tacticool/fluff/jaylor_turtleneck // Borderworlds Turtleneck - Jaylor Rameau - evilbrage - DONE
+/obj/item/clothing/under/syndicate/tacticool/fluff/jaylor_turtleneck //Borderworlds Turtleneck - Jaylor Rameau - evilbrage
name = "borderworlds turtleneck"
desc = "A loose-fitting turtleneck, common among borderworld pilots and criminals. One criminal in particular is missing his, apparently."
-/obj/item/weapon/melee/fluff/tina_knife // Consecrated Athame - Tina Kaekel - tainavaa - DONE
+/obj/item/weapon/melee/fluff/tina_knife //Consecrated Athame - Tina Kaekel - tainavaa
name = "consecrated athame"
desc = "An athame used in occult rituals. The double-edged dagger is dull. The handle is black with a pink/white occult design strewn about it, and 'Tina' is inscribed into it in decorated letters."
icon = 'icons/obj/custom_items/tina_knife.dmi'
@@ -172,7 +172,7 @@ All custom items with worn sprites must follow the contained sprite system: http
force = 2
-/obj/item/device/kit/paint/ripley/fluff/zairjah_kit // Hephaestus Industrial Exosuit MK III Customization Kit - Zairjah - alberyk - DONE
+/obj/item/device/kit/paint/ripley/fluff/zairjah_kit //Hephaestus Industrial Exosuit MK III Customization Kit - Zairjah - alberyk
name = "Hephaestus Industrial Exosuit MK III customization kit"
desc = "A ripley APLU model manufactured by Hephaestus industries, a common sight in New Gibson nowadays. It shines with chrome painting and a fancy reinforced glass cockpit."
new_name = "Hephaestus Industrial Exosuit MK III"
@@ -181,7 +181,7 @@ All custom items with worn sprites must follow the contained sprite system: http
allowed_types = list("ripley","firefighter")
-/obj/item/weapon/cane/fluff/usiki_cane // Inscribed Silver-handled Cane - Usiki Guwan - fireandglory - DONE
+/obj/item/weapon/cane/fluff/usiki_cane //Inscribed Silver-handled Cane - Usiki Guwan - fireandglory
name = "inscribed silver-handled cane"
desc = "This silver-handled cane has letters carved into the sides."
icon = 'icons/obj/custom_items/usiki_cane.dmi'
@@ -196,7 +196,7 @@ All custom items with worn sprites must follow the contained sprite system: http
user << "This cane has the words 'A new and better life' carved into the side, the other side has some unreadable carvings."
-/obj/item/clothing/gloves/black/fluff/kathleen_glove // Black Left Glove - Kathleen Bullard - valky_walky2 - DONE
+/obj/item/clothing/gloves/black/fluff/kathleen_glove //Black Left Glove - Kathleen Mistral - valkywalky2
name = "black left glove"
desc = "A pretty normal looking glove to be worn on the left hand."
icon = 'icons/obj/custom_items/kathleen_glove.dmi'
@@ -205,7 +205,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/structure/bed/chair/wheelchair/fluff/nomak_scooter // Mobility Scooter - Dubaku Nomak - demonofthefall - DONE
+/obj/structure/bed/chair/wheelchair/fluff/nomak_scooter //Mobility Scooter - Dubaku Nomak - demonofthefall
name = "mobility scooter"
desc = "A battery powered scooters designed to carry fatties."
icon = 'icons/obj/custom_items/nomak_scooter.dmi'
@@ -221,14 +221,14 @@ All custom items with worn sprites must follow the contained sprite system: http
buckled_mob.set_dir(dir)
-/obj/item/weapon/coin/fluff/yoiko_coin // Sobriety Chip - Yoiko Ali - raineko - DONE
+/obj/item/weapon/coin/fluff/yoiko_coin //Sobriety Chip - Yurick Ali - raineko
name = "sobriety chip"
- desc = "A red coin, made from plastic. A triangle is engraved, surrounding it is the words: 'TO THINE OWN SELF BE TRUE'."
+ desc = "A red coin, made from plastic. A triangle is engraved, surrounding it is the words: \"TO THINE OWN SELF BE TRUE\"."
icon = 'icons/obj/custom_items/yoiko_coin.dmi'
icon_state = "yoiko_coin" //thanks fireandglory for the sprites
-/obj/item/clothing/suit/unathi/mantle/fluff/karnaikai_wrappings //Unathi Wrappings - Azeazekal Karnaikai - canon35 - DONE
+/obj/item/clothing/suit/unathi/mantle/fluff/karnaikai_wrappings //Unathi Wrappings - Azeazekal Karnaikai - canon35
name = "unathi wrappings"
desc = "Stitched together clothing with bandages covering them, looks tailored for an unathi."
icon = 'icons/obj/custom_items/karnaikai_wrappings.dmi'
@@ -240,7 +240,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/mask/gas/fluff/karnaikai_mask //Unathi head wrappings - Azeazekal Karnaikai - canon35 - DONE
+/obj/item/clothing/mask/gas/fluff/karnaikai_mask //Unathi head wrappings - Azeazekal Karnaikai - canon35
name = "unathi head wrappings"
desc = "A bunch of stitched together bandages with a fibreglass breath mask on it, openings for the eyes. Looks tailored for an unathi."
icon = 'icons/obj/custom_items/karnaikai_mask.dmi'
@@ -250,21 +250,21 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/weapon/contraband/poster/fluff/conservan_poster //ATLAS poster - Conservan Xullie - conservatron - DONE
+/obj/item/weapon/contraband/poster/fluff/conservan_poster //ATLAS poster - Conservan Xullie - conservatron
name = "ATLAS poster"
/obj/item/weapon/contraband/poster/fluff/conservan_poster/New()
serial_number = 59
-/obj/item/weapon/flame/lighter/zippo/fluff/locke_zippo // Fire Extinguisher Zippo - Jacob Locke - completegarbage - DONE
+/obj/item/weapon/flame/lighter/zippo/fluff/locke_zippo //Fire Extinguisher Zippo - Jacob Locke - completegarbage
name = "fire extinguisher lighter"
desc = "Most fire extinguishers on the station are way too heavy. This one's a little lighter."
icon = 'icons/obj/custom_items/locke_zippo.dmi'
icon_state = "locke_zippo"
-/obj/item/weapon/clipboard/fluff/zakiya_sketchpad // Sketchpad - Zakiya Ahmad - sierrakomodo - DONE
+/obj/item/weapon/clipboard/fluff/zakiya_sketchpad //Sketchpad - Zakiya Ahmad - sierrakomodo
name = "sketchpad"
desc = "A simple sketchpad, about the size of a regular sheet of paper."
icon = 'icons/obj/custom_items/zakiya_sketchpad.dmi' //thanks superballs for the sprites
@@ -290,14 +290,14 @@ All custom items with worn sprites must follow the contained sprite system: http
icon_state = "zakiya_sketchpad"
return
-/obj/item/weapon/pen/fluff/zakiya_pen // Sketching pencil - Zakiya Ahmad - sierrakomodo - DONE
+/obj/item/weapon/pen/fluff/zakiya_pen //Sketching pencil - Zakiya Ahmad - sierrakomodo
name = "sketching pencil"
desc = "A graphite sketching pencil."
icon = 'icons/obj/custom_items/zakiya_pen.dmi'
icon_state = "zakiya_pen"
-/obj/item/weapon/melee/fluff/zah_mandible // Broken Vaurca Mandible - Ka'Akaix'Zah Void - sleepywolf - DONE
+/obj/item/weapon/melee/fluff/zah_mandible //Broken Vaurca Mandible - Ka'Akaix'Zah Zo'ra - sleepywolf
name = "broken vaurca mandible"
desc = "A black, four inch long piece of a Vaurca mandible. It seems dulled, and looks like it was shot off."
icon = 'icons/obj/custom_items/zah_mandible.dmi'
@@ -307,7 +307,7 @@ All custom items with worn sprites must follow the contained sprite system: http
force = 2
-/obj/item/clothing/suit/chaplain_hoodie/fluff/nioathi_hoodie //Shaman Hoodie - Fereydoun Nioathi - jackboot - DONE
+/obj/item/clothing/suit/chaplain_hoodie/fluff/nioathi_hoodie //Shaman Hoodie - Fereydoun Nioathi - jackboot
name = "shaman hoodie"
desc = "A slightly faded robe. It's worn by some Unathi shamans."
icon = 'icons/obj/custom_items/nioathi_hoodie.dmi'
@@ -335,7 +335,7 @@ All custom items with worn sprites must follow the contained sprite system: http
..()
-/obj/item/weapon/fluff/moon_baton //Tiger Claw - Zander Moon - omnivac - DONE
+/obj/item/weapon/fluff/moon_baton //Tiger Claw - Zander Moon - omnivac
name = "tiger claw"
desc = "A small cerimonial energy dagger given to Golden Tigers."
icon = 'icons/obj/custom_items/moon_baton.dmi'
@@ -366,7 +366,7 @@ All custom items with worn sprites must follow the contained sprite system: http
user.regenerate_icons()
-/obj/item/clothing/suit/armor/vest/fabian_coat //NT APF Armor - Fabian Goellstein - mirkoloio - DONE
+/obj/item/clothing/suit/armor/vest/fabian_coat //NT APF Armor - Fabian Goellstein - mirkoloio
name = "NT APF armor"
desc = "This is a NT Asset Protection Force Armor, it is fashioned as a jacket in NT Security Colors. The nameplate carries the Name 'Goellstein'."
icon = 'icons/obj/custom_items/fabian_coat.dmi'
@@ -397,12 +397,12 @@ All custom items with worn sprites must follow the contained sprite system: http
usr.update_inv_wear_suit()
-/obj/item/clothing/head/beret/centcom/officer/fluff/fabian_beret //Worn Security Beret - Fabian Goellstein - mirkoloio - DONE
+/obj/item/clothing/head/beret/centcom/officer/fluff/fabian_beret //Worn Security Beret - Fabian Goellstein - mirkoloio
name = "worn security beret"
desc = "A NT Asset Protection Force Beret. It has the NT APF insignia on it as well as the Name 'Goellstein' inside."
-/obj/item/clothing/accessory/armband/fluff/vittorio_armband //ATLAS Armband - Vittorio Giurifiglio - tytostyris - DONE
+/obj/item/clothing/accessory/armband/fluff/vittorio_armband //ATLAS Armband - Vittorio Giurifiglio - tytostyris
name = "Atlas armband"
desc = "This is an atlas armband showing anyone who sees this person, as a member of the Political party Atlas."
icon = 'icons/obj/custom_items/vittorio_armband.dmi'
@@ -410,7 +410,7 @@ All custom items with worn sprites must follow the contained sprite system: http
item_state = "vittorio_armband"
contained_sprite = 1
-/obj/item/clothing/head/fluff/vittorio_fez //Black Fez - Vittorio Giurifiglio - tytostyris - DONE
+/obj/item/clothing/head/fluff/vittorio_fez //Black Fez - Vittorio Giurifiglio - tytostyris
name = "black fez"
desc = "It is a black fez, it bears an Emblem of the Astronomical symbol of Earth, It also has some nice tassels."
icon = 'icons/obj/custom_items/vittorio_fez.dmi'
@@ -419,7 +419,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/suit/fluff/centurion_cloak //Paludamentum - Centurion - cakeisossim - DONE
+/obj/item/clothing/suit/fluff/centurion_cloak //Paludamentum - Centurion - cakeisossim
name = "paludamentum"
desc = "A cloak-like piece of silky, red fabric. Fashioned at one point where the shoulder would be with a golden pin."
icon = 'icons/obj/custom_items/centurion_cloak.dmi'
@@ -429,7 +429,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/ears/bandanna/fluff/kir_bandanna// Kir's Bandanna - Kir Iziki - araskael - DONE
+/obj/item/clothing/ears/bandanna/fluff/kir_bandanna //Kir's Bandanna - Kir Iziki - araskael
name = "purple bandanna"
desc = "A worn and faded purple bandanna with a knotted, dragon-like design on it."
icon = 'icons/obj/custom_items/kir_bandanna.dmi'
@@ -438,9 +438,9 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/suit/storage/toggle/bomber/fluff/ash_jacket //Hand-me-down Bomber Jacket - superballs - Ash LaCroix - DONE
+/obj/item/clothing/suit/storage/toggle/bomber/fluff/ash_jacket //Hand-me-down Bomber Jacket - Ash LaCroix - superballs
name = "hand-me-down bomber jacket"
- desc = "A custom tailored bomber jacket that seems to have been through some action. A silver badge is pinned to it, along with a black and blue strip covering it halfway. The badge reads, 'Christopher LaCroix, Special Agent, Mendell City, E.O.W. 10-7-38, 284'"
+ desc = "A custom tailored bomber jacket that seems to have been through some action. A silver badge is pinned to it, along with a black and blue strip covering it halfway. The badge reads, \"Christopher LaCroix, Special Agent, Mendell City, E.O.W. 10-7-38, 284\""
icon = 'icons/obj/custom_items/ash_jacket.dmi'
icon_state = "ash_jacket"
item_state = "ash_jacket"
@@ -449,9 +449,9 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/accessory/badge/holo/cord/fluff/dylan_tags //Dog Tags - Dylan Sutton - sircatnip - DONE
+/obj/item/clothing/accessory/badge/holo/cord/fluff/dylan_tags //Dog Tags - Dylan Sutton - sircatnip
name = "dog tags"
- desc = "Some black dog tags, engraved on them is the following: Wright, Dylan L, O POS, Pacific Union Special Forces."
+ desc = "Some black dog tags, engraved on them is the following: \"Wright, Dylan L, O POS, Pacific Union Special Forces.\""
icon = 'icons/obj/custom_items/dylan_tags.dmi'
icon_state = "dylan_tags"
item_state = "dylan_tags"
@@ -460,7 +460,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/ears/fluff/rico_stripes //Racing Stripes - Ricochet - nebulaflare - DONE
+/obj/item/clothing/ears/fluff/rico_stripes //Racing Stripes - Ricochet - nebulaflare
name = "racing stripes"
desc = "A pair of fancy racing stripes."
icon = 'icons/obj/custom_items/rico_stripes.dmi'
@@ -472,23 +472,24 @@ All custom items with worn sprites must follow the contained sprite system: http
species_restricted = list("Machine")
-/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/barcia_flask //First Shot - Gabriel Barcia - mrgabol100 - DONE
+/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/barcia_flask //First Shot - Gabriel Barcia - mrgabol100
name = "first shot"
- desc = "A flask. Smells of absinthe, maybe vodka. The bottom left corner has a silver bar. The bottom is engraved, it reads 'The First Shot'."
+ desc = "A flask. Smells of absinthe, maybe vodka. The bottom left corner has a silver bar. \"The bottom is engraved, it reads 'The First Shot\"."
icon = 'icons/obj/custom_items/barcia_flask.dmi'
icon_state = "barcia_flask"
-/obj/item/clothing/gloves/fluff/stone_ring //Thunder Dome Pendant Ring - Jerimiah Stone - dominicthemafiaso - DONE
+/obj/item/clothing/gloves/fluff/stone_ring //Thunder Dome Pendant Ring - Jerimiah Stone - dominicthemafiaso
name = "thunder dome pendant ring"
desc = "It appears to be a Collectors edition Thunder dome Pendant ring from the IGTDL's show rumble in the red planet in 2444. It has a decorative diamond center with a image of the Intergalactic belt in the center."
icon = 'icons/obj/custom_items/stone_ring.dmi'
icon_state = "stone_ring"
item_state = "stone_ring"
contained_sprite = 1
+ clipped = 1
+ species_restricted = null
-
-/obj/item/clothing/under/dress/fluff/sayyidah_dress //Traditional Jumper Dress - Sayyidah Al-Kateb - alberyk - DONE
+/obj/item/clothing/under/dress/fluff/sayyidah_dress //Traditional Jumper Dress - Sayyidah Al-Kateb - alberyk
name = "traditional jumper dress"
desc = "A light summer-time dress, decorated neatly with black and silver colors, it seems to be rather old."
icon = 'icons/obj/custom_items/sayyidah_dress.dmi' //special thanks to Coalf for the sprites
@@ -497,7 +498,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/suit/storage/fluff/vittorio_jacket //Atlas Overcoat - Vittorio Giurifiglio - tytostyris - DONE
+/obj/item/clothing/suit/storage/fluff/vittorio_jacket //Atlas Overcoat - Vittorio Giurifiglio - tytostyris
name = "atlas overcoat"
desc = "A classy black militaristic uniform, which is adorned with a sash and an eagle."
icon = 'icons/obj/custom_items/vittorio_jacket.dmi'
@@ -506,9 +507,9 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/suit/storage/toggle/labcoat/fluff/helmut_labcoat //CERN Labcoat - Helmut Kronigernischultz - pyrociraptor - DONE
+/obj/item/clothing/suit/storage/toggle/labcoat/fluff/helmut_labcoat //CERN Labcoat - Helmut Kronigernischultz - pyrociraptor
name = "CERN labcoat"
- desc = "A Labcoat with a blue pocket and blue collar. On the pocket, you can read 'C.E.R.N.'"
+ desc = "A Labcoat with a blue pocket and blue collar. On the pocket, you can read \"C.E.R.N.\"."
icon = 'icons/obj/custom_items/helmut_labcoat.dmi'
icon_state = "helmut_labcoat"
item_state = "helmut_labcoat"
@@ -517,7 +518,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/shoes/jackboots/unathi/fluff/yinzr_sandals //Marching Sandals - Sslazhir Yinzr - alberyk - DONE
+/obj/item/clothing/shoes/jackboots/unathi/fluff/yinzr_sandals //Marching Sandals - Sslazhir Yinzr - alberyk
name = "marching sandals"
desc = "A pair of sturdy marching sandals made of layers of leather and with a reinforced sole, they are also rather big."
icon = 'icons/obj/custom_items/yinzr_sandals.dmi'
@@ -526,7 +527,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/accessory/fluff/laikov_broach //Jeweled Broach - Aji'Rah Laikov - nebulaflare - DONE
+/obj/item/clothing/accessory/fluff/laikov_broach //Jeweled Broach - Aji'Rah Laikov - nebulaflare
name = "jeweled broach"
desc = "A jeweled broach, inlaid with semi-precious gems. The clasp appears to have been replaced."
icon = 'icons/obj/custom_items/laikov_broach.dmi'
@@ -543,15 +544,15 @@ All custom items with worn sprites must follow the contained sprite system: http
user.visible_message("[user] thrust the [src.name] into [M]'s face.")
-/obj/item/weapon/fluff/akela_photo // Akela's Family Photo - Akela Ha'kim - moltenkore - DONE
+/obj/item/weapon/fluff/akela_photo // Akela's Family Photo - Akela Ha'kim - moltenkore
name = "family photo"
- desc = "You see on the photo a tajaran couple holding a small kit in their arms, while looking very happy. On the back it is written; 'Nasir, Akela and Ishka' with a little gold mark that reads: 'Two months'."
+ desc = "You see on the photo a tajaran couple holding a small kit in their arms, while looking very happy. On the back it is written; \"Nasir, Akela and Ishka\", with a little gold mark that reads: \"Two months\"."
icon = 'icons/obj/custom_items/akela_photo.dmi'
icon_state = "akela_photo"
w_class = 2
-/obj/item/weapon/implant/fluff/ziva_implant //Heart Condition - Ziva Ta'Kim - sierrakomodo - DONE
+/obj/item/weapon/implant/fluff/ziva_implant //Heart Condition - Ziva Ta'Kim - sierrakomodo
name = "heart monitor"
desc = "A small machine to watch upon broken hearts."
@@ -582,9 +583,9 @@ All custom items with worn sprites must follow the contained sprite system: http
playsound(user, 'sound/effects/Heart Beat.ogg', 20, 1)
-/obj/item/clothing/accessory/badge/fluff/caleb_badge //Worn Badge - Caleb Greene - notmegatron - DONE
+/obj/item/clothing/accessory/badge/fluff/caleb_badge //Worn Badge - Caleb Greene - notmegatron
name = "worn badge"
- desc = "A simple gold badge denoting the wearer as Head of Security. It is worn and dulled with age, but the name, Caleb Greene, is still clearly legible."
+ desc = "A simple gold badge denoting the wearer as Head of Security. It is worn and dulled with age, but the name, \"Caleb Greene\", is still clearly legible."
icon_state = "badge"
icon = 'icons/obj/custom_items/caleb_badge.dmi'
item_state = "caleb_badge"
@@ -594,21 +595,21 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/fluff/messa_pressing //Pressing of Messa's Tears - Poslan Kur'yer-Isra - jboy2000000 - DONE
+/obj/item/fluff/messa_pressing //Pressing of Messa's Tears - Poslan Kur'yer-Isra - jboy2000000
name = "pressing of Messa's tears"
desc = "As Messa looked at the pain and death wrought on the world she had given life, she cried, and from her tears sprouted these leaves."
icon = 'icons/obj/custom_items/cat_religion.dmi'
icon_state = "messa"
w_class = 2
-/obj/item/fluff/srendarr_pressing //Pressing of S'Rendarr's Hand - Poslan Kur'yer-Isra - jboy2000000 - DONE
+/obj/item/fluff/srendarr_pressing //Pressing of S'Rendarr's Hand - Poslan Kur'yer-Isra - jboy2000000
name = "pressing of S'Rendarr's hand"
- desc = "As S'Rendarr watched her sister cry, she felt rage never known to her before. Her fists clashed with those who upset her sister, and from their blood came these."
+ desc = "As S'Rendarr watched his sister cry, he felt rage never known to him before. His fists clashed with those who upset his sister, and from their blood came these."
icon = 'icons/obj/custom_items/cat_religion.dmi'
icon_state = "srendarr"
w_class = 2
-/obj/item/clothing/suit/chaplain_hoodie/fluff/poslan_jacket //Twin Suns Throw-over - Poslan Kur'yer-Isra - jboy2000000 - DONE
+/obj/item/clothing/suit/chaplain_hoodie/fluff/poslan_jacket //Twin Suns Throw-over - Poslan Kur'yer-Isra - jboy2000000
name = "twin suns throw-over"
desc = "A light black jacket, on one side of its breast is the design of a yellow sun, and on the other side there is a smaller blue sun."
icon = 'icons/obj/custom_items/cat_religion.dmi'
@@ -617,7 +618,7 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/sign/fluff/alexis_degree //Xenonuerology Doctorate - Alexis Shaw - Tenenza - DONE
+/obj/item/sign/fluff/alexis_degree //Xenonuerology Doctorate - Alexis Shaw - Tenenza
name = "xenonuerology degree"
desc = "Certification for a doctorate in Xenonuerology, made out to Alexis Shaw by the St. Grahelm University of Biesel, authenticated by watermarking."
icon_state = "alexis_degree"
@@ -625,7 +626,7 @@ All custom items with worn sprites must follow the contained sprite system: http
w_class = 2
-/obj/item/clothing/mask/fluff/rur_collar //Tagging Collar - R.U.R - coalf - DONE
+/obj/item/clothing/mask/fluff/rur_collar //Tagging Collar - R.U.R - coalf
name = "tagging collar"
desc = "A steel tagging collar, a giant golden D is imprinted on the front."
icon = 'icons/obj/custom_items/rur_collar.dmi'
@@ -649,7 +650,7 @@ All custom items with worn sprites must follow the contained sprite system: http
return
-/obj/item/clothing/mask/bluescarf/fluff/simon_scarf //Fancy Scarf - Simon Greene - icydew - DONE
+/obj/item/clothing/mask/bluescarf/fluff/simon_scarf //Fancy Scarf - Simon Greene - icydew
name = "fancy scarf"
desc = "A very smooth, dark blue scarf with a golden trim. It feels really new and clean."
icon = 'icons/obj/custom_items/simon_scarf.dmi'
@@ -658,14 +659,117 @@ All custom items with worn sprites must follow the contained sprite system: http
contained_sprite = 1
-/obj/item/clothing/head/soft/sec/corp/fluff/karson_cap //Karson's Cap - Eric Karson - dronzthewolf - DONE
+/obj/item/clothing/head/soft/sec/corp/fluff/karson_cap //Karson's Cap - Eric Karson - dronzthewolf
name = "well-worn corporate security cap"
desc = "A well-worn corporate security cap. The name Karson is written on the underside of the brim, it is well-worn at the point where it has shaped to the owner's head."
-/obj/item/sign/fluff/triaka_atimono //Framed Zatimono - Azkuyua Triaka - jackboot - DONE
+/obj/item/sign/fluff/triaka_atimono //Framed Zatimono - Azkuyua Triaka - jackboot
name = "framed zatimono"
desc = "A framed Zatimono, a Unathi standard worn into battle similar to an old-Earth Sashimono. This one is slightly faded."
icon_state = "triaka_atimono"
sign_state = "triaka_atimono"
w_class = 2
+
+
+/obj/item/fluff/cac_picture //Photo of a spider and a robot - CAC - fireandglory
+ name = "photo of a spider and a robot"
+ desc = "It is a photo of a cyan IPC holding a thick fuzzy spider of the size of a football."
+ icon = 'icons/obj/custom_items/cac_picture.dmi'
+ icon_state = "cac_picture"
+ w_class = 2
+ slot_flags = SLOT_EARS
+
+
+/obj/item/weapon/coin/fluff/raymond_coin //Engraved Coin - Raymond Hawkins - aboshehab
+ name = "engraved coin"
+ desc = "A coin of light and bright with one side having an engraving of a greek Lamba sign, and on the back the initials of R.H. are engraved."
+ icon = 'icons/obj/custom_items/raymond_coin.dmi'
+ icon_state = "raymond_coin"
+
+
+/obj/item/clothing/under/fluff/zohjar_uniform //Republic Noble Clothing - Zohjar Rasateir - lordraven001
+ name = "republic noble clothing"
+ desc = "A sophisticated white undersuit, it looks worn and ancient. The fabrics is excellently sewn and soft. It resembles a traditional tajaran nobleman suit."
+ icon = 'icons/obj/custom_items/zohjar_clothing.dmi'
+ icon_state = "zohjar_uniform"
+ item_state = "zohjar_uniform"
+ contained_sprite = 1
+
+/obj/item/clothing/suit/storage/toggle/labcoat/fluff/zohjar_jacket //People's Republic Medical Officer Coat - Zohjar Rasateir - lordraven001
+ name = "people's republic medical officer coat"
+ desc = "A sterile insulated coat made of leather stitched over fur. It has two gold lapels indicating Officer rank. The a white armband with a scarlet line in the center indicates that the person wearing this coat is medically trained."
+ icon = 'icons/obj/custom_items/zohjar_clothing.dmi'
+ icon_state = "zohjar_jacket"
+ item_state = "zohjar_jacket"
+ icon_open = "zohjar_jacket_open"
+ icon_closed = "zohjar_jacket"
+ contained_sprite = 1
+
+
+/obj/item/clothing/suit/storage/fluff/maksim_coat //Tajaran Naval Officer's Coat - Maksim Vasilyev - aimlessanalyst
+ name = "tajaran naval officer coat"
+ desc = "A thick wool coat from Adhomai, calling back to days long past."
+ icon = 'icons/obj/custom_items/maksim_coat.dmi'
+ icon_state = "maksim_coat"
+ item_state = "maksim_coat"
+ contained_sprite = 1
+
+
+/obj/item/sign/fluff/iskanz_atimono //Framed Zatimono - Iskanz Sal'Dans - zundy
+ name = "framed zatimono"
+ desc = "A framed Zatimono, a Unathi standard worn into battle similar to an old-Earth Sashimono. This one seems well maintained and carries Sk'akh Warrior Priest markings and litanies."
+ icon_state = "iskanz_atimono"
+ sign_state = "iskanz_atimono"
+ w_class = 2
+
+
+/obj/item/clothing/accessory/fluff/zahra_pin //Indigo remembrance pin - Zahra Karimi - synnono
+ name = "Indigo remembrance pin"
+ desc = "A small metal pin, worked into the likeness of an indigo iris blossom."
+ icon = 'icons/obj/custom_items/zahra_pin.dmi'
+ icon_state = "zahra_pin"
+ item_state = "zahra_pin"
+ contained_sprite = 1
+
+
+/obj/item/clothing/accessory/armband/fluff/karl_armband //Medizinercorps armband - Karl Jonson - arrow768
+ name = "medizinercorps armband"
+ desc = "A plain black armband with the golden Medizinercorps logo on it."
+ icon = 'icons/obj/custom_items/karl_armband.dmi'
+ icon_state = "karl_armband"
+ item_state = "karl_armband"
+ contained_sprite = 1
+
+
+/obj/item/weapon/melee/fluff/rook_whip //Ceremonial Whip - Rook Jameson - hivefleetchicken
+ name = "ceremonial whip"
+ desc = "A traditional cat o'nine tails whip made of jet black leather and embroidered with a few golden touches, made on Earth. It looks ceremoniously robust."
+ icon = 'icons/obj/custom_items/rook_whip.dmi'
+ icon_state = "rook_whip"
+ item_state = "rook_whip"
+ slot_flags = SLOT_BELT
+ contained_sprite = 1
+ w_class = 3
+ force = 2
+ attack_verb = list("flogged", "whipped", "lashed", "disciplined")
+
+
+/obj/item/clothing/suit/storage/toggle/labcoat/fluff/lilith_coat //Black Labcoat - LiLITH - ladyofravens
+ name = "black labcoat"
+ desc = "A sleek black labcoat made from durable synthetics. A tag inside the collar reads \"Property of LiLITH\" in red block letters."
+ icon = 'icons/obj/custom_items/lilith_coat.dmi'
+ icon_state = "lilith_coat"
+ item_state = "lilith_coat"
+ icon_open = "lilith_coat_open"
+ icon_closed = "lilith_coat"
+ contained_sprite = 1
+
+
+/obj/item/clothing/head/fluff/sayyidah_tiara //Jeweled Tiara - Sayyidah Al-Kateb - alberyk
+ name = "jeweled tiara"
+ desc = "A headdress in the shape of a tiara, it is adorned by not so valuable jewels and spots a translucid veil on the back. There is room for pointy ears in the sides of the piece, as it was molded for a tajara."
+ icon = 'icons/obj/custom_items/sayyidah_dress.dmi' //special thanks to TheGreatJorge for the sprites
+ icon_state = "sayyidah_tiara"
+ item_state = "sayyidah_tiara"
+ contained_sprite = 1
diff --git a/code/modules/mob/living/carbon/human/npcs.dm b/code/modules/mob/living/carbon/human/npcs.dm
index b586a197c93..949083e1095 100644
--- a/code/modules/mob/living/carbon/human/npcs.dm
+++ b/code/modules/mob/living/carbon/human/npcs.dm
@@ -10,4 +10,21 @@
spawn(1)
name = "Pun Pun"
real_name = name
- w_uniform = new /obj/item/clothing/under/punpun(src)
\ No newline at end of file
+ if(prob(10))
+ w_uniform = new /obj/item/clothing/under/nupnup(src)
+ else
+ w_uniform = new /obj/item/clothing/under/punpun(src)
+
+/obj/item/clothing/under/nupnup
+ name = "christmas uniform"
+ desc = "The uniform of Nup Nup, the Christmas monkey."
+ icon_state = "punpun"
+ worn_state = "nupnup"
+ species_restricted = list("Monkey")
+
+/mob/living/carbon/human/monkey/nupnup/New()
+ ..()
+ spawn(1)
+ name = "Winston, the Christmas Monkey"
+ real_name = name
+ w_uniform = new /obj/item/clothing/under/nupnup(src)
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/viruses.dm b/code/modules/mob/living/carbon/viruses.dm
index fed6d59e438..1d454f3b0e5 100644
--- a/code/modules/mob/living/carbon/viruses.dm
+++ b/code/modules/mob/living/carbon/viruses.dm
@@ -13,19 +13,19 @@
for(var/obj/effect/decal/cleanable/O in view(1,src))
if(istype(O,/obj/effect/decal/cleanable/blood))
var/obj/effect/decal/cleanable/blood/B = O
- if(B.virus2.len)
+ if(B.virus2 && B.virus2.len)
for (var/ID in B.virus2)
var/datum/disease2/disease/V = B.virus2[ID]
infect_virus2(src,V)
else if(istype(O,/obj/effect/decal/cleanable/mucus))
var/obj/effect/decal/cleanable/mucus/M = O
- if(M.virus2.len)
+ if(M.virus2 && M.virus2.len)
for (var/ID in M.virus2)
var/datum/disease2/disease/V = M.virus2[ID]
infect_virus2(src,V)
- if(virus2.len)
+ if(virus2 && virus2.len)
for (var/ID in virus2)
var/datum/disease2/disease/V = virus2[ID]
if(isnull(V)) // Trying to figure out a runtime error that keeps repeating
@@ -40,4 +40,4 @@
if(common_antibodies.len)
V.dead = 1
- return
\ No newline at end of file
+ return
diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm
index 4a7c58c90a0..130c58b7f0c 100644
--- a/code/modules/projectiles/ammunition/boxes.dm
+++ b/code/modules/projectiles/ammunition/boxes.dm
@@ -291,7 +291,7 @@
/obj/item/ammo_magazine/shotgun/shell
name = "ammunition box (shell)"
- icon_state = "llethalslug_box"
+ icon_state = "lethalslug_box"
ammo_type = /obj/item/ammo_casing/shotgun/pellet
max_ammo = 8
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index 4186c997037..882a9b0a97d 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -2050,6 +2050,18 @@
reagents.add_reagent("nutriment", 4)
bitesize = 2
+/obj/item/weapon/reagent_containers/food/snacks/pudding
+ name = "Figgy pudding"
+ icon_state = "pudding"
+ desc = "Bring it to me."
+ trash = /obj/item/trash/plate
+ filling_color = "#FFFEE0"
+
+ New()
+ ..()
+ reagents.add_reagent("nutriment", 10)
+ bitesize = 2
+
/obj/item/weapon/reagent_containers/food/snacks/pastatomato
name = "Spaghetti"
desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!"
diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm
index 6259d3c8919..3db5b1f5257 100644
--- a/code/modules/research/message_server.dm
+++ b/code/modules/research/message_server.dm
@@ -255,6 +255,8 @@ var/obj/machinery/blackbox_recorder/blackbox
blackbox = src
/obj/machinery/blackbox_recorder/Destroy()
+ feedback_set_details("blackbox_destroyed","true")
+ feedback_set("blackbox_destroyed",1)
var/turf/T = locate(1,1,2)
if(T)
blackbox = null
@@ -328,20 +330,11 @@ var/obj/machinery/blackbox_recorder/blackbox
round_end_data_gathering() //round_end time logging and some other data processing
establish_db_connection(dbcon)
- if(!dbcon.IsConnected()) return
- var/round_id
-
- var/DBQuery/query = dbcon.NewQuery("SELECT MAX(round_id) AS round_id FROM ss13_feedback")
- query.Execute()
- while(query.NextRow())
- round_id = query.item[1]
-
- if(!isnum(round_id))
- round_id = text2num(round_id)
- round_id++
+ if(!dbcon.IsConnected())
+ return
for(var/datum/feedback_variable/FV in feedback)
- var/sql = "INSERT INTO ss13_feedback VALUES (null, Now(), [round_id], \"[FV.get_variable()]\", [FV.get_value()], \"[FV.get_details()]\")"
+ var/sql = "INSERT INTO ss13_feedback VALUES (null, Now(), \"[game_id]\", \"[FV.get_variable()]\", [FV.get_value()], \"[FV.get_details()]\")"
var/DBQuery/query_insert = dbcon.NewQuery(sql)
query_insert.Execute()
diff --git a/html/changelog.html b/html/changelog.html
index 4a5912a659d..efe2eddaf1d 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -56,6 +56,18 @@
-->