diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 9292bd85292..a6ece08feee 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -166,7 +166,7 @@
var/mob/living/M = loc
if(M.a_intent in accepted_intents)
- if(istype(M.mind.martial_art, /datum/martial_art/cqc))
+ if(M.mind.martial_art || HAS_TRAIT(M, TRAIT_HULK))
M.changeNext_move(CLICK_CD_MELEE)//normal attack speed for hulk, CQC and Carp.
else
M.changeNext_move(click_speed_modifier)
diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm
index 278437e997d..79415ee7246 100644
--- a/code/modules/martial_arts/sleeping_carp.dm
+++ b/code/modules/martial_arts/sleeping_carp.dm
@@ -23,7 +23,16 @@
D.visible_message("[A] [atk_verb] [D]!",
"[A] [atk_verb] you!")
D.apply_damage(rand(10,15), BRUTE)
+<<<<<<< HEAD
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, TRUE, -1)
+=======
+ playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, 1, -1)
+ if(prob(50))
+ A.say(pick("HUAH!", "HYA!", "CHOO!", "WUO!", "KYA!", "HUH!", "HIYOH!", "CARP STRIKE!", "CARP BITE!"))
+ if(prob(D.getBruteLoss()) && !D.lying)
+ D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!")
+ D.Weaken(4)
+>>>>>>> upstream/master
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Punched", ATKLOG_ALL)
return TRUE
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index b8257bb877f..d80ab50e0b0 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -118,6 +118,11 @@
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
else //Everyone else fails, skip the emote attempt
return
+ if("rattle", "rattles")
+ if(isskeleton(src) || isplasmaman(src)) //Only Plasmamen and Skeletons can rattle.
+ on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
+ else //Everyone else fails, skip the emote attempt
+ return
if("scream", "screams")
on_CD = handle_emote_CD(50) //longer cooldown
@@ -269,6 +274,12 @@
playsound(loc, 'sound/machines/synth_no.ogg', 50, 1, frequency = get_age_pitch())
m_type = 2
+ if("rattle", "rattles")
+ var/M = handle_emote_param(param)
+
+ message = "[src] rattles [p_their()] bones[M ? " at [M]" : ""]."
+ m_type = 1
+
if("wag", "wags")
if(body_accessory)
if(body_accessory.try_restrictions(src))
@@ -966,6 +977,10 @@
emotelist += "\nVox specific emotes :- wag(s), swag(s), quill(s)"
if("Vulpkanin")
emotelist += "\nVulpkanin specific emotes :- wag(s), swag(s), growl(s)-none/mob, howl(s)-none/mob"
+ if("Plasmaman")
+ emotelist += "\nPlasmaman specific emotes :- rattle(s)-none/mob"
+ if("Skeleton")
+ emotelist += "\nSkeleton specific emotes :- rattle(s)-none/mob"
if(ismachineperson(src))
emotelist += "\nMachine specific emotes :- beep(s)-none/mob, buzz(es)-none/mob, no-none/mob, ping(s)-none/mob, yes-none/mob, buzz2-none/mob"
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index 485039c56b7..44fa7e00e1b 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -63,18 +63,18 @@ Note: Must be placed west/left of and R&D console to function.
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
T += M.rating
materials.max_amount = T * 75000
- T = 1.2
+ T = 12
for(var/obj/item/stock_parts/manipulator/M in component_parts)
- T -= M.rating/10
- efficiency_coeff = min(max(0, T), 1)
+ T -= M.rating
+ efficiency_coeff = min(max(0, T / 10), 1)
/obj/machinery/r_n_d/protolathe/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
var/A = materials.amount(M)
if(!A)
A = reagents.get_reagent_amount(M)
- A = A / max(1, (being_built.reagents_list[M]))
+ A = A / max(1, (being_built.reagents_list[M] * efficiency_coeff))
else
- A = A / max(1, (being_built.materials[M]))
+ A = A / max(1, (being_built.materials[M] * efficiency_coeff))
return A
/obj/machinery/r_n_d/protolathe/attackby(obj/item/O as obj, mob/user as mob, params)
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 7d146e08feb..da21ae77d78 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -427,7 +427,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/enough_materials = TRUE
- if(!machine.materials.has_materials(efficient_mats, amount))
+ if(!machine.materials.has_materials(being_built.materials, coeff))
atom_say("Not enough materials to complete prototype.")
enough_materials = FALSE
else
diff --git a/icons/mob/species/drask/eyes.dmi b/icons/mob/species/drask/eyes.dmi
index 697a8c7fa8d..04771713282 100644
Binary files a/icons/mob/species/drask/eyes.dmi and b/icons/mob/species/drask/eyes.dmi differ
diff --git a/icons/mob/species/grey/eyes.dmi b/icons/mob/species/grey/eyes.dmi
index 522756904f0..707c9c1659f 100644
Binary files a/icons/mob/species/grey/eyes.dmi and b/icons/mob/species/grey/eyes.dmi differ
diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi
index 4d3e8c984dd..4b9ee667e6c 100644
Binary files a/icons/mob/species/vox/eyes.dmi and b/icons/mob/species/vox/eyes.dmi differ
diff --git a/icons/obj/doors/doorfireglass.dmi b/icons/obj/doors/doorfireglass.dmi
index 33eec559927..61e7dbb174f 100644
Binary files a/icons/obj/doors/doorfireglass.dmi and b/icons/obj/doors/doorfireglass.dmi differ