Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
156 commits
Select commit Hold shift + click to select a range
4b6ebc5
Привет, меня завут Сакукикоуко
Saukykouko Mar 8, 2026
169cf10
мяу
Saukykouko Mar 8, 2026
584049e
111
Saukykouko Mar 8, 2026
f5a414d
байт на лайки
Saukykouko Mar 8, 2026
33c6748
апдейт
Saukykouko Mar 8, 2026
ef3f487
фикс
Saukykouko Mar 8, 2026
76e36da
Добавляем принца, бича, изменяем систему абилки gohome
Saukykouko Mar 10, 2026
05f079f
абонова
Saukykouko Mar 10, 2026
0d7600d
фикс
Saukykouko Mar 10, 2026
7390716
абнова худов
Saukykouko Mar 10, 2026
f1daaa1
обновка
Saukykouko Mar 10, 2026
9666056
добавление сола
Saukykouko Mar 10, 2026
c2a39db
хрюк
Saukykouko Mar 10, 2026
9aea5c0
добавляем PowerInfo
Saukykouko Mar 11, 2026
96bcfc2
Create AntagInfoGhoul.tsx
Saukykouko Mar 11, 2026
567f9c6
пробуем починить провалы тестов
Saukykouko Mar 11, 2026
4974da3
динамик и преференсы
Saukykouko Mar 11, 2026
38fba79
изменяем носферату
Saukykouko Mar 11, 2026
4b3aac1
пару фиксов
Saukykouko Mar 11, 2026
402a221
сара авампирцәа бзиа избеит, насгьы уамашәа иубаша ахәмарраҿы урҭ аус…
Saukykouko Mar 12, 2026
da52b34
извините
Saukykouko Mar 12, 2026
2315b8a
меня держат в заложниках и заставляют кодить какую-то хуйню которая н…
Saukykouko Mar 12, 2026
e3591bf
очень важное обновление для поддержания моей психики
Saukykouko Mar 13, 2026
07a66fb
Я ебнутый бегите
Saukykouko Mar 13, 2026
84031c8
пару изменений
Saukykouko Mar 14, 2026
00712ba
Update crafts.dm
Saukykouko Mar 14, 2026
1af384d
горы, альпы и холмы...
Saukykouko Mar 14, 2026
4fad566
чиним тгуи
Saukykouko Mar 14, 2026
02b4ab0
Больше обнов богу вампиров
Saukykouko Mar 14, 2026
d0a1a82
обнова
Saukykouko Mar 14, 2026
2e38b7c
Update datum_vampire.dm
Saukykouko Mar 14, 2026
4e986fc
абновы
Saukykouko Mar 14, 2026
e585fbe
Update bodybag.dm
Saukykouko Mar 14, 2026
132b1e3
Update monitor.dm
Saukykouko Mar 14, 2026
3a57d76
Update _targeted.dm
Saukykouko Mar 14, 2026
43d18bc
Update vampire.ts
Saukykouko Mar 14, 2026
852245d
фиксы
Saukykouko Mar 14, 2026
6d3ebf7
Update life_vampire.dm
Saukykouko Mar 14, 2026
82c01d5
Update datum_vampire.dm
Saukykouko Mar 14, 2026
c363334
Update life_vampire.dm
Saukykouko Mar 14, 2026
fdfe69b
Update life_vampire.dm
Saukykouko Mar 14, 2026
9098352
Update life_vampire.dm
Saukykouko Mar 14, 2026
2598306
Update life_vampire.dm
Saukykouko Mar 14, 2026
1078fd4
Update life_vampire.dm
Saukykouko Mar 14, 2026
8c2c015
Update life_vampire.dm
Saukykouko Mar 14, 2026
e8c00e4
а что если
Saukykouko Mar 14, 2026
e11b7ff
Update life_vampire.dm
Saukykouko Mar 14, 2026
20ed132
Update life_vampire.dm
Saukykouko Mar 14, 2026
a2b58c3
Update life_vampire.dm
Saukykouko Mar 14, 2026
e939586
Update life_vampire.dm
Saukykouko Mar 14, 2026
9d62b38
Update life_vampire.dm
Saukykouko Mar 14, 2026
bfab748
временно удаляем зонтики
Saukykouko Mar 14, 2026
38c540e
Update malkavian_revelations.json
Saukykouko Mar 14, 2026
9492048
абнова
Saukykouko Mar 15, 2026
d840a3b
gool
Saukykouko Mar 15, 2026
5a59368
нерф хейста, фикс блуддрейна, чиним шизу, делаем ауспекс чуть более п…
Saukykouko Mar 17, 2026
943fbb7
пару фиксов
Saukykouko Mar 17, 2026
9283418
Update misc_procs_vampire.dm
Saukykouko Mar 17, 2026
6c219e0
Update misc_procs_vampire.dm
Saukykouko Mar 17, 2026
03a914c
улучшаем присутствие
Saukykouko Mar 17, 2026
9a93671
добавляем зонтик, удаляем лишнее, МЕЗМЕРАЙЗ, МЕЗМЕРАЙЗ
Saukykouko Mar 17, 2026
1eae641
пробуем
Saukykouko Mar 17, 2026
9e1b04d
Update datum_vampire.dm
Saukykouko Mar 17, 2026
f9a046d
некоторые изменения
Saukykouko Mar 19, 2026
b9d755a
Update _clan.dm
Saukykouko Mar 19, 2026
9a97e74
Update _clan.dm
Saukykouko Mar 19, 2026
ee025c5
Update society.dm
Saukykouko Mar 19, 2026
9920baa
Update society.dm
Saukykouko Mar 19, 2026
217770b
Update society.dm
Saukykouko Mar 19, 2026
969d02d
фиксы и больше слов
Saukykouko Mar 19, 2026
e0d5c00
временно убираем получение принца
Saukykouko Mar 19, 2026
6693b15
Update datum_vampire.dm
Saukykouko Mar 19, 2026
8391384
Update society.dm
Saukykouko Mar 19, 2026
093c8c1
чиним урон, изменяем систему фортитуда, чиним второй уровень энтренс,…
Saukykouko Mar 22, 2026
e2fa9d5
oinkball
Saukykouko Mar 25, 2026
32a6c28
Update command.dm
Saukykouko Mar 25, 2026
4202969
Merge branch 'Fluffy-Frontier:master' into bloodsucker
Saukykouko Mar 25, 2026
9119f13
чиним для батча
Saukykouko Mar 25, 2026
0e3ad8d
Merge branch 'bloodsucker' of https://github.com/Saukykouko/FluffySTG…
Saukykouko Mar 25, 2026
4ed0ce1
чиним для батча
Saukykouko Mar 25, 2026
a6419b7
Update datum_vampire.dm
Saukykouko Mar 25, 2026
212f11d
Update command.dm
Saukykouko Mar 25, 2026
95b2aeb
Update command.dm
Saukykouko Mar 28, 2026
31cc869
чиним ошибку
Saukykouko Mar 29, 2026
f653da3
чиним смерть вселенной после смерти, улучшаем/бублим фортитуд, убирае…
Saukykouko Mar 31, 2026
06315b9
MM THATS SO GOOD
Saukykouko Apr 1, 2026
eb5b51e
не вампир
Saukykouko Apr 1, 2026
ab0d90c
мурмур
Saukykouko Apr 1, 2026
3f76b01
Update datum_vampire.dm
Saukykouko Apr 1, 2026
ea06a83
111
Saukykouko Apr 1, 2026
001b261
Update _clan.dm
Saukykouko Apr 1, 2026
3ba2041
Revert "Update _clan.dm"
Saukykouko Apr 1, 2026
d3fd688
Revert "111"
Saukykouko Apr 1, 2026
c2422f0
Revert "Update datum_vampire.dm"
Saukykouko Apr 1, 2026
efe0c78
Revert "мурмур"
Saukykouko Apr 1, 2026
b1dc8d6
Revert "не вампир"
Saukykouko Apr 1, 2026
e4334b9
Revert "MM THATS SO GOOD"
Saukykouko Apr 1, 2026
69fb9c7
Update dynamic.dm
Saukykouko Apr 2, 2026
185529b
обновляем всякое
Saukykouko Apr 2, 2026
9c741df
Update dynamic.dm
Saukykouko Apr 4, 2026
fec4a80
исправляем всякое
Saukykouko Apr 4, 2026
95206ed
очень важное обновление
Saukykouko Apr 5, 2026
1f8b4e8
Merge branch 'Fluffy-Frontier:master' into bloodsucker
Saukykouko Apr 5, 2026
ff145e8
возвращаем трон
Saukykouko Apr 5, 2026
f8c79bb
Merge branch 'Fluffy-Frontier:master' into bloodsucker
Saukykouko Apr 14, 2026
1fa51a1
пару изменений
Saukykouko Apr 14, 2026
66a1931
Update leveling_vampire.dm
Saukykouko Apr 14, 2026
4cfcf9b
Update datum_vampire.dm
Saukykouko Apr 15, 2026
8d82d2a
исправляем факшион рантаймы
Saukykouko Apr 15, 2026
77db098
не по тгшному
Saukykouko Apr 15, 2026
24c823a
исправления багов и ограничения рас
Saukykouko Apr 15, 2026
0e0536f
иконки
Saukykouko Apr 15, 2026
220d58b
Update datum_vampire.dm
Saukykouko Apr 16, 2026
9dae1dc
Revert "Update datum_vampire.dm"
Saukykouko Apr 16, 2026
e1d9f45
фикс спрайтов
Saukykouko Apr 16, 2026
b76c45c
обновление
Saukykouko Apr 16, 2026
8e8dd97
Update _atom.dm
Saukykouko Apr 16, 2026
5f5bbb7
Update _atom.dm
Saukykouko Apr 16, 2026
f64c6b1
Update closets.dm
Saukykouko Apr 16, 2026
6bc4c0c
Update datum_vampire.dm
Saukykouko Apr 16, 2026
580fdca
исправления модульных изменений
Saukykouko Apr 17, 2026
adde54b
исправления всякие
Saukykouko Apr 18, 2026
e62ad22
исправляем ошибки
Saukykouko Apr 18, 2026
707111c
исправление мусора и более модульные изменения
Saukykouko Apr 21, 2026
8c796e6
Модульные изменения
Saukykouko Apr 21, 2026
7457717
удаляем остатки зонтиков и уменьшаем шанс спауна отсосников
Saukykouko Apr 24, 2026
ef72977
кому ты нужен, вот ты, вампайр хантер гарб, кому ты нужен...
Saukykouko Apr 24, 2026
c742bd7
изменяем название дабы избежать мерджконфликтов
Saukykouko Apr 25, 2026
683f726
Очень маленькая чистка кода
Ruslanllll Apr 27, 2026
b215216
Merge remote-tracking branch 'origin/master' into bloodsucker
Ruslanllll Apr 27, 2026
d9f0bf3
Чистим дефайны, делаем некоторые правки баланса, даем подсказку по ис…
Saukykouko Apr 27, 2026
10ee947
исправление дефайна
Saukykouko Apr 27, 2026
15e96d4
добавляем антимагию
Saukykouko Apr 28, 2026
f7e5426
Update entrance.dm
Saukykouko Apr 29, 2026
6bbe9de
исправление мерджконфликта
Saukykouko Apr 29, 2026
be9c394
Merge branch 'Fluffy-Frontier:master' into bloodsucker
Saukykouko Apr 29, 2026
ce8b36e
пробуем исправлять худ
Saukykouko Apr 29, 2026
fbcb65f
Update datum_vampire.dm
Saukykouko Apr 29, 2026
9ba4ed5
Update hud.dm
Saukykouko Apr 29, 2026
613e0da
исправляем маскарад, некоторые правки баланса, исправление багов, изм…
Saukykouko Apr 29, 2026
d920de0
Update awe.dm
Saukykouko Apr 29, 2026
b12a365
еще пару правок
Saukykouko Apr 30, 2026
29570bf
еще чуть чуть
Saukykouko Apr 30, 2026
1efaf05
Update fortitude.dm
Saukykouko Apr 30, 2026
ca31521
Update malkavian_revelations.json
Saukykouko May 3, 2026
c826d2d
Update malkavian_revelations.json
Saukykouko May 3, 2026
9a5f611
делаем штуки
Saukykouko May 7, 2026
56ab674
временно удаляем принца
Saukykouko May 10, 2026
2e50620
Вампиризация
Saukykouko May 11, 2026
04721c8
убираем лишнее
Saukykouko May 11, 2026
4a305e9
ребалансы и больше пользы от человечности
Saukykouko May 14, 2026
c0d9b0e
исправления багов
Saukykouko May 14, 2026
5d706f6
обновление баланса и исправление ланга
Saukykouko May 15, 2026
ff18fcb
исправляем ошибку молодости
Saukykouko May 15, 2026
8968d0f
Update kindred.dm
Saukykouko May 15, 2026
a5f4ec8
Merge branch 'Fluffy-Frontier:master' into bloodsucker
Saukykouko May 15, 2026
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
239 changes: 239 additions & 0 deletions code/__DEFINES/~ff_defines/vampire.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,239 @@
/// Traits
/// Hides TRAIT_GENELESS if it's only from the same sources as TRAIT_FAKEGENES.
#define TRAIT_FAKEGENES "fakegenes"
/// The user is "vampire aligned" - i.e a vampire or vassal.
/// Basically just check for `HAS_MIND_TRAIT(user, TRAIT_VAMPIRE_ALIGNED)` instead of `IS_VAMPIRE(user) || IS_VASSAL(user)`
#define TRAIT_VAMPIRE_ALIGNED "vampire_aligned"
/// Falsifies Health analyzer blood levels
#define TRAIT_MASQUERADE "masquerade"
/// For people in the middle of being staked
#define TRAIT_BEINGSTAKED "beingstaked"
/// This vampire is currently in a frenzy,
#define TRAIT_FRENZY "frenzy"
/// This vampire is currently in torpor.
#define TRAIT_TORPOR "torpor"
/// This vampire can tell if another vampire has committed diablere on examine.
#define TRAIT_SEE_DIABLERIE "see_diablerie"

/// Sources
/// Source trait while Feeding
#define FEED_TRAIT "feed_trait"
/// Source trait for all vampire traits
#define TRAIT_VAMPIRE "trait_vampire"

/// Roles
#define ROLE_VAMPIRE "Vampire"
#define ROLE_VAMPIRIC_ACCIDENT "Vampiric Accident"
#define ROLE_VAMPIRE_LATEJOIN "Vampire LateJoin"

/// Do After
#define DOAFTER_SOURCE_PERSUASION_RACK "doafter_persuasion_rack"
#define DOAFTER_SOURCE_ARCHIVE_OF_THE_KINDRED "doafter_archive_of_the_kindred"

/// Log Category
#define LOG_CATEGORY_UPLINK_VAMPIRE "uplink-vampire"
/// Logging for vampire powers unlocked.
/proc/log_vampire_power(text, list/data)
logger.Log(LOG_CATEGORY_UPLINK_VAMPIRE, text, data)

/// Misc
#define CAT_VAMPIRE "Vampire"
#define FACTION_VAMPIRE "Vampire"
#define LANGUAGE_VAMPIRE "vampire"
#define LANGUAGE_VASSAL "vassal"
#define CLIENT_COLOR_SOURCE_VAMPIRE "client_color_source_vampire"
#define ui_team_finder "CENTER,CENTER"
#define BLOODSUCKER_RESTRICTED_SPECIES list( \
/datum/species/synthetic, \
/datum/species/plasmaman, \
/datum/species/shadow/nightmare, \
/datum/species/abductor, \
/datum/species/android, \
/datum/species/golem, \
/datum/species/shadow, \
/datum/species/skeleton, \
/datum/species/zombie, \
/datum/species/mutant, \
/datum/species/dullahan, \
/datum/species/hemophage, \
/datum/species/jelly/slime, \
/datum/species/jelly, \
/datum/species/ethereal, \
/datum/species/abductor/abductorweak \
)
/// Uncomment this to enable testing of Vampire features (such as vassalizing people with a mind instead of a client).
//#define VAMPIRE_TESTING
#if defined(VAMPIRE_TESTING) && defined(CIBUILDING)
#error VAMPIRE_TESTING is enabled, disable this!
#endif
#ifdef TESTING
#define VAMPIRE_TESTING
#endif

// Blood-level defines
/// Determines Vampire regeneration rate
#define BS_BLOOD_VOLUME_MAX_REGEN 700
/// Cost to torture someone halfway, in blood. Called twice for full cost
#define TORTURE_BLOOD_HALF_COST 8
/// Cost to convert someone after successful torture, in blood
#define TORTURE_CONVERSION_COST 50
/// Once blood is this low, will enter a Frenzy
#define FRENZY_THRESHOLD_ENTER 125
/// Once blood is this high, will exit the Frenzy. Intentionally high, we want to kill the person we feed off of
#define FRENZY_THRESHOLD_EXIT 500
/// How much blood drained from the vampire each lifetick
#define VAMPIRE_PASSIVE_BLOOD_DRAIN 0.1
/// The number that incoming levels are divided by when comitting the Amaranth. Example: 2 would divide the victims level by 2, and give that to the diablerist
#define DIABLERIE_DIVISOR 1.5
/// Amount of vitae drunk from another player required to level up.
#define VITAE_GOAL_STANDARD 200
/// When do we warn them about their low blood?
#define VAMPIRE_LOW_BLOOD_WARNING 300

/// Hud Defines
#define HUD_VAMPIRE_RANK "hud_vampire_rank"
#define HUD_VAMPIRE_BLOOD "hud_vampire_blood"
#define HUD_VAMPIRE_HUMANITY "hud_vampire_humanity"

/// Stats Defines
/// Default amount of damage the vampire's punch/kick damage increases with each level.
#define VAMPIRE_UNARMED_DMG_INCREASE_ON_RANKUP 1
/// How many starting levels do we want each one to have?
#define VAMPIRE_STARTING_LEVELS 3
/// How many free levels the vampire gets gradually.
#define VAMPIRE_FREE_LEVELS 3
/// Vampire's default stamina resist.
#define VAMPIRE_INHERENT_STAMINA_RESIST 0.5
/// Vampire's default brute resist.
#define VAMPIRE_INHERENT_DAMAGE_RESIST 0.75
/// Humanity defines
/// Default Humanity
#define VAMPIRE_DEFAULT_HUMANITY 7
// Masquerade ability given at this point or above
#define VAMPIRE_HUMANITY_MASQUERADE_POWER 7

/// Oozeling Defines, currently not used
/// Minimum blood required for vampires oozelings to auto-revive.
#define OOZELING_MIN_REVIVE_BLOOD_THRESHOLD (FRENZY_THRESHOLD_ENTER * 5)
/// How long it takes for an vampire oozeling to auto-revive, when left alone.
#define OOZELING_VAMPIRE_REVIVE_TIME (1.5 MINUTES)
/// How many times faster an oozeling vampire will revive if their core is being held by a non-vampire/non-ally.
#define OOZELING_VAMPIRE_REVIVE_HELD_MULTIPLIER 0.5
/// How many times faster an oozeling vampire will revive if their core is being held by an ally.
#define OOZELING_VAMPIRE_REVIVE_ALLY_MULTIPLIER 1.2
/// How many times faster an oozeling vampire will revive if their core is in a coffin.
#define OOZELING_VAMPIRE_REVIVE_COFFIN_MULTIPLIER 2.5

// vassal defines
/// If someone passes all checks and can be vassalized
#define VASSALIZATION_ALLOWED 0
/// If someone has to accept vassalization
#define VASSALIZATION_DISLOYAL 1
/// If someone is not allowed under any circimstances to become a vassal
#define VASSALIZATION_BANNED 2

// Humanity gains (The actual tracking lists and such are in the datum duh)
// These are supposed to be somewhat nontrivial, to the point of sometimes not being viable.
/// Hugging of separate people
#define HUMANITY_HUGGING_TYPE "hug"
/// Petting of separate animals
#define HUMANITY_PETTING_TYPE "pet"
/// Watching of art
#define HUMANITY_ART_TYPE "art"
#define HUMANITY_GAIN_TYPES list(HUMANITY_HUGGING_TYPE, HUMANITY_PETTING_TYPE, HUMANITY_ART_TYPE)

// Cooldown defines
// Used to prevent spamming vampires
/// Spam prevention for healing messages.
#define VAMPIRE_SPAM_HEALING 15 SECONDS
/// Spam prevention for Sol Masquerade messages.
#define VAMPIRE_SPAM_MASQUERADE 60 SECONDS
/// Spam prevention for Sol messages.
#define VAMPIRE_SPAM_SOL 30 SECONDS

// Clan defines
#define CLAN_BRUJAH "Brujah Clan"
#define CLAN_TOREADOR "Toreador Clan"
#define CLAN_NOSFERATU "Nosferatu Clan"
#define CLAN_TREMERE "Tremere Clan"
#define CLAN_GANGREL "Gangrel Clan"
#define CLAN_VENTRUE "Ventrue Clan"
#define CLAN_MALKAVIAN "Malkavian Clan"
#define CLAN_TZIMISCE "Tzimisce Clan"
#define CLAN_HECATA "Hecata Clan"
#define CLAN_LASOMBRA "Lasombra Clan"

/// This area can always be claimed as a vampire lair regardless of Z-level and such
#define ALWAYS_VALID_VAMPIRE_LAIR (1<<21)

/// This is a Default Power that all Vampires get.
#define VAMPIRE_DEFAULT_POWER (1<<1)

// Power defines
/// This Power can't be used in Torpor
#define BP_CANT_USE_IN_TORPOR (1<<0)
/// This Power can't be used in Frenzy.
#define BP_CANT_USE_IN_FRENZY (1<<1)
/// This Power can't be used with a stake in you
#define BP_CANT_USE_WHILE_STAKED (1<<2)
/// This Power can't be used while incapacitated
#define BP_CANT_USE_WHILE_INCAPACITATED (1<<3)
/// This Power can't be used while unconscious
#define BP_CANT_USE_WHILE_UNCONSCIOUS (1<<4)
/// This Power is a Toggled Power
#define BP_AM_TOGGLE (1<<0)
/// This Power is a Single-Use Power
#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
#define BP_AM_COSTLESS_UNCONSCIOUS (1<<3)
/// This Power has a cooldown that is more dynamic than a typical power
#define BP_AM_VERY_DYNAMIC_COOLDOWN (1<<4)

// Clan defines
/// Drinks blood the normal Vampire way.
#define VAMPIRE_DRINK_NORMAL "vampire_drink_normal"
/// Drinks blood but is snobby, refusing to drink from mindless
#define VAMPIRE_DRINK_SNOBBY "vampire_drink_snobby"

// movable physics component flags
#define MOVABLE_PHYSICS_PRECISION 0.01
#define MOVABLE_PHYSICS_MINIMAL_VELOCITY 1
/// Remove the component as soon as there's zero velocity, useful for movables that will no longer move after being initially moved (blood splatters)
#define MPHYSICS_QDEL_WHEN_NO_MOVEMENT (1<<0)
/// Movement has started, don't call start_movement() again
#define MPHYSICS_MOVING (1<<1)
/// The component has been "paused" and will not process
#define MPHYSICS_PAUSED (1<<2)

/// Checks if the given mob is a vampire
#define IS_VAMPIRE(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/vampire))
/// Checks if the given mob is a vassal
#define IS_VASSAL(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/vassal))
/// Checks if the given mob is a curator
#define IS_CURATOR(mob) istype(mob?.mind?.assigned_role, /datum/job/curator)
/// Checks if the given mos is a chaplain
#define IS_CHAPLAIN(mob) istype(mob?.mind?.assigned_role, /datum/job/chaplain)

/// Span Awe
#define span_awe(str) ("<span class='awe'>" + str + "</span>")

// Vampire Signals
///Called when a Vampire reaches Final Death.
#define COMSIG_VAMPIRE_FINAL_DEATH "vampire_final_death"
///Whether the vampire should not be dusted when arriving Final Death
#define DONT_DUST (1<<0)
#define COMSIG_LIVING_TRACKER_REMOVED "tracker_removed"
/// From base of /mob/living/simple_animal/attack_hand() and /mob/living/basic/attack_hand() when petting (non-combat): (mob/living/pet)
#define COMSIG_LIVING_PET_ANIMAL "living_pet_animal"
/// From base of /datum/element/art when appraising art: (atom/art_piece)
#define COMSIG_LIVING_APPRAISE_ART "living_appraise_art"
/// Called when a Vampire breaks the Masquerade
#define COMSIG_VAMPIRE_BROKE_MASQUERADE "comsig_vampire_broke_masquerade"
/// Sent whenever vampires get a "natural" rank up.
#define COMSIG_SOL_RANKUP_VAMPIRES "sol_rankup_vampires"
/// Sent when tracking humanity gain progress: (type, subject)
#define COMSIG_VAMPIRE_TRACK_HUMANITY_GAIN "comsig_vampire_track_humanity_gain"
/// Called on the mind when a Vampire chooses a clan: (datum/antagonist/vampire, datum/vampire_clan)
#define COMSIG_VAMPIRE_CLAN_CHOSEN "vampire_clan_chosen"
1 change: 1 addition & 0 deletions code/_globalvars/lists/crafting.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ GLOBAL_LIST_INIT(crafting_category, list(
CAT_ENTERTAINMENT,
CAT_TOOLS,
CAT_CULT,
CAT_VAMPIRE, // TFF ADDITION
))
2 changes: 2 additions & 0 deletions code/_globalvars/~ff_globalvars/lists/mobs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
GLOBAL_LIST_EMPTY(all_vampires)
GLOBAL_LIST_EMPTY(masquerade_breakers)
4 changes: 2 additions & 2 deletions code/controllers/subsystem/polling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,10 @@ SUBSYSTEM_DEF(polling)
if(!candidate_mob.client)
continue
// Universal opt-out for all players.
if(!candidate_mob.client.prefs.read_preference(/datum/preference/toggle/ghost_roles))
if(!candidate_mob.client?.prefs?.read_preference(/datum/preference/toggle/ghost_roles) || HAS_TRAIT(candidate_mob, TRAIT_NO_OBSERVE)) // TFF EDIT - ORIGINAL: if(!candidate_mob.client.prefs.read_preference(/datum/preference/toggle/ghost_roles))
continue
// Opt-out for admins whom are currently adminned.
if((!candidate_mob.client.prefs.read_preference(/datum/preference/toggle/ghost_roles_as_admin)) && candidate_mob.client.holder)
if((!candidate_mob.client?.prefs?.read_preference(/datum/preference/toggle/ghost_roles_as_admin)) && candidate_mob.client?.holder) // TFF EDIT - ORIGINAL: if((!candidate_mob.client.prefs.read_preference(/datum/preference/toggle/ghost_roles_as_admin)) && candidate_mob.client.holder)
continue
if(!is_eligible(candidate_mob, role, check_jobban, ignore_category))
continue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@
render_list += "<span class='info ml-1'>Subject Minor Disabilities: [carbontarget.get_quirk_string(FALSE, CAT_QUIRK_MINOR_DISABILITY, TRUE)].</span><br>"

// NOVA EDIT ADDITION START -- Show increased/decreased brute/burn mods, to "leave a paper trail" for the fragility quirk
if(ishuman(target))
if(ishuman(target) && !IS_VAMPIRE(target)) // TFF EDIT - ORIGINAL: if(ishuman(target))
var/mob/living/carbon/human/humantarget = target

var/datum/physiology/physiology = humantarget.physiology
Expand Down
10 changes: 9 additions & 1 deletion code/game/objects/items/devices/scanners/sequence_scanner.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,17 @@
add_fingerprint(user)

//no scanning if its a husk or DNA-less Species
if (!HAS_TRAIT(interacting_with, TRAIT_GENELESS) && !HAS_TRAIT(interacting_with, TRAIT_BADDNA))
if ((!HAS_TRAIT(interacting_with, TRAIT_GENELESS) || HAS_TRAIT(interacting_with, TRAIT_FAKEGENES)) && !HAS_TRAIT(interacting_with, TRAIT_BADDNA)) // TFF EDIT, ORIGINAL: if (!HAS_TRAIT(interacting_with, TRAIT_GENELESS) && !HAS_TRAIT(interacting_with, TRAIT_BADDNA))
user.visible_message(span_notice("[user] analyzes [interacting_with]'s genetic sequence."))
// TFF EDIT START - ORIGINAL:
/*
balloon_alert(user, "sequence analyzed")
*/
if(!do_after(user, 3 SECONDS, interacting_with))
balloon_alert(user, "scan_failed!")
user.visible_message(span_warning("[user] fails to scan [interacting_with]'s genetic makeup."))
return ITEM_INTERACT_BLOCKING
// TFF EDIT END
playsound(user, 'sound/items/healthanalyzer.ogg', 50) // close enough
gene_scan(interacting_with, user)
return ITEM_INTERACT_SUCCESS
Expand Down
3 changes: 3 additions & 0 deletions code/modules/admin/sql_ban_system.dm
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,9 @@
ROLE_BORER,
ROLE_ASSAULT_OPERATIVE,
// NOVA EDIT ADDITION END
// FLUFFY FRONTIER ADDITION START
ROLE_VAMPIRE,
// FLUFFY FRONTIER ADDITION END
),
// NOVA EDIT ADDITION START - EXTRA_BANS
"Nova Ban Options" = list(
Expand Down
5 changes: 4 additions & 1 deletion code/modules/antagonists/cult/blood_magic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,10 @@
animate(target, color = old_color, time = 1 SECONDS, easing = EASE_IN)
return ..()
// NOVA EDIT ADDITION END

// TFF ADDITION START
else if(IS_VAMPIRE(target))
effect_vampire()
// TFF ADDITION END
if(target.can_block_magic())
to_chat(user, span_warning("The spell had no effect!"))
return ..()
Expand Down
6 changes: 5 additions & 1 deletion code/modules/antagonists/heretic/influences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,11 @@
. += span_hypnophrase(pick_list(HERETIC_INFLUENCE_FILE, "examine"))
if(IS_HERETIC(user) || !ishuman(user))
return

// TFF ADDITION START
var/datum/antagonist/vampire/vampire_datum = IS_VAMPIRE(user)
if(istype(vampire_datum?.my_clan, /datum/vampire_clan/malkavian))
return
// TFF ADDITION END
. += span_userdanger("Your mind burns as you stare at the tear!")
user.adjust_organ_loss(ORGAN_SLOT_BRAIN, 10, 190)
user.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus)
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/basic/basic_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
)
to_chat(user, span_notice("You [response_help_simple] [src]."))
playsound(loc, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
SEND_SIGNAL(user, COMSIG_LIVING_PET_ANIMAL, src) // TFF ADDITION START
return TRUE

if(HAS_TRAIT(user, TRAIT_PACIFISM))
Expand Down Expand Up @@ -73,6 +74,7 @@
span_notice("[user.name] [response_help_continuous] you."), null, COMBAT_MESSAGE_RANGE, user)
to_chat(user, span_notice("You [response_help_simple] [src]."))
playsound(loc, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
SEND_SIGNAL(user, COMSIG_LIVING_PET_ANIMAL, src)


/mob/living/basic/attack_alien(mob/living/carbon/alien/adult/user, list/modifiers)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,10 @@
linked_alert.icon_state = "slime_bluespace_on"

if(healthcheck && (healthcheck - owner.health) > 5)
// TFF ADDITION START
if(HAS_TRAIT(owner, TRAIT_FAKEDEATH) && owner.health > owner.crit_threshold)
return ..()
// TFF ADDITION END
owner.visible_message(span_warning("[linked_extract] notices the sudden change in [owner]'s physical health, and activates!"))
do_sparks(5,FALSE,owner)
var/turf/emergency_turf = find_safe_turf(owner.z, extended_safety_checks = TRUE)
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions config/dynamic.toml
Original file line number Diff line number Diff line change
Expand Up @@ -699,3 +699,31 @@ min_antag_cap = 0
repeatable_weight_decrease = 2
repeatable = 0
minimum_required_age = 0

["Vampire"]
weight = 8
min_pop = 15
blacklisted_roles = []
min_antag_cap = 1
max_antag_cap.denominator = 24
minimum_required_age = 0

["Vampiric Accident"]
weight = 8
min_pop = 15
blacklisted_roles = []
min_antag_cap = 1
max_antag_cap.denominator = 24
repeatable_weight_decrease = 2
repeatable = 1
minimum_required_age = 0

["Vampire LateJoin]
weight = 10
min_pop = 15
blacklisted_roles = []
repeatable_weight_decrease = 2
repeatable = 1
minimum_required_age = 0
min_antag_cap = 1
max_antag_cap.denominator = 24
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@
// Жертва будет уязвима к урону в течение 5 минут
if(!victim.has_status_effect(/datum/status_effect/vulnerable_to_damage))
victim.apply_status_effect(/datum/status_effect/vulnerable_to_damage)
if(!victim.has_status_effect(/datum/status_effect/feed_marked) && !victim.has_status_effect(/datum/status_effect/feed_marked/fake))
victim.apply_status_effect(/datum/status_effect/feed_marked/fake)
// FLUFFY FRONTIER EDIT ADDITION END

#undef HEMOPHAGE_DRAIN_AMOUNT
Expand Down
Loading
Loading