diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 3081880394f..d48420e1619 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -177,6 +177,41 @@
desc = "You're severely malnourished. The hunger pains make moving around a chore."
icon_state = "starving"
+///Vampire "hunger"
+
+/obj/screen/alert/fat/vampire
+ name = "Fat"
+ desc = "You drank too much blood, somehow, lardass. Run around the station and lose some weight."
+ icon_state = "v_fat"
+
+/obj/screen/alert/full/vampire
+ name = "Full"
+ desc = "You feel full and satisfied, but you know you will thirst for more blood soon..."
+ icon_state = "v_full"
+
+/obj/screen/alert/well_fed/vampire
+ name = "Well Fed"
+ desc = "You feel quite satisfied, but you could do with a bit more blood."
+ icon_state = "v_well_fed"
+
+/obj/screen/alert/fed/vampire
+ name = "Fed"
+ desc = "You feel moderately satisfied, but a bit more of blood may not hurt."
+ icon_state = "v_fed"
+
+/obj/screen/alert/hungry/vampire
+ name = "Hungry"
+ desc = "You currently thirst for blood."
+ icon_state = "v_hungry"
+
+/obj/screen/alert/starving/vampire
+ name = "Starving"
+ desc = "You're severely thirsty. The thirst pains make moving around a chore."
+ icon_state = "v_starving"
+
+//End of Vampire "hunger"
+
+
/obj/screen/alert/hot
name = "Too Hot"
desc = "You're flaming hot! Get somewhere cooler and take off any insulating clothing like a fire suit."
diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm
index 9dec5b573e2..3a3a9ed1a28 100644
--- a/code/game/gamemodes/vampire/vampire.dm
+++ b/code/game/gamemodes/vampire/vampire.dm
@@ -297,19 +297,26 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
to_chat(owner, "They've got no blood left to give.")
break
if(H.stat < DEAD)
- blood = min(20, H.blood_volume) // if they have less than 20 blood, give them the remnant else they get 20 blood
- bloodtotal += blood / 2 //divide by 2 to counted the double suction since removing cloneloss -Melandor0
- bloodusable += blood / 2
+ if(!issmall(H) && !H.ckey)
+ blood = min(20, H.blood_volume) // if they have less than 20 blood, give them the remnant else they get 20 blood
+ bloodtotal += blood / 2 //divide by 2 to counted the double suction since removing cloneloss -Melandor0
+ bloodusable += blood / 2
else
- blood = min(5, H.blood_volume) // The dead only give 5 blood
- bloodtotal += blood
+ if(!issmall(H) && !H.ckey)
+ blood = min(5, H.blood_volume) // The dead only give 5 blood
+ bloodtotal += blood
if(old_bloodtotal != bloodtotal)
- to_chat(owner, "You have accumulated [bloodtotal] [bloodtotal > 1 ? "units" : "unit"] of blood[bloodusable != old_bloodusable ? ", and have [bloodusable] left to use" : ""].")
+ if(!issmall(H) && !H.ckey)
+ to_chat(owner, "You have accumulated [bloodtotal] [bloodtotal > 1 ? "units" : "unit"] of blood[bloodusable != old_bloodusable ? ", and have [bloodusable] left to use" : ""].")
check_vampire_upgrade()
H.blood_volume = max(H.blood_volume - 25, 0)
if(ishuman(owner))
var/mob/living/carbon/human/V = owner
- V.nutrition = min(NUTRITION_LEVEL_WELL_FED, V.nutrition + (blood / 2))
+ if(issmall(H) && !H.ckey)
+ V.nutrition = min(NUTRITION_LEVEL_WELL_FED, V.nutrition + 5)
+ else
+ V.nutrition = min(NUTRITION_LEVEL_WELL_FED, V.nutrition + (blood / 2))
+
draining = null
to_chat(owner, "You stop draining [H.name] of blood.")
@@ -402,11 +409,11 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
if(!hud.vampire_blood_display)
hud.vampire_blood_display = new /obj/screen()
hud.vampire_blood_display.name = "Usable Blood"
- hud.vampire_blood_display.icon_state = "power_display"
+ hud.vampire_blood_display.icon_state = "blood_display"
hud.vampire_blood_display.screen_loc = "WEST:6,CENTER-1:15"
hud.static_inventory += hud.vampire_blood_display
hud.show_hud(hud.hud_version)
- hud.vampire_blood_display.maptext = "
[bloodusable]
"
+ hud.vampire_blood_display.maptext = "[bloodusable]
"
handle_vampire_cloak()
if(istype(owner.loc, /turf/space))
check_sun()
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index ee0ca746dd8..5caf589a5fb 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -110,11 +110,22 @@
/obj/item/clothing/mask/muzzle/safety
name = "safety muzzle"
desc = "A muzzle designed to prevent biting."
+ icon_state = "muzzle_secure"
+ item_state = "muzzle_secure"
resist_time = 0
mute = MUZZLE_MUTE_NONE
security_lock = TRUE
locked = FALSE
materials = list(MAT_METAL=500, MAT_GLASS=50)
+ species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey" )
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/mask.dmi',
+ "Unathi" = 'icons/mob/species/unathi/mask.dmi',
+ "Tajaran" = 'icons/mob/species/tajaran/mask.dmi',
+ "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi',
+ "Grey" = 'icons/mob/species/grey/mask.dmi',
+ "Drask" = 'icons/mob/species/drask/mask.dmi'
+ )
/obj/item/clothing/mask/muzzle/safety/shock
name = "shock muzzle"
diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm
index 85f491f71f0..44498ae5367 100644
--- a/code/modules/mob/living/carbon/human/species/_species.dm
+++ b/code/modules/mob/living/carbon/human/species/_species.dm
@@ -341,9 +341,6 @@
if(SKELETON in target.mutations)
to_chat(user, "There is no blood in a skeleton!")
return
- if(issmall(target) && !target.ckey) //Monkeyized humans are okay, humanized monkeys are okay, NPC monkeys are not.
- to_chat(user, "Blood from a monkey is useless!")
- return
//we're good to suck the blood, blaah
user.mind.vampire.handle_bloodsucking(target)
add_attack_logs(user, target, "vampirebit")
@@ -603,20 +600,37 @@
H.healthdoll.cached_healthdoll_overlays = new_overlays
/datum/species/proc/handle_hud_icons_nutrition(mob/living/carbon/human/H)
- switch(H.nutrition)
- if(NUTRITION_LEVEL_FULL to INFINITY)
- H.throw_alert("nutrition", /obj/screen/alert/fat)
- if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
- H.throw_alert("nutrition", /obj/screen/alert/full)
- if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
- H.throw_alert("nutrition", /obj/screen/alert/well_fed)
- if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
- H.throw_alert("nutrition", /obj/screen/alert/fed)
- if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
- H.throw_alert("nutrition", /obj/screen/alert/hungry)
- else
- H.throw_alert("nutrition", /obj/screen/alert/starving)
- return 1
+ if(H.mind && H.mind.vampire && (H.mind in ticker.mode.vampires)) //Vampires
+ switch(H.nutrition)
+ if(NUTRITION_LEVEL_FULL to INFINITY)
+ H.throw_alert("nutrition", /obj/screen/alert/fat/vampire)
+ if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
+ H.throw_alert("nutrition", /obj/screen/alert/full/vampire)
+ if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
+ H.throw_alert("nutrition", /obj/screen/alert/well_fed/vampire)
+ if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
+ H.throw_alert("nutrition", /obj/screen/alert/fed/vampire)
+ if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
+ H.throw_alert("nutrition", /obj/screen/alert/hungry/vampire)
+ else
+ H.throw_alert("nutrition", /obj/screen/alert/starving/vampire)
+ return 1
+
+ else ///Any other non-vampires
+ switch(H.nutrition)
+ if(NUTRITION_LEVEL_FULL to INFINITY)
+ H.throw_alert("nutrition", /obj/screen/alert/fat)
+ if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
+ H.throw_alert("nutrition", /obj/screen/alert/full)
+ if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
+ H.throw_alert("nutrition", /obj/screen/alert/well_fed)
+ if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
+ H.throw_alert("nutrition", /obj/screen/alert/fed)
+ if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
+ H.throw_alert("nutrition", /obj/screen/alert/hungry)
+ else
+ H.throw_alert("nutrition", /obj/screen/alert/starving)
+ return 1
/*
Returns the path corresponding to the corresponding organ
diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi
index 60488151158..b18cb799817 100644
Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ
diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi
index 62f732a224f..6209ce84949 100644
Binary files a/icons/mob/screen_gen.dmi and b/icons/mob/screen_gen.dmi differ