Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor and rewrite bloodsucker and vamp #22911

Closed
wants to merge 10 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions code/__DEFINES/antagonists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -202,9 +202,6 @@
/// Checks if the given mob is a changeling
#define IS_CHANGELING(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/changeling))

/// Checks if the given mob is a vampire
#define IS_VAMPIRE(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/vampire))

// Antag resource defines
#define ANTAG_RESOURCE_DARKSPAWN "psi"
#define ANTAG_RESOURCE_VAMPIRE "blood"
#define ANTAG_RESOURCE_BLOODSUCKER "blood"
17 changes: 7 additions & 10 deletions code/__DEFINES/bloodsuckers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@
#define BLOODSUCKER_DRINK_NORMAL "bloodsucker_drink_normal"
///Drinks blood but is snobby, refusing to drink from mindless
#define BLOODSUCKER_DRINK_SNOBBY "bloodsucker_drink_snobby"
///Drinks blood from disgusting creatures without Humanity consequences.
#define BLOODSUCKER_DRINK_INHUMANELY "bloodsucker_drink_imhumanely"
///Drinks blood only from aggressive or higher grabs, no silent feeding.
///Drinks blood only from grabs, no silent feeding.
#define BLOODSUCKER_DRINK_PAINFUL "bloodsucker_drink_painful"

///Controls blood, just like all Bloodsuckers do
Expand All @@ -32,8 +30,6 @@
///Controls the inner machinations of one's being, being able to use the vassalrack and sculpt flesh monsters
#define BLOODSUCKER_CONTROL_FLESH 8

#define BLOODSUCKER_RANK_UP_NORMAL "bloodsucker_rank_up_normal"

#define DANGER_LEVEL_FIRST_WARNING 1
#define DANGER_LEVEL_SECOND_WARNING 2
#define DANGER_LEVEL_THIRD_WARNING 3
Expand Down Expand Up @@ -61,7 +57,7 @@
/**
* Clan defines
*/
#define CLAN_NONE "Caitiff"
#define CLAN_CAITIFF "Caitiff"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

naming the define CLAN_CAITIFF undermines the original intent of having it be the default NONE clan, people won't go after looking caitiff is, you should just have NONE.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'm not even certain i'm keeping the NONE clan
my design doc is
https://hackmd.io/@oerIqwbETomAqf6XwywK_g/SJz1A1zUyx
if you want to take a look

#define CLAN_BRUJAH "Brujah Clan"
#define CLAN_NOSFERATU "Nosferatu Clan"
#define CLAN_TREMERE "Tremere Clan"
Expand All @@ -72,6 +68,7 @@
#define CLAN_LASOMBRA "Lasombra Clan"
#define CLAN_TZIMISCE "Tzimisce Clan"
#define CLAN_HECATA "Hecata Clan"
#define CLAN_TEPES "Tepes Clan"

#define TREMERE_VASSAL "tremere_vassal"
#define FAVORITE_VASSAL "favorite_vassal"
Expand All @@ -81,7 +78,6 @@
#define ARMMY_MONSTER "Armmy (100 Blood)"
#define CALCIUM_MONSTER "Calcium (150 Blood)"
#define HUSK_MONSTER "Husk"
#define TOREADOR_MAX_HUMANITY_LOSS 10

/**
* Power defines
Expand Down Expand Up @@ -120,7 +116,7 @@
#define BP_AM_SINGLEUSE (1<<1)
/// This Power has a Static cooldown
#define BP_AM_STATIC_COOLDOWN (1<<2)
/// This Power doesn't cost bloot to run while unconscious
/// This Power doesn't cost blood to run while unconscious
#define BP_AM_COSTLESS_UNCONSCIOUS (1<<3)

/**
Expand All @@ -136,11 +132,12 @@
///Called when a new Vassal is successfully made: (datum/bloodsucker_datum)
#define BLOODSUCKER_MADE_VASSAL "bloodsucker_made_vassal"

///Called when a Bloodsucker exits Torpor.
#define BLOODSUCKER_EXIT_TORPOR "bloodsucker_exit_torpor"
///Called when a Bloodsucker reaches Final Death.
#define BLOODSUCKER_FINAL_DEATH "bloodsucker_final_death"

///Called when a Bloodsucker reaches low enough blood to trigger frenzy
#define BLOODSUCKER_TRIGGER_FRENZY "bloodsucker_trigger_frenzy"

#define COMSIG_BLOODSUCKER_BROKE_MASQUERADE "comsig_bloodsucker_broke_masquerade"

///Whether the Bloodsucker should not be dusted when arriving Final Death
Expand Down
2 changes: 0 additions & 2 deletions code/__DEFINES/role_preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
#define ROLE_LAVALAND "Lavaland"
#define ROLE_INTERNAL_AFFAIRS "Internal Affairs Agent"
#define ROLE_FUGITIVE "Fugitive"
#define ROLE_VAMPIRE "Vampire" // Yogs
#define ROLE_DARKSPAWN "Darkspawn" // Yogs
#define ROLE_HOLOPARASITE "Holoparasite" // Yogs
#define ROLE_HORROR "Eldritch Horror" // Yogs
Expand Down Expand Up @@ -83,7 +82,6 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_SERVANT_OF_RATVAR = /datum/antagonist/clockcult,

//Roundstart or Midround
ROLE_VAMPIRE = /datum/antagonist/vampire, // Yogs
ROLE_BLOODSUCKER = /datum/antagonist/bloodsucker,
ROLE_TRAITOR = /datum/antagonist/traitor,
ROLE_CHANGELING = /datum/antagonist/changeling,
Expand Down
2 changes: 0 additions & 2 deletions code/__DEFINES/status_effects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,6 @@

#define STATUS_EFFECT_PROGENITORCURSE /datum/status_effect/progenitor_curse

#define STATUS_EFFECT_MASQUERADE /datum/status_effect/masquerade

#define STATUS_EFFECT_EXPLOSION_PRIME /datum/status_effect/explosion_prime

/////////////
Expand Down
1 change: 0 additions & 1 deletion code/__DEFINES/traits/declarations.dm
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
#define TRAIT_BLOODY_MESS_LITE "bloody_mess_lite" //weak heparin, otherwise the same
#define TRAIT_NO_BLOOD_REGEN "no_blood_regen" //prevents regenerating blood
#define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat
#define TRAIT_MASQUERADE "masquerade" // Falsifies Health analyzer blood levels
#define TRAIT_NOCLONE "noclone" // No cloning
#define TRAIT_NODEFIB "nodefib" // No defibbing
#define TRAIT_COLDBLOODED "coldblooded" // Your body is literal room temperature. Does not make you immune to the temp
Expand Down
1 change: 0 additions & 1 deletion code/__DEFINES/{yogs_defines}/antagonists.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#define ANTAG_DATUM_VAMPIRE /datum/antagonist/vampire
#define ANTAG_DATUM_DARKSPAWN /datum/antagonist/darkspawn
#define ANTAG_DATUM_THRALL /datum/antagonist/thrall
#define ANTAG_DATUM_INFILTRATOR /datum/antagonist/infiltrator
Expand Down
5 changes: 0 additions & 5 deletions code/datums/components/mood.dm
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,9 @@
highest_absolute_mood = absmood

if(!conflicting_moodies.len && owner.mind) //no special icons- go to the normal icon states
var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.mind.has_antag_datum(/datum/antagonist/bloodsucker) //bloodsucker edit
if(sanity < 25)
screen_obj.icon_state = "mood_insane"
if(IS_BLOODSUCKER(owner) && bloodsuckerdatum.my_clan?.get_clan() == CLAN_TOREADOR)
screen_obj.add_overlay("teeth_insane")
else
if(IS_BLOODSUCKER(owner) && bloodsuckerdatum.my_clan?.get_clan() == CLAN_TOREADOR)
screen_obj.add_overlay("teeth[mood_level]")
screen_obj.icon_state = "mood[mood_level]"
screen_obj_sanity.icon_state = "sanity[sanity_level]"
return
Expand Down
184 changes: 0 additions & 184 deletions code/datums/mutations/olfaction.dm

This file was deleted.

32 changes: 16 additions & 16 deletions code/game/alternate_appearance.dm
Original file line number Diff line number Diff line change
Expand Up @@ -168,19 +168,19 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
seer = M
show_to(seer)

/datum/atom_hud/alternate_appearance/basic/scent_hunter

/datum/atom_hud/alternate_appearance/basic/scent_hunter/New()
..()
for(var/mob in GLOB.player_list)
if(mobShouldSee(mob))
show_to(mob)

/datum/atom_hud/alternate_appearance/basic/scent_hunter/mobShouldSee(mob/M)
if(isliving(M))
var/mob/living/L = M
if(L.has_status_effect(STATUS_EFFECT_SCENT_HUNTER) || L.has_status_effect(STATUS_EFFECT_BLOOD_HUNTER))
return TRUE
if(isobserver(M))
return TRUE
return FALSE
// /datum/atom_hud/alternate_appearance/basic/scent_hunter

// /datum/atom_hud/alternate_appearance/basic/scent_hunter/New()
// ..()
// for(var/mob in GLOB.player_list)
// if(mobShouldSee(mob))
// show_to(mob)

// /datum/atom_hud/alternate_appearance/basic/scent_hunter/mobShouldSee(mob/M)
// if(isliving(M))
// var/mob/living/L = M
// if(L.has_status_effect(STATUS_EFFECT_SCENT_HUNTER) || L.has_status_effect(STATUS_EFFECT_BLOOD_HUNTER))
// return TRUE
// if(isobserver(M))
// return TRUE
// return FALSE
3 changes: 1 addition & 2 deletions code/game/machinery/mindmachine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -496,8 +496,7 @@
/datum/antagonist/rev,
// Additional
/datum/antagonist/clockcult, // Same as bloodcult.
/datum/antagonist/bloodsucker,
/datum/antagonist/vampire
/datum/antagonist/bloodsucker
)
for(var/antag_datum in blacklisted_antag_datums)
if(firstOccupant.mind?.has_antag_datum(antag_datum) || secondOccupant.mind?.has_antag_datum(antag_datum))
Expand Down
4 changes: 1 addition & 3 deletions code/game/objects/items/devices/scanners.dm
Original file line number Diff line number Diff line change
Expand Up @@ -431,9 +431,7 @@ GENE SCANNER
blood_type = R.name
else
blood_type = blood_id
if(HAS_TRAIT(M, TRAIT_MASQUERADE)) //bloodsuckers
combined_msg += span_info("Blood level 100%, 560 cl, type: [blood_type]")
else if(C.blood_volume <= BLOOD_VOLUME_SAFE(C) && C.blood_volume > BLOOD_VOLUME_OKAY(C))
if(C.blood_volume <= BLOOD_VOLUME_SAFE(C) && C.blood_volume > BLOOD_VOLUME_OKAY(C))
combined_msg += "[span_danger("LOW blood level [blood_percent] %, [C.blood_volume] cl,")] [span_info("type: [blood_type]")]"
else if(C.blood_volume <= BLOOD_VOLUME_OKAY(C))
combined_msg += "[span_danger("CRITICAL blood level [blood_percent] %, [C.blood_volume] cl,")] [span_info("type: [blood_type]")]"
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/dna_injector.dm
Original file line number Diff line number Diff line change
Expand Up @@ -389,11 +389,11 @@

/obj/item/dnainjector/olfaction
name = "\improper DNA injector (Olfaction)"
add_mutations = list(OLFACTION)
//add_mutations = list(OLFACTION)

/obj/item/dnainjector/antiolfaction
name = "\improper DNA injector (Anti-Olfaction)"
remove_mutations = list(OLFACTION)
//remove_mutations = list(OLFACTION)

/obj/item/dnainjector/insulated
name = "\improper DNA injector (Insulated)"
Expand Down
1 change: 0 additions & 1 deletion code/modules/antagonists/_common/antag_datum.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ GLOBAL_LIST_EMPTY(antagonists)
var/prevent_roundtype_conversion = TRUE //If false, the roundtype will still convert with this antag active
var/datum/mind/owner //Mind that owns this datum
var/silent = FALSE //Silent will prevent the gain/lose texts to show
var/can_coexist_with_others = TRUE //Whether or not the person will be able to have more than one datum
var/list/typecache_datum_blacklist = list() //List of datums this type can't coexist with
var/job_rank
var/replace_banned = TRUE //Should replace jobbanned player with ghosts if granted.
Expand Down
Loading
Loading