diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index 5eccb4b2435..3bd7e96ee4c 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -60,7 +60,7 @@ obj/item/proc/get_clamped_volume()
user.lastattacked = M
M.lastattacker = user
- add_logs(user, M, "attacked", object=src.name, addition="(INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])")
+ add_logs(user, M, "attacked", object=src.name, addition="(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
//spawn(1800) // this wont work right
// M.lastattacker = null
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 4507b1e0bb5..b85693e867f 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -33,6 +33,7 @@
if(!foldable)
return
if(contents.len)
+ user << "You can't fold this box with items still inside."
return
if(!ispath(foldable))
return
@@ -537,4 +538,4 @@
new /obj/item/clothing/tie/armband/deputy(src)
new /obj/item/clothing/tie/armband/deputy(src)
new /obj/item/clothing/tie/armband/deputy(src)
- new /obj/item/clothing/tie/armband/deputy(src)
+ new /obj/item/clothing/tie/armband/deputy(src)
diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm
index 94ce4c9fb7b..93a6fdc2679 100644
--- a/code/game/objects/items/weapons/storage/briefcase.dm
+++ b/code/game/objects/items/weapons/storage/briefcase.dm
@@ -4,11 +4,13 @@
icon_state = "briefcase"
flags = CONDUCT
force = 8.0
+ hitsound = "swing_hit"
throw_speed = 2
throw_range = 4
w_class = 4.0
max_w_class = 3
max_combined_w_class = 21
+ attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
/obj/item/weapon/storage/briefcase/New()
..()
diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm
index 7db2d68d5de..212a52cbf18 100644
--- a/code/game/objects/items/weapons/storage/secure.dm
+++ b/code/game/objects/items/weapons/storage/secure.dm
@@ -153,11 +153,13 @@
item_state = "sec-case"
desc = "A large briefcase with a digital locking system."
force = 8.0
+ hitsound = "swing_hit"
throw_speed = 2
throw_range = 4
w_class = 4.0
max_w_class = 3
max_combined_w_class = 21
+ attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
/obj/item/weapon/storage/secure/briefcase/New()
..()
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index df18f1b114e..05d2baedd22 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -172,12 +172,14 @@
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
health -= W.force * 0.1
else if(!shock(user, 70))
- playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
switch(W.damtype)
- if("fire")
+ if(BURN)
health -= W.force
- if("brute")
+ playsound(loc, 'sound/items/welder.ogg', 80, 1)
+ if(BRUTE)
health -= W.force * 0.1
+ playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
+
healthcheck()
..()
return
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 2c29857b305..ac4ac556d85 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -116,12 +116,12 @@
if ("help")
help_shake_act(M)
else
- if (is_muzzled())
+ if (M.is_muzzled())
return
- if (health > 0)
- playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
- visible_message("[M.name] bites [src]!", \
- "[M.name] bites [src]!")
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+ visible_message("[M.name] bites [src]!", \
+ "[M.name] bites [src]!")
+ if (health > -100)
adjustBruteLoss(rand(1, 3))
updatehealth()
return
@@ -134,7 +134,7 @@
if(M.Victim) return // can't attack while eating!
- if (health > -100)
+ if (stat > -100)
visible_message("The [M.name] glomps [src]!", \
"The [M.name] glomps [src]!")
@@ -309,6 +309,28 @@ In all, this is a lot like the monkey code. /N
return
+/mob/living/carbon/alien/humanoid/attack_larva(mob/living/carbon/alien/larva/L as mob)
+
+ switch(L.a_intent)
+ if("help")
+ visible_message("[L] rubs its head against [src].")
+
+
+ else
+ if (health > 0)
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+ var/damage = rand(1, 3)
+ visible_message("[L.name] bites [src]!!", \
+ "[L.name] bites [src]!!")
+
+ adjustBruteLoss(damage)
+ updatehealth()
+ else
+ L << "[name] is too injured for that."
+ return
+
+
+
/mob/living/carbon/alien/humanoid/restrained()
if (handcuffed)
return 1
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 997fa314919..892a68b5344 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -117,6 +117,8 @@
if(M.melee_damage_upper == 0)
M.emote("[M.friendly] [src]")
else
+ if(M.attack_sound)
+ playsound(loc, M.attack_sound, 50, 1, 1)
visible_message("[M] [M.attacktext] [src]!", \
"[M] [M.attacktext] [src]!")
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
@@ -142,12 +144,12 @@
if ("help")
help_shake_act(M)
else
- if (is_muzzled())
+ if (M.is_muzzled())
return
- if (health > 0)
- playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
- visible_message("[M.name] bites [src]!", \
- "[M.name] bites [src]!")
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+ visible_message("[M.name] bites [src]!", \
+ "[M.name] bites [src]!")
+ if (health > -100)
adjustBruteLoss(rand(1, 3))
updatehealth()
return
@@ -158,13 +160,12 @@
M << "You cannot attack people before the game has started."
return
- if(M.Victim) return // can't attack while eating!
-
- if (health > -100)
+ if(M.Victim)
+ return // can't attack while eating!
+ if (stat != DEAD)
visible_message("The [M.name] glomps [src]!", \
"The [M.name] glomps [src]!")
-
var/damage = rand(1, 3)
if(M.is_adult)
@@ -172,9 +173,8 @@
else
damage = rand(5, 35)
+
adjustBruteLoss(damage)
-
-
updatehealth()
return
@@ -259,7 +259,7 @@
else
if (health > 0)
playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
- var/damage = rand(1, 3)
+ var/damage = 1
visible_message("[M.name] bites [src]!", \
"[M.name] bites [src]!")
adjustBruteLoss(damage)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 64a7257d17a..fe05d3e038c 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -234,6 +234,27 @@
if(armor >= 2) return
+/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L as mob)
+
+ switch(L.a_intent)
+ if("help")
+ visible_message("[L] rubs its head against [src].")
+
+
+ else
+
+ var/damage = rand(1, 3)
+ visible_message("[L] bites [src]!", \
+ "[L] bites [src]!")
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+
+ if(stat != DEAD)
+ L.amount_grown = min(L.amount_grown + damage, L.max_grown)
+ var/obj/item/organ/limb/affecting = get_organ(ran_zone(L.zone_sel.selecting))
+ var/armor_block = run_armor_check(affecting, "melee")
+ apply_damage(damage, BRUTE, affecting, armor_block)
+
+
/mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M as mob)
if(M.Victim) return // can't attack while eating!
diff --git a/code/modules/mob/living/carbon/human/human_attackpaw.dm b/code/modules/mob/living/carbon/human/human_attackpaw.dm
index 17d1e721587..95eaeb61ec3 100644
--- a/code/modules/mob/living/carbon/human/human_attackpaw.dm
+++ b/code/modules/mob/living/carbon/human/human_attackpaw.dm
@@ -3,11 +3,12 @@
if (M.a_intent == "help")
help_shake_act(M)
else
- if (is_muzzled())
+ if (M.is_muzzled())
return
visible_message("[M.name] bites [src]!", \
"[M.name] bites [src]!")
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
var/damage = rand(1, 3)
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index 9655a2cc602..54ac2c99ec8 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -74,14 +74,15 @@
if (M.a_intent == "help")
help_shake_act(M)
else
- if (M.a_intent == "harm" && !is_muzzled())
- if ((prob(75) && health > 0))
+ if (M.a_intent == "harm" && !M.is_muzzled())
+ if (prob(75))
playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
visible_message("[M.name] bites [name]!", \
"[M.name] bites [name]!")
var/damage = rand(1, 5)
- adjustBruteLoss(damage)
- health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
+ if (health > -100)
+ adjustBruteLoss(damage)
+ health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
for(var/datum/disease/D in M.viruses)
contract_disease(D,1,0)
else
@@ -89,6 +90,24 @@
"[M.name] has attempted to bite [name]!")
return
+/mob/living/carbon/monkey/attack_larva(mob/living/carbon/alien/larva/L as mob)
+
+ switch(L.a_intent)
+ if("help")
+ visible_message("[L] rubs its head against [src].")
+
+
+ else
+
+ var/damage = rand(1, 3)
+ visible_message("[L] bites [src]!", \
+ "[L] bites [src]!")
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+
+ if(stat != DEAD)
+ L.amount_grown = min(L.amount_grown + damage, L.max_grown)
+ adjustBruteLoss(damage)
+
/mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
@@ -181,8 +200,9 @@
else
visible_message("[M] has slashed [name]!", \
"[M] has slashed [name]!")
- adjustBruteLoss(damage)
- updatehealth()
+ if (stat != DEAD)
+ adjustBruteLoss(damage)
+ updatehealth()
else
playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1)
visible_message("[M] has attempted to lunge at [name]!", \
diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm
index ed218c49862..3d1a66a3702 100644
--- a/code/modules/mob/living/carbon/slime/slime.dm
+++ b/code/modules/mob/living/carbon/slime/slime.dm
@@ -246,20 +246,16 @@
if (Victim) return // can't attack while eating!
+ visible_message(" The [M.name] has glomped [src]!", \
+ " The [M.name] has glomped [src]!")
+ var/damage = rand(1, 3)
+ attacked += 5
+ if(M.is_adult)
+ damage = rand(1, 6)
+ else
+ damage = rand(1, 3)
if (health > -100)
-
- visible_message(" The [M.name] has glomped [src]!", \
- " The [M.name] has glomped [src]!")
- var/damage = rand(1, 3)
- attacked += 5
-
- if(M.is_adult)
- damage = rand(1, 6)
- else
- damage = rand(1, 3)
-
adjustBruteLoss(damage)
-
updatehealth()
return
@@ -279,7 +275,7 @@
/mob/living/carbon/slime/attack_paw(mob/living/carbon/monkey/M as mob)
if(!(istype(M, /mob/living/carbon/monkey)))
- return // Fix for aliens receiving double messages when attacking other aliens.
+ return // Fix for aliens receiving double messages when attacking slimes.
if (!ticker)
M << "You cannot attack people before the game has started."
@@ -296,17 +292,38 @@
if ("help")
help_shake_act(M)
else
- if (is_muzzled())
+ if (M.is_muzzled())
return
- if (health > 0)
- attacked += 10
- //playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
- visible_message("[M.name] has attacked [src]!", \
- "[M.name] has attacked [src]!")
+
+ attacked += 10
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+ visible_message("[M.name] bites [src]!", \
+ "[M.name] bites [src]!")
+ if (health > -100)
adjustBruteLoss(rand(1, 3))
updatehealth()
return
+/mob/living/carbon/slime/attack_larva(mob/living/carbon/alien/larva/L as mob)
+
+ switch(L.a_intent)
+
+ if("help")
+ visible_message("[L] rubs its head against [src].")
+
+
+ else
+
+ attacked += 10
+ visible_message("[L] bites [src]!", \
+ "[L] bites [src]!")
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+
+ if(stat != DEAD)
+ var/damage = rand(1, 3)
+ L.amount_grown = min(L.amount_grown + damage, L.max_grown)
+ adjustBruteLoss(damage)
+
/mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob)
if (!ticker)
@@ -416,8 +433,9 @@
visible_message("[M] has punched [src]!", \
"[M] has punched [src]!")
- adjustBruteLoss(damage)
- updatehealth()
+ if (health > -100)
+ adjustBruteLoss(damage)
+ updatehealth()
else
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
visible_message("[M] has attempted to punch [src]!")
@@ -446,13 +464,15 @@
var/damage = rand(15, 30)
if (damage >= 25)
damage = rand(20, 40)
- visible_message("[M] has attacked [name]!", \
- "[M] has attacked [name]!")
+ visible_message("[M] has slashed [name]!", \
+ "[M] has slashed [name]!")
else
visible_message("[M] has wounded [name]!", \
")[M] has wounded [name]!")
- adjustBruteLoss(damage)
- updatehealth()
+
+ if (health > -100)
+ adjustBruteLoss(damage)
+ updatehealth()
else
playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1)
visible_message("[M] has attempted to lunge at [name]!", \
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index 36be2f583d4..f45daf9abd3 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -20,6 +20,7 @@
faction = list("neutral")
attack_same = 1
attacktext = "kicks"
+ attack_sound = 'sound/weapons/punch1.ogg'
health = 40
melee_damage_lower = 1
melee_damage_upper = 2
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index 8e1ff31edca..5b74257c67c 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -67,6 +67,7 @@
visible_message("[src] has been attacked with [O] by [user]!")
else
visible_message("[src] blocks [O] with its shield!")
+ playsound(loc, O.hitsound, 25, 1, -1)
else
usr << "This weapon is ineffective, it does no damage."
visible_message("[user] gently taps [src] with [O].")
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 722d7507f12..aec7c377b98 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -276,6 +276,7 @@
if("help")
if (health > 0)
visible_message(" [M] [response_help] [src].")
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
if("grab")
if (M == src || anchored)
@@ -292,13 +293,37 @@
LAssailant = M
visible_message("[M] has grabbed [src] passively!")
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
if("harm", "disarm")
- adjustBruteLoss(harm_intent_damage)
visible_message("[M] [response_harm] [src]!")
+ playsound(loc, "punch", 25, 1, -1)
+ adjustBruteLoss(harm_intent_damage)
return
+/mob/living/simple_animal/attack_paw(mob/living/carbon/monkey/M as mob)
+ if(!(istype(M, /mob/living/carbon/monkey)))
+ return // Fix for aliens receiving double messages when attacking simple animals.
+
+ ..()
+
+ switch(M.a_intent)
+
+ if ("help")
+ if (health > 0)
+ visible_message(" [M] [response_help] [src].")
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
+ else
+ if (M.is_muzzled())
+ return
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
+ visible_message("[M.name] bites [src]!", \
+ "[M.name] bites [src]!")
+ if (health > -100)
+ adjustBruteLoss(rand(1, 3))
+ return
+
/mob/living/simple_animal/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
switch(M.a_intent)
@@ -326,6 +351,7 @@
var/damage = rand(15, 30)
visible_message("[M] has slashed at [src]!", \
"[M] has slashed at [src]!")
+ playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
adjustBruteLoss(damage)
return
@@ -342,6 +368,7 @@
var/damage = rand(5, 10)
visible_message("[L] bites [src]!", \
"[L] bites [src]!")
+ playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
if(stat != DEAD)
L.amount_grown = min(L.amount_grown + damage, L.max_grown)
@@ -355,17 +382,18 @@
if(M.Victim) return // can't attack while eating!
- visible_message("[M.name] glomps [src]!", \
- "[M.name] glomps [src]!")
+ if (health > 0)
+ visible_message("[M.name] glomps [src]!", \
+ "[M.name] glomps [src]!")
- var/damage = rand(1, 3)
+ var/damage = rand(1, 3)
- if(M.is_adult)
- damage = rand(20, 40)
- else
- damage = rand(5, 35)
+ if(M.is_adult)
+ damage = rand(20, 40)
+ else
+ damage = rand(5, 35)
- adjustBruteLoss(damage)
+ adjustBruteLoss(damage)
return
@@ -394,25 +422,27 @@
else
user << " [src] is dead, medical items won't bring it back to life."
return
- else if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead.
+ if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead.
if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch))
harvest()
- else
- user.changeNext_move(CLICK_CD_MELEE)
- if(O.force)
- if(O.force >= force_threshold)
- var/damage = O.force
- if (O.damtype == STAMINA)
- damage = 0
- adjustBruteLoss(damage)
- visible_message("[src] has been attacked with [O] by [user]!",\
- "[src] has been attacked with [O] by [user]!")
- else
- visible_message("[O] bounces harmlessly off of [src].",\
- "[O] bounces harmlessly off of [src].")
+
+ user.changeNext_move(CLICK_CD_MELEE)
+ var/damage = 0
+ if(O.force)
+ if(O.force >= force_threshold)
+ damage = O.force
+ if (O.damtype == STAMINA)
+ damage = 0
+ visible_message("[src] has been [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] with [O] by [user]!",\
+ "[src] has been attacked with [O] by [user]!")
else
- user.visible_message("[user] gently taps [src] with [O].",\
+ visible_message("[O] bounces harmlessly off of [src].",\
+ "[O] bounces harmlessly off of [src].")
+ playsound(loc, O.hitsound, 50, 1, -1)
+ else
+ user.visible_message("[user] gently taps [src] with [O].",\
"This weapon is ineffective, it does no damage.")
+ adjustBruteLoss(damage)
/mob/living/simple_animal/movement_delay()
var/tally = 0 //Incase I need to add stuff other than "speed" later