diff --git a/code/defines/obj/clothing.dm b/code/defines/obj/clothing.dm
index 3b6cde9a5de..98eefefc750 100644
--- a/code/defines/obj/clothing.dm
+++ b/code/defines/obj/clothing.dm
@@ -904,10 +904,17 @@
/obj/item/clothing/under/rank/centcom_officer
desc = "It has a CentCom officer rank stripe on it."
name = "CentCom Officer Jumpsuit"
- icon_state = "hop"
- item_state = "b_suit"
+ icon_state = "officer"
+ item_state = "g_suit"
color = "officer"
+/obj/item/clothing/under/rank/centcom_commander
+ desc = "It has a CentCom commander rank stripe on it."
+ name = "CentCom Officer Jumpsuit"
+ icon_state = "centcom"
+ item_state = "dg_suit"
+ color = "centcom"
+
/obj/item/clothing/under/rank/head_of_security
desc = "It has a Head of Security rank stripe on it."
name = "Head of Security Jumpsuit"
diff --git a/code/game/objects/items/weapons/guns_ammo.dm b/code/game/objects/items/weapons/guns_ammo.dm
index 0eeabdc7acc..909e9e596f5 100644
--- a/code/game/objects/items/weapons/guns_ammo.dm
+++ b/code/game/objects/items/weapons/guns_ammo.dm
@@ -68,30 +68,30 @@ TELEPORT GUN
spawn()
A.process()
return
- attack(mob/M as mob, mob/user as mob)
- ..()
- src.add_fingerprint(user)
- if ((prob(50) && M.stat < 2))
- var/mob/living/carbon/human/H = M
- if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80)))
- M << "\blue The helmet protects you from being hit hard in the head!"
- for(var/mob/O in viewers(M, null))
- if(O.client)
- O.show_message(text("\red [] blocked a hit from []!", M, user), 1)
- return
- var/time = rand(20, 60)
- if (prob(90))
- M.paralysis = max(time, M.paralysis)
- else
- M.weakened = max(time, M.weakened)
- src.force = 35
- ..()
- if(M.stat != 2) M.stat = 1
- for(var/mob/O in viewers(M, null))
- if(O.client)
- O.show_message(text("\red [] has been rifle butted by []!", M, user), 1, "\red You hear someone fall.", 2)
- return
+/obj/item/weapon/gun/energy/pulse_rifle/attack(mob/M as mob, mob/user as mob)
+ src.add_fingerprint(user)
+ var/mob/living/carbon/human/H = M
+
+ if ((istype(H, /mob/living/carbon/human) && istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80)))
+ M << "\blue The helmet protects you from being hit hard in the head!"
+ for(var/mob/O in viewers(M, null))
+ if(O.client)
+ O.show_message(text("\red [] blocked a hit from []!", M, user), 1)
+ return
+ else
+ var/time = rand(20, 60)
+ if (prob(90))
+ M.paralysis = max(time, M.paralysis)
+ else
+ M.weakened = max(time, M.weakened)
+ src.force = 35
+ ..()
+ if(M.stat != 2) M.stat = 1
+ for(var/mob/O in viewers(M, null))
+ if(O.client)
+ O.show_message(text("\red [] has been rifle butted by []!", M, user), 1, "\red You hear someone fall.", 2)
+ return
// AMMO
@@ -539,10 +539,6 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
if (O.client) O.show_message(text("\red [] has been pistol whipped with the detectives revolver by []!", M, user), 1, "\red You hear someone fall", 2)
return
-
-
-
-
// ENERGY GUN
/obj/item/weapon/gun/energy/proc/update_icon()
diff --git a/code/game/objects/livestock.dm b/code/game/objects/livestock.dm
index a6d123bf2b8..0aa573d0789 100644
--- a/code/game/objects/livestock.dm
+++ b/code/game/objects/livestock.dm
@@ -72,6 +72,39 @@
attack_hand(user as mob)
return
+ attack_alien(var/mob/living/carbon/alien/user as mob) //So aliums can attack and potentially eat space carp.
+ if(src.alive)
+ if (user.a_intent == "help")
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\blue [user] caresses [src.name] with its scythe like arm."), 1)
+ else
+ src.health -= rand(15,30)
+ if(src.aggressive)
+ src.target = user
+ src.state = 1
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has slashed [src.name]!", user), 1)
+ playsound(src.loc, 'slice.ogg', 25, 1, -1)
+ if(prob(10)) new /obj/decal/cleanable/blood(src.loc)
+ if (src.health <= 0)
+ src.death()
+ else
+ if (user.a_intent == "grab")
+ for(var/mob/N in viewers(user, null))
+ if(N.client)
+ N.show_message(text("\red [user] is attempting to devour the carp!"), 1)
+ if(!do_after(user, 50)) return
+ for(var/mob/N in viewers(user, null))
+ if(N.client)
+ N.show_message(text("\red [user] hungrily devours the carp!"), 1)
+ user.health += rand(10,25)
+ del(src)
+ else
+ user << "\green The creature is already dead."
+ return
+
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(src.alive)
switch(W.damtype)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index c4aca2d7eb3..cb2c0985ab0 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -1,15 +1,5 @@
/*NOTES:
-
-There are several problems with alien powers right now. I am currently trying to fix the dissolve verb so it makes a lot more sense.
-Alien spit is ridiculous and needs to be toned down. It homes in on targets when it should probably work
-more like a taser shot but with continuous toxin damage to the target if they are hit.
-Invisibility works well but 30 seconds is too long. 15 would be good considering it doesn't cost much and makes the alien a lot more
-robust (can't be canceled by anything short of thermals or a superpower).
-Vent crawl shouldn't transport the alien to the Prison Station or back. The list should also be in some order since right now it's
-often difficult to pick the right destination.
-Resin wall should also apply to mobs so that aliens can envelope them in resin (effectively paralyze them) to successfully hatch more
-aliens. Perhaps it should also prevent the target from suiciding.
-All I can think of right now./N
+These are being worked on.
*/
/mob/living/carbon/alien/humanoid/verb/invis()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/death.dm b/code/modules/mob/living/carbon/alien/humanoid/death.dm
index a38e549ae63..0e34eea9827 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/death.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/death.dm
@@ -6,8 +6,8 @@
src.stat = 2
if (!gibbed)
-
// emote("deathgasp") // Dead -- Skie // Doesn't work due to stat == 2 -- Urist
+ playsound(src.loc, 'hiss6.ogg', 80, 1, 1)
for(var/mob/O in viewers(src, null))
O.show_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...", 1)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/emote.dm b/code/modules/mob/living/carbon/alien/humanoid/emote.dm
index caf8642e9a6..83a8576f397 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/emote.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/emote.dm
@@ -20,7 +20,7 @@
m_type = 2
if ("deathgasp")
message = "[src] lets out a waning guttural screech, green blood bubbling from its maw..."
- m_type = 1
+ m_type = 2
if("scratch")
if (!src.restrained())
message = "The [src.name] scratches."
@@ -99,6 +99,8 @@
if ((message && src.stat == 0))
if (act == "roar")
playsound(src.loc, 'hiss5.ogg', 40, 1, 1)
+ if (act == "deathgasp")
+ playsound(src.loc, 'hiss6.ogg', 80, 1, 1)
if (m_type & 1)
for(var/mob/O in viewers(src, null))
O.show_message(message, m_type)
diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm
index 410d270fbfa..8393ae5b645 100644
--- a/code/modules/mob/living/carbon/alien/say.dm
+++ b/code/modules/mob/living/carbon/alien/say.dm
@@ -11,7 +11,8 @@
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
src.alien_talk(message)
else
- playsound(src.loc, "hiss", 25, 1, 1)//So aliens can hiss while they hiss yo/N
+ if (copytext(message, 1, 2) != "*" && !src.stat)
+ playsound(src.loc, "hiss", 25, 1, 1)//So aliens can hiss while they hiss yo/N
return ..(message)
else
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index 77eac63c638..2c2e8578b9c 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -285,7 +285,8 @@
if (M.a_intent == "help")
for(var/mob/O in viewers(src, null))
- O.show_message(text("\blue [M] caresses [src] with its scythe like arm."), 1)
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\blue [M] caresses [src] with its scythe like arm."), 1)
else
if (M.a_intent == "hurt")
if ((prob(95) && src.health > 0))
@@ -294,7 +295,7 @@
O.show_message(text("\red [] has slashed [src.name]!", M), 1)
playsound(src.loc, 'slice.ogg', 25, 1, -1)
- var/damage = rand(5, 10)
+ var/damage = rand(15, 30)
if (prob(40))
damage = rand(20, 40)
if (src.paralysis < 5)
diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi
index 22241eaf355..00de6abfd42 100644
Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 932fd73e0a8..2788fbc9fd0 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/screen1_alien.dmi b/icons/mob/screen1_alien.dmi
index a8fddfc2a44..3cb3a996a8e 100644
Binary files a/icons/mob/screen1_alien.dmi and b/icons/mob/screen1_alien.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 45e7619d73f..c378b52e4a3 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 3560f99a6ed..c19a4b12cb5 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/sound/voice/hiss6.ogg b/sound/voice/hiss6.ogg
new file mode 100644
index 00000000000..6c7b75d8a24
Binary files /dev/null and b/sound/voice/hiss6.ogg differ