[MIRROR] Replaces Batform with Vampire houses [MDB IGNORE] (#9636)

* Replaces Batform with Vampire houses (#62516)

Permissions for species change

image
About The Pull Request

Goodbye batform

Hello, new preference called vampire status. Outcast vampires act just like normal, Inoculated vampires join their department under a unified "vampire house name" everyone shares.

image

image

image
Why It's Good For The Game

I've heard people complain about batform for years now, if vampires aren't gone by next halloween we can at least enjoy making them far less griefy (ruining a lot of the fun of halloween as just a dumb grief holiday) and more roleplay oriented. I don't even know why vampires got a griefy spell when they already have their main mechanic encourage randomly attacking people and stealing their blood to stay alive
Changelog

cl
del: Batform is gone!
add: ...Replaced by vampire houses as a preference. Join your department as a vampire ménage!
/cl

* Replaces Batform with Vampire houses

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-11-23 04:09:07 +00:00
committed by GitHub
parent 8e6590c600
commit de4647c320
11 changed files with 165 additions and 48 deletions
@@ -1,8 +1,23 @@
///how many vampires exist in each house
#define VAMPIRES_PER_HOUSE 5
///maximum a vampire will drain, they will drain less if they hit their cap
#define VAMP_DRAIN_AMOUNT 50
/datum/species/vampire
name = "Vampire"
id = SPECIES_VAMPIRE
default_color = "FFFFFF"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD, HAS_FLESH, HAS_BONE)
species_traits = list(
EYECOLOR,
HAIR,
FACEHAIR,
LIPS,
DRINKSBLOOD,
HAS_FLESH,
HAS_BONE,
BLOOD_CLANS,
)
inherent_traits = list(
TRAIT_ADVANCEDTOOLUSER,
TRAIT_CAN_STRIP,
@@ -18,51 +33,42 @@
mutanttongue = /obj/item/organ/tongue/vampire
limbs_id = SPECIES_HUMAN
skinned_type = /obj/item/stack/sheet/animalhide/human
///some starter text sent to the vampire initially, because vampires have shit to do to stay alive
var/info_text = "You are a <span class='danger'>Vampire</span>. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability."
var/obj/effect/proc_holder/spell/targeted/shapeshift/bat/batform //attached to the datum itself to avoid cloning memes, and other duplicates
/datum/species/vampire/check_roundstart_eligible()
if(SSevents.holidays && SSevents.holidays[HALLOWEEN])
return TRUE
return ..()
/datum/species/vampire/on_species_gain(mob/living/carbon/human/C, datum/species/old_species)
/datum/species/vampire/on_species_gain(mob/living/carbon/human/new_vampire, datum/species/old_species)
. = ..()
to_chat(C, "[info_text]")
C.skin_tone = "albino"
C.update_body(0)
if(isnull(batform))
batform = new
C.AddSpell(batform)
C.set_safe_hunger_level()
to_chat(new_vampire, "[info_text]")
new_vampire.skin_tone = "albino"
new_vampire.update_body(0)
new_vampire.set_safe_hunger_level()
/datum/species/vampire/on_species_loss(mob/living/carbon/C)
/datum/species/vampire/spec_life(mob/living/carbon/human/vampire, delta_time, times_fired)
. = ..()
if(!isnull(batform))
C.RemoveSpell(batform)
QDEL_NULL(batform)
/datum/species/vampire/spec_life(mob/living/carbon/human/C, delta_time, times_fired)
. = ..()
if(istype(C.loc, /obj/structure/closet/crate/coffin))
C.heal_overall_damage(2 * delta_time, 2 * delta_time, 0, BODYPART_ORGANIC)
C.adjustToxLoss(-2 * delta_time)
C.adjustOxyLoss(-2 * delta_time)
C.adjustCloneLoss(-2 * delta_time)
if(istype(vampire.loc, /obj/structure/closet/crate/coffin))
vampire.heal_overall_damage(2 * delta_time, 2 * delta_time, 0, BODYPART_ORGANIC)
vampire.adjustToxLoss(-2 * delta_time)
vampire.adjustOxyLoss(-2 * delta_time)
vampire.adjustCloneLoss(-2 * delta_time)
return
C.blood_volume -= 0.125 * delta_time
if(C.blood_volume <= BLOOD_VOLUME_SURVIVE)
to_chat(C, span_danger("You ran out of blood!"))
var/obj/shapeshift_holder/H = locate() in C
if(H)
H.shape.dust() //make sure we're killing the bat if you are out of blood, if you don't it creates weird situations where the bat is alive but the caster is dusted.
C.dust()
var/area/A = get_area(C)
vampire.blood_volume -= 0.125 * delta_time
if(vampire.blood_volume <= BLOOD_VOLUME_SURVIVE)
to_chat(vampire, span_danger("You ran out of blood!"))
var/obj/shapeshift_holder/holder = locate() in vampire
if(holder)
holder.shape.dust() //vampires do not have batform anymore, but this would still lead to very weird stuff with other shapeshift holders
vampire.dust()
var/area/A = get_area(vampire)
if(istype(A, /area/service/chapel))
to_chat(C, span_warning("You don't belong here!"))
C.adjustFireLoss(10 * delta_time)
C.adjust_fire_stacks(3 * delta_time)
C.IgniteMob()
to_chat(vampire, span_warning("You don't belong here!"))
vampire.adjustFireLoss(10 * delta_time)
vampire.adjust_fire_stacks(3 * delta_time)
vampire.IgniteMob()
/datum/species/vampire/check_species_weakness(obj/item/weapon, mob/living/attacker)
if(istype(weapon, /obj/item/nullrod/whip))
@@ -75,8 +81,6 @@
color = "#1C1C1C"
COOLDOWN_DECLARE(drain_cooldown)
#define VAMP_DRAIN_AMOUNT 50
/datum/action/item_action/organ_action/vampire
name = "Drain Victim"
desc = "Leech blood from any carbon victim you are passively grabbing."
@@ -121,18 +125,9 @@
if(!victim.blood_volume)
to_chat(H, span_notice("You finish off [victim]'s blood supply."))
#undef VAMP_DRAIN_AMOUNT
/obj/item/organ/heart/vampire
name = "vampire heart"
color = "#1C1C1C"
/obj/effect/proc_holder/spell/targeted/shapeshift/bat
name = "Bat Form"
desc = "Take on the shape a space bat."
invocation = "Squeak!"
charge_max = 50
cooldown_min = 50
shapeshift_type = /mob/living/simple_animal/hostile/retaliate/bat
#undef VAMPIRES_PER_HOUSE
#undef VAMP_DRAIN_AMOUNT