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