diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 5d5aefac0be..1769315acab 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -21,6 +21,7 @@
attach(A2,user)
name = "[A.name]-[A2.name] assembly"
update_icon()
+ feedback_add_details("assembly_made","[name]")
/obj/item/device/assembly_holder/proc/attach(var/obj/item/device/assembly/A, var/mob/user)
if(!A.remove_item_from_storage(src))
diff --git a/code/modules/crafting/table.dm b/code/modules/crafting/table.dm
index 75847c323f4..7f6e111599a 100644
--- a/code/modules/crafting/table.dm
+++ b/code/modules/crafting/table.dm
@@ -78,6 +78,7 @@
/obj/structure/table/proc/construct_item(mob/user, datum/table_recipe/R)
check_table()
+ var/send_feedback = 1
if(check_contents(R) && check_tools(user, R))
if(do_after(user, R.time))
if(!check_contents(R) || !check_tools(user, R))
@@ -86,6 +87,8 @@
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/S = I
S.create_reagents(S.volume)
+ feedback_add_details("food_made","[S.name]")
+ send_feedback = 0
var/list/parts = del_reqs(R, I)
for(var/A in parts)
if(istype(A, /obj/item))
@@ -98,6 +101,8 @@
I.reagents = new /datum/reagents()
I.reagents.reagent_list.Add(A)
I.CheckParts()
+ if(send_feedback)
+ feedback_add_details("object_crafted","[I.name]")
return 1
return 0
diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm
index e9661d5dc7c..07dbff7d269 100644
--- a/code/modules/events/event.dm
+++ b/code/modules/events/event.dm
@@ -28,6 +28,7 @@
return PROCESS_KILL
var/datum/round_event/E = new typepath()
E.control = src
+ feedback_add_details("event_ran","[E]")
occurrences++
testing("[time2text(world.time, "hh:mm:ss")] [E.type]")
diff --git a/code/modules/food&drinks/kitchen machinery/microwave.dm b/code/modules/food&drinks/kitchen machinery/microwave.dm
index c35ffc078f6..b04ac183825 100644
--- a/code/modules/food&drinks/kitchen machinery/microwave.dm
+++ b/code/modules/food&drinks/kitchen machinery/microwave.dm
@@ -251,6 +251,7 @@
if(F.cooked_type)
var/obj/item/weapon/reagent_containers/food/snacks/S = new F.cooked_type (get_turf(src))
F.initialize_cooked_food(S, efficiency)
+ feedback_add_details("food_made","[F.name]")
else
new /obj/item/weapon/reagent_containers/food/snacks/badrecipe(src)
if(dirty < 100)
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 82f7e40bbee..608414b38c2 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -802,7 +802,7 @@
var/t_amount = 0
var/list/result = list()
var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc //needed for TK
-
+ var/product_name
while(t_amount < getYield())
var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new product(output_loc, potency)
result.Add(t_prod) // User gets a consumable
@@ -815,7 +815,9 @@
t_prod.potency = potency
t_prod.plant_type = plant_type
t_amount++
-
+ product_name = t_prod.name
+ if(getYield() >= 1)
+ feedback_add_details("food_harvested","[product_name]|[getYield()]")
parent.update_tray()
return result
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index e9067b526dc..17efc5c62e0 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -17,7 +17,7 @@ var/global/list/rockTurfEdgeCache
density = 1
blocks_air = 1
temperature = TCMB
- var/mineralType = null
+ var/obj/mineralType = null
var/mineralAmt = 3
var/spread = 0 //will the seam spread?
var/spreadChance = 0 //the percentual chance of an ore spreading to the neighbouring tiles
@@ -439,6 +439,7 @@ var/global/list/rockTurfEdgeCache
user << "You finish cutting into the rock."
P.update_icon()
gets_drilled(user)
+ feedback_add_details("pick_used_mining","[P.name]")
else
return attack_hand(user)
return
@@ -448,6 +449,7 @@ var/global/list/rockTurfEdgeCache
var/i
for (i=0;iYou don't have the dexterity to do this!"
@@ -218,7 +219,7 @@
user.update_inv_l_hand(0)
else
user.update_inv_r_hand(0)
-
+ feedback_add_details("gun_fired","[src.name]")
/obj/item/weapon/gun/attack(mob/M as mob, mob/user)
if(user.a_intent == "harm") //Flogging
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index d076c813158..1bc794782c6 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -276,6 +276,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any.
linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.m_amt*(linked_destroy.decon_mod/10)))
linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.g_amt*(linked_destroy.decon_mod/10)))
+ feedback_add_details("item_deconstructed","[linked_destroy.loaded_item.name]")
linked_destroy.loaded_item = null
else
screen = 1.0
@@ -406,6 +407,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/R = being_built.reliability
spawn(32*amount/coeff)
if(g2g) //And if we only fail the material requirements, we still spend time and power
+ var/already_logged = 0
for(var/i = 0, iYou drape [I] over [M]'s [parse_zone(procedure.location)] to prepare for \an [procedure.name].")
add_logs(user, M, "operated", addition="Operation type: [procedure.name]")
+ feedback_add_details("surgery_initiated","[procedure.name]")
return 1
else
user << "You need to expose [M]'s [procedure.location] first!"
diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm
index 042832894d7..76365b0790c 100644
--- a/code/modules/surgery/surgery_step.dm
+++ b/code/modules/surgery/surgery_step.dm
@@ -73,6 +73,7 @@
/datum/surgery_step/proc/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] succeeds!", "You succeed.")
+ feedback_add_details("surgery_step_success","[src.type]")
return 1
/datum/surgery_step/saw/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -80,10 +81,12 @@
var/mob/living/carbon/human/H = target
H.apply_damage(75,"brute","[target_zone]")
user.visible_message("[user] saws [target]'s [parse_zone(target_zone)] open!", "You saw [target]'s [parse_zone(target_zone)] open.")
+ feedback_add_details("surgery_step_success","[src.type]")
return 1
/datum/surgery_step/proc/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] screws up!", "You screw up!")
+ feedback_add_details("surgery_step_failed","[src.type]")
return 0
/datum/surgery_step/close/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)