From a48ff4fb08ce3046b4fade89e0f77dfc8e09fafc Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Thu, 11 Aug 2022 13:34:55 +0300 Subject: [PATCH 01/23] e --- code/__DEFINES/atom_hud.dm | 3 + code/__DEFINES/bloodsuckers.dm | 74 ++ code/__DEFINES/melee.dm | 2 + code/__DEFINES/misc.dm | 9 + code/__DEFINES/role_preferences.dm | 6 + code/__DEFINES/status_effects.dm | 4 + code/__DEFINES/traits.dm | 8 + code/_onclick/hud/hud.dm | 4 + code/_onclick/hud/human.dm | 33 + code/datums/hud.dm | 4 +- code/datums/martial/hunterfu.dm | 215 +++++ code/datums/mind.dm | 1 + .../dynamic/dynamic_rulesets_latejoin.dm | 39 + .../dynamic/dynamic_rulesets_midround.dm | 48 ++ .../dynamic/dynamic_rulesets_roundstart.dm | 43 + code/game/gamemodes/objective.dm | 12 + code/game/objects/items/devices/scanners.dm | 4 +- .../items/implants/implant_mindshield.dm | 11 + .../items/stacks/sheets/sheet_types.dm | 31 + code/modules/admin/antag_panel.dm | 1 + code/modules/admin/sql_ban_system.dm | 2 + .../antagonists/_common/antag_datum.dm | 3 + .../bloodsuckers/bloodsucker_daylight.dm | 193 +++++ .../bloodsuckers/bloodsucker_flaws.dm | 53 ++ .../bloodsuckers/bloodsucker_frenzy.dm | 99 +++ .../bloodsuckers/bloodsucker_integration.dm | 158 ++++ .../bloodsuckers/bloodsucker_objectives.dm | 386 +++++++++ .../antagonists/bloodsuckers/bloodsuckers.dm | 816 ++++++++++++++++++ .../bloodsuckers/bloodsuckers_objects.dm | 362 ++++++++ .../bloodsuckers/powers/_powers.dm | 216 +++++ .../antagonists/bloodsuckers/powers/cloak.dm | 66 ++ .../bloodsuckers/powers/distress.dm | 22 + .../antagonists/bloodsuckers/powers/feed.dm | 352 ++++++++ 33 files changed, 3278 insertions(+), 2 deletions(-) create mode 100644 code/__DEFINES/bloodsuckers.dm create mode 100644 code/datums/martial/hunterfu.dm create mode 100644 code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm create mode 100644 code/modules/antagonists/bloodsuckers/bloodsucker_flaws.dm create mode 100644 code/modules/antagonists/bloodsuckers/bloodsucker_frenzy.dm create mode 100644 code/modules/antagonists/bloodsuckers/bloodsucker_integration.dm create mode 100644 code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm create mode 100644 code/modules/antagonists/bloodsuckers/bloodsuckers.dm create mode 100644 code/modules/antagonists/bloodsuckers/bloodsuckers_objects.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/_powers.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/cloak.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/distress.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/feed.dm diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 8b7cc2a0849..014d35c2a39 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -86,6 +86,9 @@ #define ANTAG_HUD_SPACECOP 25 #define ANTAG_HUD_HERETIC 26 +#define ANTAG_HUD_BLOODSUCKER 27 +#define ANTAG_HUD_MHUNTER 28 + // Notification action types #define NOTIFY_JUMP "jump" #define NOTIFY_ATTACK "attack" diff --git a/code/__DEFINES/bloodsuckers.dm b/code/__DEFINES/bloodsuckers.dm new file mode 100644 index 00000000000..dd59e5aa81b --- /dev/null +++ b/code/__DEFINES/bloodsuckers.dm @@ -0,0 +1,74 @@ +/** + * Bloodsucker defines + */ +#define IS_BLOODSUCKER(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/bloodsucker)) +#define IS_VASSAL(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/vassal)) +#define IS_MONSTERHUNTER(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/monsterhunter)) + +/// Determines Bloodsucker regeneration rate +#define BS_BLOOD_VOLUME_MAX_REGEN 700 +/// Cost to torture someone, in blood +#define TORTURE_BLOOD_COST "15" +/// Cost to convert someone after successful torture, in blood +#define TORTURE_CONVERSION_COST "50" +/// Deals with constant processes off of LifeTick() +#define COMSIG_LIVING_BIOLOGICAL_LIFE "biological_life" +/// Once blood is this low, will enter Frenzy +#define FRENZY_THRESHOLD_ENTER 25 +/// Once blood is this high, will exit Frenzy +#define FRENZY_THRESHOLD_EXIT 250 +/// You have special interactions with Bloodsuckers +#define TRAIT_BLOODSUCKER_HUNTER "bloodsucker_hunter" + +/** + * Cooldown defines + * Used in Cooldowns Bloodsuckers use to prevent spamming + */ +///Spam prevention for healing messages. +#define BLOODSUCKER_SPAM_HEALING (15 SECONDS) +///Span prevention for Sol messages. +#define BLOODSUCKER_SPAM_SOL (30 SECONDS) + +/** + * Clan defines + */ +#define CLAN_BRUJAH "Brujah Clan" +#define CLAN_NOSFERATU "Nosferatu Clan" +#define CLAN_TREMERE "Tremere Clan" +#define CLAN_VENTRUE "Ventrue Clan" +#define CLAN_MALKAVIAN "Malkavian Clan" +#define CLAN_TOREADOR "Toreador Clan" +#define CLAN_GANGREL "Gangrel Clan" +#define CLAN_LASOMBRA "Lasombra Clan" + +/** + * 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 unless you're part of Brujah +#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 can be purchased by Bloodsuckers +#define BLOODSUCKER_CAN_BUY (1<<0) +/// This Power can be purchased by Tremere Bloodsuckers +#define TREMERE_CAN_BUY (1<<1) +/// This Power can be purchased by Vassals +#define VASSAL_CAN_BUY (1<<2) +/// This Power can be purchased by Monster Hunters +#define HUNTER_CAN_BUY (1<<3) + +/// 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) diff --git a/code/__DEFINES/melee.dm b/code/__DEFINES/melee.dm index 916ad824052..84d3328d077 100644 --- a/code/__DEFINES/melee.dm +++ b/code/__DEFINES/melee.dm @@ -8,3 +8,5 @@ #define MARTIALART_KRAVMAGA "krav maga" #define MARTIALART_CQC "CQC" #define MARTIALART_PLASMAFIST "plasma fist" +#define MARTIALART_HUNTERFU "hunterfu" +#define MARTIALART_FRENZYGRAB "frenzy grabbing" diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 9b17e6ffb44..c125ada03a8 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -547,3 +547,12 @@ GLOBAL_LIST_INIT(pda_styles, sort_list(list(MONO, VT, ORBITRON, SHARE))) /// Emoji icon set #define EMOJI_SET 'icons/emoji.dmi' + +/// Whether we have succesfully hidden out blood level +#define BLOODSUCKER_HIDE_BLOOD "hide_blood_volume" +/// 1 tile down +#define ui_blood_display "WEST:6,CENTER-1:0" +/// 2 tiles down +#define ui_vamprank_display "WEST:6,CENTER-2:-5" +/// 6 pixels to the right, zero tiles & 5 pixels DOWN. +#define ui_sunlight_display "WEST:6,CENTER-0:0" diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index e1344c904cb..ef5acbad4dd 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -40,6 +40,10 @@ #define ROLE_LAVALAND "Lavaland" #define ROLE_INTERNAL_AFFAIRS "Internal Affairs Agent" #define ROLE_FAMILIES "Familes Antagonists" +#define ROLE_BLOODSUCKER "Bloodsucker" +#define ROLE_VAMPIRICACCIDENT "Vampiric Accident" +#define ROLE_BLOODSUCKERBREAKOUT "Bloodsucker Breakout" +#define ROLE_MONSTERHUNTER "Monster Hunter" #define ROLE_POSITRONIC_BRAIN "Positronic Brain" #define ROLE_FREE_GOLEM "Free Golem" @@ -106,6 +110,8 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_SENTIENCE = 0, ROLE_FAMILIES = 0, ROLE_HERETIC = 0, + ROLE_BLOODSUCKER = 0, + ROLE_MONSTERHUNTER = 0, )) //Job defines for what happens when you fail to qualify for any job during job selection diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index c4152a4e130..d120ee5b2bc 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -39,6 +39,8 @@ #define STATUS_EFFECT_DETERMINED /datum/status_effect/determined //currently in a combat high from being seriously wounded +#define STATUS_EFFECT_FRENZY /datum/status_effect/frenzy //Makes you fast and stronger + #define STATUS_EFFECT_LIGHTNINGORB /datum/status_effect/lightningorb //Speed from a lightning orb! #define STATUS_EFFECT_MAYHEM /datum/status_effect/mayhem //Total bloodbath. Activated by orb of mayhem pickup/bottle of mayhem item. @@ -141,6 +143,8 @@ #define STATUS_EFFECT_STONED /datum/status_effect/stoned +#define STATUS_EFFECT_MASQUERADE /datum/status_effect/masquerade + ///////////// // SLIME // ///////////// diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index d83c5d41cce..5756fb0fe3a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -310,6 +310,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_BLOODY_MESS "bloody_mess" /// from coagulant reagents, this doesn't affect the bleeding itself but does affect the bleed warning messages #define TRAIT_COAGULATING "coagulating" +// Your heart doesn't beat +#define TRAIT_NOPULSE "nopulse" +// Falsifies Health analyzer blood levels +#define TRAIT_MASQUERADE "masquerade" +// Your body is literal room temperature. Does not make you immune to the temp +#define TRAIT_COLDBLOODED "coldblooded" /// From anti-convulsant medication against seizures. #define TRAIT_ANTICONVULSANT "anticonvulsant" /// The holder of this trait has antennae or whatever that hurt a ton when noogied @@ -631,6 +637,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define NINJA_SUIT_TRAIT "ninja-suit" #define SLEEPING_CARP_TRAIT "sleeping_carp" #define MADE_UNCLONEABLE "made-uncloneable" +#define BLOODSUCKER_TRAIT "bloodsucker_trait" +#define FRENZY_TRAIT "frenzy_trait" #define TIMESTOP_TRAIT "timestop" #define LIFECANDLE_TRAIT "lifecandle" #define VENTCRAWLING_TRAIT "ventcrawling" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 128f8d238ae..a4a034258fa 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -29,6 +29,10 @@ GLOBAL_LIST_INIT(available_ui_styles, list( var/atom/movable/screen/ling/chems/lingchemdisplay var/atom/movable/screen/ling/sting/lingstingdisplay + var/atom/movable/screen/bloodsucker/blood_counter/blood_display + var/atom/movable/screen/bloodsucker/rank_counter/vamprank_display + var/atom/movable/screen/bloodsucker/sunlight_counter/sunlight_display + var/atom/movable/screen/blobpwrdisplay var/atom/movable/screen/alien_plasma_display diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 363c99989c1..46ab7817e62 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -52,6 +52,31 @@ icon_state = "power_display" screen_loc = ui_lingchemdisplay +/atom/movable/screen/bloodsucker + icon = 'icons/mob/actions/actions_bloodsucker.dmi' + invisibility = INVISIBILITY_ABSTRACT + +/atom/movable/screen/bloodsucker/proc/clear() + invisibility = INVISIBILITY_ABSTRACT + +/atom/movable/screen/bloodsucker/proc/update_counter() + invisibility = 0 + +/atom/movable/screen/bloodsucker/blood_counter + name = "Blood Consumed" + icon_state = "blood_display" + screen_loc = ui_blood_display + +/atom/movable/screen/bloodsucker/rank_counter + name = "Bloodsucker Rank" + icon_state = "rank" + screen_loc = ui_vamprank_display + +/atom/movable/screen/bloodsucker/sunlight_counter + name = "Solar Flare Timer" + icon_state = "sunlight_night" + screen_loc = ui_sunlight_display + /datum/hud/human/New(mob/living/carbon/human/owner) ..() @@ -306,6 +331,14 @@ lingstingdisplay.hud = src infodisplay += lingstingdisplay + //bloodsuckers + blood_display = new /atom/movable/screen/bloodsucker/blood_counter + infodisplay += blood_display + vamprank_display = new /atom/movable/screen/bloodsucker/rank_counter + infodisplay += vamprank_display + sunlight_display = new /atom/movable/screen/bloodsucker/sunlight_counter + infodisplay += sunlight_display + zone_select = new /atom/movable/screen/zone_sel() zone_select.icon = ui_style zone_select.hud = src diff --git a/code/datums/hud.dm b/code/datums/hud.dm index e62a4279380..5eabf67a0cf 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -29,7 +29,9 @@ GLOBAL_LIST_INIT(huds, list( ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag(), ANTAG_HUD_GANGSTER = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_SPACECOP = new/datum/atom_hud/antag(), - ANTAG_HUD_HERETIC = new/datum/atom_hud/antag/hidden() + ANTAG_HUD_HERETIC = new/datum/atom_hud/antag/hidden(), + ANTAG_HUD_BLOODSUCKER = new/datum/atom_hud/antag(), + ANTAG_HUD_MHUNTER = new/datum/atom_hud/antag/hidden() )) /datum/atom_hud diff --git a/code/datums/martial/hunterfu.dm b/code/datums/martial/hunterfu.dm new file mode 100644 index 00000000000..713ff88fa93 --- /dev/null +++ b/code/datums/martial/hunterfu.dm @@ -0,0 +1,215 @@ +#define BODYSLAM_COMBO "GH" +#define STAKESTAB_COMBO "HH" +#define NECKSNAP_COMBO "GDH" +#define HOLYKICK_COMBO "DG" + +// From CQC.dm +/datum/martial_art/hunterfu + name = "Hunter-Fu" + id = MARTIALART_HUNTERFU + help_verb = /mob/living/carbon/human/proc/hunterfu_help + block_chance = 60 + allow_temp_override = TRUE + var/old_grab_state = null + +/datum/martial_art/hunterfu/proc/check_streak(mob/living/user, mob/living/target) + if(findtext(streak, BODYSLAM_COMBO)) + streak = "" + body_slam(user, target) + return TRUE + if(findtext(streak, STAKESTAB_COMBO)) + streak = "" + stake_stab(user, target) + return TRUE + if(findtext(streak, NECKSNAP_COMBO)) + streak = "" + neck_snap(user, target) + return TRUE + if(findtext(streak, HOLYKICK_COMBO)) + streak = "" + holy_kick(user, target) + return TRUE + return FALSE + +/datum/martial_art/hunterfu/proc/body_slam(mob/living/user, mob/living/target) + if(target.mobility_flags & MOBILITY_STAND) + target.visible_message( + span_danger("[user] slams both them and [target] into the ground!"), + span_userdanger("You're slammed into the ground by [user]!"), + span_hear("You hear a sickening sound of flesh hitting flesh!"), + ) + to_chat(user, span_danger("You slam [target] into the ground!")) + playsound(get_turf(user), 'sound/weapons/slam.ogg', 50, TRUE, -1) + log_combat(user, target, "bodyslammed (Hunter-Fu)") + if(!target.mind) + target.Paralyze(40) + user.Paralyze(25) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(target, span_cultlarge("Our DNA shakes as we are body slammed!")) + target.apply_damage(15, BRUTE) + target.Paralyze(60) + user.Paralyze(25) + return TRUE + else + target.Paralyze(40) + user.Paralyze(25) + else + harm_act(user, target) + return TRUE + +/datum/martial_art/hunterfu/proc/stake_stab(mob/living/user, mob/living/target) + target.visible_message( + span_danger("[user] stabs [target] in the heart!"), + span_userdanger("You're staked in the heart by [user]!"), + span_hear("You hear a sickening sound of flesh hitting flesh!"), + ) + to_chat(user, span_danger("You stab [target] viciously!")) + playsound(get_turf(user), 'sound/weapons/bladeslice.ogg', 50, TRUE, -1) + log_combat(user, target, "stakestabbed (Hunter-Fu)") + if(!target.mind) + target.apply_damage(15, BRUTE, BODY_ZONE_CHEST) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(target, span_danger("Their arm tears through our monstrous form!")) + target.apply_damage(25, BRUTE, BODY_ZONE_CHEST) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/bloodsucker)) + to_chat(target, span_cultlarge("Their arm stakes straight into our undead flesh!")) + target.apply_damage(20, BURN) + target.apply_damage(10, BRUTE, BODY_ZONE_CHEST) + return TRUE + else + target.apply_damage(15, BRUTE, BODY_ZONE_CHEST) + return TRUE + +/datum/martial_art/hunterfu/proc/neck_snap(mob/living/user, mob/living/target) + if(!target.stat) + target.visible_message( + span_danger("[user] snapped [target]'s neck!"), + span_userdanger("Your neck is snapped by [user]!"), + span_hear("You hear a snap!"), + ) + to_chat(user, span_danger("You snap [target]'s neck!")) + playsound(get_turf(user), 'sound/effects/snap.ogg', 50, TRUE, -1) + log_combat(user, target, "neck snapped (Hunter-Fu)") + if(!target.mind) + target.SetSleeping(30) + playsound(get_turf(user), 'sound/effects/snap.ogg', 50, TRUE, -1) + log_combat(user, target, "neck snapped (Hunter-Fu)") + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(target, span_warning("Our monstrous form protects us from being put to sleep!")) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/heretic)) + to_chat(target, span_cultlarge("The power of the Codex Cicatrix flares as we are swiftly put to sleep!")) + target.apply_damage(15, BRUTE, BODY_ZONE_HEAD) + target.SetSleeping(40) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/bloodsucker)) + to_chat(target, span_warning("Our undead form protects us from being put to sleep!")) + return TRUE + else + target.SetSleeping(30) + return TRUE + +/datum/martial_art/hunterfu/proc/holy_kick(mob/living/user, mob/living/target) + target.visible_message( + span_warning("[user] kicks [target], splashing holy water in every direction!"), + span_userdanger("You're kicked by [user], with holy water dripping down on you!"), + span_hear("You hear a sickening sound of flesh hitting flesh!"), + ) + to_chat(user, span_danger("You holy kick [target]!")) + playsound(get_turf(user), 'sound/weapons/slash.ogg', 50, TRUE, -1) + log_combat(user, target, "holy kicked (Hunter-Fu)") + if(!target.mind) + target.apply_damage(60, STAMINA) + target.Paralyze(20) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/heretic)) + to_chat(target, span_cultlarge("The holy water burns our flesh!")) + target.apply_damage(25, BURN) + target.apply_damage(60, STAMINA) + target.Paralyze(20) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/bloodsucker)) + to_chat(target, span_warning("This just seems like regular water...")) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/cult)) + for(var/datum/action/innate/cult/blood_magic/BD in target.actions) + to_chat(target, span_cultlarge("Our blood rites falter as the holy water drips onto our body!")) + for(var/datum/action/innate/cult/blood_spell/BS in BD.spells) + qdel(BS) + target.apply_damage(60, STAMINA) + target.Paralyze(20) + return TRUE + if(target.mind.has_antag_datum(/datum/antagonist/wizard) || (/datum/antagonist/wizard/apprentice)) + to_chat(target, span_danger("The holy water seems to be muting us somehow!")) + var/mob/living/carbon/human/human_target = target // I guess monkey wizards aren't getting affected. + if(human_target.silent <= 10) + human_target.silent = clamp(human_target.silent + 10, 0, 10) + target.apply_damage(60, STAMINA) + target.Paralyze(20) + return TRUE + else + target.apply_damage(60, STAMINA) + target.Paralyze(20) + return TRUE + +/// Intents +/datum/martial_art/hunterfu/disarm_act(mob/living/user, mob/living/target) + add_to_streak("D", target) + if(check_streak(user, target)) + return TRUE + log_combat(user, target, "disarmed (Hunter-Fu)") + return ..() + +/datum/martial_art/hunterfu/harm_act(mob/living/user, mob/living/target) + add_to_streak("H", target) + if(check_streak(user, target)) + return TRUE + var/obj/item/bodypart/affecting = target.get_bodypart(ran_zone(user.zone_selected)) + user.do_attack_animation(target, ATTACK_EFFECT_PUNCH) + var/atk_verb = pick("kick", "chop", "hit", "slam") + target.visible_message( + span_danger("[user] [atk_verb]s [target]!"), + span_userdanger("[user] [atk_verb]s you!"), + ) + to_chat(user, span_danger("You [atk_verb] [target]!")) + target.apply_damage(rand(10,15), BRUTE, affecting, wound_bonus = CANT_WOUND) + playsound(get_turf(target), 'sound/weapons/punch1.ogg', 25, TRUE, -1) + log_combat(user, target, "harmed (Hunter-Fu)") + return TRUE + +/datum/martial_art/hunterfu/grab_act(mob/living/user, mob/living/target) + if(user!=target && can_use(user)) + add_to_streak("G", target) + if(check_streak(user, target)) // If a combo is made no grab upgrade is done + return TRUE + old_grab_state = user.grab_state + target.grabbedby(user, 1) + if(old_grab_state == GRAB_PASSIVE) + target.drop_all_held_items() + user.grab_state = GRAB_AGGRESSIVE // Instant agressive grab + log_combat(user, target, "grabbed (Hunter-Fu)") + target.visible_message( + span_warning("[user] violently grabs [target]!"), + span_userdanger("You're grabbed violently by [user]!"), + span_hear("You hear sounds of aggressive fondling!"), + ) + to_chat(user, span_danger("You violently grab [target]!")) + return TRUE + ..() + +/mob/living/carbon/human/proc/hunterfu_help() + set name = "Remember The Basics" + set desc = "You try to remember some of the basics of Hunter-Fu." + set category = "Hunter-Fu" + to_chat(usr, span_notice("You try to remember some of the basics of Hunter-Fu.")) + + to_chat(usr, span_notice("Body Slam: Grab Harm. Slam opponent into the ground, knocking you both down.")) + to_chat(usr, span_notice("Stake Stab: Harm Harm. Stabs opponent with your bare fist, as strong as a Stake.")) + to_chat(usr, span_notice("Neck Snap: Grab Disarm Harm. Snaps an opponents neck, knocking them out.")) + to_chat(usr, span_notice("Holy Kick: Disarm Grab. Splashes the user with Holy Water, removing Cult Spells, while dealing stamina damage.")) + + to_chat(usr, span_notice("In addition, by having your throw mode on, you take a defensive position, allowing you to block and sometimes even counter attacks done to you.")) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 3d52dad82e5..0d461816c1f 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -470,6 +470,7 @@ var/list/all_objectives = list() for(var/datum/antagonist/A in antag_datums) + output += A.task_memory output += A.antag_memory all_objectives |= A.objectives diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index b4eeae7ec9f..45d9427b808 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -155,3 +155,42 @@ cost = 10 requirements = list(101,101,101,10,10,10,10,10,10,10) repeatable = TRUE + +////////////////////////////////////////////// +// // +// BLOODSUCKER // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/latejoin/bloodsucker + name = "Bloodsucker Breakout" + antag_datum = /datum/antagonist/bloodsucker + antag_flag = ROLE_BLOODSUCKERBREAKOUT + antag_flag_override = ROLE_BLOODSUCKER + protected_roles = list( + "Captain", "Head of Personnel", "Head of Security", + "Warden", "Security Officer", "Detective", "Brig Physician", + "Curator" + ) + restricted_roles = list("AI","Cyborg") + required_candidates = 1 + weight = 5 + cost = 10 + requirements = list(10,10,10,10,10,10,10,10,10,10) + repeatable = FALSE + +/datum/dynamic_ruleset/latejoin/bloodsucker/execute() + var/mob/latejoiner = pick(candidates) // This should contain a single player, but in case. + assigned += latejoiner.mind + + for(var/selected_player in assigned) + var/datum/mind/bloodsuckermind = selected_player + var/datum/antagonist/bloodsucker/sucker = new + if(!bloodsuckermind.make_bloodsucker(selected_player)) + assigned -= selected_player + message_admins("[ADMIN_LOOKUPFLW(selected_player)] was selected by the [name] ruleset, but couldn't be made into a Bloodsucker.") + return FALSE + sucker.bloodsucker_level_unspent = rand(2,3) + message_admins("[ADMIN_LOOKUPFLW(selected_player)] was selected by the [name] ruleset and has been made into a midround Bloodsucker.") + log_game("DYNAMIC: [key_name(selected_player)] was selected by the [name] ruleset and has been made into a midround Bloodsucker.") + return TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 4b2e32e7cb1..8ae362f434f 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -892,3 +892,51 @@ #undef MALF_ION_PROB /// The probability to replace an existing law with an ion law instead of adding a new ion law. #undef REPLACE_LAW_WITH_ION_PROB + +////////////////////////////////////////////// +// // +// BLOODSUCKER // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/bloodsucker + name = "Vampiric Accident" + antag_datum = /datum/antagonist/bloodsucker + antag_flag = ROLE_VAMPIRICACCIDENT + antag_flag_override = ROLE_BLOODSUCKER + protected_roles = list( + "Captain", "Head of Personnel", "Head of Security", + "Warden", "Security Officer", "Detective", "Brig Physician", + "Curator" + ) + restricted_roles = list("AI","Cyborg", "Positronic Brain") + required_candidates = 1 + weight = 5 + cost = 10 + requirements = list(40,30,20,10,10,10,10,10,10,10) + repeatable = FALSE + +/datum/dynamic_ruleset/midround/bloodsucker/trim_candidates() + . = ..() + for(var/mob/living/player in living_players) + if(issilicon(player)) // Your assigned role doesn't change when you are turned into a silicon. + living_players -= player + else if(is_centcom_level(player.z)) + living_players -= player // We don't allow people in CentCom + else if(player.mind && (player.mind.special_role || player.mind.antag_datums?.len > 0)) + living_players -= player // We don't allow people with roles already + +/datum/dynamic_ruleset/midround/bloodsucker/execute() + var/mob/selected_mobs = pick(living_players) + assigned += selected_mobs + living_players -= selected_mobs + var/datum/mind/bloodsuckermind = selected_mobs + var/datum/antagonist/bloodsucker/sucker = new + if(!bloodsuckermind.make_bloodsucker(selected_mobs)) + assigned -= selected_mobs + message_admins("[ADMIN_LOOKUPFLW(selected_mobs)] was selected by the [name] ruleset, but couldn't be made into a Bloodsucker.") + return FALSE + sucker.bloodsucker_level_unspent = rand(2,3) + message_admins("[ADMIN_LOOKUPFLW(selected_mobs)] was selected by the [name] ruleset and has been made into a midround Bloodsucker.") + log_game("DYNAMIC: [key_name(selected_mobs)] was selected by the [name] ruleset and has been made into a midround Bloodsucker.") + return TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index ffd9611bcfd..a8339efa966 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -685,3 +685,46 @@ var/ramp_up_final = clamp(round(meteorminutes/rampupdelta), 1, 10) spawn_meteors(ramp_up_final, wavetype) + +////////////////////////////////////////////// +// // +// BLOODSUCKER // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/bloodsucker + name = "Bloodsuckers" + antag_flag = ROLE_BLOODSUCKER + antag_datum = /datum/antagonist/bloodsucker + protected_roles = list( + "Captain", "Head of Personnel", "Head of Security", + "Warden", "Security Officer", "Detective", "Brig Physician", + "Curator" + ) + restricted_roles = list("AI", "Cyborg") + required_candidates = 1 + weight = 5 + cost = 10 + scaling_cost = 9 + requirements = list(10,10,10,10,10,10,10,10,10,10) + antag_cap = list(1,1,1,2,2,2,2,2,3,3) + +/datum/dynamic_ruleset/roundstart/bloodsucker/pre_execute(population) + . = ..() + var/num_bloodsuckers = antag_cap[indice_pop] * (scaled_times + 1) + + for(var/i = 1 to num_bloodsuckers) + if(candidates.len <= 0) + break + var/mob/selected_mobs = pick_n_take(candidates) + assigned += selected_mobs.mind + selected_mobs.mind.restricted_roles = restricted_roles + selected_mobs.mind.special_role = ROLE_BLOODSUCKER + return TRUE + +/datum/dynamic_ruleset/roundstart/bloodsucker/execute() + for(var/assigned_bloodsuckers in assigned) + var/datum/mind/bloodsuckermind = assigned_bloodsuckers + if(!bloodsuckermind.make_bloodsucker(assigned_bloodsuckers)) + assigned -= assigned_bloodsuckers + return TRUE diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index c9cf5de7cd8..1ce599653a3 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -913,6 +913,18 @@ GLOBAL_LIST_EMPTY(possible_items_special) /datum/objective/maroon, /datum/objective/debrain, /datum/objective/protect, + //////Bloodsuckers////// + // DEFAULT OBJECTIVES // + /datum/objective/bloodsucker/lair, + /datum/objective/survive/bloodsucker, + /datum/objective/bloodsucker/protege, + /datum/objective/bloodsucker/heartthief, + /datum/objective/bloodsucker/gourmand, + // MISC OBJECTIVES // + /datum/objective/bloodsucker/monsterhunter, + /datum/objective/bloodsucker/vassalhim, + /datum/objective/bloodsucker/frenzy, + //////////////////////// /datum/objective/jailbreak, /datum/objective/jailbreak/detain, /datum/objective/destroy, diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index ba0a0277c5f..72a1422032d 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -395,7 +395,9 @@ GENE SCANNER if(blood_id != /datum/reagent/blood) // special blood substance var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id] blood_type = R ? R.name : blood_id - if(C.blood_volume <= BLOOD_VOLUME_SAFE && C.blood_volume > BLOOD_VOLUME_OKAY) + if(HAS_TRAIT(M, TRAIT_MASQUERADE)) //bloodsuckers + to_chat(user, span_info("Blood level 100%, 560 cl, type: [blood_type]")) + else if(C.blood_volume <= BLOOD_VOLUME_SAFE && C.blood_volume > BLOOD_VOLUME_OKAY) render_list += "Blood level: LOW [blood_percent] %, [C.blood_volume] cl, [span_info("type: [blood_type]")]\n" else if(C.blood_volume <= BLOOD_VOLUME_OKAY) render_list += "Blood level: CRITICAL [blood_percent] %, [C.blood_volume] cl, [span_info("type: [blood_type]")]\n" diff --git a/code/game/objects/items/implants/implant_mindshield.dm b/code/game/objects/items/implants/implant_mindshield.dm index e95d132ab28..c8d0777b0a5 100644 --- a/code/game/objects/items/implants/implant_mindshield.dm +++ b/code/game/objects/items/implants/implant_mindshield.dm @@ -38,11 +38,22 @@ if(rev) deconverted = TRUE rev.remove_revolutionary(FALSE, user) + + var/datum/antagonist/vassal/vassaldatum = IS_VASSAL(target) + if(target.mind.has_antag_datum(/datum/antagonist/vassal || !(vassaldatum.favorite_vassal))) + if(vassaldatum.favorite_vassal) + if(!silent) + target.visible_message(span_warning("[target] seems to resist the implant!"), span_warning("You feel something interfering with your mental conditioning, but you resist it!")) + removed(target, TRUE) + return FALSE + target.mind.remove_antag_datum(/datum/antagonist/vassal) + if(!silent) if(target.mind.has_antag_datum(/datum/antagonist/cult)) to_chat(target, span_warning("You feel something interfering with your mental conditioning, but you resist it!")) else to_chat(target, span_notice("You feel a sense of peace and security. You are now protected from brainwashing.")) + ADD_TRAIT(target, TRAIT_MINDSHIELD, IMPLANT_TRAIT) target.sec_hud_set_implants() if(deconverted) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 77351a4228d..2a965e73019 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -263,6 +263,37 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ . = ..() . += GLOB.wood_recipes +/obj/item/stack/sheet/mineral/wood/attackby(obj/item/item, mob/user, params) + if(item.get_sharpness()) + user.visible_message( + span_notice("[user] begins whittling [src] into a pointy object."), + span_notice("You begin whittling [src] into a sharp point at one end."), + span_hear("You hear wood carving."), + ) + // 5 Second Timer + if(!do_after(user, 5 SECONDS, src, NONE, TRUE)) + return + // Make Stake + var/obj/item/stake/new_item = new(user.loc) + user.visible_message( + span_notice("[user] finishes carving a stake out of [src]."), + span_notice("You finish carving a stake out of [src]."), + ) + // Prepare to Put in Hands (if holding wood) + var/obj/item/stack/sheet/mineral/wood/wood_stack = src + var/replace = (user.get_inactive_held_item() == wood_stack) + // Use Wood + wood_stack.use(1) + // If stack depleted, put item in that hand (if it had one) + if(!wood_stack && replace) + user.put_in_hands(new_item) + if(istype(item, merge_type)) + var/obj/item/stack/merged_stack = item + if(merge(merged_stack)) + to_chat(user, span_notice("Your [merged_stack.name] stack now contains [merged_stack.get_amount()] [merged_stack.singular_name]\s.")) + return + return ..() + /obj/item/stack/sheet/mineral/wood/fifty amount = 50 diff --git a/code/modules/admin/antag_panel.dm b/code/modules/admin/antag_panel.dm index 4955e126361..80823bb1d0d 100644 --- a/code/modules/admin/antag_panel.dm +++ b/code/modules/admin/antag_panel.dm @@ -55,6 +55,7 @@ GLOBAL_VAR(antag_prototypes) /datum/antagonist/proc/antag_panel_memory() var/out = "Memory:
" + out += task_memory out += antag_memory out += "
Edit memory
" return out diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index dd9e691ecc7..28a05f00132 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -292,6 +292,7 @@ ROLE_MIND_TRANSFER, ROLE_POSIBRAIN, ROLE_SENTIENCE, + ROLE_MONSTERHUNTER, ), "Antagonist Positions" = list( ROLE_ABDUCTOR, @@ -314,6 +315,7 @@ ROLE_SYNDICATE, ROLE_TRAITOR, ROLE_WIZARD, + ROLE_BLOODSUCKER, ), ) for(var/department in long_job_lists) diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index d95e3b2a0d0..98788ceae40 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -25,6 +25,8 @@ GLOBAL_LIST_EMPTY(antagonists) var/list/objectives = list() ///String dialogue that is added to the player's in-round notes and memories regarding specifics of that antagonist, eg. the nuke code for nuke ops, or your unlock code for traitors. var/antag_memory = "" + //Optional little objectives that are to be removed on a certain milestone + var/task_memory = "" ///typepath of moodlet that the mob will gain when granted this antagonist type. var/antag_moodlet ///If these antags are alone when a shuttle elimination happens. @@ -348,6 +350,7 @@ GLOBAL_LIST_EMPTY(antagonists) if (isnull(new_memo)) return antag_memory = new_memo + task_memory = new_memo /** * Gets how fast we can hijack the shuttle, return 0 for can not hijack. diff --git a/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm b/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm new file mode 100644 index 00000000000..59106c57902 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm @@ -0,0 +1,193 @@ +/// 1 minute +#define TIME_BLOODSUCKER_DAY 60 +/// 10 minutes +#define TIME_BLOODSUCKER_NIGHT 600 +/// 1.5 minutes +#define TIME_BLOODSUCKER_DAY_WARN 90 +/// 30 seconds +#define TIME_BLOODSUCKER_DAY_FINAL_WARN 30 +/// 5 seconds +#define TIME_BLOODSUCKER_BURN_INTERVAL 5 + +/// Over Time, tick down toward a "Solar Flare" of UV buffeting the station. This period is harmful to vamps. +/obj/effect/sunlight + ///If the Sun is currently out our not + var/amDay = FALSE + ///The time between the next cycle + var/time_til_cycle = TIME_BLOODSUCKER_NIGHT + ///If Bloodsuckers have been given their level yet + var/issued_XP = FALSE + +/obj/effect/sunlight/Initialize() + . = ..() + START_PROCESSING(SSprocessing, src) + +/obj/effect/sunlight/Destroy() + STOP_PROCESSING(SSprocessing, src) + return ..() + +/obj/effect/sunlight/process() + /// Update all Bloodsucker sunlight huds + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds) || !istype(bloodsucker_minds.current)) + continue + var/datum/antagonist/bloodsucker/bloodsuckerdatum = bloodsucker_minds.has_antag_datum(/datum/antagonist/bloodsucker) + if(istype(bloodsuckerdatum)) + bloodsuckerdatum.update_sunlight(max(0, time_til_cycle), amDay) // This pings all HUDs + time_til_cycle-- + if(amDay) + if(time_til_cycle > 0) + punish_vamps() + if(!issued_XP && time_til_cycle <= 15) + issued_XP = TRUE + /// Cycle through all vamp antags and check if they're inside a closet. + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds) || !istype(bloodsucker_minds.current)) + continue + var/datum/antagonist/bloodsucker/bloodsuckerdatum = bloodsucker_minds.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum) + // Rank up! Must still be in a coffin to level! + bloodsuckerdatum.RankUp() + if(time_til_cycle <= 1) + warn_daylight(5, span_announce("The solar flare has ended, and the daylight danger has passed...for now."), \ + span_announce("The solar flare has ended, and the daylight danger has passed...for now."), \ + "") + amDay = FALSE + issued_XP = FALSE + time_til_cycle = TIME_BLOODSUCKER_NIGHT + message_admins("BLOODSUCKER NOTICE: Daylight Ended. Resetting to Night (Lasts for [TIME_BLOODSUCKER_NIGHT / 60] minutes.)") + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds) || !istype(bloodsucker_minds.current)) + continue + var/datum/antagonist/bloodsucker/bloodsuckerdatum = bloodsucker_minds.has_antag_datum(/datum/antagonist/bloodsucker) + if(!istype(bloodsuckerdatum)) + continue + take_home_power() + else + switch(time_til_cycle) + if(TIME_BLOODSUCKER_DAY_WARN) + warn_daylight(1, span_danger("Solar Flares will bombard the station with dangerous UV in [TIME_BLOODSUCKER_DAY_WARN / 60] minutes. Prepare to seek cover in a coffin or closet."), \ + "", \ + "") + give_home_power() + if(TIME_BLOODSUCKER_DAY_FINAL_WARN) + message_admins("BLOODSUCKER NOTICE: Daylight beginning in [TIME_BLOODSUCKER_DAY_FINAL_WARN] seconds.") + warn_daylight(2, span_userdanger("Solar Flares are about to bombard the station! You have [TIME_BLOODSUCKER_DAY_FINAL_WARN] seconds to find cover!"), \ + span_danger("In [TIME_BLOODSUCKER_DAY_FINAL_WARN / 10], your master will be at risk of a Solar Flare. Make sure they find cover!"), \ + "") + if(TIME_BLOODSUCKER_BURN_INTERVAL) + warn_daylight(3, span_userdanger("Seek cover, for Sol rises!"), \ + "", \ + "") + if(0) + amDay = TRUE + time_til_cycle = TIME_BLOODSUCKER_DAY + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds) || !istype(bloodsucker_minds.current)) + continue + var/datum/antagonist/bloodsucker/bloodsuckerdatum = bloodsucker_minds.has_antag_datum(/datum/antagonist/bloodsucker) + if(!istype(bloodsuckerdatum)) + continue + if(bloodsuckerdatum.my_clan == CLAN_GANGREL) + give_transform_power() + if(!iscarbon(bloodsucker_minds.current)) + qdel(bloodsucker_minds.current) + if(bloodsuckerdatum.altar_uses > 0) + to_chat(bloodsuckerdatum, span_notice("Your Altar uses have been reset!")) + bloodsuckerdatum.altar_uses = 0 + warn_daylight(4, span_userdanger("Solar flares bombard the station with deadly UV light!
Stay in cover for the next [TIME_BLOODSUCKER_DAY / 60] minutes or risk Final Death!"), \ + span_userdanger("Solar flares bombard the station with UV light!"), \ + span_userdanger("The sunlight is visible throughout the station, the Bloodsuckers must be asleep by now!")) + message_admins("BLOODSUCKER NOTICE: Daylight Beginning (Lasts for [TIME_BLOODSUCKER_DAY / 60] minutes.)") + +/obj/effect/sunlight/proc/warn_daylight(danger_level = 0, vampwarn = "", vassalwarn = "", hunteralert = "") + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds)) + continue + to_chat(bloodsucker_minds, vampwarn) + if(bloodsucker_minds.current) + switch(danger_level) + if(1) + bloodsucker_minds.current.playsound_local(null, 'sound/effects/griffin_3.ogg', 50 + danger_level, 1) + if(2) + bloodsucker_minds.current.playsound_local(null, 'sound/effects/griffin_5.ogg', 50 + danger_level, 1) + if(3) + bloodsucker_minds.current.playsound_local(null, 'sound/effects/alert.ogg', 75, 1) + if(4) + bloodsucker_minds.current.playsound_local(null, 'sound/ambience/ambimystery.ogg', 100, 1) + if(5) + bloodsucker_minds.current.playsound_local(null, 'sound/spookoween/ghosty_wind.ogg', 90, 1) + if(vassalwarn != "") + for(var/datum/mind/vassal_minds as anything in get_antag_minds(/datum/antagonist/vassal)) + if(!istype(vassal_minds)) + continue + if(vassal_minds.has_antag_datum(/datum/antagonist/bloodsucker)) + continue + to_chat(vassal_minds, vassalwarn) + if(hunteralert != "") + for(var/datum/mind/monsterhunter_minds as anything in get_antag_minds(/datum/antagonist/monsterhunter)) + if(!istype(monsterhunter_minds)) + continue + to_chat(monsterhunter_minds, hunteralert) + +/// Cycle through all vamp antags and check if they're inside a closet. +/obj/effect/sunlight/proc/punish_vamps() + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds) || !istype(bloodsucker_minds.current)) + continue + var/datum/antagonist/bloodsucker/bloodsuckerdatum = bloodsucker_minds.has_antag_datum(/datum/antagonist/bloodsucker) + if(!istype(bloodsuckerdatum)) + continue + if(istype(bloodsucker_minds.current.loc, /obj/structure)) + if(istype(bloodsucker_minds.current.loc, /obj/structure/closet/crate/coffin)) // Coffins offer the BEST protection + SEND_SIGNAL(bloodsucker_minds.current, COMSIG_ADD_MOOD_EVENT, "vampsleep", /datum/mood_event/coffinsleep) + continue + if(COOLDOWN_FINISHED(bloodsuckerdatum, bloodsucker_spam_sol_burn)) // Closets offer SOME protection + to_chat(bloodsucker_minds, span_warning("Your skin sizzles. [bloodsucker_minds.current.loc] doesn't protect well against UV bombardment.")) + COOLDOWN_START(bloodsuckerdatum, bloodsucker_spam_sol_burn, BLOODSUCKER_SPAM_SOL) //This should happen twice per Sol + bloodsucker_minds.current.adjustFireLoss(0.5 + bloodsuckerdatum.bloodsucker_level / 2) + bloodsucker_minds.current.updatehealth() + SEND_SIGNAL(bloodsucker_minds.current, COMSIG_ADD_MOOD_EVENT, "vampsleep", /datum/mood_event/daylight_1) + else // Out in the Open? + if(COOLDOWN_FINISHED(bloodsuckerdatum, bloodsucker_spam_sol_burn)) + if(bloodsuckerdatum.bloodsucker_level > 0) + to_chat(bloodsucker_minds, span_userdanger("The solar flare sets your skin ablaze!")) + else + to_chat(bloodsucker_minds, span_userdanger("The solar flare scalds your neophyte skin!")) + COOLDOWN_START(bloodsuckerdatum, bloodsucker_spam_sol_burn, BLOODSUCKER_SPAM_SOL) //This should happen twice per Sol + if(bloodsucker_minds.current.fire_stacks <= 0) + bloodsucker_minds.current.fire_stacks = 0 + if(bloodsuckerdatum.bloodsucker_level > 0) + bloodsucker_minds.current.adjust_fire_stacks(0.2 + bloodsuckerdatum.bloodsucker_level / 10) + bloodsucker_minds.current.IgniteMob() + bloodsucker_minds.current.adjustFireLoss(2 + bloodsuckerdatum.bloodsucker_level) + bloodsucker_minds.current.updatehealth() + SEND_SIGNAL(bloodsucker_minds.current, COMSIG_ADD_MOOD_EVENT, "vampsleep", /datum/mood_event/daylight_2) + +/// It's late, give the "Vanishing Act" (gohome) power to Bloodsuckers. +/obj/effect/sunlight/proc/give_home_power() + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds) || !istype(bloodsucker_minds.current) || !iscarbon(bloodsucker_minds.current)) + continue + var/datum/antagonist/bloodsucker/bloodsuckerdatum = bloodsucker_minds.has_antag_datum(/datum/antagonist/bloodsucker) + if(istype(bloodsuckerdatum) && bloodsuckerdatum.lair && !(locate(/datum/action/bloodsucker/gohome) in bloodsuckerdatum.powers)) + bloodsuckerdatum.BuyPower(new /datum/action/bloodsucker/gohome) + +/// It's over now, remove the "Vanishing Act" (gohome) power from Bloodsuckers. +/obj/effect/sunlight/proc/take_home_power() + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds) || !istype(bloodsucker_minds.current)) + continue + var/datum/antagonist/bloodsucker/bloodsuckerdatum = bloodsucker_minds.has_antag_datum(/datum/antagonist/bloodsucker) + for(var/datum/action/bloodsucker/power in bloodsuckerdatum.powers) + if(istype(power, /datum/action/bloodsucker/gohome)) + bloodsuckerdatum.powers -= power + power.Remove(bloodsucker_minds.current) + +/obj/effect/sunlight/proc/give_transform_power() + for(var/datum/mind/bloodsucker_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(!istype(bloodsucker_minds) || !istype(bloodsucker_minds.current)) + continue + var/datum/antagonist/bloodsucker/bloodsuckerdatum = bloodsucker_minds.has_antag_datum(/datum/antagonist/bloodsucker) + if(!(locate(/datum/action/bloodsucker/gangrel/transform) in bloodsuckerdatum.powers)) + bloodsuckerdatum.BuyPower(new /datum/action/bloodsucker/gangrel/transform) diff --git a/code/modules/antagonists/bloodsuckers/bloodsucker_flaws.dm b/code/modules/antagonists/bloodsuckers/bloodsucker_flaws.dm new file mode 100644 index 00000000000..5876d39e0e6 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/bloodsucker_flaws.dm @@ -0,0 +1,53 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// Any changes to clans have to be reflected in '/obj/item/book/kindred' /search proc. // +///////////////////////////////////////////////////////////////////////////////////////// +/datum/antagonist/bloodsucker/proc/AssignClanAndBane() + var/static/list/clans = list( + CLAN_GANGREL, + //CLAN_LASOMBRA, + "None", + ) + var/list/options = list() + options = clans + // Brief descriptions in case they don't read the Wiki. + to_chat(owner, span_announce("List of all Clans:\n\ + Gangrel - Prone to Frenzy, special power.\n\ + None - Continue living without a clan.")) + + var/answer = input("You have Ranked up far enough to remember your clan. Which clan are you part of?", "Our mind feels luxurious...") in options + if(!answer || answer == "None") + to_chat(owner, span_warning("You have wilingfully decided to stay ignorant.")) + return + var/mob/living/carbon/human/bloodsucker = owner.current + //switch(answer) + if(answer == CLAN_GANGREL) + my_clan = CLAN_GANGREL + to_chat(owner, span_announce("You have Ranked up enough to learn: You are part of the Gangrel Clan!\n\ + * As part of the Gangrel Clan, your inner beast has a stronger impact in your undead life.\n\ + * You are prone to falling into a frenzy, and will unleash a wild beast form when doing so,\n\ + * Though once per night you are able to unleash your inner beast to help you in combat.\n\ + * Due to growing more feral you've also strayed away from other bloodsuckers and will only be able to maintain one vassal.\n\ + * Finally, your Favorite Vassal will gain the Minor Beast Form ability to help you in combat.")) + AddHumanityLost(22.4) + BuyPower(new /datum/action/bloodsucker/gangrel/transform) + bloodsucker.faction |= "bloodhungry" //i love animals i love animals + /*if(CLAN_LASOMBRA) + my_clan = CLAN_LASOMBRA + to_chat(owner, span_announce("You have Ranked up enough to learn: You are part of the Lasombra Clan!\n\ + * As part of the Lasombra Clan, your past teachings have taught you how to become in touch with the Abyss and practice it's prophecies.\n\ + * It'll take long before the Abyss can break through this plane's veil, but you'll try to salvage any of the energy that comes through,\n\ + * To harness it's energy a ritual must be done each night to gain a shadowpoint, shadowpoints let's you upgrades normal abilities into upgraded ones.\n\ + * The Abyss has blackened your veins and made you immune to brute damage but highly receptive to burn, so you might need to be extra careful when on Torpor.\n\ + * Finally, your Favorite Vassal will gain the Minor Glare and Shadow Walk abilities to help you in combat.")) + ADD_TRAIT(bloodsucker, TRAIT_BRUTEIMMUNE, BLOODSUCKER_TRAIT) + ADD_TRAIT(bloodsucker, TRAIT_SCORCHED, BLOODSUCKER_TRAIT) + ADD_TRAIT(bloodsucker, CULT_EYES, BLOODSUCKER_TRAIT) + var/obj/item/organ/heart/nightmare/nightmarish_heart = new + nightmarish_heart.Insert(bloodsucker) + nightmarish_heart.Stop() + for(var/obj/item/light_eater/blade in bloodsucker.held_items) + QDEL_NULL(blade) + owner.teach_crafting_recipe(/datum/crafting_recipe/meatcoffin)*/ + + + owner.announce_objectives() diff --git a/code/modules/antagonists/bloodsuckers/bloodsucker_frenzy.dm b/code/modules/antagonists/bloodsuckers/bloodsucker_frenzy.dm new file mode 100644 index 00000000000..bb20dc89d30 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/bloodsucker_frenzy.dm @@ -0,0 +1,99 @@ + +/** + * # FrenzyGrab + * + * The martial art given to Bloodsuckers so they can instantly aggressively grab people. + */ +/datum/martial_art/frenzygrab + name = "Frenzy Grab" + id = MARTIALART_FRENZYGRAB + +/datum/martial_art/frenzygrab/grab_act(mob/living/user, mob/living/target) + if(user != target) + target.grabbedby(user) + user.grab_state = GRAB_AGGRESSIVE + return TRUE + ..() + +/** + * # Status effect + * + * This is the status effect given to Bloodsuckers in a Frenzy + * This deals with everything entering/exiting Frenzy is meant to deal with. + */ + +/datum/status_effect/frenzy + id = "Frenzy" + status_type = STATUS_EFFECT_UNIQUE + duration = -1 + tick_interval = 10 + examine_text = "They seem... inhumane, and feral!" + alert_type = /atom/movable/screen/alert/status_effect/frenzy + /// Store whether they were an advancedtooluser, to give the trait back upon exiting. + var/was_tooluser = FALSE + /// The stored Bloodsucker antag datum + var/datum/antagonist/bloodsucker/bloodsuckerdatum + +/atom/movable/screen/alert/status_effect/frenzy + name = "Frenzy" + desc = "You are in a Frenzy! You are entirely Feral and, depending on your Clan, fighting for your life!" + icon = 'icons/mob/actions/actions_bloodsucker.dmi' + icon_state = "power_recover" + +/atom/movable/screen/alert/status_effect/masquerade/MouseEntered(location,control,params) + desc = initial(desc) + return ..() + +/datum/status_effect/frenzy/on_apply() + var/mob/living/carbon/human/user = owner + bloodsuckerdatum = IS_BLOODSUCKER(user) + + // Disable ALL Powers and notify their entry + bloodsuckerdatum.DisableAllPowers() + to_chat(owner, span_userdanger("Blood! You need Blood, now! You enter a total Frenzy!")) + to_chat(owner, span_announce("* Bloodsucker Tip: While in Frenzy, you instantly Aggresively grab, have stun resistance, cannot speak, hear, or use any powers outside of Feed and Trespass (If you have it).")) + // Stamina resistances + user.physiology.stamina_mod *= 0.4 + + // Give the other Frenzy effects + ADD_TRAIT(owner, TRAIT_MUTE, FRENZY_TRAIT) + ADD_TRAIT(owner, TRAIT_DEAF, FRENZY_TRAIT) + if(HAS_TRAIT_FROM(user, TRAIT_ADVANCEDTOOLUSER, SPECIES_TRAIT)) + was_tooluser = TRUE + REMOVE_TRAIT(owner, TRAIT_ADVANCEDTOOLUSER, SPECIES_TRAIT) + owner.add_movespeed_modifier(/datum/movespeed_modifier/morbin, TRUE) + bloodsuckerdatum.frenzygrab.teach(user, TRUE) + owner.add_client_colour(/datum/client_colour/cursed_heart_blood) + var/obj/cuffs = user.get_item_by_slot(ITEM_SLOT_HANDCUFFED) + var/obj/legcuffs = user.get_item_by_slot(ITEM_SLOT_LEGCUFFED) + if(user.handcuffed || user.legcuffed) + user.clear_cuffs(cuffs, TRUE) + user.clear_cuffs(legcuffs, TRUE) + // Keep track of how many times we've entered a Frenzy. + bloodsuckerdatum.frenzies += 1 + bloodsuckerdatum.frenzied = TRUE + return ..() + +/datum/status_effect/frenzy/on_remove() + var/mob/living/carbon/human/user = owner + to_chat(owner, span_warning("You come back to your senses.")) + REMOVE_TRAIT(owner, TRAIT_MUTE, FRENZY_TRAIT) + REMOVE_TRAIT(owner, TRAIT_DEAF, FRENZY_TRAIT) + if(was_tooluser) + ADD_TRAIT(owner, TRAIT_ADVANCEDTOOLUSER, SPECIES_TRAIT) + was_tooluser = FALSE + owner.remove_movespeed_modifier(/datum/movespeed_modifier/morbin, TRUE) + bloodsuckerdatum.frenzygrab.remove(user) + owner.remove_client_colour(/datum/client_colour/cursed_heart_blood) + owner.Dizzy(3 SECONDS) + owner.Paralyze(2 SECONDS) + user.physiology.stamina_mod /= 0.4 + + bloodsuckerdatum.frenzied = FALSE + return ..() + +/datum/status_effect/frenzy/tick() + var/mob/living/carbon/human/user = owner + if(!bloodsuckerdatum.frenzied) + return + user.adjustFireLoss(1.5 + (bloodsuckerdatum.humanity_lost / 10)) diff --git a/code/modules/antagonists/bloodsuckers/bloodsucker_integration.dm b/code/modules/antagonists/bloodsuckers/bloodsucker_integration.dm new file mode 100644 index 00000000000..ed0ddb4401f --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/bloodsucker_integration.dm @@ -0,0 +1,158 @@ +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// TG OVERWRITES + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/// Gives Curators their abilities +/datum/outfit/job/curator/post_equip(mob/living/carbon/human/user, visualsOnly = FALSE) + . = ..() + + ADD_TRAIT(user, TRAIT_BLOODSUCKER_HUNTER, JOB_TRAIT) + +/datum/species/jelly/slime/spec_life(mob/living/carbon/human/user) + // Prevents Slimeperson 'gaming + if(IS_BLOODSUCKER(user)) + return + . = ..() + +/// Prevents Bloodsuckers from naturally regenerating Blood - Even while on masquerade +/mob/living/carbon/human/handle_blood(delta_time, times_fired) + if(mind && IS_BLOODSUCKER(src)) + return + /// For Vassals -- Bloodsuckers get this removed while on Masquerade, so we don't want to remove the check above. + if(HAS_TRAIT(src, TRAIT_NOPULSE)) + return + . = ..() + +/mob/living/carbon/human/natural_bodytemperature_stabilization(datum/gas_mixture/environment, delta_time, times_fired) + // Return 0 as your natural temperature. Species proc handle_environment() will adjust your temperature based on this. + if(HAS_TRAIT(src, TRAIT_COLDBLOODED)) + return 0 + . = ..() + +// Overwrites mob/living/life.dm instead of doing handle_changeling +/mob/living/carbon/human/Life(delta_time = (SSmobs.wait/10), times_fired) + . = ..() + SEND_SIGNAL(src, COMSIG_LIVING_BIOLOGICAL_LIFE, delta_time, times_fired) + +// Used when analyzing a Bloodsucker, Masquerade will hide brain traumas (Unless you're a Beefman) +/mob/living/carbon/get_traumas() + if(!mind) + return ..() + var/datum/antagonist/bloodsucker/bloodsuckerdatum = IS_BLOODSUCKER(src) + if(bloodsuckerdatum && HAS_TRAIT(src, TRAIT_MASQUERADE)) + return + . = ..() + +// Used to keep track of how much Blood we've drank so far +/mob/living/carbon/human/get_status_tab_items() + . = ..() + if(mind) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum) + . += "" + . += "Blood Drank: [bloodsuckerdatum.total_blood_drank]" + + +// INTEGRATION: Adding Procs and Datums to existing "classes" // + +/mob/living/proc/HaveBloodsuckerBodyparts(displaymessage = "") // displaymessage can be something such as "rising from death" for Torpid Sleep. givewarningto is the person receiving messages. + if(!getorganslot(ORGAN_SLOT_HEART)) + if(displaymessage != "") + to_chat(src, span_warning("Without a heart, you are incapable of [displaymessage].")) + return FALSE + if(!get_bodypart(BODY_ZONE_HEAD)) + if(displaymessage != "") + to_chat(src, span_warning("Without a head, you are incapable of [displaymessage].")) + return FALSE + if(!getorgan(/obj/item/organ/brain)) // NOTE: This is mostly just here so we can do one scan for all needed parts when creating a vamp. You probably won't be trying to use powers w/out a brain. + if(displaymessage != "") + to_chat(src, span_warning("Without a brain, you are incapable of [displaymessage].")) + return FALSE + return TRUE + +// EXAMINING +/mob/living/carbon/human/proc/ReturnVampExamine(mob/living/viewer) + if(!mind || !viewer.mind) + return "" + // Target must be a Vamp + var/datum/antagonist/bloodsucker/bloodsuckerdatum = mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(!bloodsuckerdatum) + return "" + // Viewer is Target's Vassal? + if(viewer.mind.has_antag_datum(/datum/antagonist/vassal) in bloodsuckerdatum.vassals) + var/returnString = "\[This is your Master!\]" + var/returnIcon = "[icon2html('icons/mob/vampiric.dmi', world, "bloodsucker")]" + returnString += "\n" + return returnIcon + returnString + // Viewer not a Vamp AND not the target's vassal? + if(!viewer.mind.has_antag_datum((/datum/antagonist/bloodsucker)) && !(viewer in bloodsuckerdatum.vassals)) + if(!(HAS_TRAIT(viewer, TRAIT_BLOODSUCKER_HUNTER) && bloodsuckerdatum.broke_masquerade)) + return "" + // Default String + var/returnString = "\[[bloodsuckerdatum.ReturnFullName(1)]\]" + var/returnIcon = "[icon2html('icons/mob/vampiric.dmi', world, "bloodsucker")]" + + // In Disguise (Veil)? + //if (name_override != null) + // returnString += " ([real_name] in disguise!) " + + //returnString += "\n" Don't need spacers. Using . += "" in examine.dm does this on its own. + return returnIcon + returnString + +/mob/living/carbon/human/proc/ReturnVassalExamine(mob/living/viewer) + if(!mind || !viewer.mind) + return "" + // Target must be a Vassal + var/datum/antagonist/vassal/vassaldatum = mind.has_antag_datum(/datum/antagonist/vassal) + if(!vassaldatum) + return "" + // Default String + var/returnString = "\[" + var/returnIcon = "" + // Vassals and Bloodsuckers recognize eachother, while Monster Hunters can see Vassals. + if(IS_BLOODSUCKER(viewer) || IS_VASSAL(viewer) || IS_MONSTERHUNTER(viewer)) + // Am I Viewer's Vassal? + if(vassaldatum?.master.owner == viewer.mind) + returnString += "This [dna.species.name] bears YOUR mark!" + returnIcon = "[icon2html('icons/mob/vampiric.dmi', world, "vassal")]" + // Am I someone ELSE'S Vassal? + else if(IS_BLOODSUCKER(viewer) || IS_MONSTERHUNTER(viewer)) + returnString += "This [dna.species.name] bears the mark of [vassaldatum.master.ReturnFullName(vassaldatum.master.owner.current,TRUE)][vassaldatum.master.broke_masquerade ? " who has broken the Masquerade" : ""]" + returnIcon = "[icon2html('icons/mob/vampiric.dmi', world, "vassal_grey")]" + // Are you serving the same master as I am? + else if(viewer.mind.has_antag_datum(/datum/antagonist/vassal) in vassaldatum?.master.vassals) + returnString += "[p_they(TRUE)] bears the mark of your Master" + returnIcon = "[icon2html('icons/mob/vampiric.dmi', world, "vassal")]" + // You serve a different Master than I do. + else + returnString += "[p_they(TRUE)] bears the mark of another Bloodsucker" + returnIcon = "[icon2html('icons/mob/vampiric.dmi', world, "vassal_grey")]" + else + return "" + + returnString += "\]" // \n" Don't need spacers. Using . += "" in examine.dm does this on its own. + return returnIcon + returnString + +/// Am I "pale" when examined? - Bloodsuckers on Masquerade will hide this. +/mob/living/carbon/human/proc/ShowAsPaleExamine(mob/living/user, blood_volume) + if(!mind) + return BLOODSUCKER_HIDE_BLOOD + var/datum/antagonist/bloodsucker/bloodsuckerdatum = mind.has_antag_datum(/datum/antagonist/bloodsucker) + // Not a Bloodsucker? + if(!bloodsuckerdatum) + return BLOODSUCKER_HIDE_BLOOD + // Blood level too low to be hidden? + if(blood_volume <= BLOOD_VOLUME_BAD || bloodsuckerdatum.frenzied) + return BLOODSUCKER_HIDE_BLOOD + // Special check: Nosferatu will always be Pale Death + if(HAS_TRAIT(src, TRAIT_MASQUERADE)) + return BLOODSUCKER_HIDE_BLOOD + switch(blood_volume) + if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) + return "[p_they(TRUE)] [p_have()] pale skin.\n" + if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY) + return "[p_they(TRUE)] look[p_s()] like pale death.\n" + // If a Bloodsucker is malnourished, AND if his temperature matches his surroundings (aka he hasn't fed recently and looks COLD) +// return blood_volume < BLOOD_VOLUME_OKAY // && !(bodytemperature <= get_temperature() + 2) diff --git a/code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm b/code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm new file mode 100644 index 00000000000..3b10ef2485f --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm @@ -0,0 +1,386 @@ +/* + * # Hide a random object somewhere on the station: + * + * var/turf/targetturf = get_random_station_turf() + * var/turf/targetturf = get_safe_random_station_turf() + */ + +/datum/objective/bloodsucker + martyr_compatible = TRUE + +// GENERATE +/datum/objective/bloodsucker/New() + update_explanation_text() + ..() + +////////////////////////////////////////////////////////////////////////////// +// // PROCS // // + +/// Look at all crew members, and for/loop through. +/datum/objective/bloodsucker/proc/return_possible_targets() + var/list/possible_targets = list() + for(var/datum/mind/possible_target in get_crewmember_minds()) + // Check One: Default Valid User + if(possible_target != owner && ishuman(possible_target.current) && possible_target.current.stat != DEAD) + // Check Two: Am Bloodsucker? + if(IS_BLOODSUCKER(possible_target.current)) + continue + possible_targets += possible_target + + return possible_targets + +////////////////////////////////////////////////////////////////////////////////////// +// // OBJECTIVES // // +////////////////////////////////////////////////////////////////////////////////////// + +////////////////////////////// +// DEFAULT OBJECTIVES // +////////////////////////////// + +/datum/objective/bloodsucker/lair + name = "claimlair" + +// EXPLANATION +/datum/objective/bloodsucker/lair/update_explanation_text() + explanation_text = "Claim a coffin by entering it to create your lair, and protect it until the end of the shift."// Make sure to keep it safe!" + +// WIN CONDITIONS? +/datum/objective/bloodsucker/lair/check_completion() + var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum && bloodsuckerdatum.coffin && bloodsuckerdatum.lair) + return TRUE + return FALSE + +/// Space_Station_13_areas.dm <--- all the areas + +////////////////////////////////////////////////////////////////////////////////////// + +/datum/objective/survive/bloodsucker + name = "bloodsuckersurvive" + explanation_text = "Survive the entire shift without succumbing to Final Death." + +// WIN CONDITIONS? +// Handled by parent + +////////////////////////////////////////////////////////////////////////////////////// + +#define VASSALIZE_COMMAND "command_vassalization" + +/// Vassalize someone in charge (Head of Staff + QM) +/datum/objective/bloodsucker/protege + name = "vassalization" + + var/list/heads = list( + "Captain", + "Head of Personnel", + "Head of Security", + "Research Director", + "Chief Engineer", + "Chief Medical Officer", + "Quartermaster", + ) + + var/list/departments = list( + "Security", + "Supply", + "Science", + "Engineering", + "Medical", + ) + + var/target_department // Equals "HEAD" when it's not a department role. + var/department_string + +// GENERATE! +/datum/objective/bloodsucker/protege/New() + switch(rand(0, 2)) + // Vasssalize Command/QM + if(0) + target_amount = 1 + target_department = VASSALIZE_COMMAND + // Vassalize a certain department + else + target_amount = rand(2,3) + target_department = pick(departments) + ..() + +// EXPLANATION +/datum/objective/bloodsucker/protege/update_explanation_text() + if(target_department == VASSALIZE_COMMAND) + explanation_text = "Guarantee a Vassal ends up as a Department Head or in a Leadership role." + else + explanation_text = "Have [target_amount] Vassal[target_amount == 1 ? "" : "s"] in the [target_department] department." + +// WIN CONDITIONS? +/datum/objective/bloodsucker/protege/check_completion() + + var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.has_antag_datum(/datum/antagonist/bloodsucker) + if(!bloodsuckerdatum || !bloodsuckerdatum.vassals.len) + return FALSE + + // Get list of all jobs that are qualified (for HEAD, this is already done) + var/list/valid_jobs + if(target_department == VASSALIZE_COMMAND) + valid_jobs = heads + else + valid_jobs = list() + var/list/alljobs = subtypesof(/datum/job) // This is just a list of TYPES, not the actual variables! + for(var/listed_jobs in alljobs) + var/datum/job/all_jobs = SSjob.GetJobType(listed_jobs) + if(!istype(all_jobs)) + continue + // Found a job whose Dept Head matches either list of heads, or this job IS the head. We exclude the QM from this, HoP handles Cargo. + if((target_department in all_jobs.department_head) || target_department == all_jobs.title) + valid_jobs += all_jobs.title + + // Check Vassals, and see if they match + var/objcount = 0 + var/list/counted_roles = list() // So you can't have more than one Captain count. + for(var/datum/antagonist/vassal/bloodsucker_vassals in bloodsuckerdatum.vassals) + if(!bloodsucker_vassals || !bloodsucker_vassals.owner) // Must exist somewhere, and as a vassal. + continue + + var/this_role = "none" + + // Mind Assigned + if((bloodsucker_vassals.owner.assigned_role in valid_jobs) && !(bloodsucker_vassals.owner.assigned_role in counted_roles)) + //to_chat(owner, span_userdanger("PROTEGE OBJECTIVE: (MIND ROLE)")) + this_role = bloodsucker_vassals.owner.assigned_role + // Mob Assigned + else if((bloodsucker_vassals.owner.current.job in valid_jobs) && !(bloodsucker_vassals.owner.current.job in counted_roles)) + //to_chat(owner, span_userdanger("PROTEGE OBJECTIVE: (MOB JOB)")) + this_role = bloodsucker_vassals.owner.current.job + // PDA Assigned + else if(bloodsucker_vassals.owner.current && ishuman(bloodsucker_vassals.owner.current)) + var/mob/living/carbon/human/vassal_users = bloodsucker_vassals.owner.current + var/obj/item/card/id/id_cards = vassal_users.wear_id ? vassal_users.wear_id.GetID() : null + if(id_cards && (id_cards.assignment in valid_jobs) && !(id_cards.assignment in counted_roles)) + //to_chat(owner, span_userdanger("PROTEGE OBJECTIVE: (GET ID)")) + this_role = id_cards.assignment + + // NO MATCH + if(this_role == "none") + continue + + // SUCCESS! + objcount++ + if(target_department == VASSALIZE_COMMAND) + counted_roles += this_role // Add to list so we don't count it again (but only if it's a Head) + + return objcount >= target_amount + /** + * # IMPORTANT NOTE!! + * + * Look for Job Values on mobs! This is assigned at the start, but COULD be changed via the HoP + * ALSO - Search through all jobs (look for prefs earlier that look for all jobs, and search through all jobs to see if their head matches the head listed, or it IS the head) + * ALSO - registered_account in _vending.dm for banks, and assigning new ones. + */ + +////////////////////////////////////////////////////////////////////////////////////// + +// NOTE: Look up /steal in objective.dm for inspiration. +/// Steal hearts. You just really wanna have some hearts. +/datum/objective/bloodsucker/heartthief + name = "heartthief" + +// GENERATE! +/datum/objective/bloodsucker/heartthief/New() + target_amount = rand(3,4) + ..() + +// EXPLANATION +/datum/objective/bloodsucker/heartthief/update_explanation_text() + . = ..() + explanation_text = "Steal and keep [target_amount] organic heart\s." + +// WIN CONDITIONS? +/datum/objective/bloodsucker/heartthief/check_completion() + if(!owner.current) + return FALSE + + var/list/all_items = owner.current.GetAllContents() + var/heart_count = 0 + for(var/obj/item/organ/heart/current_hearts in all_items) + if(current_hearts.organ_flags & ORGAN_SYNTHETIC) // No robo-hearts allowed + continue + heart_count++ + + if(heart_count >= target_amount) + return TRUE + return FALSE + +////////////////////////////////////////////////////////////////////////////////////// + +///Eat blood from a lot of people +/datum/objective/bloodsucker/gourmand + name = "gourmand" + +// GENERATE! +/datum/objective/bloodsucker/gourmand/New() + target_amount = rand(1250,2000) + ..() + +// EXPLANATION +/datum/objective/bloodsucker/gourmand/update_explanation_text() + . = ..() + explanation_text = "Using your Feed ability, drink [target_amount] units of Blood." + +// WIN CONDITIONS? +/datum/objective/bloodsucker/gourmand/check_completion() + var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.current.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(!bloodsuckerdatum) + return FALSE + var/stolen_blood = bloodsuckerdatum.total_blood_drank + if(stolen_blood >= target_amount) + return TRUE + return FALSE + +// HOW: Track each feed (if human). Count victory. + +////////////////////////////// +// MONSTERHUNTER OBJECTIVES // +////////////////////////////// + +/datum/objective/bloodsucker/monsterhunter + name = "destroymonsters" + +// EXPLANATION +/datum/objective/bloodsucker/monsterhunter/update_explanation_text() + . = ..() + explanation_text = "Destroy all monsters on [station_name()]." + +// WIN CONDITIONS? +/datum/objective/bloodsucker/monsterhunter/check_completion() + var/list/datum/mind/monsters = list() + for(var/mob/living/players in GLOB.alive_mob_list) + if(IS_HERETIC(players) || IS_BLOODSUCKER(players) || IS_CULTIST(players) || IS_WIZARD(players)) + monsters += players + if(players?.mind?.has_antag_datum(/datum/antagonist/changeling)) + monsters += players + if(players?.mind?.has_antag_datum(/datum/antagonist/wizard/apprentice)) + monsters += players + for(var/datum/mind/monster_minds in monsters) + if(monster_minds && monster_minds != owner && monster_minds.current.stat != DEAD) + return FALSE + return TRUE + + + +////////////////////////////// +// VASSAL OBJECTIVES // +////////////////////////////// + +/datum/objective/bloodsucker/vassal + +// EXPLANATION +/datum/objective/bloodsucker/vassal/update_explanation_text() + . = ..() + explanation_text = "Guarantee the success of your Master's mission!" + +// WIN CONDITIONS? +/datum/objective/bloodsucker/vassal/check_completion() + var/datum/antagonist/vassal/antag_datum = owner.has_antag_datum(/datum/antagonist/vassal) + return antag_datum.master?.owner?.current?.stat != DEAD + + + +////////////////////////////// +// REMOVED OBJECTIVES // +////////////////////////////// + +/// Defile a facility with blood +/datum/objective/bloodsucker/desecrate + + // Space_Station_13_areas.dm <--- all the areas + +////////////////////////////////////////////////////////////////////////////////////// + +/// Destroy the Solar Arrays +/datum/objective/bloodsucker/solars +/* // TG Updates broke this, it needs maintaining. +// Space_Station_13_areas.dm <--- all the areas +/datum/objective/bloodsucker/solars/update_explanation_text() + . = ..() + explanation_text = "Prevent all solar arrays on the station from functioning." +/datum/objective/bloodsucker/solars/check_completion() + // Sort through all /obj/machinery/power/solar_control in the station ONLY, and check that they are functioning. + // Make sure that lastgen is 0 or connected_panels.len is 0. Doesnt matter if it's tracking. + for (var/obj/machinery/power/solar_control/solar_control_consoles in SSsun.solars) + // Check On Station: + var/turf/solar_turfs = get_turf(solar_control_consoles) + if(!solar_turfs || !is_station_level(solar_turfs.z)) // <------ Taken from NukeOp + //message_admins("DEBUG A: [solar_control_consoles] not on station!") + continue // Not on station! We don't care about this. + if(solar_control_consoles && solar_control_consoles.lastgen > 0 && solar_control_consoles.connected_panels.len > 0 && solar_control_consoles.connected_tracker) + return FALSE + return TRUE +*/ + +// NOTE: Look up /assassinate in objective.dm for inspiration. +/// Vassalize a target. +/datum/objective/bloodsucker/vassalhim + name = "vassalhim" + var/target_department_type = FALSE + +/datum/objective/bloodsucker/vassalhim/New() + var/list/possible_targets = return_possible_targets() + find_target(possible_targets) + ..() + +// EXPLANATION +/datum/objective/bloodsucker/vassalhim/update_explanation_text() + . = ..() + if(target?.current) + explanation_text = "Ensure [target.name], the [!target_department_type ? target.assigned_role : target.special_role], is Vassalized via the Persuasion Rack." + else + explanation_text = "Free Objective" + +/datum/objective/bloodsucker/vassalhim/admin_edit(mob/admin) + admin_simple_target_pick(admin) + +// WIN CONDITIONS? +/datum/objective/bloodsucker/vassalhim/check_completion() + if(!target || target.has_antag_datum(/datum/antagonist/vassal)) + return TRUE + return FALSE + +/// Enter Frenzy repeatedly +/datum/objective/bloodsucker/frenzy + name = "frenzy" + +/datum/objective/bloodsucker/frenzy/New() + target_amount = rand(3,4) + ..() + +/datum/objective/bloodsucker/frenzy/update_explanation_text() + . = ..() + explanation_text = "Enter Frenzy [target_amount] of times without succumbing to Final Death." + +/datum/objective/bloodsucker/frenzy/check_completion() + var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.current.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(!bloodsuckerdatum) + return FALSE + if(bloodsuckerdatum.frenzies >= target_amount) + return TRUE + return FALSE + +////////////////////////////////////////////////////////////////////////////////////// + +/// Mutilate a certain amount of Vassals +/* +/datum/objective/bloodsucker/vassal_mutilation + name = "steal kindred" +/datum/objective/bloodsucker/vassal_mutilation/New() + target_amount = rand(2,3) + ..() +// EXPLANATION +/datum/objective/bloodsucker/vassal_mutilation/update_explanation_text() + . = ..() + explanation_text = "Mutate [target_amount] of Vassals into vile sevant creatures." +// WIN CONDITIONS? +/datum/objective/bloodsucker/vassal_mutilation/check_completion() + var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.current.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum.vassals_mutated >= target_amount) + return TRUE + return FALSE +*/ diff --git a/code/modules/antagonists/bloodsuckers/bloodsuckers.dm b/code/modules/antagonists/bloodsuckers/bloodsuckers.dm new file mode 100644 index 00000000000..24f97943542 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/bloodsuckers.dm @@ -0,0 +1,816 @@ +/datum/antagonist/bloodsucker + name = "\improper Bloodsucker" + show_in_antagpanel = TRUE + roundend_category = "bloodsuckers" + antagpanel_category = "Bloodsucker" + job_rank = ROLE_BLOODSUCKER + show_name_in_check_antagonists = TRUE + can_coexist_with_others = FALSE + + // TIMERS // + ///Timer between alerts for Burn messages + COOLDOWN_DECLARE(static/bloodsucker_spam_sol_burn) + ///Timer between alerts for Healing messages + COOLDOWN_DECLARE(static/bloodsucker_spam_healing) + + ///Used for assigning your name + var/bloodsucker_name + ///Used for assigning your title + var/bloodsucker_title + ///Used for assigning your reputation + var/bloodsucker_reputation + + ///Amount of Humanity lost + var/humanity_lost = 0 + ///Have we been broken the Masquerade? + var/broke_masquerade = FALSE + ///Blood required to enter Frenzy + var/frenzy_threshold = FRENZY_THRESHOLD_ENTER + ///If we are currently in a Frenzy + var/frenzied = FALSE + ///If we have a task assigned + var/current_task = FALSE + ///How many times have we used a blood altar + var/altar_uses = 0 + + ///ALL Powers currently owned + var/list/datum/action/powers = list() + ///Bloodsucker Clan - Used for dealing with Sol + var/datum/team/vampireclan/clan + ///Frenzy Grab Martial art given to Bloodsuckers in a Frenzy + var/datum/martial_art/frenzygrab/frenzygrab = new + ///You get assigned a Clan once you Rank up enough + var/my_clan = NONE + + ///Vassals under my control. Periodically remove the dead ones. + var/list/datum/antagonist/vassal/vassals = list() + ///Have we selected our Favorite Vassal yet? + var/has_favorite_vassal = FALSE + + var/bloodsucker_level + var/bloodsucker_level_unspent = 1 + var/passive_blood_drain = -0.1 + var/additional_regen + var/bloodsucker_regen_rate = 0.3 + var/max_blood_volume = 600 + + // Used for Bloodsucker Objectives + var/area/lair + var/obj/structure/closet/crate/coffin + var/total_blood_drank = 0 + var/frenzy_blood_drank = 0 + var/task_blood_drank = 0 + var/frenzies = 0 + + /// Static typecache of all bloodsucker powers. + var/static/list/all_bloodsucker_powers = typecacheof(/datum/action/bloodsucker, TRUE) + /// Antagonists that cannot be Vassalized no matter what + var/list/vassal_banned_antags = list( + /datum/antagonist/bloodsucker, + /datum/antagonist/monsterhunter, + /datum/antagonist/changeling, + /datum/antagonist/cult, + /datum/antagonist/heretic, + /datum/antagonist/xeno, + /datum/antagonist/obsessed + ) + ///Default Bloodsucker traits + var/static/list/bloodsucker_traits = list( + TRAIT_NOBREATH, + TRAIT_SLEEPIMMUNE, + TRAIT_NOCRITDAMAGE, + TRAIT_RESISTCOLD, + TRAIT_RADIMMUNE, + TRAIT_GENELESS, + TRAIT_STABLEHEART, + TRAIT_NOSOFTCRIT, + TRAIT_NOHARDCRIT, + TRAIT_AGEUSIA, + TRAIT_NOPULSE, + TRAIT_COLDBLOODED, + TRAIT_VIRUSIMMUNE, + TRAIT_TOXIMMUNE, + TRAIT_HARDLY_WOUNDED, + ) + +/mob/living/proc/explain_powers() + set name = "Bloodsucker Help" + set category = "Mentor" + + var/datum/antagonist/bloodsucker/bloodsuckerdatum = mind.has_antag_datum(/datum/antagonist/bloodsucker) + var/choice = input(usr, "What Power are you looking into?", "Mentorhelp v2") in bloodsuckerdatum.powers + if(!choice) + return + var/datum/action/bloodsucker/power = choice + to_chat(usr, span_warning("[power.power_explanation]")) + +/// These handles the application of antag huds/special abilities +/datum/antagonist/bloodsucker/apply_innate_effects(mob/living/mob_override) + . = ..() + RegisterSignal(owner.current, COMSIG_LIVING_BIOLOGICAL_LIFE, .proc/LifeTick) + if((owner.assigned_role == "Clown")) + var/mob/living/carbon/H = owner.current + if(H && istype(H)) + if(!silent) + H.dna.remove_mutation(CLOWNMUT) + to_chat(owner, "As a vampiric clown, you are no longer a danger to yourself. Your clownish nature has been subdued by your thirst for blood.") + +/datum/antagonist/bloodsucker/remove_innate_effects(mob/living/mob_override) + . = ..() + UnregisterSignal(owner.current, COMSIG_LIVING_BIOLOGICAL_LIFE) + if(owner.assigned_role == "Clown") + var/mob/living/carbon/human/H = owner.current + if(H && istype(H)) + H.dna.add_mutation(CLOWNMUT) + +/datum/antagonist/bloodsucker/get_admin_commands() + . = ..() + .["Give Level"] = CALLBACK(src, .proc/RankUp) + if(bloodsucker_level_unspent >= 1) + .["Remove Level"] = CALLBACK(src, .proc/RankDown) + + if(broke_masquerade) + .["Fix Masquerade"] = CALLBACK(src, .proc/fix_masquerade) + else + .["Break Masquerade"] = CALLBACK(src, .proc/break_masquerade) + +/// Called by the add_antag_datum() mind proc after the instanced datum is added to the mind's antag_datums list. +/datum/antagonist/bloodsucker/on_gain() + if(IS_VASSAL(owner.current)) // Vassals shouldnt be getting the same benefits as Bloodsuckers. + bloodsucker_level_unspent = 0 + else + // Start Sunlight if first Bloodsucker + clan.check_start_sunlight() + // Name and Titles + SelectFirstName() + SelectTitle(am_fledgling = TRUE) + SelectReputation(am_fledgling = TRUE) + // Objectives + forge_bloodsucker_objectives() + + . = ..() + update_bloodsucker_icons_added(owner.current) + // Assign Powers + AssignStarterPowersAndStats() + +/// Called by the remove_antag_datum() and remove_all_antag_datums() mind procs for the antag datum to handle its own removal and deletion. +/datum/antagonist/bloodsucker/on_removal() + /// End Sunlight? (if last Vamp) + clan.check_cancel_sunlight() + update_bloodsucker_icons_removed(owner.current) + ClearAllPowersAndStats() + return ..() + +/datum/antagonist/bloodsucker/greet() + . = ..() + var/fullname = ReturnFullName(TRUE) + to_chat(owner, span_userdanger("You are [fullname], a strain of vampire known as a Bloodsucker!")) + owner.announce_objectives() + if(bloodsucker_level_unspent >= 2) + to_chat(owner, span_announce("As a latejoiner, you have [bloodsucker_level_unspent] bonus Ranks, entering your claimed coffin allows you to spend a Rank.")) + owner.current.playsound_local(null, 'sound/ambience/antag/bloodsuckeralert.ogg', 100, FALSE, pressure_affected = FALSE) + antag_memory += "Although you were born a mortal, in undeath you earned the name [fullname].
" + +/datum/antagonist/bloodsucker/farewell() + to_chat(owner.current, span_userdanger("With a snap, your curse has ended. You are no longer a Bloodsucker. You live once more!")) + // Refill with Blood so they don't instantly die. + owner.current.blood_volume = max(owner.current.blood_volume, BLOOD_VOLUME_NORMAL) + +/datum/antagonist/bloodsucker/proc/add_objective(datum/objective/added_objective) + objectives += added_objective + +/datum/antagonist/bloodsucker/proc/remove_objectives(datum/objective/removed_objective) + objectives -= removed_objective + +// Called when using admin tools to give antag status, admin spawned bloodsuckers don't get turned human if plasmaman. +/datum/antagonist/bloodsucker/admin_add(datum/mind/new_owner, mob/admin) + var/levels = input("How many unspent Ranks would you like [new_owner] to have?","Bloodsucker Rank", bloodsucker_level_unspent) as null | num + var/msg = " made [key_name_admin(new_owner)] into \a [name]" + if(!isnull(levels)) + bloodsucker_level_unspent = levels + msg += " with [levels] extra unspent Ranks." + message_admins("[key_name_admin(usr)][msg]") + log_admin("[key_name(usr)][msg]") + new_owner.add_antag_datum(src) + +/** + * # Vampire Clan + * + * This is used for dealing with the Vampire Clan. + * This handles Sol for Bloodsuckers, making sure to not have several. + * None of this should appear in game, we are using it JUST for Sol. All Bloodsuckers should have their individual report. + */ + +/datum/team/vampireclan + name = "Clan" + + /// Sunlight Timer. Created on first Bloodsucker assign. Destroyed on last removed Bloodsucker. + var/obj/effect/sunlight/bloodsucker_sunlight + +/datum/antagonist/bloodsucker/create_team(datum/team/vampireclan/team) + if(!team) + for(var/datum/antagonist/bloodsucker/bloodsuckerdatums in GLOB.antagonists) + if(!bloodsuckerdatums.owner) + continue + if(bloodsuckerdatums.clan) + clan = bloodsuckerdatums.clan + return + clan = new /datum/team/vampireclan + return + if(!istype(team)) + stack_trace("Wrong team type passed to [type] initialization.") + clan = team + +/datum/antagonist/bloodsucker/get_team() + return clan + +/datum/team/vampireclan/roundend_report() + if(members.len <= 0) + return + var/list/report = list() + report += "Lurking in the darkness, the Bloodsuckers were:
" + for(var/datum/mind/mind_members in members) + for(var/datum/antagonist/bloodsucker/individual_bloodsuckers in mind_members.antag_datums) + if(mind_members.has_antag_datum(/datum/antagonist/vassal)) // Skip over Ventrue's Favorite Vassal + continue + report += individual_bloodsuckers.roundend_report() + + return "
[report.Join("
")]
" + +/// Individual roundend report +/datum/antagonist/bloodsucker/roundend_report() + // Get the default Objectives + var/list/report = list() + // Vamp name + report += "
\[[ReturnFullName(TRUE)]\]" + report += printplayer(owner) + // Clan (Actual Clan, not Team) name + if(my_clan != NONE) + report += "They were part of the [my_clan]!" + + // Default Report + var/objectives_complete = TRUE + if(objectives.len) + report += printobjectives(objectives) + for(var/datum/objective/objective in objectives) + if(!objective.check_completion()) + objectives_complete = FALSE + break + + // Now list their vassals + if(vassals.len > 0) + report += "Their Vassals were..." + for(var/datum/antagonist/vassal/all_vassals in vassals) + if(all_vassals.owner) + var/jobname = all_vassals.owner.assigned_role ? "the [all_vassals.owner.assigned_role]" : "" + report += "[all_vassals.owner.name] [jobname][all_vassals.favorite_vassal == TRUE ? " and was the Favorite Vassal" : ""]" + + if(objectives.len == 0 || objectives_complete) + report += "The [name] was successful!" + else + report += "The [name] has failed!" + + return report + +/** + * # Assigning Sol + * + * Sol is the sunlight, during this period, all Bloodsuckers must be in their coffin, else they burn. + * This was originally dealt with by the gamemode, but as gamemodes no longer exist, it is dealt with by the team. + */ + +/// Start Sol, called when someone is assigned Bloodsucker +/datum/team/vampireclan/proc/check_start_sunlight() + if(members.len <= 1) + message_admins("New Sol has been created due to Bloodsucker assignment.") + bloodsucker_sunlight = new() + +/// End Sol, if you're the last Bloodsucker +/datum/team/vampireclan/proc/check_cancel_sunlight() + // No minds in the clan? Delete Sol. + if(members.len <= 1) + message_admins("Sol has been deleted due to the lack of Bloodsuckers") + QDEL_NULL(bloodsucker_sunlight) + +/// Buying powers +/datum/antagonist/bloodsucker/proc/BuyPower(datum/action/bloodsucker/power) + powers += power + power.Grant(owner.current) + +/datum/antagonist/bloodsucker/proc/RemovePower(datum/action/bloodsucker/power) + for(var/datum/action/bloodsucker/all_powers as anything in powers) + if(initial(power.name) == all_powers.name) + power = all_powers + break + if(power.active) + power.DeactivatePower() + powers -= power + power.Remove(owner.current) + +/datum/antagonist/bloodsucker/proc/AssignStarterPowersAndStats() + // Purchase Roundstart Powers + BuyPower(new /datum/action/bloodsucker/feed) + BuyPower(new /datum/action/bloodsucker/masquerade) + if(!IS_VASSAL(owner.current)) // Favorite Vassal gets their own. + BuyPower(new /datum/action/bloodsucker/veil) + add_verb(owner.current, /mob/living/proc/explain_powers) + // Traits: Species + var/mob/living/carbon/human/user = owner.current + if(ishuman(owner.current)) + var/datum/species/user_species = user.dna.species + user_species.species_traits += DRINKSBLOOD + user.dna?.remove_all_mutations() + user_species.punchdamagelow += 1 //lowest possible punch damage - 0 + user_species.punchdamagehigh += 1 //highest possible punch damage - 9 + /// Give Bloodsucker Traits + for(var/all_traits in bloodsucker_traits) + ADD_TRAIT(owner.current, all_traits, BLOODSUCKER_TRAIT) + /// No Skittish "People" allowed + if(HAS_TRAIT(owner.current, TRAIT_SKITTISH)) + REMOVE_TRAIT(owner.current, TRAIT_SKITTISH, ROUNDSTART_TRAIT) + // Tongue & Language + owner.current.grant_all_languages(FALSE, FALSE, TRUE) + owner.current.grant_language(/datum/language/vampiric) + /// Clear Disabilities & Organs + HealVampireOrgans() + +/datum/antagonist/bloodsucker/proc/ClearAllPowersAndStats() + /// Remove huds + remove_hud() + // Powers + remove_verb(owner.current, /mob/living/proc/explain_powers) + while(powers.len) + var/datum/action/bloodsucker/power = pick(powers) + powers -= power + power.Remove(owner.current) + // owner.RemoveSpell(power) + /// Stats + if(ishuman(owner.current)) + var/mob/living/carbon/human/user = owner.current + var/datum/species/user_species = user.dna.species + user_species.species_traits -= DRINKSBLOOD + // Clown + if(istype(user) && owner.assigned_role == "Clown") + user.dna.add_mutation(CLOWNMUT) + /// Remove ALL Traits, as long as its from BLOODSUCKER_TRAIT's source. - This is because of unique cases like Nosferatu getting Ventcrawling. + for(var/all_status_traits in owner.current.status_traits) + REMOVE_TRAIT(owner.current, all_status_traits, BLOODSUCKER_TRAIT) + /// Update Health + owner.current.setMaxHealth(100) + // Language + owner.current.remove_language(/datum/language/vampiric) + /// Heart + RemoveVampOrgans() + /// Eyes + var/mob/living/carbon/user = owner.current + var/obj/item/organ/eyes/user_eyes = user.getorganslot(ORGAN_SLOT_EYES) + if(user_eyes) + user_eyes.flash_protect += 1 + user_eyes.sight_flags = 0 + user_eyes.see_in_dark = 2 + user_eyes.lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE + user.update_sight() + +/datum/antagonist/bloodsucker/proc/RankUp() + set waitfor = FALSE + var/datum/antagonist/vassal/vassaldatum = IS_VASSAL(owner.current) + if(!owner || !owner.current || vassaldatum) + return + bloodsucker_level_unspent++ //same thing as below + passive_blood_drain -= 0.03 * bloodsucker_level //do something. It's here because if you are gaining points through other means you are doing good + // Spend Rank Immediately? + if(istype(owner.current.loc, /obj/structure/closet/crate/coffin)) + to_chat(owner, span_notice("You have grown more ancient! Sleep in a coffin that you have claimed to thicken your blood and become more powerful.")) + if(bloodsucker_level_unspent >= 2) + to_chat(owner, span_announce("Bloodsucker Tip: If you cannot find or steal a coffin to use, you can build one from wood or metal.")) + +/datum/antagonist/bloodsucker/proc/RankDown() + bloodsucker_level_unspent-- + +/datum/antagonist/bloodsucker/proc/remove_nondefault_powers() + for(var/datum/action/bloodsucker/power as anything in powers) + if(istype(power, /datum/action/bloodsucker/feed) || istype(power, /datum/action/bloodsucker/masquerade) || istype(power, /datum/action/bloodsucker/veil)) + continue + RemovePower(power) + +/datum/antagonist/bloodsucker/proc/LevelUpPowers() + for(var/datum/action/bloodsucker/power as anything in powers) + power.level_current++ + power.UpdateDesc() + +///Disables all powers, accounting for torpor +/datum/antagonist/bloodsucker/proc/DisableAllPowers() + for(var/datum/action/bloodsucker/power as anything in powers) + if((power.check_flags & BP_CANT_USE_IN_TORPOR) && HAS_TRAIT(owner.current, TRAIT_NODEATH)) + if(power.active) + power.DeactivatePower() + +/datum/antagonist/bloodsucker/proc/SpendRank(spend_rank = TRUE) + set waitfor = FALSE + + if(!owner || !owner.current || !owner.current.client || (spend_rank && bloodsucker_level_unspent <= 0.5)) + return + // Purchase Power Prompt + var/list/options = list() + for(var/datum/action/bloodsucker/power as anything in all_bloodsucker_powers) + if(initial(power.purchase_flags) & BLOODSUCKER_CAN_BUY && !(locate(power) in powers)) + options[initial(power.name)] = power + + if(options.len < 1) + to_chat(owner.current, span_notice("You grow more ancient by the night!")) + else + // Give them the UI to purchase a power. + var/choice = input("You have the opportunity to grow more ancient, increasing the level of all your powers by 1. Select a power to advance your Rank.", "Your Blood Thickens...") in options + // Prevent Bloodsuckers from closing/reopning their coffin to spam Levels. + if(spend_rank && bloodsucker_level_unspent <= 0) + return + // Did you choose a power? + if(!choice || !options[choice]) + to_chat(owner.current, span_notice("You prevent your blood from thickening just yet, but you may try again later.")) + return + if(!istype(owner.current.loc, /obj/structure/closet/crate/coffin)) + to_chat(owner.current, span_warning("You must be in your Coffin to purchase Powers.")) + return + + // Good to go - Buy Power! + var/datum/action/bloodsucker/purchased_power = options[choice] + BuyPower(new purchased_power) + to_chat(owner.current, span_notice("You have learned how to use [choice]!")) + + // Advance Powers - Includes the one you just purchased. + LevelUpPowers() + // Bloodsucker-only Stat upgrades + bloodsucker_regen_rate += 0.05 + max_blood_volume += 100 + // Misc. Stats Upgrades + if(ishuman(owner.current)) + var/mob/living/carbon/human/user = owner.current + var/datum/species/user_species = user.dna.species + user_species.punchdamagelow += 0.5 + // This affects the hitting power of Brawn. + user_species.punchdamagehigh += 0.5 + + // We're almost done - Spend your Rank now. + bloodsucker_level++ + if(spend_rank) + bloodsucker_level_unspent-- + // Ranked up enough? Let them join a Clan. + if(bloodsucker_level == 3) + AssignClanAndBane() + + // Ranked up enough to get your true Reputation? + if(bloodsucker_level == 4) + SelectReputation(am_fledgling = FALSE, forced = TRUE) + + // Done! Let them know & Update their HUD. + to_chat(owner.current, span_notice("You are now a rank [bloodsucker_level] Bloodsucker. Your strength, health, feed rate, regen rate, and maximum blood capacity have all increased!\n\ + * Your existing powers have all ranked up as well!")) + update_hud(owner.current) + owner.current.playsound_local(null, 'sound/effects/pope_entry.ogg', 25, TRUE, pressure_affected = FALSE) + +//////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/antagonist/bloodsucker/proc/forge_bloodsucker_objectives() + + // Claim a Lair Objective + var/datum/objective/bloodsucker/lair/lair_objective = new + lair_objective.owner = owner + objectives += lair_objective + + // Survive Objective + var/datum/objective/survive/bloodsucker/survive_objective = new + survive_objective.owner = owner + objectives += survive_objective + + // Objective 1: Vassalize a Head/Command, or a specific target + var/list/rolled_objectives = list() + switch(rand(1, 3)) + if(1) // Protege and Drink Objective + rolled_objectives = list(new /datum/objective/bloodsucker/protege, new /datum/objective/bloodsucker/gourmand) + for(var/datum/objective/bloodsucker/objective in rolled_objectives) + objective.owner = owner + objectives += objective + if(2) // Heart Thief and Protege Objective + rolled_objectives = list(new /datum/objective/bloodsucker/protege, new /datum/objective/bloodsucker/heartthief) + for(var/datum/objective/bloodsucker/objective in rolled_objectives) + objective.owner = owner + objectives += objective + if(3) // All of them + rolled_objectives = list(new /datum/objective/bloodsucker/protege, new /datum/objective/bloodsucker/heartthief, new /datum/objective/bloodsucker/gourmand) + for(var/datum/objective/bloodsucker/objective in rolled_objectives) + objective.owner = owner + objectives += objective + +/// Name shown on antag list +/datum/antagonist/bloodsucker/antag_listing_name() + return ..() + "([ReturnFullName(TRUE)])" + +/// Whatever interesting things happened to the antag admins should know about +/// Include additional information about antag in this part +/datum/antagonist/bloodsucker/antag_listing_status() + if(owner && !considered_alive(owner)) + return "Final Death" + return ..() + +/* + * # Bloodsucker Names + * + * All Bloodsuckers get a name, and gets a better one when they hit Rank 4. + */ + +/// Names +/datum/antagonist/bloodsucker/proc/SelectFirstName() + if(owner.current.gender == MALE) + bloodsucker_name = pick( + "Desmond","Rudolph","Dracula","Vlad","Pyotr","Gregor", + "Cristian","Christoff","Marcu","Andrei","Constantin", + "Gheorghe","Grigore","Ilie","Iacob","Luca","Mihail","Pavel", + "Vasile","Octavian","Sorin","Sveyn","Aurel","Alexe","Iustin", + "Theodor","Dimitrie","Octav","Damien","Magnus","Caine","Abel", // Romanian/Ancient + "Lucius","Gaius","Otho","Balbinus","Arcadius","Romanos","Alexios","Vitellius", // Latin + "Melanthus","Teuthras","Orchamus","Amyntor","Axion", // Greek + "Thoth","Thutmose","Osorkon,","Nofret","Minmotu","Khafra", // Egyptian + "Dio", + ) + else + bloodsucker_name = pick( + "Islana","Tyrra","Greganna","Pytra","Hilda", + "Andra","Crina","Viorela","Viorica","Anemona", + "Camelia","Narcisa","Sorina","Alessia","Sophia", + "Gladda","Arcana","Morgan","Lasarra","Ioana","Elena", + "Alina","Rodica","Teodora","Denisa","Mihaela", + "Svetla","Stefania","Diyana","Kelssa","Lilith", // Romanian/Ancient + "Alexia","Athanasia","Callista","Karena","Nephele","Scylla","Ursa", // Latin + "Alcestis","Damaris","Elisavet","Khthonia","Teodora", // Greek + "Nefret","Ankhesenpep", // Egyptian + ) + +/datum/antagonist/bloodsucker/proc/SelectTitle(am_fledgling = 0, forced = FALSE) + // Already have Title + if(!forced && bloodsucker_title != null) + return + // Titles [Master] + if(!am_fledgling) + if(owner.current.gender == MALE) + bloodsucker_title = pick ("Count","Baron","Viscount","Prince","Duke","Tzar","Dreadlord","Lord","Master") + else + bloodsucker_title = pick ("Countess","Baroness","Viscountess","Princess","Duchess","Tzarina","Dreadlady","Lady","Mistress") + to_chat(owner, span_announce("You have earned a title! You are now known as [ReturnFullName(TRUE)]!")) + // Titles [Fledgling] + else + bloodsucker_title = null + +/datum/antagonist/bloodsucker/proc/SelectReputation(am_fledgling = FALSE, forced = FALSE) + // Already have Reputation + if(!forced && bloodsucker_reputation != null) + return + + if(am_fledgling) + bloodsucker_reputation = pick( + "Crude","Callow","Unlearned","Neophyte","Novice","Unseasoned", + "Fledgling","Young","Neonate","Scrapling","Untested","Unproven", + "Unknown","Newly Risen","Born","Scavenger","Unknowing","Unspoiled", + "Disgraced","Defrocked","Shamed","Meek","Timid","Broken","Fresh", + ) + else if(owner.current.gender == MALE && prob(10)) + bloodsucker_reputation = pick("King of the Damned", "Blood King", "Emperor of Blades", "Sinlord", "God-King") + else if(owner.current.gender == FEMALE && prob(10)) + bloodsucker_reputation = pick("Queen of the Damned", "Blood Queen", "Empress of Blades", "Sinlady", "God-Queen") + else + bloodsucker_reputation = pick( + "Butcher","Blood Fiend","Crimson","Red","Black","Terror", + "Nightman","Feared","Ravenous","Fiend","Malevolent","Wicked", + "Ancient","Plaguebringer","Sinister","Forgotten","Wretched","Baleful", + "Inqisitor","Harvester","Reviled","Robust","Betrayer","Destructor", + "Damned","Accursed","Terrible","Vicious","Profane","Vile", + "Depraved","Foul","Slayer","Manslayer","Sovereign","Slaughterer", + "Forsaken","Mad","Dragon","Savage","Villainous","Nefarious", + "Inquisitor","Marauder","Horrible","Immortal","Undying","Overlord", + "Corrupt","Hellspawn","Tyrant","Sanguineous", + ) + + to_chat(owner, span_announce("You have earned a reputation! You are now known as [ReturnFullName(TRUE)]!")) + + +/datum/antagonist/bloodsucker/proc/AmFledgling() + return !bloodsucker_title + +/datum/antagonist/bloodsucker/proc/ReturnFullName(include_rep = FALSE) + + var/fullname + // Name First + fullname = (bloodsucker_name ? bloodsucker_name : owner.current.name) + // Title + if(bloodsucker_title) + fullname = bloodsucker_title + " " + fullname + // Rep + if(include_rep && bloodsucker_reputation) + fullname = fullname + " the " + bloodsucker_reputation + + return fullname + +///When a Bloodsucker breaks the Masquerade, they get their HUD icon changed, and Malkavian Bloodsuckers get alerted. +/datum/antagonist/bloodsucker/proc/break_masquerade() + if(broke_masquerade) + return + owner.current.playsound_local(null, 'sound/effects/lunge_warn.ogg', 100, FALSE, pressure_affected = FALSE) + to_chat(owner.current, span_cultboldtalic("You have broken the Masquerade!")) + to_chat(owner.current, span_warning("Bloodsucker Tip: When you break the Masquerade, you become open for termination by fellow Bloodsuckers, and your Vassals are no longer completely loyal to you, as other Bloodsuckers can steal them for themselves!")) + broke_masquerade = TRUE + set_antag_hud(owner.current, "masquerade_broken") + for(var/datum/mind/clan_minds as anything in get_antag_minds(/datum/antagonist/bloodsucker)) + if(owner == clan_minds) + continue + if(!isliving(clan_minds.current)) + continue + to_chat(clan_minds, span_userdanger("[owner.current] has broken the Masquerade! Ensure they are eliminated at all costs!")) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = clan_minds.has_antag_datum(/datum/antagonist/bloodsucker) + var/datum/objective/assassinate/masquerade_objective = new /datum/objective/assassinate + masquerade_objective.target = owner.current + masquerade_objective.explanation_text = "Ensure [owner.current], who has broken the Masquerade, is Final Death'ed." + bloodsuckerdatum.objectives += masquerade_objective + clan_minds.announce_objectives() + +///This is admin-only of reverting a broken masquerade, sadly it doesn't remove the Malkavian objectives yet. +/datum/antagonist/bloodsucker/proc/fix_masquerade() + if(!broke_masquerade) + return + to_chat(owner.current, span_cultboldtalic("You have re-entered the Masquerade.")) + broke_masquerade = FALSE + set_antag_hud(owner.current, "bloodsucker") + + +///////////////////////////////////// +// BLOOD COUNTER & RANK MARKER ! // +///////////////////////////////////// + +/datum/antagonist/bloodsucker/proc/remove_hud() + owner.current.hud_used.blood_display.invisibility = INVISIBILITY_ABSTRACT + owner.current.hud_used.vamprank_display.invisibility = INVISIBILITY_ABSTRACT + owner.current.hud_used.sunlight_display.invisibility = INVISIBILITY_ABSTRACT + +/// Update Blood Counter + Rank Counter +/datum/antagonist/bloodsucker/proc/update_hud(updateRank = FALSE) + if(!owner.current.hud_used) + return + var/valuecolor + if(owner.current.hud_used && owner.current.hud_used.blood_display) + if(owner.current.blood_volume > BLOOD_VOLUME_SAFE) + valuecolor = "#FFDDDD" + else if(owner.current.blood_volume > BLOOD_VOLUME_BAD) + valuecolor = "#FFAAAA" + owner.current.hud_used.blood_display.update_counter(owner.current.blood_volume, valuecolor) + if(owner.current.hud_used && owner.current.hud_used.vamprank_display) + owner.current.hud_used.vamprank_display.update_counter(bloodsucker_level, valuecolor) + /// Only change icon on special request. + if(updateRank) + owner.current.hud_used.vamprank_display.icon_state = (bloodsucker_level_unspent > 0) ? "rank_up" : "rank" + +/// Update Sun Time +/datum/antagonist/bloodsucker/proc/update_sunlight(value, amDay = FALSE) + if(!owner.current.hud_used) + return + var/valuecolor + if(owner.current.hud_used && owner.current.hud_used.sunlight_display) + var/sunlight_display_icon = "sunlight_" + if(amDay) + sunlight_display_icon += "day" + valuecolor = "#FF5555" + else + switch(round(value, 1)) + if(0 to 30) + sunlight_display_icon += "30" + valuecolor = "#FFCCCC" + if(31 to 60) + sunlight_display_icon += "60" + valuecolor = "#FFE6CC" + if(61 to 90) + sunlight_display_icon += "90" + valuecolor = "#FFFFCC" + else + sunlight_display_icon += "night" + valuecolor = "#FFFFFF" + + var/value_string = (value >= 60) ? "[round(value / 60, 1)] m" : "[round(value, 1)] s" + owner.current.hud_used.sunlight_display.update_counter(value_string, valuecolor) + owner.current.hud_used.sunlight_display.icon_state = sunlight_display_icon + +/atom/movable/screen/bloodsucker/blood_counter/update_counter(value, valuecolor) + ..() + maptext = "
[round(value,1)]
" + +/atom/movable/screen/bloodsucker/rank_counter/update_counter(value, valuecolor) + ..() + maptext = "
[round(value,1)]
" + +/atom/movable/screen/bloodsucker/sunlight_counter/update_counter(value, valuecolor) + ..() + maptext = "
[value]
" + + +/** + * # Assigning Bloodsucker status + * + * Here we assign the Bloodsuckers themselves, ensuring they arent Plasmamen + * Also deals with Vassalization status. + */ + +/datum/mind/proc/can_make_bloodsucker(datum/mind/convertee, datum/mind/converter) + // Species Must have a HEART (Sorry Plasmamen) + var/mob/living/carbon/human/user = convertee.current + if(!(user.dna?.species) || !(user.mob_biotypes & MOB_ORGANIC)) + user.set_species(/datum/species/human) + user.apply_pref_name("human", user.client) + // Check for Fledgeling + if(converter) + message_admins("[convertee] has become a Bloodsucker, and was created by [converter].") + log_admin("[convertee] has become a Bloodsucker, and was created by [converter].") + return TRUE + +/datum/mind/proc/make_bloodsucker(datum/mind/bloodsucker) + if(!can_make_bloodsucker(bloodsucker)) + return FALSE + add_antag_datum(/datum/antagonist/bloodsucker) + return TRUE + +/datum/mind/proc/remove_bloodsucker() + var/datum/antagonist/bloodsucker/removed_bloodsucker = has_antag_datum(/datum/antagonist/bloodsucker) + if(removed_bloodsucker) + remove_antag_datum(/datum/antagonist/bloodsucker) + special_role = null + +/datum/antagonist/bloodsucker/proc/can_make_vassal(mob/living/converted, datum/mind/converter, can_vassal_sleeping = FALSE)//, check_antag_or_loyal=FALSE) + // Not Correct Type: Abort + if(!iscarbon(converted) || !converter) + return FALSE + if(converted.stat > UNCONSCIOUS && !can_vassal_sleeping) + return FALSE + // No Mind! + if(!converted.mind) + to_chat(converter, span_danger("[converted] isn't self-aware enough to be made into a Vassal.")) + return FALSE + // Already MY Vassal + var/datum/antagonist/vassal/vassaldatum = converted.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(istype(vassaldatum) && vassaldatum.master) + if(vassaldatum.master.owner == converter) + to_chat(converter, span_danger("[converted] is already your loyal Vassal!")) + else + to_chat(converter, span_danger("[converted] is the loyal Vassal of another Bloodsucker!")) + return FALSE + // Already Antag or Loyal (Vamp Hunters count as antags) + if(!isnull(converted.mind.enslaved_to) || AmInvalidAntag(converted)) + to_chat(converter, span_danger("[converted] resists the power of your blood to dominate their mind!")) + return FALSE + return TRUE + +/datum/antagonist/bloodsucker/proc/AmValidAntag(mob/target) + /// Check if they are an antag, if so, check if they're Invalid. + if(target.mind?.special_role || !isnull(target.mind?.antag_datums)) + return !AmInvalidAntag(target) + /// Otherwise, just cancel out. + return FALSE + +/datum/antagonist/bloodsucker/proc/AmInvalidAntag(mob/target) + /// Not an antag? + if(!is_special_character(target)) + return FALSE + /// Checks if the person is an antag banned from being vassalized, stored in bloodsucker's datum. + for(var/datum/antagonist/antag_datum in target.mind.antag_datums) + if(antag_datum.type in vassal_banned_antags) + //message_admins("DEBUG VASSAL: Found Invalid: [antag_datum] // [antag_datum.type]") + return TRUE +// message_admins("DEBUG VASSAL: Valid Antags! (total of [target.antag_datums.len])") + // WHEN YOU DELETE THE ABOVE: Remove the 3 second timer on converting the vassal too. + return FALSE + +/datum/antagonist/bloodsucker/proc/attempt_turn_vassal(mob/living/carbon/convertee, can_vassal_sleeping = FALSE) + convertee.silent = 0 + return make_vassal(convertee, owner, can_vassal_sleeping) + +/datum/antagonist/bloodsucker/proc/make_vassal(mob/living/convertee, datum/mind/converter, sleeping = FALSE) + if(!can_make_vassal(convertee, converter, can_vassal_sleeping = sleeping)) + return FALSE + // Make Vassal + var/datum/antagonist/vassal/vassaldatum = new(convertee.mind) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = converter.has_antag_datum(/datum/antagonist/bloodsucker) + vassaldatum.master = bloodsuckerdatum + convertee.mind.add_antag_datum(vassaldatum, vassaldatum.master.get_team()) + // Update Bloodsucker Title + bloodsuckerdatum.SelectTitle(am_fledgling = FALSE) // Only works if you have no title yet. + // Log it + message_admins("[convertee] has become a Vassal, and is enslaved to [converter].") + log_admin("[convertee] has become a Vassal, and is enslaved to [converter].") + return TRUE + +/** + * # HUD + */ +/datum/antagonist/bloodsucker/proc/update_bloodsucker_icons_added(datum/mind/m) + var/datum/atom_hud/antag/vamphud = GLOB.huds[ANTAG_HUD_BLOODSUCKER] + vamphud.join_hud(owner.current) + set_antag_hud(owner.current, "bloodsucker") + +/datum/antagonist/bloodsucker/proc/update_bloodsucker_icons_removed(datum/mind/m) + var/datum/atom_hud/antag/vamphud = GLOB.huds[ANTAG_HUD_BLOODSUCKER] + vamphud.leave_hud(owner.current) + set_antag_hud(owner.current, null) diff --git a/code/modules/antagonists/bloodsuckers/bloodsuckers_objects.dm b/code/modules/antagonists/bloodsuckers/bloodsuckers_objects.dm new file mode 100644 index 00000000000..53488f308f6 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/bloodsuckers_objects.dm @@ -0,0 +1,362 @@ +////////////////////// +// TRAP // +////////////////////// + +/obj/item/restraints/legcuffs/beartrap/bloodsucker + name = "stake trap" + desc = "Turn the stakes against the staker! Or something like that..." + icon = 'icons/obj/vamp_obj.dmi' + icon_state = "staketrap" + slowdown = 10 + var/area/lair_area + var/mob/lair_owner + +/obj/item/restraints/legcuffs/beartrap/bloodsucker/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/item/restraints/legcuffs/beartrap/bloodsucker/attack_self(mob/user) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + lair_area = bloodsuckerdatum.lair + lair_owner = user + START_PROCESSING(SSobj, src) + if(!bloodsuckerdatum) + to_chat(user, span_notice("Although it seems simple you have no idea how to reactivate the stake trap.")) + return + if(armed) + STOP_PROCESSING(SSobj,src) + return ..() //disarm it, otherwise continue to try and place + if(!bloodsuckerdatum.lair) + to_chat(user, span_danger("You don't have a lair. Claim a coffin to make that location your lair.")) + return + if(lair_area != get_area(src)) + to_chat(user, span_danger("You may only activate this trap in your lair: [lair_area].")) + return + lair_area = bloodsuckerdatum.lair + lair_owner = user + START_PROCESSING(SSobj, src) + ..() + +/obj/item/restraints/legcuffs/beartrap/bloodsucker/spring_trap(datum/source, AM as mob|obj) + var/mob/living/carbon/human/user = AM + if(armed && (IS_BLOODSUCKER(user) || IS_VASSAL(user))) + to_chat(user, span_notice("You gracefully step over the blood puddle and avoid triggering the trap")) + return + ..() + +/obj/item/restraints/legcuffs/beartrap/bloodsucker/close_trap() + STOP_PROCESSING(SSobj, src) + lair_area = null + lair_owner = null + return ..() + +/obj/item/restraints/legcuffs/beartrap/bloodsucker/process() + if(!armed) + STOP_PROCESSING(SSobj,src) + return + if(get_area(src) != lair_area) + close_trap() + +////////////////////// +// HEART // +////////////////////// + +/datum/antagonist/bloodsucker/proc/RemoveVampOrgans() + var/obj/item/organ/heart/newheart = owner.current.getorganslot(ORGAN_SLOT_HEART) + if(newheart) + qdel(newheart) + newheart = new() + newheart.Insert(owner.current) + +////////////////////// +// STAKES // +////////////////////// + +/// Do I have a stake in my heart? +/mob/proc/AmStaked() + return FALSE + +/mob/living/AmStaked() + var/obj/item/bodypart/chosen_bodypart = get_bodypart(BODY_ZONE_CHEST) + if(!chosen_bodypart) + return FALSE + for(var/obj/item/embedded_stake in chosen_bodypart.embedded_objects) + if(istype(embedded_stake, /obj/item/stake)) + return TRUE + return FALSE + +/// You can't go to sleep in a coffin with a stake in you. +/mob/living/proc/StakeCanKillMe() + return IsSleeping() || stat >= UNCONSCIOUS || blood_volume <= 0 || HAS_TRAIT(src, TRAIT_NODEATH) + +/// Can this target be staked? If someone stands up before this is complete, it fails. Best used on someone stationary. +/mob/living/carbon/proc/can_be_staked() + return !(mobility_flags & MOBILITY_MOVE) + +/obj/item/stake + name = "wooden stake" + desc = "A simple wooden stake carved to a sharp point." + icon = 'icons/obj/stakes.dmi' + icon_state = "wood" + lefthand_file = 'icons/mob/inhands/antag/bs_leftinhand.dmi' + righthand_file = 'icons/mob/inhands/antag/bs_rightinhand.dmi' + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb_continuous = list("stakes", "stabs", "tores into") + attack_verb_simple = list("stake", "stab", "tore into") + /// Embedding + sharpness = SHARP_EDGED + embedding = list("embedded_pain_multiplier" = 4, "embed_chance" = 20, "embedded_fall_chance" = 10) + force = 6 + throwforce = 10 + max_integrity = 30 + /// Time it takes to embed the stake into someone's chest. + var/staketime = 12 SECONDS + +/obj/item/stake/afterattack(mob/living/carbon/target, mob/living/user, proximity, discover_after = TRUE) + // Invalid Target, or not targetting the chest? + if(check_zone(user.zone_selected) != BODY_ZONE_CHEST) + return + // Needs to be Down/Slipped in some way to Stake. + if(!target.can_be_staked() || target == user) // Oops! Can't. + to_chat(user, span_danger("You can't stake [target] when they are moving about! They have to be laying down or grabbed by the neck!")) + return + if(HAS_TRAIT(target, TRAIT_PIERCEIMMUNE)) + to_chat(user, span_danger("[target]'s chest resists the stake. It won't go in.")) + return + to_chat(user, span_notice("You put all your weight into embedding the stake into [target]'s chest...")) + playsound(user, 'sound/magic/Demon_consume.ogg', 50, 1) + if(!do_mob(user, target, staketime, extra_checks = CALLBACK(target, /mob/living/carbon.proc/can_be_staked))) // user / target / time / uninterruptable / show progress bar / extra checks + return + // Drop & Embed Stake + user.visible_message( + span_danger("[user.name] drives the [src] into [target]'s chest!"), + span_danger("You drive the [src] into [target]'s chest!"), + ) + playsound(get_turf(target), 'sound/effects/splat.ogg', 40, 1) + user.dropItemToGround(src, TRUE) //user.drop_item() // "drop item" doesn't seem to exist anymore. New proc is user.dropItemToGround() but it doesn't seem like it's needed now? + if(!target.mind) + return + var/datum/antagonist/bloodsucker/bloodsuckerdatum = target.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum) + // If DEAD or TORPID... Kill Bloodsucker! + if(target.StakeCanKillMe()) + bloodsuckerdatum.FinalDeath() + else + to_chat(target, span_userdanger("You have been staked! Your powers are useless, your death forever, while it remains in place.")) + to_chat(target, span_userdanger("You have been staked!")) + +/// Created by welding and acid-treating a simple stake. +/obj/item/stake/hardened + name = "hardened stake" + desc = "A hardened wooden stake carved to a sharp point and scorched at the end." + icon_state = "hardened" + force = 8 + throwforce = 12 + armour_penetration = 10 + embedding = list("embed_chance" = 35) + staketime = 80 + +/obj/item/stake/hardened/silver + name = "silver stake" + desc = "Polished and sharp at the end. For when some mofo is always trying to iceskate uphill." + icon_state = "silver" + siemens_coefficient = 1 //flags = CONDUCT // var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) + force = 9 + armour_penetration = 25 + embedding = list("embed_chance" = 65) + staketime = 60 + +/obj/item/stake/ducky + name = "wooden ducky" + desc = "Remember to not drench your wooden ducky in bath water to prevent it from stinking." + icon_state = "ducky" + hitsound = 'sound/items/bikehorn.ogg' + sharpness = SHARP_POINTY //torture ducky + +/obj/item/stake/ducky/Initialize() + . = ..() + AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) + +////////////////////// +// ARCHIVES // +////////////////////// + +/* + * # Archives of the Kindred: + * + * A book that can only be used by Curators. + * When used on a player, after a short timer, will reveal if the player is a Bloodsucker, including their real name and Clan. + * This book should not work on Bloodsuckers using the Masquerade ability. + * If it reveals a Bloodsucker, the Curator will then be able to tell they are a Bloodsucker on examine (Like a Vassal). + * Reading it normally will allow Curators to read what each Clan does, with some extra flavor text ones. + * + * Regular Bloodsuckers won't have any negative effects from the book, while everyone else will get burns/eye damage. + * It is also Tremere's Clan objective to ensure a Tremere Bloodsucker has stolen this by the end of the round. + */ + +/obj/item/book/codex_gigas/Initialize(mapload) + . = ..() + var/turf/current_turf = get_turf(src) + new /obj/item/book/kindred(current_turf) + +/obj/item/book/kindred + name = "\improper Archive of the Kindred" + title = "the Archive of the Kindred" + desc = "Cryptic documents explaining hidden truths behind Undead beings. It is said only Curators can decipher what they really mean." + icon = 'icons/obj/vamp_obj.dmi' + lefthand_file = 'icons/mob/inhands/antag/bs_leftinhand.dmi' + righthand_file = 'icons/mob/inhands/antag/bs_rightinhand.dmi' + icon_state = "kindred_book" + author = "dozens of generations of Curators" + unique = TRUE + throw_speed = 1 + throw_range = 10 + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + var/in_use = FALSE + +/obj/item/book/kindred/Initialize() + . = ..() + AddComponent(/datum/component/stationloving, FALSE, TRUE) + +// Overwriting attackby to prevent cutting the book out +/obj/item/book/kindred/attackby(obj/item/item, mob/user, params) + // Copied from '/obj/item/book/attackby(obj/item/item, mob/user, params)' + if((istype(item, /obj/item/kitchen/knife) || item.tool_behaviour == TOOL_WIRECUTTER) && !(flags_1 & HOLOGRAM_1)) + to_chat(user, span_notice("You feel the gentle whispers of a Librarian telling you not to cut [title].")) + return + . = ..() + +/* + * # Attacking someone with the Book + */ +// target is the person being hit here +/obj/item/book/kindred/afterattack(mob/living/target, mob/living/user, flag, params) + . = ..() + if(!user.can_read(src)) + return + // Curator/Tremere using it + if(HAS_TRAIT(user, TRAIT_BLOODSUCKER_HUNTER)) + if(in_use || (target == user) || !ismob(target)) + return + user.visible_message(span_notice("[user] begins to quickly look through [src], repeatedly looking back up at [target].")) + in_use = TRUE + if(!do_mob(user, target, 3 SECONDS, NONE, TRUE)) + to_chat(user, span_notice("You quickly close [src].")) + in_use = FALSE + return + in_use = FALSE + var/datum/antagonist/bloodsucker/bloodsuckerdatum = IS_BLOODSUCKER(target) + // Are we a Bloodsucker | Are we on Masquerade. If one is true, they will fail. + if(IS_BLOODSUCKER(target) && !HAS_TRAIT(target, TRAIT_MASQUERADE)) + if(bloodsuckerdatum.broke_masquerade) + to_chat(user, span_warning("[target], also known as '[bloodsuckerdatum.ReturnFullName(TRUE)]', is indeed a Bloodsucker, but you already knew this.")) + return + else + to_chat(user, span_warning("You found the one! [target], also known as '[bloodsuckerdatum.ReturnFullName(TRUE)]', is not knowingly part of a Clan. You quickly note this information down, memorizing it.")) + bloodsuckerdatum.break_masquerade() + else + to_chat(user, span_notice("You fail to draw any conclusions to [target] being a Bloodsucker.")) + // Bloodsucker using it + else if(IS_BLOODSUCKER(user)) + to_chat(user, span_notice("[src] seems to be too complicated for you. It would be best to leave this for someone else to take.")) + else + to_chat(user, span_warning("[src] burns your hands as you try to use it!")) + user.apply_damage(12, BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + +/* + * # Reading the Book + */ +/obj/item/book/kindred/attack_self(mob/living/carbon/user) +// Don't call parent since it handles reading the book. +// . = ..() + if(!user.can_read(src)) + return + // Curator/Tremere using it + if(HAS_TRAIT(user, TRAIT_BLOODSUCKER_HUNTER)) + user.visible_message(span_notice("[user] opens [src] and begins reading intently.")) + ui_interact(user) + return + // Bloodsucker using it + else if(IS_BLOODSUCKER(user)) + to_chat(user, span_notice("[src] seems to be too complicated for you. It would be best to leave this for someone else to take.")) + return + to_chat(user, span_warning("You feel your eyes burn as you begin to read through [src]!")) + var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) + user.blur_eyes(10) + eyes.applyOrganDamage(5) + +/obj/item/book/kindred/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "KindredArchives", name) + ui.open() + +/obj/item/book/kindred/ui_act(action, params) + . = ..() + if(.) + return + if(!action) + return FALSE + SStgui.close_uis(src) + INVOKE_ASYNC(src, .proc/search, usr, action) + +// Flavortext stuff +/obj/item/book/kindred/proc/search(mob/reader, clan) + dat = "List of information gathered on the [clan]:
" + if(clan == CLAN_BRUJAH) + dat += "This Clan has proven to be the strongest in melee combat, boasting a powerful punch.
\ + They also appear to be more calm than the others, entering their 'frenzies' whenever they want, but dont seem affected.
\ + Be wary, as they are fearsome warriors, rebels and anarchists, with an inclination towards Frenzy.
\ + Favorite Vassal: Their favorite Vassal gains the Brawn ability. \ + Strength: Frenzy will not kill them, punches deal a lot of damage.
\ + Weakness: They have to spend Blood on powers while in Frenzy too." + if(clan == CLAN_TOREADOR) + dat += "The most charming Clan of them all, being borderline party animals, allowing them to very easily disguise among the crew.
\ + They are more in touch with their morals, so they suffer and benefit more strongly from the humanity cost or gain of their actions.
\ + They can be best defined as 'The most humane kind of vampire', due to their kindred with an obsession with perfectionism and beauty
\ + Favorite Vassal: Their favorite Vassal gains the Mesmerize ability \ + Strength: Highly charismatic and influential.
\ + Weakness: Physically and Morally weak." + if(clan == CLAN_NOSFERATU) + dat += "This Clan has been the most obvious to find information about.
\ + They are disfigured, ghoul-like vampires upon embrace by their Sire, scouts that travel through desolate paths to avoid violating the Masquerade.
\ + They make no attempts at hiding themselves within the crew, and have a terrible taste for heavy items.
\ + They also seem to manage to fit themsleves into small spaces such as vents.
\ + Favorite Vassal: Their Favorite Vassal gains the ability to ventcrawl while naked and becomes disfigured. \ + Strength: Ventcrawl.
\ + Weakness: Can't disguise themselves, permanently pale, can easily be discovered by their DNA or Blood Level." + if(clan == CLAN_TREMERE) + dat += "This Clan seems to hate entering the Chapel.
\ + They are a secluded Clan, they are Vampires who've mastered the power of blood, and seek knowledge.
\ + They appear to be focused more on their Blood Magic than their other Powers, getting stronger faster the more Vassals they have.
\ + They have 3 different paths they can take, from reviving people as Vassals, to stealing blood with beams made of the same essence.
\ + Favorite Vassal: Their Favorite Vassal gains the ability to shift into a Bat at will. \ + Strength: 3 different Powers that get stupidly strong overtime.
\ + Weakness: Cannot get regular Powers, with no way to get stun resistance outside of Frenzy." + if(clan == CLAN_GANGREL) + dat += "This Clan seems to be closer to Animals than to other Vampires.
\ + They also go by the name of Werewolves, as that is what appears when they enter a Frenzy.
\ + Despite this, they appear to be scared of 'True Faith', someone's ultimate and undying Faith, which itself doesn't require being something Religious.
\ + They hate seeing many people, and tend to avoid Stations that have more crewmembers than Nanotrasen's average. Due to this, they are harder to find than others.
\ + Favorite Vassal: Their Favorite Vassal turns into a Werewolf whenever their Master does.. \ + Strength: Feral, Werewolf during Frenzy.
\ + Weakness: Weak to True Faith." + if(clan == CLAN_VENTRUE) + dat += "This Clan seems to despise drinking from non sentient organics.
\ + They are Masters of manipulation, Greedy and entitled. Authority figures between the kindred society.
\ + They seem to take their Vassal's lives very seriously, going as far as to give Vassals some of their own Blood.
\ + Compared to other types, this one relies on their Vassals, rather than fighting for themselves.
\ + Favorite Vassal: Their Favorite Vassal will slowly be turned into a Bloodsucker overtime. \ + Strength: Slowly turns a Vassal into a Bloodsucker.
\ + Weakness: Does not gain more abilities overtime, it is best to target the Bloodsucker over the Vassal." + if(clan == CLAN_MALKAVIAN) + dat += "There is barely any information known about this Clan.
\ + Members of this Clan seems to mumble things to themselves, unaware of their surroundings.
\ + They also seem to enter and dissapear into areas randomly, as if not even they know where they are.
\ + Favorite Vassal: Unknown. \ + Strength: Unknown.
\ + Weakness: Unknown." + + reader << browse("Penned by [author].
" + "[dat]", "window=book[window_size != null ? ";size=[window_size]" : ""]") diff --git a/code/modules/antagonists/bloodsuckers/powers/_powers.dm b/code/modules/antagonists/bloodsuckers/powers/_powers.dm new file mode 100644 index 00000000000..66225e2fa89 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/_powers.dm @@ -0,0 +1,216 @@ +/datum/action/bloodsucker + name = "Vampiric Gift" + desc = "A vampiric gift." + //This is the FILE for the background icon + button_icon = 'icons/mob/actions/actions_bloodsucker.dmi' + //This is the ICON_STATE for the background icon + background_icon_state = "vamp_power_off" + var/background_icon_state_on = "vamp_power_on" + var/background_icon_state_off = "vamp_power_off" + icon_icon = 'icons/mob/actions/actions_bloodsucker.dmi' + button_icon_state = "power_feed" + buttontooltipstyle = "cult" + + /// The text that appears when using the help verb, meant to explain how the Power changes when ranking up. + var/power_explanation = "" + ///The owner's stored Bloodsucker datum + var/datum/antagonist/bloodsucker/bloodsuckerdatum_power + + // FLAGS // + /// The effects on this Power (Toggled/Single Use/Static Cooldown) + var/power_flags = BP_AM_TOGGLE|BP_AM_SINGLEUSE|BP_AM_STATIC_COOLDOWN|BP_AM_COSTLESS_UNCONSCIOUS + /// Requirement flags for checks + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_STAKED|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + /// Who can purchase the Power + var/purchase_flags = NONE // BLOODSUCKER_CAN_BUY|TREMERE_CAN_BUY|VASSAL_CAN_BUY|HUNTER_CAN_BUY + + // COOLDOWNS // + ///Timer between Power uses. + COOLDOWN_DECLARE(bloodsucker_power_cooldown) + + // VARS // + /// If the Power is currently active. + var/active = FALSE + /// Cooldown you'll have to wait between each use, decreases depending on level. + var/cooldown = 2 SECONDS + ///Can increase to yield new abilities - Each Power ranks up each Rank + var/level_current = 0 + ///The cost to ACTIVATE this Power + var/bloodcost = 0 + ///The cost to MAINTAIN this Power - Only used for Constant Cost Powers + var/constant_bloodcost = 0 + +// Modify description to add cost. +/datum/action/bloodsucker/New(Target) + . = ..() + UpdateDesc() + +/datum/action/bloodsucker/proc/UpdateDesc() + desc = initial(desc) + if(bloodcost > 0) + desc += "

COST: [bloodcost] Blood" + if(constant_bloodcost > 0) + desc += "

CONSTANT COST: [name] costs [constant_bloodcost] Blood maintain active." + if(power_flags & BP_AM_SINGLEUSE) + desc += "

SINGLE USE:
[name] can only be used once per night." + if(level_current > 0) + desc += "

LEVEL: [name] is currently level [level_current]." + +/datum/action/bloodsucker/Destroy() + bloodsuckerdatum_power = null + return ..() + +/datum/action/bloodsucker/IsAvailable() + return TRUE + +/datum/action/bloodsucker/Grant(mob/user) + . = ..() + var/datum/antagonist/bloodsucker/bloodsuckerdatum = IS_BLOODSUCKER(owner) + if(bloodsuckerdatum) + bloodsuckerdatum_power = bloodsuckerdatum + +/** + * # NOTES + * + * click.dm <--- Where we can take over mouse clicks + * spells.dm /add_ranged_ability() <--- How we take over the mouse click to use a power on a target. + */ + +//This is when we CLICK on the ability Icon, not USING. +/datum/action/bloodsucker/Trigger(trigger_flags) + if(active && CheckCanDeactivate()) // Active? DEACTIVATE AND END! + DeactivatePower() + return FALSE + if(!CheckCanPayCost() || !CheckCanUse(owner)) + return FALSE + PayCost() + ActivatePower() + if(power_flags & BP_AM_SINGLEUSE) + RemoveAfterUse() + return TRUE + if(!(power_flags & BP_AM_TOGGLE) || !active) + StartCooldown() // Must come AFTER UpdateButtonIcon(), otherwise icon will revert! + return TRUE + +/datum/action/bloodsucker/proc/CheckCanPayCost() + if(!owner || !owner.mind) + return FALSE + // Cooldown? + if(!COOLDOWN_FINISHED(src, bloodsucker_power_cooldown)) + to_chat(owner, span_warning("[src] on cooldown!")) + return FALSE + // Have enough blood? Bloodsuckers in a Frenzy don't need to pay them + var/mob/living/user = owner + if(bloodsuckerdatum_power?.frenzied) + return TRUE + if(user.blood_volume < bloodcost) + to_chat(owner, span_warning("You need at least [bloodcost] blood to activate [name]")) + return FALSE + return TRUE + +///Checks if the Power is available to use. +/datum/action/bloodsucker/proc/CheckCanUse(mob/living/carbon/user) + if(!owner) + return FALSE + if(!isliving(user)) + return FALSE + // Torpor? + if((check_flags & BP_CANT_USE_IN_TORPOR) && HAS_TRAIT(user, TRAIT_NODEATH)) + to_chat(user, span_warning("Not while you're in Torpor.")) + return FALSE + // Frenzy? + if((check_flags & BP_CANT_USE_IN_FRENZY) && (bloodsuckerdatum_power?.frenzied)) + to_chat(user, span_warning("You cannot use powers while in a Frenzy!")) + return FALSE + // Stake? + if((check_flags & BP_CANT_USE_WHILE_STAKED) && user.AmStaked()) + to_chat(user, span_warning("You have a stake in your chest! Your powers are useless.")) + return FALSE + // Conscious? -- We use our own (AB_CHECK_CONSCIOUS) here so we can control it more, like the error message. + if((check_flags & BP_CANT_USE_WHILE_UNCONSCIOUS) && user.stat != CONSCIOUS) + to_chat(user, span_warning("You can't do this while you are unconcious!")) + return FALSE + // Incapacitated? + if((check_flags & BP_CANT_USE_WHILE_INCAPACITATED) && (user.incapacitated(ignore_restraints = TRUE, ignore_grab = TRUE))) + to_chat(user, span_warning("Not while you're incapacitated!")) + return FALSE + // Constant Cost (out of blood) + if(constant_bloodcost > 0 && user.blood_volume <= 0) + to_chat(user, span_warning("You don't have the blood to upkeep [src].")) + return FALSE + return TRUE + +/// NOTE: With this formula, you'll hit half cooldown at level 8 for that power. +/datum/action/bloodsucker/proc/StartCooldown() + // Alpha Out + button.color = rgb(128,0,0,128) + button.alpha = 100 + // Calculate Cooldown (by power's level) + var/this_cooldown + if(power_flags & BP_AM_STATIC_COOLDOWN) + this_cooldown = cooldown + else + this_cooldown = max(cooldown / 2, cooldown - (cooldown / 16 * (level_current-1))) + + // Wait for cooldown + COOLDOWN_START(src, bloodsucker_power_cooldown, this_cooldown) + addtimer(CALLBACK(src, .proc/alpha_in), this_cooldown) + +/datum/action/bloodsucker/proc/alpha_in() + button.color = rgb(255,255,255,255) + button.alpha = 255 + +/datum/action/bloodsucker/proc/CheckCanDeactivate() + return TRUE + +/datum/action/bloodsucker/UpdateButtonIcon(force = FALSE) + background_icon_state = active ? background_icon_state_on : background_icon_state_off + . = ..() + +/datum/action/bloodsucker/proc/PayCost() + // Bloodsuckers in a Frenzy don't have enough Blood to pay it, so just don't. + if(bloodsuckerdatum_power?.frenzied) + return + var/mob/living/carbon/human/user = owner + user.blood_volume -= bloodcost + bloodsuckerdatum_power?.update_hud() + +/datum/action/bloodsucker/proc/ActivatePower() + active = TRUE + if(power_flags & BP_AM_TOGGLE) + RegisterSignal(owner, COMSIG_LIVING_BIOLOGICAL_LIFE, .proc/UsePower) + owner.log_message("used [src].", LOG_ATTACK, color="red") + UpdateButtonIcon() + +/datum/action/bloodsucker/proc/DeactivatePower() + if(power_flags & BP_AM_TOGGLE) + UnregisterSignal(owner, COMSIG_LIVING_BIOLOGICAL_LIFE) + active = FALSE + UpdateButtonIcon() + StartCooldown() + +///Used by powers that are continuously active (That have BP_AM_TOGGLE flag) +/datum/action/bloodsucker/proc/UsePower(mob/living/user) + if(!active) // Power isn't active? Then stop here, so we dont keep looping UsePower for a non existent Power. + return FALSE + if(!ContinueActive(user)) // We can't afford the Power? Deactivate it. + DeactivatePower() + return FALSE + // We can keep this up (For now), so Pay Cost! + if(!(power_flags & BP_AM_COSTLESS_UNCONSCIOUS) && user.stat != CONSCIOUS) + bloodsuckerdatum_power?.AddBloodVolume(-constant_bloodcost) + return TRUE + +/// Checks to make sure this power can stay active +/datum/action/bloodsucker/proc/ContinueActive(mob/living/user, mob/living/target) + if(!active) + return FALSE + if(!user) + return FALSE + if(!constant_bloodcost > 0 || user.blood_volume > 0) + return TRUE + +/// Used to unlearn Single-Use Powers +/datum/action/bloodsucker/proc/RemoveAfterUse() + bloodsuckerdatum_power?.powers -= src + Remove(owner) diff --git a/code/modules/antagonists/bloodsuckers/powers/cloak.dm b/code/modules/antagonists/bloodsuckers/powers/cloak.dm new file mode 100644 index 00000000000..c27b92a90fc --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/cloak.dm @@ -0,0 +1,66 @@ +/datum/action/bloodsucker/cloak + name = "Cloak of Darkness" + desc = "Blend into the shadows and become invisible to the untrained and Artificial eye." + button_icon_state = "power_cloak" + power_explanation = "Cloak of Darkness:\n\ + Activate this Power in the shadows and you will slowly turn nearly invisible.\n\ + While using Cloak of Darkness, attempting to run will crush you.\n\ + Additionally, while Cloak is active, you are completely invisible to the AI.\n\ + Higher levels will increase how invisible you are." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + bloodcost = 5 + constant_bloodcost = 0.2 + cooldown = 5 SECONDS + var/was_running + +/// Must have nobody around to see the cloak +/datum/action/bloodsucker/cloak/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) + return FALSE + for(var/mob/living/watchers in viewers(9, owner) - owner) + to_chat(owner, span_warning("You can only vanish unseen.")) + return FALSE + return TRUE + +/datum/action/bloodsucker/cloak/ActivatePower() + . = ..() + var/mob/living/user = owner + was_running = (user.m_intent == MOVE_INTENT_RUN) + if(was_running) + user.toggle_move_intent() + user.AddElement(/datum/element/digitalcamo) + to_chat(user, span_notice("You put your Cloak of Darkness on.")) + +/datum/action/bloodsucker/cloak/UsePower(mob/living/user) + // Checks that we can keep using this. + . = ..() + if(!.) + return + animate(user, alpha = max(25, owner.alpha - min(75, 10 + 5 * level_current)), time = 1.5 SECONDS) + // Prevents running while on Cloak of Darkness + if(user.m_intent != MOVE_INTENT_WALK) + to_chat(owner, span_warning("You attempt to run, crushing yourself.")) + user.toggle_move_intent() + user.adjustBruteLoss(rand(5,15)) + +/datum/action/bloodsucker/cloak/ContinueActive(mob/living/user, mob/living/target) + . = ..() + if(!.) + return FALSE + /// Must be CONSCIOUS + if(user.stat != CONSCIOUS) + to_chat(owner, span_warning("Your Cloak of Darkness fell off due to you falling unconcious!")) + return FALSE + return TRUE + +/datum/action/bloodsucker/cloak/DeactivatePower() + . = ..() + var/mob/living/user = owner + animate(user, alpha = 255, time = 1 SECONDS) + user.RemoveElement(/datum/element/digitalcamo) + if(was_running && user.m_intent == MOVE_INTENT_WALK) + user.toggle_move_intent() + to_chat(user, span_notice("You take your Cloak of Darkness off.")) diff --git a/code/modules/antagonists/bloodsuckers/powers/distress.dm b/code/modules/antagonists/bloodsuckers/powers/distress.dm new file mode 100644 index 00000000000..6a9d3e08143 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/distress.dm @@ -0,0 +1,22 @@ +/datum/action/bloodsucker/distress + name = "Distress" + desc = "Injure yourself, allowing you to make a desperate call for help to your Master." + button_icon_state = "power_distress" + power_explanation = "Distress:\n\ + Use this Power from anywhere and your Master Bloodsucker will instnatly be alerted of your location." + power_flags = NONE + check_flags = NONE + purchase_flags = NONE + bloodcost = 10 + cooldown = 10 SECONDS + +/datum/action/bloodsucker/distress/ActivatePower() + . = ..() + var/turf/open/floor/target_area = get_area(owner) + var/datum/antagonist/vassal/vassaldatum = owner.mind.has_antag_datum(/datum/antagonist/vassal) + + to_chat(owner, "You call out for your master!") + to_chat(vassaldatum.master.owner, "[owner], your loyal Vassal, is desperately calling for aid at [target_area]!") + + var/mob/living/user = owner + user.adjustBruteLoss(10) diff --git a/code/modules/antagonists/bloodsuckers/powers/feed.dm b/code/modules/antagonists/bloodsuckers/powers/feed.dm new file mode 100644 index 00000000000..8e2ce88ed09 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/feed.dm @@ -0,0 +1,352 @@ +/datum/action/bloodsucker/feed + name = "Feed" + desc = "Draw the heartsblood of living victims in your grasp. You will break the Masquerade if seen feeding." + button_icon_state = "power_feed" + power_explanation = "Feed:\n\ + Activate Feed while next to someone and you will begin to feed blood off of them.\n\ + If passively grabbed, you will feed faster than default.\n\ + If aggressively grabbed, along with drinking even faster, your victim will additionally be put to sleep.\n\ + You cannot talk while Feeding, as your mouth is full of Blood.\n\ + If you feed off of a Rat, unless you are Malkavian or Nosferatu, you will lose Humanity and get a mood debuff.\n\ + Feeding off of someone until they die will cause you to lose Humanity.\n\ + If you are seen feeding off of someone (2 tiles) while your target is grabbed, you will break the Masquerade.\n\ + Higher levels will increase the feeding's speed." + power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_WHILE_STAKED|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY + bloodcost = 0 + cooldown = 3 SECONDS + + ///Amount of times we were seen Feeding. If seen 3 times, we broke the Masquerade. + var/feeds_noticed = 0 + ///Distance before silent feeding is noticed. + var/notice_range = 2 + ///Check if we were noticed Feeding. + var/was_noticed = FALSE + ///So we can validate more than just the guy we're grappling. + var/mob/living/feed_target + ///If you started grappled, then ending it will end your Feed. + var/target_grappled = FALSE + ///Am I Silent? + var/amSilent = FALSE + ///How much Blood did I drink? This is used for logs + var/amount_taken = 0 + ///The initial wait before you start drinking blood. + var/feed_time + ///Quantity to take per tick, based on Silent/frenzied or not. + var/blood_take_mult + /// CHECKS - To prevent spam. + var/warning_target_inhuman = FALSE + var/warning_target_dead = FALSE + var/warning_full = FALSE + var/warning_target_bloodvol = 99999 + var/was_alive = FALSE + +/datum/action/bloodsucker/feed/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) + return FALSE + + // Wearing mask + if(user.is_mouth_covered()) + to_chat(owner, span_warning("Your mouth is covered!")) + return FALSE + // Find my Target! + if(!find_target()) + return FALSE + // DONE! + return TRUE + +/// Called twice: validating a subtle victim, or validating your grapple victim. +/datum/action/bloodsucker/feed/proc/ValidateTarget(mob/living/target) + // Must have Target. + if(!target)//|| !ismob(target) + to_chat(owner, span_warning("You must be next to or grabbing a victim to feed from them.")) + return FALSE + // Not even living! + if(!isliving(target) || issilicon(target)) + to_chat(owner, span_warning("You may only feed from living beings.")) + return FALSE + // Check for other animals (Supposed to be after Mouse so Mouse can skip over it) + else if(!iscarbon(target)) + to_chat(owner, span_warning("Such simple beings cannot be fed off of.")) + return FALSE + // Has no blood to take! + else if(target.blood_volume <= 0) + to_chat(owner, span_warning("Your victim has no blood to take.")) + return FALSE + // Bloodsuckers can be fed off of if they are grabbed more than Passively. + if(IS_BLOODSUCKER(target) && target == owner.pulling && owner.grab_state <= GRAB_PASSIVE) + to_chat(owner, span_warning("Other Bloodsuckers will not fall for your subtle approach.")) + return FALSE + if(ishuman(target)) + var/mob/living/carbon/human/target_user = target + if(!target_user.can_inject(owner, BODY_ZONE_HEAD, 1) && target == owner.pulling && owner.grab_state < GRAB_AGGRESSIVE) + to_chat(owner, span_warning("Their suit is too thick to feed through.")) + return FALSE + if(NOBLOOD in target_user.dna.species.species_traits)// || owner.get_blood_id() != target.get_blood_id()) + to_chat(owner, span_warning("Your victim's blood is not suitable for you to take.")) + return FALSE + return TRUE + +/// If I'm not grabbing someone, find me someone nearby. +/datum/action/bloodsucker/feed/proc/find_target() + // Default + feed_target = null + target_grappled = FALSE + // If you are pulling a mob, that's your target. If you don't like it, then release them. + if(owner.pulling && ismob(owner.pulling)) + // Check grapple target Valid + if(!ValidateTarget(owner.pulling)) // Grabbed targets display error. + return FALSE + target_grappled = TRUE + feed_target = owner.pulling + return TRUE + // Find Targets + var/list/mob/living/seen_mobs = list() + for(var/mob/living/watchers in view(1, owner) - owner) + if(!isliving(watchers)) + continue + seen_mobs |= watchers + // None Seen! + if(!seen_mobs.len) + to_chat(owner, span_warning("You must be next to or grabbing a victim to feed from them.")) + return FALSE + // Check Valids... + var/list/targets_valid = list() + var/list/targets_dead = list() + for(var/mob/living/watchers in seen_mobs) + // Check adjecent Valid target + if(watchers != owner && ValidateTarget(watchers)) // Do NOT display errors. We'll be doing this again in CheckCanUse(), which will rule out grabbed targets. + // Prioritize living, but remember dead as backup + if(watchers.stat < DEAD) + targets_valid |= watchers + else + targets_dead |= watchers + // No Living? Try dead. + if(!targets_valid.len && targets_dead.len) + targets_valid = targets_dead + // No Targets + if(!targets_valid.len) + // Did I see targets? Then display at least one error + if(seen_mobs.len > 1) + to_chat(owner, span_warning("None of these are valid targets to feed from subtly.")) + else + ValidateTarget(seen_mobs[1]) + return FALSE + else + feed_target = pick(targets_valid) + return TRUE + +/datum/action/bloodsucker/feed/ActivatePower() + . = ..() + var/mob/living/user = owner + // Checks: Step 1 - Am I SECRET or LOUD? + if(!bloodsuckerdatum_power.frenzied && (!target_grappled || owner.grab_state <= GRAB_PASSIVE)) // && iscarbon(target) // Non-carbons (animals) not passive. They go straight into aggressive. + amSilent = TRUE + + // Checks: Step 2 - Is it a Mouse? + if(istype(feed_target, /mob/living/simple_animal/mouse)) + var/mob/living/simple_animal/mouse_target = feed_target + bloodsuckerdatum_power.AddBloodVolume(25) + to_chat(user, span_notice("You recoil at the taste of a lesser lifeform.")) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "drankblood", /datum/mood_event/drankblood_bad) + bloodsuckerdatum_power.AddHumanityLost(1) + DeactivatePower() + mouse_target.adjustBruteLoss(20) + return + // Checks: Step 3 - How fast should I be and how much should I drink? + var/feed_time_multiplier + if(bloodsuckerdatum_power.frenzied) + blood_take_mult = 2 + feed_time_multiplier = 8 + else if(!amSilent) + blood_take_mult = 1 + feed_time_multiplier = 25 - (2.5 * level_current) + else + blood_take_mult = 0.3 + feed_time_multiplier = 45 - (2.5 * level_current) + feed_time = max(8, feed_time_multiplier) + // Let's check if our target is alive + was_alive = feed_target.stat < DEAD && ishuman(feed_target) + + // Send pre-pull message + if(amSilent) + to_chat(owner, span_notice("You quietly lean towards [feed_target]")) + else + to_chat(owner, span_notice("You pull [feed_target] close to you!")) + + // Start the countdown + if(!do_mob(user, feed_target, feed_time, NONE, TRUE)) + DeactivatePower() + to_chat(owner, span_danger("Your feeding was interrupted!")) + return + + // Give them the effects (Depending on if we are silent or not) + if(!amSilent) + // Sleep & paralysis. + ApplyVictimEffects(feed_target, first_hit = TRUE) + // Pull target to you if they don't take up space. + if(!feed_target.density) + feed_target.Move(user.loc) + user.visible_message( + span_warning("[user] closes [user.p_their()] mouth around [feed_target]'s neck!"), + span_warning("You sink your fangs into [feed_target]'s neck."), + ) + if(amSilent) + var/deadmessage = feed_target.stat == DEAD ? "" : " [feed_target.p_they(TRUE)] looks dazed, and will not remember this." + user.visible_message( + span_notice("[user] puts [feed_target]'s wrist up to [user.p_their()] mouth."), \ + span_notice("You slip your fangs into [feed_target]'s wrist.[deadmessage]"), \ + vision_distance = notice_range, ignored_mobs = feed_target) // Only people who AREN'T the target will notice this action. + + // Check if we have anyone watching - If there is one, we broke the Masquerade. + for(var/mob/living/watchers in viewers(notice_range, owner) - owner - feed_target) + // Are they someone who will actually report our behavior? + if(watchers.client \ + && !watchers.has_unlimited_silicon_privilege \ + && watchers.stat != DEAD \ + && watchers.eye_blind == 0 \ + && watchers.eye_blurry == 0 \ + && !IS_BLOODSUCKER(watchers) \ + && !IS_VASSAL(watchers) \ + && !HAS_TRAIT(watchers, TRAIT_BLOODSUCKER_HUNTER)) + was_noticed = TRUE + break + if(was_noticed && !target_grappled) + feeds_noticed++ + to_chat(owner, span_danger("Someone may have noticed...")) + if(!bloodsuckerdatum_power.broke_masquerade) + to_chat(user, span_cultbold("You broke the Masquerade [feeds_noticed] time(s), if you break it 3 times, you become a criminal to the Bloodsucker's Cause!")) + else + to_chat(owner, span_notice("You think no one saw you...")) + + // FEEEEEEEEED!! // + ADD_TRAIT(user, TRAIT_MUTE, BLOODSUCKER_TRAIT) // My mouth is full! + user.Immobilize(10 SECONDS) // Prevents spilling blood accidentally. + +/datum/action/bloodsucker/feed/UsePower(mob/living/user) + if(!ContinueActive(user, feed_target)) + if(amSilent) + to_chat(user, span_warning("Your feeding has been interrupted... but [feed_target.p_they()] didn't seem to notice you.")) + DeactivatePower() + else + to_chat(user, span_warning("Your feeding has been interrupted!")) + user.visible_message( + span_warning("[user] is ripped from [feed_target]'s throat. [feed_target.p_their(TRUE)] blood sprays everywhere!"), + span_warning("Your teeth are ripped from [feed_target]'s throat. [feed_target.p_their(TRUE)] blood sprays everywhere!")) + // Deal Damage to Target (should have been more careful!) + if(iscarbon(feed_target)) + var/mob/living/carbon/carbon_target = feed_target + carbon_target.bleed(15) + playsound(get_turf(feed_target), 'sound/effects/splat.ogg', 40, 1) + if(ishuman(feed_target)) + var/mob/living/carbon/human/target_user = feed_target + var/obj/item/bodypart/head_part = target_user.get_bodypart(BODY_ZONE_HEAD) + if(head_part) + head_part.generic_bleedstacks += 5 + feed_target.add_splatter_floor(get_turf(feed_target)) + user.add_mob_blood(feed_target) // Put target's blood on us. The donor goes in the ( ) + feed_target.add_mob_blood(feed_target) + feed_target.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = CANT_WOUND) + INVOKE_ASYNC(feed_target, /mob.proc/emote, "scream") + DeactivatePower() + return + + /////////////////////////////////////////////////////////// + // Handle Feeding! User & Victim Effects (per tick) + bloodsuckerdatum_power.HandleFeeding(feed_target, blood_take_mult, level_current) + amount_taken += amSilent ? 0.3 : 1 + if(!amSilent) + ApplyVictimEffects(feed_target) + + /////////////////////////////////////////////////////////// + // MOOD EFFECTS // + // Drank good blood? - GOOD + if(amount_taken > 5 && feed_target.stat < DEAD && ishuman(feed_target)) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "drankblood", /datum/mood_event/drankblood) + // Dead Blood? - BAD + if(feed_target.stat >= DEAD) + if(ishuman(feed_target)) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "drankblood", /datum/mood_event/drankblood_dead) + if(!warning_target_dead) + to_chat(user, span_notice("Your victim is dead. [feed_target.p_their(TRUE)] blood barely nourishes you.")) + warning_target_dead = TRUE + + // Blood Remaining? (Carbons/Humans only) + else if(!IS_BLOODSUCKER(feed_target)) + if(feed_target.blood_volume <= BLOOD_VOLUME_BAD && warning_target_bloodvol > BLOOD_VOLUME_BAD) + to_chat(owner, span_danger("Your victim's blood is fatally low!")) + else if(feed_target.blood_volume <= BLOOD_VOLUME_OKAY && warning_target_bloodvol > BLOOD_VOLUME_OKAY) + to_chat(owner, span_danger("Your victim's blood is dangerously low.")) + else if(feed_target.blood_volume <= BLOOD_VOLUME_SAFE && warning_target_bloodvol > BLOOD_VOLUME_SAFE) + to_chat(owner, span_danger("Your victim's blood is at an unsafe level.")) + warning_target_bloodvol = feed_target.blood_volume // If we had a warning to give, it's been given by now. + // Full? + if(user.blood_volume >= bloodsuckerdatum_power.max_blood_volume && !warning_full) + to_chat(owner, span_notice("You are full, further blood will be wasted.")) + warning_full = TRUE + // Done? + if(feed_target.blood_volume <= 0) + DeactivatePower() + to_chat(owner, span_notice("You have bled your victim dry...")) + return + + // Blood Gulp Sound + owner.playsound_local(null, 'sound/effects/singlebeat.ogg', 40, TRUE) + if(!amSilent) + feed_target.playsound_local(null, 'sound/effects/singlebeat.ogg', 40, TRUE) + +/// Check if we killed our target +/datum/action/bloodsucker/feed/proc/CheckKilledTarget(mob/living/target) + if(target && target.stat >= DEAD && ishuman(target)) + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "drankkilled", /datum/mood_event/drankkilled) + bloodsuckerdatum_power.AddHumanityLost(10) + +/// NOTE: We only care about pulling if target started off that way. Mostly only important for Aggressive feed. +/datum/action/bloodsucker/feed/ContinueActive(mob/living/user, mob/living/target) + if(!target) + return FALSE + if(!user.Adjacent(target)) + return FALSE + if(target_grappled && !user.pulling) + return FALSE + return TRUE + +/// Bloodsuckers not affected by "the Kiss" of another vampire +/datum/action/bloodsucker/feed/proc/ApplyVictimEffects(mob/living/target, first_hit = FALSE) + if(IS_BLOODSUCKER(target) || IS_VASSAL(target)) + return + if(first_hit) + target.Unconscious(5 SECONDS,0) + target.Paralyze(40 + 5 * level_current) + +/datum/action/bloodsucker/feed/DeactivatePower() + . = ..() // activate = FALSE + + if(feed_target) // Check: Otherwise it runtimes if you fail to feed on someone. + if(amSilent) + to_chat(owner, span_notice("You slowly release [feed_target]'s wrist." + (feed_target.stat == 0 ? " [feed_target.p_their(TRUE)] face lacks expression, like you've already been forgotten." : ""))) + else + owner.visible_message( + span_warning("[owner] unclenches their teeth from [feed_target]'s neck."), + span_warning("You retract your fangs and release [feed_target] from your bite.")) + log_combat(owner, feed_target, "fed on blood", addition="(and took [amount_taken] blood)") + // Did we kill our target? + if(was_alive) + CheckKilledTarget(feed_target) + // Only break it once we've broken it 3 times, not more. + if(feeds_noticed == 3) + bloodsuckerdatum_power.break_masquerade() + // Reset ALL checks for next time the Power is used. + amSilent = FALSE + was_noticed = FALSE + warning_target_inhuman = FALSE + warning_target_dead = FALSE + warning_full = FALSE + feed_target = null + warning_target_bloodvol = 99999 + // My mouth is no longer full + var/mob/living/O = owner + O.SetImmobilized(0) + REMOVE_TRAIT(owner, TRAIT_MUTE, BLOODSUCKER_TRAIT) From ab37c89e11c6987b65908c464eeb9a8a4b11fa00 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Thu, 11 Aug 2022 13:46:49 +0300 Subject: [PATCH 02/23] --- .../bloodsuckers/powers/fortitude.dm | 82 ++ .../bloodsuckers/powers/gangrel.dm | 312 +++++++ .../antagonists/bloodsuckers/powers/gohome.dm | 117 +++ .../bloodsuckers/powers/masquerade.dm | 110 +++ .../bloodsuckers/powers/recuperate.dm | 58 ++ .../powers/targeted/_powers_targeted.dm | 98 +++ .../bloodsuckers/powers/targeted/brawn.dm | 191 +++++ .../bloodsuckers/powers/targeted/haste.dm | 99 +++ .../bloodsuckers/powers/targeted/lunge.dm | 154 ++++ .../bloodsuckers/powers/targeted/mesmerize.dm | 126 +++ .../bloodsuckers/powers/targeted/trespass.dm | 107 +++ .../antagonists/bloodsuckers/powers/veil.dm | 131 +++ .../structures/bloodsucker_coffin.dm | 285 +++++++ .../structures/bloodsucker_crypt.dm | 799 ++++++++++++++++++ .../structures/bloodsucker_life.dm | 430 ++++++++++ .../structures/bloodsucker_recipes.dm | 159 ++++ .../antagonists/bloodsuckers/vassal.dm | 188 +++++ 17 files changed, 3446 insertions(+) create mode 100644 code/modules/antagonists/bloodsuckers/powers/fortitude.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/gangrel.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/gohome.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/masquerade.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/recuperate.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/targeted/_powers_targeted.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/targeted/brawn.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/targeted/haste.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/targeted/lunge.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/targeted/mesmerize.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/targeted/trespass.dm create mode 100644 code/modules/antagonists/bloodsuckers/powers/veil.dm create mode 100644 code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm create mode 100644 code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm create mode 100644 code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm create mode 100644 code/modules/antagonists/bloodsuckers/structures/bloodsucker_recipes.dm create mode 100644 code/modules/antagonists/bloodsuckers/vassal.dm diff --git a/code/modules/antagonists/bloodsuckers/powers/fortitude.dm b/code/modules/antagonists/bloodsuckers/powers/fortitude.dm new file mode 100644 index 00000000000..a981d84df7c --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/fortitude.dm @@ -0,0 +1,82 @@ +/datum/action/bloodsucker/fortitude + name = "Fortitude" + desc = "Withstand egregious physical wounds and walk away from attacks that would stun, pierce, and dismember lesser beings." + button_icon_state = "power_fortitude" + power_explanation = "Fortitude:\n\ + Activating Fortitude will provide pierce, stun and dismember immunity.\n\ + You will additionally gain resistance to Brute and Stamina damge, scaling with level.\n\ + While using Fortitude, attempting to run will crush you.\n\ + At level 4, you gain complete stun immunity.\n\ + Higher levels will increase Brute and Stamina resistance." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_AM_COSTLESS_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + bloodcost = 30 + cooldown = 8 SECONDS + constant_bloodcost = 0.2 + var/was_running + var/fortitude_resist // So we can raise and lower your brute resist based on what your level_current WAS. + +/datum/action/bloodsucker/fortitude/ActivatePower() + . = ..() + to_chat(owner, span_notice("Your flesh, skin, and muscles become as steel.")) + // Traits & Effects + ADD_TRAIT(owner, TRAIT_PIERCEIMMUNE, BLOODSUCKER_TRAIT) + ADD_TRAIT(owner, TRAIT_NODISMEMBER, BLOODSUCKER_TRAIT) + ADD_TRAIT(owner, TRAIT_PUSHIMMUNE, BLOODSUCKER_TRAIT) + if(level_current >= 4) + ADD_TRAIT(owner, TRAIT_STUNIMMUNE, BLOODSUCKER_TRAIT) // They'll get stun resistance + this, who cares. + var/mob/living/carbon/human/bloodsucker_user = owner + if(IS_BLOODSUCKER(owner) || IS_VASSAL(owner)) + fortitude_resist = max(0.3, 0.7 - level_current * 0.1) + bloodsucker_user.physiology.brute_mod *= fortitude_resist + bloodsucker_user.physiology.stamina_mod *= fortitude_resist + if(IS_MONSTERHUNTER(owner)) + bloodsucker_user.physiology.brute_mod *= 0.4 + bloodsucker_user.physiology.burn_mod *= 0.4 + ADD_TRAIT(owner, TRAIT_STUNIMMUNE, BLOODSUCKER_TRAIT) + + was_running = (owner.m_intent == MOVE_INTENT_RUN) + if(was_running) + bloodsucker_user.toggle_move_intent() + +/datum/action/bloodsucker/fortitude/UsePower(mob/living/carbon/user) + // Checks that we can keep using this. + . = ..() + if(!.) + return + /// Prevents running while on Fortitude + if(user.m_intent != MOVE_INTENT_WALK) + user.toggle_move_intent() + to_chat(user, span_warning("You attempt to run, crushing yourself.")) + user.adjustBruteLoss(rand(5,15)) + /// We don't want people using fortitude being able to use vehicles + if(user.buckled && istype(user.buckled, /obj/vehicle)) + user.buckled.unbuckle_mob(src, force=TRUE) + +/datum/action/bloodsucker/fortitude/DeactivatePower() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/bloodsucker_user = owner + if(IS_BLOODSUCKER(owner) || IS_VASSAL(owner)) + bloodsucker_user.physiology.brute_mod /= fortitude_resist + if(!HAS_TRAIT_FROM(bloodsucker_user, TRAIT_STUNIMMUNE, BLOODSUCKER_TRAIT)) + bloodsucker_user.physiology.stamina_mod /= fortitude_resist + if(IS_MONSTERHUNTER(owner)) + bloodsucker_user.physiology.brute_mod /= 0.4 + bloodsucker_user.physiology.burn_mod /= 0.4 + // Remove Traits & Effects + REMOVE_TRAIT(bloodsucker_user, TRAIT_PIERCEIMMUNE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(bloodsucker_user, TRAIT_NODISMEMBER, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(bloodsucker_user, TRAIT_PUSHIMMUNE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(bloodsucker_user, TRAIT_STUNIMMUNE, BLOODSUCKER_TRAIT) + + if(was_running && bloodsucker_user.m_intent == MOVE_INTENT_WALK) + bloodsucker_user.toggle_move_intent() + return ..() + +/// Monster Hunter version +/datum/action/bloodsucker/fortitude/hunter + name = "Flow" + desc = "Use the arts to Flow, giving shove and stun immunity, as well as brute, burn, dismember and pierce resistance. You cannot run while this is active." + purchase_flags = HUNTER_CAN_BUY diff --git a/code/modules/antagonists/bloodsuckers/powers/gangrel.dm b/code/modules/antagonists/bloodsuckers/powers/gangrel.dm new file mode 100644 index 00000000000..227ee0f02e5 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/gangrel.dm @@ -0,0 +1,312 @@ +/datum/action/bloodsucker/gangrel + button_icon = 'icons/mob/actions/actions_gangrel_bloodsucker.dmi' + icon_icon = 'icons/mob/actions/actions_gangrel_bloodsucker.dmi' + background_icon_state = "gangrel_power_off" + background_icon_state_on = "gangrel_power_on" + background_icon_state_off = "gangrel_power_off" + +/datum/action/bloodsucker/gangrel/transform + name = "Transform" + desc = "Allows you to unleash your inner form and turn into something greater." + button_icon_state = "power_gangrel" + power_explanation = "Transform:\n\ + A gangrel only power, will turn you into a feral being depending on your blood sucked.\n\ + May have unforseen consequences if used on low blood sucked, upgrades every 500 units.\n\ + Some forms have special abilites to them depending on what abilites you have.\n\ + Be wary of your blood status when using it, takes 10 seconds of standing still to transform!" + power_flags = BP_AM_SINGLEUSE|BP_AM_STATIC_COOLDOWN + check_flags = BP_AM_COSTLESS_UNCONSCIOUS + purchase_flags = NONE + bloodcost = 100 + cooldown = 10 SECONDS + +/mob/living/simple_animal/hostile/bloodsucker + var/mob/living/controller + +/mob/living/simple_animal/hostile/bloodsucker/werewolf + name = "werewolf" + desc = "Who could imagine this things 'were' actually real?" + icon = 'icons/mob/bloodsucker_mobs.dmi' + icon_state = "wolfform" + icon_living = "wolfform" + icon_dead = "batform" + icon_gib = "batform" + speed = -2 + response_help_continuous = "touches" + response_help_simple = "touch" + response_disarm_continuous = "flails at" + response_disarm_simple = "flail at" + response_harm_continuous = "punches" + response_harm_simple = "punch" + speak_chance = 0 + maxHealth = 800 + health = 800 + see_in_dark = 10 + harm_intent_damage = 20 + melee_damage_lower = 20 + melee_damage_upper = 20 + attack_verb_continuous = "violently mawls" + attack_verb_simple = "violently mawl" + butcher_results = list(/obj/item/food/meat/slab = 5) + faction = list("hostile", "bloodhungry") + attack_sound = 'sound/weapons/slash.ogg' + obj_damage = 50 + environment_smash = ENVIRONMENT_SMASH_WALLS + mob_size = MOB_SIZE_LARGE + movement_type = GROUND + gold_core_spawnable = FALSE + speak_emote = list("gnashes") + +/mob/living/simple_animal/hostile/bloodsucker/giantbat + name = "giant bat" + desc = "That's a fat ass bat." + icon = 'icons/mob/bloodsucker_mobs.dmi' + icon_state = "batform" + icon_living = "batform" + icon_dead = "bat_dead" + icon_gib = "bat_dead" + move_to_delay = 2 + response_help_continuous = "touches" + response_help_simple = "touch" + response_disarm_continuous = "flails at" + response_disarm_simple = "flail at" + response_harm_continuous = "punches" + response_harm_simple = "punch" + speak_chance = 0 + maxHealth = 700 + health = 700 + see_in_dark = 10 + harm_intent_damage = 20 + melee_damage_lower = 20 + melee_damage_upper = 20 + attack_verb_continuous = "bites" + attack_verb_simple = "bite" + butcher_results = list(/obj/item/food/meat/slab = 3) + faction = list("hostile", "bloodhungry") + attack_sound = 'sound/weapons/bite.ogg' + obj_damage = 35 + pass_flags = PASSTABLE | PASSMACHINE + environment_smash = ENVIRONMENT_SMASH_STRUCTURES + mob_size = MOB_SIZE_LARGE + movement_type = FLYING + gold_core_spawnable = FALSE + speak_emote = list("loudly squeaks") + +/mob/living/simple_animal/hostile/bloodsucker/Destroy() //makes us alive again + if(controller && mind) + visible_message(span_warning("[src] rapidly transforms into a humanoid figure!"), span_warning("You forcefully return to your normal form.")) + playsound(src, 'sound/weapons/slash.ogg', 50, 1) + if(mind) + mind.transfer_to(controller) + controller.forceMove(get_turf(src)) + return ..() + +/mob/living/simple_animal/hostile/bloodsucker/death() + if(controller) + mind.transfer_to(controller) + controller.death() + addtimer(CALLBACK(src, .proc/gib), 20 SECONDS) + ..() + +/datum/action/bloodsucker/gangrel/transform/ActivatePower() + var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.mind.has_antag_datum(/datum/antagonist/bloodsucker) + var/mob/living/carbon/human/user = owner + var/datum/species/user_species = user.dna.species + user.Immobilize(10 SECONDS) + if(!do_mob(user, user, 10 SECONDS, 1)) + return + switch(bloodsuckerdatum.total_blood_drank) + if(0 to 1500) + if(isfelinid(user)) + user.set_species(/datum/species/lizard) + playsound(user.loc, 'sound/voice/lizard/hiss.ogg', 50) + else + user.set_species(/datum/species/human/felinid) + playsound(user.loc, 'sound/effects/meow1.ogg', 50) + if(DIGITIGRADE in user_species.species_traits) + user_species.species_traits -= DIGITIGRADE + user_species.punchdamagehigh += 5.0 //stronk + user_species.armor += 30 + to_chat(user, span_notice("You aren't strong enough to morph into something stronger! But you do certainly feel more feral and stronger than before.")) + if(1500 to INFINITY) + var/mob/living/simple_animal/hostile/bloodsucker/giantbat/gb + if(!gb || gb.stat == DEAD) + gb = new /mob/living/simple_animal/hostile/bloodsucker/giantbat(user.loc) + user.forceMove(gb) + gb.controller = user + user.mind.transfer_to(gb) + var/list/bat_powers = list(new /datum/action/bloodsucker/gangrel/transform_back,) + for(var/datum/action/bloodsucker/power in bloodsuckerdatum.powers) + if(istype(power, /datum/action/bloodsucker/targeted/haste)) + bat_powers += new /datum/action/bloodsucker/targeted/haste/batdash + if(istype(power, /datum/action/bloodsucker/targeted/mesmerize)) + bat_powers += new /datum/action/bloodsucker/targeted/bloodbolt + if(istype(power, /datum/action/bloodsucker/targeted/brawn)) + bat_powers += new /datum/action/bloodsucker/gangrel/wingslam + for(var/datum/action/bloodsucker/power in bat_powers) + power.Grant(gb) + QDEL_IN(gb, 2 MINUTES) + playsound(gb.loc, 'sound/items/toysqueak1.ogg', 50, 1) + to_chat(owner, span_notice("You transform into a fatty beast!")) + /*if(2000 to INFINITY) + var/mob/living/simple_animal/hostile/bloodsucker/werewolf/ww + if(!ww || ww.stat == DEAD) + ww = new /mob/living/simple_animal/hostile/bloodsucker/werewolf(user.loc) + user.forceMove(ww) + ww.controller = user + user.mind.transfer_to(ww) + var/datum/action/bloodsucker/gangrel/transform_back/E = new + E.Grant(ww) + playsound(ww.loc, 'sound/weapons/slash.ogg', 50, 1) + to_chat(owner, span_notice("You transform into a feral beast!"))*/ + . = ..() + +/datum/action/bloodsucker/gangrel/transform_back + name = "Transform" + desc = "Regress back into a human." + button_icon_state = "power_gangrel" + power_explanation = "Transform:\n\ + Regress back to your humanoid form early, requires you to stand still.\n\ + Beware you will not be able to transform again until the night passes!" + power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN + check_flags = BP_AM_COSTLESS_UNCONSCIOUS + purchase_flags = NONE + cooldown = 10 SECONDS + +/datum/action/bloodsucker/gangrel/transform_back/ActivatePower() + var/mob/living/user = owner + if(!do_mob(user, user, 10 SECONDS)) + return + var/mob/living/simple_animal/hostile/bloodsucker/bs + qdel(owner) + qdel(bs) + . = ..() + +/datum/action/bloodsucker/targeted/haste/batdash + name = "Flying Haste" + desc = "Propulse yourself into a position of advantage." + button_icon = 'icons/mob/actions/actions_gangrel_bloodsucker.dmi' + icon_icon = 'icons/mob/actions/actions_gangrel_bloodsucker.dmi' + button_icon_state = "power_baste" + background_icon_state_on = "bat_power_on" + background_icon_state_off = "bat_power_off" + power_explanation = "Flying Haste:\n\ + Makes you dash into the air, creating a smoke cloud at the end.\n\ + Helpful in situations where you either need to run away or engage in a crowd of people, works over tables.\n\ + Created from your Immortal Haste ability." + power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN + check_flags = NONE + purchase_flags = NONE + bloodcost = 0 + cooldown = 15 SECONDS + +/datum/action/bloodsucker/targeted/haste/batdash/CheckCanUse(mob/living/carbon/user) + var/mob/living/L = user + if(L.stat == DEAD) + return FALSE + return TRUE + +/datum/action/bloodsucker/targeted/haste/batdash/FireTargetedPower(atom/target_atom) + . = ..() + do_smoke(2, owner.loc, smoke_type = /obj/effect/particle_effect/smoke/transparent) //so you can attack people after hasting + +/datum/action/bloodsucker/targeted/bloodbolt + name = "Blood Bolt" + desc = "Shoot a blood bolt to damage your foes." + button_icon = 'icons/mob/actions/actions_gangrel_bloodsucker.dmi' + icon_icon = 'icons/mob/actions/actions_gangrel_bloodsucker.dmi' + button_icon_state = "power_bolt" + background_icon_state_on = "bat_power_on" + background_icon_state_off = "bat_power_off" + power_explanation = "Blood Bolt:\n\ + Shoots a blood bolt that does moderate damage to your foes.\n\ + Helpful in situations where you get outranged or just extra damage.\n\ + Created from your Mesmerize ability." + power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN + check_flags = NONE + purchase_flags = NONE + bloodcost = 0 + cooldown = 12.5 SECONDS + +/datum/action/bloodsucker/targeted/bloodbolt/CheckCanUse(mob/living/carbon/user) + var/mob/living/L = user + if(L.stat == DEAD) + return FALSE + return TRUE + +/datum/action/bloodsucker/targeted/bloodbolt/FireTargetedPower(atom/target_atom) + . = ..() + + var/mob/living/user = owner + to_chat(user, span_warning("You fire a blood bolt!")) + user.changeNext_move(CLICK_CD_RANGE) + user.newtonian_move(get_dir(target_atom, user)) + var/obj/projectile/magic/bloodsucker/magic_9ball = new(user.loc) + magic_9ball.bloodsucker_power = src + magic_9ball.firer = user + magic_9ball.def_zone = ran_zone(user.zone_selected) + magic_9ball.preparePixelProjectile(target_atom, user) + INVOKE_ASYNC(magic_9ball, /obj/projectile.proc/fire) + playsound(user, 'sound/magic/wand_teleport.ogg', 60, TRUE) + PowerActivatedSuccessfully() + +/obj/projectile/magic/bloodsucker + name = "blood bolt" + icon_state = "bloodbolt" + damage_type = BURN + nodamage = FALSE + damage = 30 + hitsound = 'sound/weapons/barragespellhit.ogg' + var/datum/action/bloodsucker/targeted/bloodbolt/bloodsucker_power + +/obj/projectile/magic/bloodsucker/on_hit(target) + if(ismob(target)) + qdel(src) + if(iscarbon(target)) + var/mob/living/carbon/C = target + C.Knockdown(0.1) + return BULLET_ACT_HIT + . = ..() + +/datum/action/bloodsucker/gangrel/wingslam + name = "Wing Slam" + desc = "Slams all foes next to you." + button_icon_state = "power_wingslam" + background_icon_state_on = "bat_power_on" + background_icon_state_off = "bat_power_off" + power_explanation = "Wing Slam:\n\ + Knocksback and immobilizes people adjacent to you.\n\ + Has a low recharge time and may be helpful in meelee situations!\n\ + Created from your Brawn ability." + power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN + check_flags = NONE + purchase_flags = NONE + bloodcost = 0 + cooldown = 10 SECONDS + +/datum/action/bloodsucker/gangrel/wingslam/ActivatePower() + var/mob/living/user = owner + var/list/choices = list() + for(var/mob/living/carbon/C in view(1, user)) + choices += C + + if(!choices.len) + return + + for(var/mob/living/carbon/M in range(1, user)) + if(!M || !M.Adjacent(user)) + return + if(M.loc == user) + continue + M.visible_message( + span_danger("[user] flaps their wings viciously, sending [M] flying away!"), \ + span_userdanger("You were sent flying by the flap of [user]'s wings!"), + ) + to_chat(user, span_warning("You flap your wings, sending [M] flying!")) + playsound(user.loc, 'sound/weapons/punch4.ogg', 60, 1, -1) + M.adjustBruteLoss(10) + M.Knockdown(40) + user.do_attack_animation(M, ATTACK_EFFECT_SMASH) + var/send_dir = get_dir(user, M) + var/turf/turf_thrown_at = get_ranged_target_turf(M, send_dir, 5) + M.throw_at(turf_thrown_at, 5, TRUE, user) diff --git a/code/modules/antagonists/bloodsuckers/powers/gohome.dm b/code/modules/antagonists/bloodsuckers/powers/gohome.dm new file mode 100644 index 00000000000..da45d8e9cdd --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/gohome.dm @@ -0,0 +1,117 @@ +/datum/action/bloodsucker/gohome + name = "Vanishing Act" + desc = "As dawn aproaches, disperse into mist and return directly to your Lair.
WARNING: You will drop ALL of your possessions if observed by mortals." + button_icon_state = "power_gohome" + background_icon_state_on = "vamp_power_off_oneshot" + background_icon_state_off = "vamp_power_off_oneshot" + power_explanation = "Vanishing Act: \n\ + Activating Vanishing Act will, after a short delay, teleport the user to their Claimed Coffin. \n\ + The power will cancel out if the Claimed Coffin is somehow destroyed. \n\ + Immediately after activating, lights around the user will begin to flicker. \n\ + Once the user teleports to their coffin, in their place will be a Rat or Bat." + power_flags = BP_AM_SINGLEUSE|BP_AM_STATIC_COOLDOWN + check_flags = BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_STAKED|BP_CANT_USE_WHILE_INCAPACITATED + // You only get this once you've claimed a lair and Sol is near. + purchase_flags = NONE + bloodcost = 100 + cooldown = 100 SECONDS + +/datum/action/bloodsucker/gohome/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) + return FALSE + /// Have No Lair (NOTE: You only got this power if you had a lair, so this means it's destroyed) + if(!istype(bloodsuckerdatum_power) || !bloodsuckerdatum_power.coffin) + to_chat(owner, span_warning("Your coffin has been destroyed!")) + return FALSE + return TRUE + +/datum/action/bloodsucker/gohome/proc/flicker_lights(flicker_range, beat_volume) + for(var/obj/machinery/light/nearby_lights in view(flicker_range, get_turf(owner))) + nearby_lights.flicker(5) + playsound(get_turf(owner), 'sound/effects/singlebeat.ogg', beat_volume, 1) + +/// IMPORTANT: Check for lair at every step! It might get destroyed. +/datum/action/bloodsucker/gohome/ActivatePower() + . = ..() + to_chat(owner, span_notice("You focus on separating your consciousness from your physical form...")) + /// STEP ONE: Flicker Lights + flicker_lights(3, 20) + sleep(50) + flicker_lights(4, 40) + sleep(50) + flicker_lights(4, 60) + for(var/obj/machinery/light/nearby_lights in view(6, get_turf(owner))) + nearby_lights.flicker(5) + playsound(get_turf(owner), 'sound/effects/singlebeat.ogg', 60, 1) + /// STEP TWO: Lights OFF? + /// CHECK: Still have Coffin? + if(!bloodsuckerdatum_power.coffin) + to_chat(owner, span_warning("Your coffin has been destroyed! You no longer have a destination.")) + return FALSE + if(!owner) + return + /// SEEN?: (effects ONLY if there are witnesses! Otherwise you just POOF) + + /// Do Effects (seen by anyone) + var/am_seen = FALSE + /// Drop Stuff (seen by non-vamp) + var/drop_item = FALSE + // Only check if I'm not in a Locker or something. + if(!isturf(owner.loc)) + return + // A) Check for Darkness (we can just leave) + var/turf/current_turf = get_turf(owner) + if(current_turf && current_turf.lighting_object && current_turf.get_lumcount()>= 0.1) + // B) Check for Viewers + for(var/mob/living/watchers in viewers(world.view, get_turf(owner)) - owner) + if(watchers.client && !watchers.has_unlimited_silicon_privilege && !watchers.eye_blind) + am_seen = TRUE + if(!IS_BLOODSUCKER(watchers) && !IS_VASSAL(watchers)) + drop_item = TRUE + break + /// LOSE CUFFS + var/mob/living/carbon/user = owner + if(user.handcuffed) + var/obj/handcuffs = user.handcuffed + user.dropItemToGround(handcuffs) + if(user.legcuffed) + var/obj/legcuffs = user.legcuffed + user.dropItemToGround(legcuffs) + /// SEEN! + if(drop_item) + // DROP: Clothes, held items, and cuffs etc + // NOTE: Taken from unequip_everything() in inventory.dm. We need to + // *force* all items to drop, so we had to just gut the code out of it. + var/list/items = list() + items |= user.get_equipped_items() + for(var/belongings in items) + user.dropItemToGround(belongings, TRUE) + for(var/obj/item/held_posessions in owner.held_items) //drop_all_held_items() + user.dropItemToGround(held_posessions, TRUE) + /// POOF EFFECTS + if(am_seen) + playsound(get_turf(owner), 'sound/magic/summon_karp.ogg', 60, 1) + var/datum/effect_system/steam_spread/puff = new /datum/effect_system/steam_spread() + puff.effect_type = /obj/effect/particle_effect/smoke/vampsmoke + puff.set_up(3, 0, get_turf(owner)) + puff.start() + + /// STEP FIVE: Create animal at prev location + var/mob/living/simple_animal/SA = pick(/mob/living/simple_animal/mouse,/mob/living/simple_animal/mouse,/mob/living/simple_animal/mouse, /mob/living/simple_animal/hostile/retaliate/bat) //prob(300) /mob/living/simple_animal/mouse, + new SA (owner.loc) + /// TELEPORT: Move to Coffin & Close it! + user.set_resting(TRUE, TRUE, FALSE) + do_teleport(owner, bloodsuckerdatum_power.coffin, no_effects = TRUE, forced = TRUE, channel = TELEPORT_CHANNEL_QUANTUM) + user.Stun(3 SECONDS, TRUE) + /// CLOSE LID: If fail, force me in. + if(!bloodsuckerdatum_power.coffin.close(owner)) + /// Puts me inside. + bloodsuckerdatum_power.coffin.insert(owner) + playsound(bloodsuckerdatum_power.coffin.loc, bloodsuckerdatum_power.coffin.close_sound, 15, 1, -3) + bloodsuckerdatum_power.coffin.opened = FALSE + bloodsuckerdatum_power.coffin.density = TRUE + bloodsuckerdatum_power.coffin.update_icon() + // Lock Coffin + bloodsuckerdatum_power.coffin.LockMe(owner) + bloodsuckerdatum_power.Check_Begin_Torpor(FALSE) // Are we meant to enter Torpor here? diff --git a/code/modules/antagonists/bloodsuckers/powers/masquerade.dm b/code/modules/antagonists/bloodsuckers/powers/masquerade.dm new file mode 100644 index 00000000000..207d05cad11 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/masquerade.dm @@ -0,0 +1,110 @@ +/** + * # WITHOUT THIS POWER: + * + * - Mid-Blood: SHOW AS PALE + * - Low-Blood: SHOW AS DEAD + * - No Heartbeat + * - Examine shows actual blood + * - Thermal homeostasis (ColdBlooded) + * WITH THIS POWER: + * - Normal body temp -- remove Cold Blooded (return on deactivate) + */ + +/datum/action/bloodsucker/masquerade + name = "Masquerade" + desc = "Feign the vital signs of a mortal, and escape both casual and medical notice as the monster you truly are." + button_icon_state = "power_human" + power_explanation = "Masquerade:\n\ + Activating Masquerade will forge your identity to be practically identical to that of a human;\n\ + - You lose nearly all Bloodsucker benefits, including healing, sleep, radiation, crit, virus and cold immunity.\n\ + - Your eyes turn to that of a regular human as your heart begins to beat.\n\ + - You gain a Genetic sequence, and appear to have 100% blood when scanned by a Health Analyzer.\n\ + - You will not appear as Pale when examined. Anything further than Pale, however, will not be hidden.\n\ + At the end of a Masquerade, you will re-gain your Vampiric abilities, as well as lose any Disease & Gene you might have." + power_flags = BP_AM_TOGGLE|BP_AM_STATIC_COOLDOWN + check_flags = BP_CANT_USE_IN_FRENZY|BP_AM_COSTLESS_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY + bloodcost = 10 + cooldown = 5 SECONDS + constant_bloodcost = 0.1 + +/datum/action/bloodsucker/masquerade/ActivatePower() + . = ..() + var/mob/living/carbon/user = owner + to_chat(user, span_notice("Your heart beats falsely within your lifeless chest. You may yet pass for a mortal.")) + to_chat(user, span_warning("Your vampiric healing is halted while imitating life.")) + + // Remove Bloodsucker traits + REMOVE_TRAIT(user, TRAIT_NOHARDCRIT, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_NOSOFTCRIT, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_VIRUSIMMUNE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_RADIMMUNE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_TOXIMMUNE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_COLDBLOODED, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_RESISTCOLD, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_SLEEPIMMUNE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_NOPULSE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_NOBREATH, BLOODSUCKER_TRAIT) + // Falsifies Health & Genetic Analyzers + ADD_TRAIT(user, TRAIT_MASQUERADE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_GENELESS, BLOODSUCKER_TRAIT) + // Organs + var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) + eyes.flash_protect = initial(eyes.flash_protect) + var/obj/item/organ/heart/vampheart/vampheart = user.getorganslot(ORGAN_SLOT_HEART) + if(istype(vampheart)) + vampheart.FakeStart() + user.apply_status_effect(STATUS_EFFECT_MASQUERADE) + +/datum/action/bloodsucker/masquerade/DeactivatePower() + . = ..() // activate = FALSE + var/mob/living/carbon/user = owner + user.remove_status_effect(STATUS_EFFECT_MASQUERADE) + ADD_TRAIT(user, TRAIT_NOHARDCRIT, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_NOSOFTCRIT, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_VIRUSIMMUNE, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_RADIMMUNE, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_TOXIMMUNE, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_COLDBLOODED, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_RESISTCOLD, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_SLEEPIMMUNE, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_NOPULSE, BLOODSUCKER_TRAIT) + ADD_TRAIT(user, TRAIT_NOBREATH, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(user, TRAIT_MASQUERADE, BLOODSUCKER_TRAIT) + // Remove genes, then make unable to get new ones. + user.dna.remove_all_mutations() + ADD_TRAIT(user, TRAIT_GENELESS, BLOODSUCKER_TRAIT) + // Organs + var/obj/item/organ/heart/vampheart/vampheart = user.getorganslot(ORGAN_SLOT_HEART) + if(istype(vampheart)) + vampheart.Stop() + var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) + if(eyes) + eyes.flash_protect = max(initial(eyes.flash_protect) - 1, - 1) + // Remove all diseases + for(var/thing in user.diseases) + var/datum/disease/disease = thing + disease.cure() + to_chat(user, span_notice("Your heart beats one final time, while your skin dries out and your icy pallor returns.")) + +/** + * # Status effect + * + * This is what the Masquerade power gives, handles their bonuses and gives them a neat icon to tell them they're on Masquerade. + */ + +/datum/status_effect/masquerade + id = "masquerade" + duration = -1 + tick_interval = -1 + alert_type = /atom/movable/screen/alert/status_effect/masquerade + +/atom/movable/screen/alert/status_effect/masquerade + name = "Masquerade" + desc = "You are currently hiding your identity using the Masquerade power. This halts Vampiric healing." + icon = 'icons/mob/actions/actions_bloodsucker.dmi' + icon_state = "power_human" + +/atom/movable/screen/alert/status_effect/masquerade/MouseEntered(location,control,params) + desc = initial(desc) + return ..() diff --git a/code/modules/antagonists/bloodsuckers/powers/recuperate.dm b/code/modules/antagonists/bloodsuckers/powers/recuperate.dm new file mode 100644 index 00000000000..875c149eab4 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/recuperate.dm @@ -0,0 +1,58 @@ +/// Used by Vassals +/datum/action/bloodsucker/recuperate + name = "Sanguine Recuperation" + desc = "Slowly heals you overtime using your master's blood, in exchange for some of your own blood and effort." + button_icon_state = "power_recup" + power_explanation = "Recuperate:\n\ + Activating this Power will begin to heal your wounds.\n\ + You will heal Brute and Toxin damage, at the cost of Stamina damage, and blood from both you and your Master.\n\ + If you aren't a bloodless race, you will additionally heal Burn damage.\n\ + The power will cancel out if you are incapacitated or dead." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = NONE + bloodcost = 1.5 + cooldown = 10 SECONDS + +/datum/action/bloodsucker/recuperate/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) + return + if(user.stat >= DEAD || user.incapacitated()) + to_chat(user, "You are incapacitated...") + return FALSE + return TRUE + +/datum/action/bloodsucker/recuperate/ActivatePower() + . = ..() + to_chat(owner, span_notice("Your muscles clench as your master's immortal blood mixes with your own, knitting your wounds.")) + +/datum/action/bloodsucker/recuperate/UsePower(mob/living/carbon/human/user) + . = ..() + if(!.) + return + + var/datum/antagonist/vassal/vassaldatum = IS_VASSAL(user) + vassaldatum.master.AddBloodVolume(-1) + user.Jitter(5) + user.adjustStaminaLoss(bloodcost * 1.1) + user.adjustBruteLoss(-2.5) + user.adjustToxLoss(-2, forced = TRUE) + // Plasmamen won't lose blood, they don't have any, so they don't heal from Burn. + if(!(NOBLOOD in user.dna.species.species_traits)) + user.blood_volume -= bloodcost + user.adjustFireLoss(-1.5) + // Stop Bleeding + if(istype(user) && user.is_bleeding()) + for(var/obj/item/bodypart/part in user.bodyparts) + part.generic_bleedstacks-- + +/datum/action/bloodsucker/recuperate/ContinueActive(mob/living/user, mob/living/target) + if(user.stat >= DEAD) + return FALSE + if(user.incapacitated()) + return FALSE + return TRUE + +/datum/action/bloodsucker/recuperate/DeactivatePower() + . = ..() diff --git a/code/modules/antagonists/bloodsuckers/powers/targeted/_powers_targeted.dm b/code/modules/antagonists/bloodsuckers/powers/targeted/_powers_targeted.dm new file mode 100644 index 00000000000..6057734f8e3 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/targeted/_powers_targeted.dm @@ -0,0 +1,98 @@ +// NOTE: All Targeted spells are Toggles! We just don't bother checking here. +/datum/action/bloodsucker/targeted + power_flags = BP_AM_TOGGLE + + var/obj/effect/proc_holder/bloodsucker/bs_proc_holder + var/target_range = 99 + var/prefire_message = "" + ///Most powers happen the moment you click. Some, like Mesmerize, require time and shouldn't cost you if they fail. + var/power_activates_immediately = TRUE + ///Is this power LOCKED due to being used? + var/power_in_use = FALSE + +/// Modify description to add notice that this is aimed. +/datum/action/bloodsucker/targeted/New(Target) + desc += "
\[Targeted Power\]" + . = ..() + // Create Proc Holder for intercepting clicks + bs_proc_holder = new() + bs_proc_holder.linked_power = src + +/datum/action/bloodsucker/targeted/Trigger(trigger_flags) + if(active && CheckCanDeactivate()) + DeactivatePower() + return FALSE + if(!CheckCanPayCost(owner) || !CheckCanUse(owner)) + return FALSE + + ActivatePower() + UpdateButtonIcon() + // Create & Link Targeting Proc + var/mob/living/user = owner + if(user.ranged_ability) + user.ranged_ability.remove_ranged_ability() + bs_proc_holder.add_ranged_ability(user) + if(prefire_message != "") + to_chat(owner, span_announce("[prefire_message]")) + return TRUE + +/datum/action/bloodsucker/targeted/DeactivatePower() + if(power_flags & BP_AM_TOGGLE) + UnregisterSignal(owner, COMSIG_LIVING_BIOLOGICAL_LIFE) + active = FALSE + DeactivateRangedAbility() + UpdateButtonIcon() +// ..() // we don't want to pay cost here + +/// Only Turned off when CLICK is disabled...aka, when you successfully clicked +/datum/action/bloodsucker/targeted/proc/DeactivateRangedAbility() + bs_proc_holder.remove_ranged_ability() + +/// Check if target is VALID (wall, turf, or character?) +/datum/action/bloodsucker/targeted/proc/CheckValidTarget(atom/target_atom) + if(target_atom == owner) + return FALSE + return TRUE + +/// Check if valid target meets conditions +/datum/action/bloodsucker/targeted/proc/CheckCanTarget(atom/target_atom) + // Out of Range + if(!(target_atom in view(target_range, owner))) + if(target_range > 1) // Only warn for range if it's greater than 1. Brawn doesn't need to announce itself. + to_chat(owner, "Target out of range.") + return FALSE + return istype(target_atom) + +/// Click Target +/datum/action/bloodsucker/targeted/proc/ClickWithPower(atom/target_atom) + // CANCEL RANGED TARGET check + if(power_in_use || !CheckValidTarget(target_atom)) + return FALSE + // Valid? (return true means DON'T cancel power!) + if(!CheckCanPayCost() || !CheckCanUse(owner) || !CheckCanTarget(target_atom)) + return TRUE + power_in_use = TRUE // Lock us into this ability until it successfully fires off. Otherwise, we pay the blood even if we fail. + FireTargetedPower(target_atom) // We use this instead of ActivatePower(), which has no input + // Skip this part so we can return TRUE right away. + if(power_activates_immediately) + PowerActivatedSuccessfully() // Mesmerize pays only after success. + power_in_use = FALSE + return TRUE + +/// Like ActivatePower, but specific to Targeted (and takes an atom input). We don't use ActivatePower for targeted. +/datum/action/bloodsucker/targeted/proc/FireTargetedPower(atom/target_atom) + log_combat(owner, target_atom, "used [name] on") + +/// The power went off! We now pay the cost of the power. +/datum/action/bloodsucker/targeted/proc/PowerActivatedSuccessfully() + PayCost() + DeactivatePower() + StartCooldown() // Do AFTER UpdateIcon() inside of DeactivatePower. Otherwise icon just gets wiped. + +/// Target Proc Holder +/obj/effect/proc_holder/bloodsucker + ///The linked Bloodsucker power + var/datum/action/bloodsucker/targeted/linked_power + +/obj/effect/proc_holder/bloodsucker/InterceptClickOn(mob/living/caller, params, atom/targeted_atom) + return linked_power.ClickWithPower(targeted_atom) diff --git a/code/modules/antagonists/bloodsuckers/powers/targeted/brawn.dm b/code/modules/antagonists/bloodsuckers/powers/targeted/brawn.dm new file mode 100644 index 00000000000..176eea8a0da --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/targeted/brawn.dm @@ -0,0 +1,191 @@ +/datum/action/bloodsucker/targeted/brawn + name = "Brawn" + desc = "Snap restraints, break lockers and doors, or deal terrible damage with your bare hands." + button_icon_state = "power_strength" + power_explanation = "Brawn:\n\ + Click any person to bash into them, break restraints you have or knocking a grabber down. Only one of these can be done per use.\n\ + Punching a Cyborg will heavily EMP them in addition to deal damage.\n\ + At level 3, you get the ability to break closets open, additionally can both break restraints AND knock a grabber down in the same use.\n\ + At level 4, you get the ability to bash airlocks open, as long as they aren't bolted.\n\ + Higher levels will increase the damage and knockdown when punching someone." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + bloodcost = 8 + cooldown = 9 SECONDS + target_range = 1 + power_activates_immediately = TRUE + prefire_message = "Select a target." + +/datum/action/bloodsucker/targeted/brawn/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) // Default checks + return FALSE + + // Did we break out of our handcuffs? + if(CheckBreakRestraints()) + PowerActivatedSuccessfully() + return FALSE + // Did we knock a grabber down? We can only do this while not also breaking restraints if strong enough. + if(level_current >= 3 && CheckEscapePuller()) + PowerActivatedSuccessfully() + return FALSE + // Did neither, now we can PUNCH. + return TRUE + +// Look at 'biodegrade.dm' for reference +/datum/action/bloodsucker/targeted/brawn/proc/CheckBreakRestraints() + var/mob/living/carbon/human/user = owner + ///Only one form of shackles removed per use + var/used = FALSE + + // Breaks out of lockers + if(istype(user.loc, /obj/structure/closet)) + var/obj/structure/closet/closet = user.loc + if(!istype(closet)) + return FALSE + closet.visible_message( + span_warning("closet] tears apart as [user] bashes it open from within!"), + span_warning("closet] tears apart as you bash it open from within!"), + ) + to_chat(user, span_warning("We bash [closet] wide open!")) + addtimer(CALLBACK(src, .proc/break_closet, user, closet), 1) + used = TRUE + + // Remove both Handcuffs & Legcuffs + var/obj/cuffs = user.get_item_by_slot(ITEM_SLOT_HANDCUFFED) + var/obj/legcuffs = user.get_item_by_slot(ITEM_SLOT_LEGCUFFED) + if(!used && (istype(cuffs) || istype(legcuffs))) + user.visible_message( + span_warning("[user] discards their restraints like it's nothing!"), + span_warning("We break through our restraints!"), + ) + user.clear_cuffs(cuffs, TRUE) + user.clear_cuffs(legcuffs, TRUE) + used = TRUE + + // Remove Straightjackets + if(user.wear_suit?.breakouttime && !used) + var/obj/item/clothing/suit/straightjacket = user.get_item_by_slot(ITEM_SLOT_OCLOTHING) + user.visible_message( + span_warning("[user] rips straight through the [user.p_their()] [straightjacket]!"), + span_warning("We tear through our [straightjacket]!"), + ) + if(straightjacket && user.wear_suit == straightjacket) + qdel(straightjacket) + used = TRUE + + // Did we end up using our ability? If so, play the sound effect and return TRUE + if(used) + playsound(get_turf(user), 'sound/effects/grillehit.ogg', 80, 1, -1) + return used + +// This is its own proc because its done twice, to repeat code copypaste. +/datum/action/bloodsucker/targeted/brawn/proc/break_closet(mob/living/carbon/human/user, obj/structure/closet/closet) + if(closet) + closet.welded = FALSE + closet.locked = FALSE + closet.broken = TRUE + closet.open() + +/datum/action/bloodsucker/targeted/brawn/proc/CheckEscapePuller() + if(!owner.pulledby) // || owner.pulledby.grab_state <= GRAB_PASSIVE) + return FALSE + var/mob/pulled_mob = owner.pulledby + var/pull_power = pulled_mob.grab_state + playsound(get_turf(pulled_mob), 'sound/effects/woodhit.ogg', 75, 1, -1) + // Knock Down (if Living) + if(isliving(pulled_mob)) + var/mob/living/hit_target = pulled_mob + hit_target.Knockdown(pull_power * 10 + 20) + // Knock Back (before Knockdown, which probably cancels pull) + var/send_dir = get_dir(owner, pulled_mob) + var/turf/turf_thrown_at = get_ranged_target_turf(pulled_mob, send_dir, pull_power) + owner.newtonian_move(send_dir) // Bounce back in 0 G + pulled_mob.throw_at(turf_thrown_at, pull_power, TRUE, owner, FALSE) // Throw distance based on grab state! Harder grabs punished more aggressively. + // /proc/log_combat(atom/user, atom/target, what_done, atom/object=null, addition=null) + log_combat(owner, pulled_mob, "used Brawn power") + owner.visible_message( + span_warning("[owner] tears free of [pulled_mob]'s grasp!"), + span_warning("You shrug off [pulled_mob]'s grasp!"), + ) + owner.pulledby = null // It's already done, but JUST IN CASE. + return TRUE + +/datum/action/bloodsucker/targeted/brawn/FireTargetedPower(atom/target_atom) + . = ..() + var/mob/living/user = owner + // Target Type: Mob + if(isliving(target_atom)) + var/mob/living/target = target_atom + var/mob/living/carbon/carbonuser = user + var/hitStrength = carbonuser.dna.species.punchdamagehigh * 1.25 + 2 + // Knockdown! + var/powerlevel = min(5, 1 + level_current) + if(rand(5 + powerlevel) >= 5) + target.visible_message( + span_danger("[user] lands a vicious punch, sending [target] away!"), \ + span_userdanger("[user] has landed a horrifying punch on you, sending you flying!"), + ) + target.Knockdown(min(5, rand(10, 10 * powerlevel))) + // Attack! + to_chat(owner, span_warning("You punch [target]!")) + playsound(get_turf(target), 'sound/weapons/punch4.ogg', 60, 1, -1) + user.do_attack_animation(target, ATTACK_EFFECT_SMASH) + var/obj/item/bodypart/affecting = target.get_bodypart(ran_zone(target.zone_selected)) + target.apply_damage(hitStrength, BRUTE, affecting) + // Knockback + var/send_dir = get_dir(owner, target) + var/turf/turf_thrown_at = get_ranged_target_turf(target, send_dir, powerlevel) + owner.newtonian_move(send_dir) // Bounce back in 0 G + target.throw_at(turf_thrown_at, powerlevel, TRUE, owner) //new /datum/forced_movement(target, get_ranged_target_turf(target, send_dir, (hitStrength / 4)), 1, FALSE) + // Target Type: Cyborg (Also gets the effects above) + if(issilicon(target)) + target.emp_act(EMP_HEAVY) + // Target Type: Locker + else if(istype(target_atom, /obj/structure/closet) && level_current >= 3) + var/obj/structure/closet/target_closet = target_atom + to_chat(user, span_warning("You prepare to bash [target_closet] open...")) + if(!do_mob(user, target_closet, 2.5 SECONDS)) + return FALSE + target_closet.visible_message(span_danger("[target_closet] breaks open as [user] bashes it!")) + addtimer(CALLBACK(src, .proc/break_closet, user, target_closet), 1) + playsound(get_turf(user), 'sound/effects/grillehit.ogg', 80, 1, -1) + // Target Type: Door + else if(istype(target_atom, /obj/machinery/door) && level_current >= 4) + var/obj/machinery/door/target_airlock = target_atom + playsound(get_turf(user), 'sound/machines/airlock_alien_prying.ogg', 40, 1, -1) + to_chat(owner, span_warning("You prepare to tear open [target_airlock]...")) + if(!do_mob(user, target_airlock, 2.5 SECONDS)) + return FALSE + if(target_airlock.Adjacent(user)) + target_airlock.visible_message(span_danger("[target_airlock] breaks open as [user] bashes it!")) + user.Stun(10) + user.do_attack_animation(target_airlock, ATTACK_EFFECT_SMASH) + playsound(get_turf(target_airlock), 'sound/effects/bang.ogg', 30, 1, -1) + target_airlock.open(2) // open(2) is like a crowbar or jaws of life. + +/datum/action/bloodsucker/targeted/brawn/CheckValidTarget(atom/target_atom) + . = ..() + if(!.) + return FALSE + return isliving(target_atom) || istype(target_atom, /obj/machinery/door) || istype(target_atom, /obj/structure/closet) + +/datum/action/bloodsucker/targeted/brawn/CheckCanTarget(atom/target_atom) + // DEFAULT CHECKS (Distance) + . = ..() + if(!.) // Disable range notice for Brawn. + return FALSE + // Must outside Closet to target anyone! + if(!isturf(owner.loc)) + return FALSE + // Target Type: Living + if(isliving(target_atom)) + return TRUE + // Target Type: Door + else if(istype(target_atom, /obj/machinery/door)) + return TRUE + // Target Type: Locker + else if(istype(target_atom, /obj/structure/closet)) + return TRUE + return FALSE diff --git a/code/modules/antagonists/bloodsuckers/powers/targeted/haste.dm b/code/modules/antagonists/bloodsuckers/powers/targeted/haste.dm new file mode 100644 index 00000000000..c838a813e02 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/targeted/haste.dm @@ -0,0 +1,99 @@ +/* Level 1: Speed to location + * Level 2: Dodge Bullets + * Level 3: Stun People Passed + */ + +/datum/action/bloodsucker/targeted/haste + name = "Immortal Haste" + desc = "Dash somewhere with supernatural speed. Those nearby may be knocked away, stunned, or left empty-handed." + button_icon_state = "power_speed" + power_explanation = "Immortal Haste:\n\ + Click anywhere to immediately dash towards that location.\n\ + The Power will not work if you are lying down, in no gravity, or are aggressively grabbed.\n\ + Anyone in your way during your Haste will be knocked down and Payalyzed, moreso if they are using Flow.\n\ + Higher levels will increase the knockdown dealt to enemies." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + bloodcost = 6 + cooldown = 12 SECONDS + target_range = 15 + power_activates_immediately = TRUE + var/list/hit //current hit, set while power is in use as we can't pass the list as an extra calling argument in registersignal. + /// If set, uses this speed in deciseconds instead of world.tick_lag + var/speed_override + +/datum/action/bloodsucker/targeted/haste/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) + return FALSE + // Being Grabbed + if(user.pulledby && user.pulledby.grab_state >= GRAB_AGGRESSIVE) + to_chat(user, span_warning("You're being grabbed!")) + return FALSE + if(!user.has_gravity(user.loc)) //We dont want people to be able to use this to fly around in space + to_chat(user, span_warning("You cannot dash while floating!")) + return FALSE + if(!(user.mobility_flags & MOBILITY_STAND)) + to_chat(user, span_warning("You must be standing to tackle!")) + return FALSE + return TRUE + +/// Anything will do, if it's not me or my square +/datum/action/bloodsucker/targeted/haste/CheckValidTarget(atom/target_atom) + . = ..() + if(!.) + return FALSE + return target_atom.loc != owner.loc + +/// This is a non-async proc to make sure the power is "locked" until this finishes. +/datum/action/bloodsucker/targeted/haste/FireTargetedPower(atom/target_atom) + . = ..() + hit = list() + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/on_move) + var/mob/living/user = owner + var/turf/targeted_turf = isturf(target_atom) ? target_atom : get_turf(target_atom) + // Pulled? Not anymore. + user.pulledby?.stop_pulling() + // Go to target turf + // DO NOT USE WALK TO. + to_chat(owner, span_notice("You dash into the air!")) + playsound(get_turf(owner), 'sound/weapons/punchmiss.ogg', 25, 1, -1) + var/safety = get_dist(user, targeted_turf) * 3 + 1 + var/consequetive_failures = 0 + var/speed = isnull(speed_override)? world.tick_lag : speed_override + while(--safety && (get_turf(user) != targeted_turf)) + var/success = step_towards(user, targeted_turf) //This does not try to go around obstacles. + if(!success) + success = step_to(user, targeted_turf) //this does + if(!success) + if(++consequetive_failures >= 3) //if 3 steps don't work + break //just stop + else + consequetive_failures = 0 + if(user.resting) + user.setDir(turn(user.dir, 90)) //down? spin2win? + if(user.incapacitated(ignore_restraints = TRUE, ignore_grab = TRUE)) //actually down? stop. + break + if(success) //don't sleep if we failed to move. + sleep(speed) + UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) + hit = null + +/datum/action/bloodsucker/targeted/haste/proc/on_move() + for(var/mob/living/all_targets in dview(1, get_turf(owner))) + if(!hit[all_targets] && (all_targets != owner)) + hit[all_targets] = TRUE + playsound(all_targets, "sound/weapons/punch[rand(1,4)].ogg", 15, 1, -1) + all_targets.Knockdown(10 + level_current * 5) + all_targets.Paralyze(0.1) + all_targets.spin(10, 1) + if(IS_MONSTERHUNTER(all_targets) && HAS_TRAIT(all_targets, TRAIT_STUNIMMUNE)) + to_chat(all_targets, "Knocked down!") + for(var/datum/action/bloodsucker/power in all_targets.actions) + if(power.active) + power.DeactivatePower() + all_targets.Jitter(20) + all_targets.set_confusion(max(8, all_targets.get_confusion())) + all_targets.stuttering = max(8, all_targets.stuttering) + all_targets.Knockdown(10 + level_current * 5) // Re-knock them down, the first one didn't work due to stunimmunity diff --git a/code/modules/antagonists/bloodsuckers/powers/targeted/lunge.dm b/code/modules/antagonists/bloodsuckers/powers/targeted/lunge.dm new file mode 100644 index 00000000000..b4c29f46785 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/targeted/lunge.dm @@ -0,0 +1,154 @@ +/datum/action/bloodsucker/targeted/lunge + name = "Predatory Lunge" + desc = "Spring at a humanoid to grapple them without warning, or tear the dead's heart out. Attacks from concealment or the rear may even knock them down if strong enough." + button_icon_state = "power_lunge" + power_explanation = "Predatory Lunge:\n\ + Click any player to instantly dash at them, aggressively grabbing them.\n\ + You cannot use the Power if you are aggressively grabbed.\n\ + If the target is wearing riot gear or is a Monster Hunter, you will merely passively grab them.\n\ + If grabbed from behind or from the darkness (Cloak of Darkness counts) with a power level at or above 4, will additionally knock the target down.\n\ + Higher levels will increase the knockdown dealt to enemies." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + bloodcost = 10 + cooldown = 10 SECONDS + target_range = 6 + power_activates_immediately = FALSE + +/* + * Level 1: Grapple level 2 + * Level 2: Grapple 3 from Behind + * Level 3: Grapple 3 from Shadows + */ + +/datum/action/bloodsucker/targeted/lunge/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) + return FALSE + /// Are we being grabbed? + if(user.pulledby && user.pulledby.grab_state >= GRAB_AGGRESSIVE) + to_chat(user, span_warning("You're being grabbed!")) + return FALSE + return TRUE + +/// Check: Are we lunging at a person? +/datum/action/bloodsucker/targeted/lunge/CheckValidTarget(atom/target_atom) + . = ..() + if(!.) + return FALSE + return isliving(target_atom) + +/datum/action/bloodsucker/targeted/lunge/CheckCanTarget(atom/target_atom) + // Default Checks + . = ..() + if(!.) + return FALSE + // Check: Turf + var/mob/living/turf_target = target_atom + if(!isturf(turf_target.loc)) + return FALSE + // Check: can the Bloodsucker even move? + var/mob/living/user = owner + if(!(user.mobility_flags & MOBILITY_STAND) || user.IsImmobilized()) + to_chat(user, span_warning("You need to be standing and aware to lunge!")) + return FALSE + return TRUE + +/datum/action/bloodsucker/targeted/lunge/FireTargetedPower(atom/target_atom) + . = ..() + var/mob/living/user = owner + var/mob/living/carbon/target = target_atom + var/turf/targeted_turf = get_turf(target) + + owner.face_atom(target_atom) + if(level_current <= 3 && !prepare_target_lunge(target_atom)) + PowerActivatedSuccessfully() + return + user.Immobilize(10 SECONDS) + var/safety = get_dist(user, targeted_turf) * 3 + 1 + var/consequetive_failures = 0 + while(--safety && !target.Adjacent(user)) + if(!step_to(user, targeted_turf)) + consequetive_failures++ + if(consequetive_failures >= 3) // If 3 steps don't work, just stop. + break + lunge_end(target) + PowerActivatedSuccessfully() + +/datum/action/bloodsucker/targeted/lunge/proc/prepare_target_lunge(atom/target_atom) + START_PROCESSING(SSprocessing, src) + to_chat(owner, span_notice("You prepare to lunge!")) + //animate them shake + var/base_x = owner.pixel_x + var/base_y = owner.pixel_y + animate(owner, pixel_x = base_x, pixel_y = base_y, time = 1, loop = -1) + for(var/i in 1 to 25) + var/x_offset = base_x + rand(-3, 3) + var/y_offset = base_y + rand(-3, 3) + animate(pixel_x = x_offset, pixel_y = y_offset, time = 1) + + if(!do_after(owner, 4 SECONDS, extra_checks = CALLBACK(src, .proc/CheckCanTarget, target_atom))) + animate(owner, pixel_x = base_x, pixel_y = base_y, time = 1) + STOP_PROCESSING(SSprocessing, src) + return FALSE + animate(owner, pixel_x = base_x, pixel_y = base_y, time = 1) + STOP_PROCESSING(SSprocessing, src) + return TRUE + +/datum/action/bloodsucker/targeted/lunge/process() + if(prob(75)) + owner.spin(8, 1) + owner.visible_message( + span_warning("[owner] spins wildly!"), + span_notice("You spin!"), + ) + return + do_smoke(0, owner.loc, smoke_type = /obj/effect/particle_effect/smoke/transparent) + +/datum/action/bloodsucker/targeted/lunge/proc/lunge_end(atom/hit_atom) + var/mob/living/user = owner + var/mob/living/carbon/target = hit_atom + var/turf/target_turf = get_turf(target) +// Am I next to my target to start giving the effects? + if(!user.Adjacent(target)) + return + // Did I slip or get knocked unconscious? + if(!(user.mobility_flags & MOBILITY_STAND)) + var/send_dir = get_dir(user, target_turf) + new /datum/forced_movement(user, get_ranged_target_turf(user, send_dir, 1), 1, FALSE) + user.spin(10) + return + // Is my target a Monster hunter? + var/mob/living/carbon/human/H = target + if(IS_MONSTERHUNTER(target) || H.is_shove_knockdown_blocked()) + to_chat(owner, span_danger("You get pushed away!")) + H.grabbedby(owner) + return + + to_chat(owner, span_danger("You lunge at [target]!")) + if(target.stat == DEAD) + var/obj/item/bodypart/chest = target.get_bodypart(BODY_ZONE_CHEST) + var/datum/wound/slash/moderate/crit_wound = new + crit_wound.apply_wound(chest) + owner.visible_message( + span_warning("[owner] tears into [target]'s chest!"), + span_warning("You tear into [target]'s chest!")) + var/obj/item/organ/heart/myheart_now = locate() in target.internal_organs + if(myheart_now) + myheart_now.Remove(target) + user.put_in_hands(myheart_now) + return + + //Grab now + target.grabbedby(owner) + target.grippedby(owner, instant = TRUE) + // Did we knock them down? + if(level_current >= 4 && (!is_A_facing_B(target, owner) || owner.alpha <= 40)) + target.Knockdown(10 + level_current * 5) + target.Paralyze(0.1) + +/datum/action/bloodsucker/targeted/lunge/DeactivatePower() + var/mob/living/O = owner + O.SetImmobilized(0) + return ..() diff --git a/code/modules/antagonists/bloodsuckers/powers/targeted/mesmerize.dm b/code/modules/antagonists/bloodsuckers/powers/targeted/mesmerize.dm new file mode 100644 index 00000000000..eea71b829af --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/targeted/mesmerize.dm @@ -0,0 +1,126 @@ +/** + * MEZMERIZE + * Locks a target in place for a certain amount of time. + * + * Level 2: Additionally mutes + * Level 3: Can be used through face protection + * Level 5: Doesn't need to be facing you anymore + * Level 6: Causes the target to fall asleep + */ + +/datum/action/bloodsucker/targeted/mesmerize + name = "Mesmerize" + desc = "Dominate the mind of a mortal who can see your eyes." + button_icon_state = "power_mez" + power_explanation = "Mesmerize:\n\ + Click any player to attempt to mesmerize them. This process takes 5 seconds and will be interrupted on movement.\n\ + You cannot wear anything covering your face, and both parties must be facing eachother. Obviously, both parties need to not be blind. \n\ + If your target is already mesmerized or a Monster Hunter, the Power will fail.\n\ + Once mesmerized, the target will be unable to move for a certain amount of time, scaling with level.\n\ + At level 2, your target will additionally be Muted.\n\ + At level 3, you will be able to use the power through items covering your face.\n\ + At level 5, you will be able to mesmerize regardless of your target's direction.\n\ + At level 6, you will cause your target to fall asleep.\n\ + Higher levels will increase the time of the mesmerize's freeze." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_IN_FRENZY|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + bloodcost = 30 + cooldown = 20 SECONDS + target_range = 8 + power_activates_immediately = FALSE + prefire_message = "Whom will you subvert to your will?" + +/datum/action/bloodsucker/targeted/mesmerize/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) // Default checks + return FALSE + if(!user.getorganslot(ORGAN_SLOT_EYES)) + to_chat(user, span_warning("You have no eyes with which to mesmerize.")) + return FALSE + // Check: Eyes covered? + if(istype(user) && (user.is_eyes_covered() && level_current <= 2) || !isturf(user.loc)) + to_chat(user, span_warning("Your eyes are concealed from sight.")) + return FALSE + return TRUE + +/datum/action/bloodsucker/targeted/mesmerize/CheckValidTarget(atom/target_atom) + . = ..() + if(!.) + return FALSE + return isliving(target_atom) + +/datum/action/bloodsucker/targeted/mesmerize/CheckCanTarget(atom/target_atom) + . = ..() + if(!.) + return FALSE + var/mob/living/current_target = target_atom // We already know it's carbon due to CheckValidTarget() + // No mind + if(!current_target.mind) + to_chat(owner, span_warning("[current_target] is mindless.")) + return FALSE + // Bloodsucker + if(IS_BLOODSUCKER(current_target)) + to_chat(owner, span_notice("Bloodsuckers are immune to [src].")) + return FALSE + // Dead/Unconscious + if(current_target.stat > CONSCIOUS) + to_chat(owner, "[current_target] is not [(current_target.stat == DEAD || HAS_TRAIT(current_target, TRAIT_FAKEDEATH)) ? "alive" : "conscious"].") + return FALSE + // Target has eyes? + if(!current_target.getorganslot(ORGAN_SLOT_EYES)) + to_chat(owner, span_warning("[current_target] has no eyes.")) + return FALSE + // Target blind? + if(current_target.eye_blind > 0) + to_chat(owner, span_warning("[current_target] is blind.")) + return FALSE + //Facing target? + if(!is_A_facing_B(owner, current_target)) // in unsorted.dm + to_chat(owner, span_warning("You must be facing [current_target].")) + return FALSE + // Target facing me? (On the floor, they're facing everyone) + if(((current_target.mobility_flags & MOBILITY_STAND) && !is_A_facing_B(current_target, owner) && level_current <= 4)) + to_chat(owner, span_warning("[current_target] must be facing you.")) + return FALSE + return TRUE + +/datum/action/bloodsucker/targeted/mesmerize/FireTargetedPower(atom/target_atom) + . = ..() + var/mob/living/target = target_atom + var/mob/living/user = owner + to_chat(owner, span_notice("Attempting to hypnotically gaze [target]...")) + if(!do_mob(user, target, 5 SECONDS, NONE, TRUE)) + return + + PowerActivatedSuccessfully() // PAY COST! BEGIN COOLDOWN! + var/power_time = 90 + level_current * 15 + if(IS_MONSTERHUNTER(target)) + to_chat(target, span_warning("You feel your eyes burn for a while, but it passes.")) + return + if(HAS_TRAIT_FROM(target, TRAIT_MUTE, BLOODSUCKER_TRAIT)) + to_chat(owner, span_notice("[target] is already in a hypnotic gaze.")) + return + if(iscarbon(target)) + var/mob/living/carbon/mesmerized = target + to_chat(owner, span_notice("Successfully mesmerized [mesmerized].")) + if(level_current >= 6) + mesmerized.SetUnconscious(power_time) + else if(level_current >= 2) + ADD_TRAIT(mesmerized, TRAIT_MUTE, BLOODSUCKER_TRAIT) + mesmerized.Immobilize(power_time) + //mesmerized.silent += power_time / 10 // Silent isn't based on ticks. + mesmerized.next_move = world.time + power_time // <--- Use direct change instead. We want an unmodified delay to their next move // mesmerized.changeNext_move(power_time) // check click.dm + mesmerized.notransform = TRUE // <--- Fuck it. We tried using next_move, but they could STILL resist. We're just doing a hard freeze. + addtimer(CALLBACK(src, .proc/end_mesmerize, user, target), power_time) + if(issilicon(target)) + var/mob/living/silicon/mesmerized = target + mesmerized.emp_act(EMP_HEAVY) + DeactivatePower() + +/datum/action/bloodsucker/targeted/mesmerize/proc/end_mesmerize(mob/living/user, mob/living/target) + target.notransform = FALSE + REMOVE_TRAIT(target, TRAIT_MUTE, BLOODSUCKER_TRAIT) + // They Woke Up! (Notice if within view) + if(istype(user) && target.stat == CONSCIOUS && (target in view(6, get_turf(user)))) + to_chat(owner, span_warning("[target] snapped out of their trance.")) diff --git a/code/modules/antagonists/bloodsuckers/powers/targeted/trespass.dm b/code/modules/antagonists/bloodsuckers/powers/targeted/trespass.dm new file mode 100644 index 00000000000..d673450ee8f --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/targeted/trespass.dm @@ -0,0 +1,107 @@ +/datum/action/bloodsucker/targeted/trespass + name = "Trespass" + desc = "Become mist and advance two tiles in one direction. Useful for skipping past doors and barricades." + button_icon_state = "power_tres" + power_explanation = "Trespass:\n\ + Click anywhere from 1-2 tiles away from you to teleport.\n\ + This power goes through all obstacles except Walls.\n\ + Higher levels decrease the sound played from using the Power, and increase the speed of the transition." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_IN_TORPOR|BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = BLOODSUCKER_CAN_BUY|VASSAL_CAN_BUY + bloodcost = 10 + cooldown = 8 SECONDS + prefire_message = "Select a destination." + //target_range = 2 + var/turf/target_turf // We need to decide where we're going based on where we clicked. It's not actually the tile we clicked. + +/datum/action/bloodsucker/targeted/trespass/CheckCanUse(mob/living/carbon/user) + . = ..() + if(!.) + return FALSE + if(user.notransform || !get_turf(user)) + return FALSE + return TRUE + + +/datum/action/bloodsucker/targeted/trespass/CheckValidTarget(atom/target_atom) + . = ..() + if(!.) + return FALSE + // Can't target my tile + if(target_atom == get_turf(owner) || get_turf(target_atom) == get_turf(owner)) + return FALSE + return TRUE // All we care about is destination. Anything you click is fine. + + +/datum/action/bloodsucker/targeted/trespass/CheckCanTarget(atom/target_atom) + // NOTE: Do NOT use ..()! We don't want to check distance or anything. + + // Get clicked tile + var/final_turf = isturf(target_atom) ? target_atom : get_turf(target_atom) + + // Are either tiles WALLS? + var/turf/from_turf = get_turf(owner) + var/this_dir // = get_dir(from_turf, target_turf) + for(var/i = 1 to 2) + // Keep Prev Direction if we've reached final turf + if(from_turf != final_turf) + this_dir = get_dir(from_turf, final_turf) // Recalculate dir so we don't overshoot on a diagonal. + from_turf = get_step(from_turf, this_dir) + // ERROR! Wall! + if(iswallturf(from_turf)) + var/wallwarning = (i == 1) ? "in the way" : "at your destination" + to_chat(owner, "There is a wall [wallwarning].") + return FALSE + // Done + target_turf = from_turf + + return TRUE + +/datum/action/bloodsucker/targeted/trespass/FireTargetedPower(atom/target_atom) + . = ..() + + // Find target turf, at or below Atom + var/mob/living/carbon/user = owner + var/turf/my_turf = get_turf(owner) + + user.visible_message( + span_warning("[user]'s form dissipates into a cloud of mist!"), + span_notice("You disspiate into formless mist."), + ) + // Effect Origin + var/sound_strength = max(60, 70 - level_current * 10) + playsound(get_turf(owner), 'sound/magic/summon_karp.ogg', sound_strength, 1) + var/datum/effect_system/steam_spread/puff = new /datum/effect_system/steam_spread/() + puff.effect_type = /obj/effect/particle_effect/smoke/vampsmoke + puff.set_up(3, 0, my_turf) + puff.start() + + var/mist_delay = max(5, 20 - level_current * 2.5) // Level up and do this faster. + + // Freeze Me + user.Stun(mist_delay, ignore_canstun = TRUE) + user.density = FALSE + var/invis_was = user.invisibility + user.invisibility = INVISIBILITY_MAXIMUM + + // Wait... + sleep(mist_delay / 2) + // Move & Freeze + if(isturf(target_turf)) + do_teleport(owner, target_turf, no_effects=TRUE, channel = TELEPORT_CHANNEL_QUANTUM) // in teleport.dm? + user.Stun(mist_delay / 2, ignore_canstun = TRUE) + + // Wait... + sleep(mist_delay / 2) + // Un-Hide & Freeze + user.dir = get_dir(my_turf, target_turf) + user.Stun(mist_delay / 2, ignore_canstun = TRUE) + user.density = 1 + user.invisibility = invis_was + // Effect Destination + playsound(get_turf(owner), 'sound/magic/summon_karp.ogg', 60, 1) + puff = new /datum/effect_system/steam_spread/() + puff.effect_type = /obj/effect/particle_effect/smoke/vampsmoke + puff.set_up(3, 0, target_turf) + puff.start() diff --git a/code/modules/antagonists/bloodsuckers/powers/veil.dm b/code/modules/antagonists/bloodsuckers/powers/veil.dm new file mode 100644 index 00000000000..8726f232255 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/powers/veil.dm @@ -0,0 +1,131 @@ +/datum/action/bloodsucker/veil + name = "Veil of Many Faces" + desc = "Disguise yourself in the illusion of another identity." + button_icon_state = "power_veil" + power_explanation = "Veil of Many Faces:\n\ + Activating Veil of Many Faces will shroud you in smoke and forge you a new identity.\n\ + Your name and appearance will be completely randomized, and turning the ability off again will undo it all.\n\ + Clothes, gear, and Security/Medical HUD status is kept the same while this power is active." + power_flags = BP_AM_TOGGLE + check_flags = BP_CANT_USE_IN_FRENZY + purchase_flags = VASSAL_CAN_BUY + bloodcost = 15 + constant_bloodcost = 0.1 + cooldown = 10 SECONDS + // Outfit Vars +// var/list/original_items = list() + // Identity Vars + var/prev_gender + var/prev_skin_tone + var/prev_hairstyle + var/prev_facial_hairstyle + var/prev_hair_color + var/prev_facial_hair_color + var/prev_underwear + var/prev_undershirt + var/prev_socks + var/prev_disfigured + var/list/prev_features // For lizards and such + +/datum/action/bloodsucker/veil/ActivatePower() + . = ..() + cast_effect() // POOF +// if(blahblahblah) +// Disguise_Outfit() + veil_user() + +/* // Meant to disguise your character's clothing into fake ones. +/datum/action/bloodsucker/veil/proc/Disguise_Outfit() + return + // Step One: Back up original items +*/ + +/datum/action/bloodsucker/veil/proc/veil_user() + // Change Name/Voice + var/mob/living/carbon/human/user = owner + user.name_override = user.dna.species.random_name(user.gender) + user.name = user.name_override + user.SetSpecialVoice(user.name_override) + to_chat(owner, span_warning("You mystify the air around your person. Your identity is now altered.")) + + // Store Prev Appearance + prev_gender = user.gender + prev_skin_tone = user.skin_tone + prev_hairstyle = user.hairstyle + prev_facial_hairstyle = user.facial_hairstyle + prev_hair_color = user.hair_color + prev_facial_hair_color = user.facial_hair_color + prev_underwear = user.underwear + prev_undershirt = user.undershirt + prev_socks = user.socks +// prev_eye_color + prev_disfigured = HAS_TRAIT(user, TRAIT_DISFIGURED) // I was disfigured! //prev_disabilities = user.disabilities + prev_features = user.dna.features + + // Change Appearance + randomize_human(user) + //user.eye_color = random_eye_color() + if(prev_disfigured) + REMOVE_TRAIT(user, TRAIT_DISFIGURED, null) + user.dna.features = random_features() + + // Apply Appearance + user.update_body() // Outfit and underware, also body. + user.update_mutant_bodyparts() // Lizard tails etc + user.update_hair() + user.update_body_parts() + +/datum/action/bloodsucker/veil/DeactivatePower() + . = ..() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/user = owner + + // Revert Identity + user.UnsetSpecialVoice() + user.name_override = null + user.name = user.real_name + + // Revert Appearance + user.gender = prev_gender + user.skin_tone = prev_skin_tone + user.hairstyle = prev_hairstyle + user.facial_hairstyle = prev_facial_hairstyle + user.hair_color = prev_hair_color + user.facial_hair_color = prev_facial_hair_color + user.underwear = prev_underwear + user.undershirt = prev_undershirt + user.socks = prev_socks + + //user.disabilities = prev_disabilities // Restore HUSK, CLUMSY, etc. + if(prev_disfigured) + //We are ASSUMING husk. // user.status_flags |= DISFIGURED // Restore "Unknown" disfigurement + ADD_TRAIT(user, TRAIT_DISFIGURED, TRAIT_HUSK) + user.dna.features = prev_features + + // Apply Appearance + user.update_body() // Outfit and underware, also body. + user.update_hair() + user.update_body_parts() // Body itself, maybe skin color? + + cast_effect() // POOF + + +// CAST EFFECT // General effect (poof, splat, etc) when you cast. Doesn't happen automatically! +/datum/action/bloodsucker/veil/proc/cast_effect() + // Effect + playsound(get_turf(owner), 'sound/magic/smoke.ogg', 20, 1) + var/datum/effect_system/steam_spread/puff = new /datum/effect_system/steam_spread/() + puff.effect_type = /obj/effect/particle_effect/smoke/vampsmoke + puff.set_up(3, 0, get_turf(owner)) + puff.attach(owner) //OPTIONAL + puff.start() + owner.spin(8, 1) //Spin around like a loon. + +/obj/effect/particle_effect/smoke/vampsmoke + opaque = FALSE + amount = 0 + lifetime = 0 + +/obj/effect/particle_effect/smoke/vampsmoke/fade_out(frames = 6) + ..(frames) diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm new file mode 100644 index 00000000000..b4b26a30889 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm @@ -0,0 +1,285 @@ +/datum/antagonist/bloodsucker/proc/ClaimCoffin(obj/structure/closet/crate/claimed) + // ALREADY CLAIMED + if(claimed.resident) + if(claimed.resident == owner.current) + to_chat(owner, "This is your [src].") + else + to_chat(owner, "This [src] has already been claimed by another.") + return FALSE + if(!(/datum/crafting_recipe/vassalrack in owner?.learned_recipes)) + owner.teach_crafting_recipe(/datum/crafting_recipe/vassalrack) + owner.teach_crafting_recipe(/datum/crafting_recipe/candelabrum) + owner.teach_crafting_recipe(/datum/crafting_recipe/bloodthrone) + owner.teach_crafting_recipe(/datum/crafting_recipe/meatcoffin) + owner.teach_crafting_recipe(/datum/crafting_recipe/staketrap) + owner.teach_crafting_recipe(/datum/crafting_recipe/woodenducky) + owner.teach_crafting_recipe(/datum/crafting_recipe/bloodaltar) + to_chat(owner, span_danger("You learned new recipes - You can view them in the Tribal and Weaponry section of the crafting menu!")) + // This is my Lair + coffin = claimed + lair = get_area(claimed) + to_chat(owner, span_userdanger("You have claimed the [claimed] as your place of immortal rest! Your lair is now [lair].")) + to_chat(owner, span_announce("Bloodsucker Tip: Find new lair recipes in the tribal tab of the Crafting Menu, including the Persuasion Rack for converting crew into Vassals.")) + return TRUE + +/// From crate.dm +/obj/structure/closet/crate + var/mob/living/resident /// This lets bloodsuckers claim any "crate" as a Coffin. + var/pryLidTimer = 25 SECONDS + breakout_time = 20 SECONDS + +/obj/structure/closet/crate/coffin/examine(mob/user) + . = ..() + if(user == resident) + . += span_cult("This is your Claimed Coffin.") + . += span_cult("Rest in it while injured to enter Torpor. Entering it with unspent Ranks will allow you to spend one.") + . += span_cult("Alt Click while inside the Coffin to Lock/Unlock.") + . += span_cult("Alt Click while outside of your Coffin to Unclaim it, unwrenching it and all your other structures as a result.") + +/obj/structure/closet/crate/coffin/blackcoffin + name = "black coffin" + desc = "For those departed who are not so dear." + icon_state = "coffin" + icon = 'icons/obj/vamp_obj.dmi' + open_sound = 'sound/effects/coffin_open.ogg' + close_sound = 'sound/effects/coffin_close.ogg' + breakout_time = 30 SECONDS + pryLidTimer = 20 SECONDS + resistance_flags = NONE + material_drop = /obj/item/stack/sheet/iron + material_drop_amount = 2 + armor = list(MELEE = 50, BULLET = 20, LASER = 30, ENERGY = 0, BOMB = 50, BIO = 0, FIRE = 70, ACID = 60) + +/obj/structure/closet/crate/coffin/securecoffin + name = "secure coffin" + desc = "For those too scared of having their place of rest disturbed." + icon_state = "securecoffin" + icon = 'icons/obj/vamp_obj.dmi' + open_sound = 'sound/effects/coffin_open.ogg' + close_sound = 'sound/effects/coffin_close.ogg' + breakout_time = 35 SECONDS + pryLidTimer = 35 SECONDS + resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF + material_drop = /obj/item/stack/sheet/iron + material_drop_amount = 2 + armor = list(MELEE = 35, BULLET = 20, LASER = 20, ENERGY = 0, BOMB = 100, BIO = 0, FIRE = 100, ACID = 100) + +/obj/structure/closet/crate/coffin/meatcoffin + name = "meat coffin" + desc = "When you're ready to meat your maker, the steaks can never be too high." + icon_state = "meatcoffin" + icon = 'icons/obj/vamp_obj.dmi' + resistance_flags = FIRE_PROOF + open_sound = 'sound/effects/footstep/slime1.ogg' + close_sound = 'sound/effects/footstep/slime1.ogg' + breakout_time = 25 SECONDS + pryLidTimer = 20 SECONDS + material_drop = /obj/item/food/meat/slab + material_drop_amount = 3 + armor = list(MELEE = 70, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 70, BIO = 0, FIRE = 70, ACID = 60) + +/obj/structure/closet/crate/coffin/metalcoffin + name = "metal coffin" + desc = "A big metal sardine can inside of another big metal sardine can, in space." + icon_state = "metalcoffin" + icon = 'icons/obj/vamp_obj.dmi' + resistance_flags = FIRE_PROOF | LAVA_PROOF + open_sound = 'sound/effects/pressureplate.ogg' + close_sound = 'sound/effects/pressureplate.ogg' + breakout_time = 25 SECONDS + pryLidTimer = 30 SECONDS + material_drop = /obj/item/stack/sheet/iron + armor = list(MELEE = 40, BULLET = 15, LASER = 50, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 70, ACID = 60) + +////////////////////////////////////////////// + +/// NOTE: This can be any coffin that you are resting AND inside of. +/obj/structure/closet/crate/coffin/proc/ClaimCoffin(mob/living/claimant) + // Bloodsucker Claim + var/datum/antagonist/bloodsucker/bloodsuckerdatum = claimant.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum) + // Successfully claimed? + if(bloodsuckerdatum.ClaimCoffin(src)) + resident = claimant + anchored = TRUE + START_PROCESSING(SSprocessing, src) + +/obj/structure/closet/crate/coffin/Destroy() + UnclaimCoffin() + STOP_PROCESSING(SSprocessing, src) + return ..() + +/obj/structure/closet/crate/coffin/process(mob/living/user) + . = ..() + if(!.) + return FALSE + if(user in src) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(!bloodsuckerdatum) + return FALSE + if(bloodsuckerdatum.lair != get_area(bloodsuckerdatum.coffin)) + if(bloodsuckerdatum.coffin) + bloodsuckerdatum.coffin.UnclaimCoffin() + var/list/turf/area_turfs = get_area_turfs(bloodsuckerdatum.lair) + // Create Dirt etc. + var/turf/T_Dirty = pick(area_turfs) + if(T_Dirty && !T_Dirty.density) + // Default: Dirt + // CHECK: Cobweb already there? + //if (!locate(var/obj/effect/decal/cleanable/cobweb) in T_Dirty) // REMOVED! Cleanables don't stack. + // STEP ONE: COBWEBS + // CHECK: Wall to North? + var/turf/check_N = get_step(T_Dirty, NORTH) + if(istype(check_N, /turf/closed/wall)) + // CHECK: Wall to West? + var/turf/check_W = get_step(T_Dirty, WEST) + if(istype(check_W, /turf/closed/wall)) + new /obj/effect/decal/cleanable/cobweb (T_Dirty) + // CHECK: Wall to East? + var/turf/check_E = get_step(T_Dirty, EAST) + if(istype(check_E, /turf/closed/wall)) + new /obj/effect/decal/cleanable/cobweb/cobweb2 (T_Dirty) + // STEP TWO: DIRT + new /obj/effect/decal/cleanable/dirt (T_Dirty) + // Find Animals in Area +/* if(rand(0,2) == 0) + var/mobCount = 0 + var/mobMax = clamp(area_turfs.len / 25, 1, 4) + for(var/turf/lair_turfs in area_turfs) + if(!lair_turfs) + continue + var/mob/living/simple_animal/SA = locate() in lair_turfs + if(SA) + mobCount++ + if(mobCount >= mobMax) // Already at max + break + Spawn One + if(mobCount < mobMax) +// Seek Out Location + while(area_turfs.len > 0) + var/turf/lair_turfs = pick(area_turfs) // We use while&pick instead of a for/loop so it's random, rather than from the top of the list. + if(lair_turfs && !lair_turfs.density) + var/mob/living/simple_animal/selected_simplemob = /mob/living/simple_animal/mouse // pick(/mob/living/simple_animal/mouse,/mob/living/simple_animal/mouse,/mob/living/simple_animal/mouse, /mob/living/simple_animal/hostile/retaliate/bat) //prob(300) /mob/living/simple_animal/mouse, + new selected_simplemob(lair_turfs) + break + area_turfs -= lair_turfs*/ + +/obj/structure/closet/crate/proc/UnclaimCoffin(manual = FALSE) + // Unanchor it (If it hasn't been broken, anyway) + anchored = FALSE + if(!resident || !resident.mind) + return + // Unclaiming + var/datum/antagonist/bloodsucker/bloodsuckerdatum = resident.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum && bloodsuckerdatum.coffin == src) + bloodsuckerdatum.coffin = null + bloodsuckerdatum.lair = null + for(var/obj/structure/bloodsucker/bloodsucker_structure in get_area(src)) + if(bloodsucker_structure.owner == resident) + bloodsucker_structure.unbolt() + if(manual) + to_chat(resident, span_cultitalic("You have unclaimed your coffin! This also unclaims all your other Bloodsucker structures!")) + else + to_chat(resident, span_cultitalic("You sense that the link with your coffin and your sacred lair, has been broken! You will need to seek another.")) + // Remove resident. Because this object isnt removed from the game immediately (GC?) we need to give them a way to see they don't have a home anymore. + resident = null + +/// You cannot lock in/out a coffin's owner. SORRY. +/obj/structure/closet/crate/coffin/can_open(mob/living/user) + if(!locked) + return ..() + if(user == resident) + if(welded) + welded = FALSE + update_icon() + locked = FALSE + return TRUE + playsound(get_turf(src), 'sound/machines/door_locked.ogg', 20, 1) + to_chat(user, span_notice("[src] is locked tight from the inside.")) + +/obj/structure/closet/crate/coffin/close(mob/living/user) + . = ..() + if(!.) + return FALSE + // Only the User can put themself into Torpor. If already in it, you'll start to heal. + if(user in src) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(!bloodsuckerdatum) + return FALSE + LockMe(user) + bloodsuckerdatum.SpendRank() + /// You're in a Coffin, everything else is done, you're likely here to heal. Let's offer them the oppertunity to do so. + bloodsuckerdatum.Check_Begin_Torpor() + return TRUE + +/// You cannot weld or deconstruct an owned coffin. Only the owner can destroy their own coffin. +/obj/structure/closet/crate/coffin/attackby(obj/item/item, mob/user, params) + if(resident) + if(user != resident) + if(istype(item, cutting_tool)) + to_chat(user, span_notice("This is a much more complex mechanical structure than you thought. You don't know where to begin cutting [src].")) + return + if(anchored && istype(item, /obj/item/wrench)) + to_chat(user, span_danger("The coffin won't come unanchored from the floor.[user == resident ? " You can Alt Click to unclaim and unwrench your Coffin." : ""]")) + return + + if(locked && istype(item, /obj/item/crowbar)) + var/pry_time = pryLidTimer * item.toolspeed // Pry speed must be affected by the speed of the tool. + user.visible_message( + span_notice("[user] tries to pry the lid off of [src] with [item]."), + span_notice("You begin prying the lid off of [src] with [item]. This should take about [DisplayTimeText(pry_time)].")) + if(!do_mob(user, src, pry_time)) + return + bust_open() + user.visible_message( + span_notice("[user] snaps the door of [src] wide open."), + span_notice("The door of [src] snaps open.")) + return + . = ..() + +/// Distance Check (Inside Of) +/obj/structure/closet/crate/coffin/AltClick(mob/user) + . = ..() + if(user in src) + LockMe(user, !locked) + return + + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(!bloodsuckerdatum) + return + if(user.Adjacent(src)) + if(user == resident) + switch(input("Do you wish to unclaim your coffin?","Unclaim Lair") in list("Yes", "No")) + if("Yes") + UnclaimCoffin(TRUE) + LockMe(user) + if("No") + return + else if(!resident) + if(!bloodsuckerdatum.coffin) + switch(input("Do you wish to claim this as your coffin? [get_area(src)] will be your lair, and you will learn to craft new structures.","Claim Lair") in list("Yes", "No")) + if("Yes") + ClaimCoffin(user) + if("No") + return + else + to_chat(user, span_warning("You already have claimed a coffin! You need to unclaim your old one in order to be able to claim a new one!")) + else + to_chat(user, warning("[src] already belongs to another bloodsucker.")) + + return TRUE + +/obj/structure/closet/crate/proc/LockMe(mob/user, inLocked = TRUE) + if(user == resident) + if(!broken) + locked = inLocked + to_chat(user, span_notice("You flip a secret latch and [locked?"":"un"]lock yourself inside [src].")) + return + // Broken? Let's fix it. + to_chat(resident, span_notice("The secret latch to lock [src] from the inside is broken. You set it back into place...")) + if(!do_mob(resident, src, 5 SECONDS)) + to_chat(resident, span_notice("You fail to fix [src]'s mechanism.")) + return + to_chat(resident, span_notice("You fix the mechanism and lock it.")) + broken = FALSE + locked = TRUE diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm new file mode 100644 index 00000000000..4c52ab98b9c --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm @@ -0,0 +1,799 @@ +/obj/structure/bloodsucker + ///Who owns this structure? + var/mob/living/owner + /* + * # Descriptions + * + * We use vars to add descriptions to items. + * This way we don't have to make a new /examine for each structure + * And it's easier to edit. + */ + var/Ghost_desc + var/Vamp_desc + var/Vassal_desc + var/Hunter_desc + +/obj/structure/bloodsucker/examine(mob/user) + . = ..() + if(!user.mind && Ghost_desc != "") + . += span_cult(Ghost_desc) + if(IS_BLOODSUCKER(user) && Vamp_desc) + if(!owner) + . += span_cult("It is unsecured. Click on [src] while in your lair to secure it in place to get its full potential.") + return + . += span_cult(Vamp_desc) + if(IS_VASSAL(user) && Vassal_desc != "") + . += span_cult(Vassal_desc) + if(IS_MONSTERHUNTER(user) && Hunter_desc != "") + . += span_cult(Hunter_desc) + +/// This handles bolting down the structure. +/obj/structure/bloodsucker/proc/bolt(mob/user) + to_chat(user, span_danger("You have secured [src] in place.")) + to_chat(user, span_announce("* Bloodsucker Tip: Examine [src] to understand how it functions!")) + owner = user + +/// This handles unbolting of the structure. +/obj/structure/bloodsucker/proc/unbolt(mob/user) + to_chat(user, span_danger("You have unsecured [src].")) + owner = null + +/obj/structure/bloodsucker/attackby(obj/item/item, mob/living/user, params) + /// If a Bloodsucker tries to wrench it in place, yell at them. + if(item.tool_behaviour == TOOL_WRENCH && !anchored && IS_BLOODSUCKER(user)) + user.playsound_local(null, 'sound/machines/buzz-sigh.ogg', 40, FALSE, pressure_affected = FALSE) + to_chat(user, span_announce("* Bloodsucker Tip: Examine the Persuasion Rack to understand how it functions!")) + return + . = ..() + +/obj/structure/bloodsucker/attack_hand(mob/user, list/modifiers) +// . = ..() // Don't call parent, else they will handle unbuckling. + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + /// Claiming the Rack instead of using it? + if(istype(bloodsuckerdatum) && !owner) + if(!bloodsuckerdatum.lair) + to_chat(user, span_danger("You don't have a lair. Claim a coffin to make that location your lair.")) + return FALSE + if(bloodsuckerdatum.lair != get_area(src)) + to_chat(user, span_danger("You may only activate this structure in your lair: [bloodsuckerdatum.lair].")) + return FALSE + + /// Menu for securing your Persuasion rack in place. + switch(input("Do you wish to secure [src] here?") in list("Yes", "No")) + if("Yes") + user.playsound_local(null, 'sound/items/ratchet.ogg', 70, FALSE, pressure_affected = FALSE) + bolt(user) + return FALSE + return FALSE + return TRUE + +/obj/structure/bloodsucker/AltClick(mob/user) + . = ..() + if(user == owner && user.Adjacent(src)) + switch(input("Unbolt [src]?") in list("Yes", "No")) + if("Yes") + unbolt(user) + +#define ALTAR_RANKS_PER_DAY 2 +/obj/structure/bloodsucker/bloodaltar + name = "blood altar" + desc = "It is made of marble, lined with basalt, and radiates an unnerving chill that puts your skin on edge." + icon = 'icons/obj/vamp_obj.dmi' + icon_state = "bloodaltar" + density = TRUE + anchored = FALSE + pass_flags_self = PASSTABLE | LETPASSTHROW + can_buckle = FALSE + var/task_completed = FALSE + var/sacrifices = 0 + var/taskheart = FALSE + Ghost_desc = "This is a Blood Altar, where bloodsuckers can get two tasks per night to get more ranks." + Vamp_desc = "This is a Blood Altar, which allows you to do two tasks per day to advance your ranks.\n\ + Interact with the Altar by clicking on it after it's bolted to get a a task.\n\ + By checking your notes or the chat you can see what task needs to be done.\n\ + Remember you only get two tasks per night." + Vassal_desc = "This is the blood altar, where your master does bounties to advanced their bloodsucking powers.\n\ + Aid your master by bringing them what they need for these bounties or by helping get them." + Hunter_desc = "This is a blood altar, where monsters usually practice a sort of bounty system to advanced their powers.\n\ + They normally sacrifice hearts or blood in exchange for these ranks, forcing them to move out of their lair.\n\ + It can only be used twice per night and it needs to be interacted it to be claimed, making bloodsuckers come back twice a night." + +/obj/structure/bloodsucker/bloodaltar/Initialize(mapload) + . = ..() + AddElement(/datum/element/climbable) + +/obj/structure/bloodsucker/bloodaltar/bolt() + . = ..() + anchored = TRUE + +/obj/structure/bloodsucker/bloodaltar/unbolt() + . = ..() + anchored = FALSE + +/obj/structure/bloodsucker/bloodaltar/attack_hand(mob/user, list/modifiers) + . = ..() + if(!.) + return FALSE + if(!IS_BLOODSUCKER(user)) + to_chat(user, span_warning("You can't figure out how this works.")) + return FALSE + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum.altar_uses >= ALTAR_RANKS_PER_DAY) + to_chat(user, span_notice("You have done all tasks for the night, come back tomorrow for more.")) + return + var/task + var/suckamount = 0 + var/heartamount = 0 + switch(bloodsuckerdatum.bloodsucker_level + bloodsuckerdatum.bloodsucker_level_unspent) + if(0 to 3) + suckamount = rand(100, 200) + heartamount = rand(1,2) + if(3 to 8) + suckamount = rand(300, 400) + heartamount = rand(3,4) + if(8 to INFINITY) + suckamount = rand(500, 600) + heartamount = rand(5,6) + if(bloodsuckerdatum.task_blood_drank >= suckamount || sacrifices >= heartamount) + task_completed = TRUE + if(task_completed) + bloodsuckerdatum.task_memory = null + bloodsuckerdatum.current_task = FALSE + bloodsuckerdatum.bloodsucker_level_unspent++ + bloodsuckerdatum.altar_uses++ + bloodsuckerdatum.task_blood_drank = 0 + sacrifices = 0 + to_chat(user, span_notice("You have sucessfully done a task and gained a rank!")) + task_completed = FALSE + taskheart = FALSE + return + if(bloodsuckerdatum.current_task) + to_chat(user, span_warning("You already have a rank up task!")) + return + if(!bloodsuckerdatum.current_task) + var/want_rank = alert("Do you want to gain a task? This will cost 100 Blood.", "Task Manager", "Yes", "No") + if(want_rank == "No" || QDELETED(src)) + return + var/mob/living/carbon/C = user + if(C.blood_volume < 100) + to_chat(user, span_danger("You don't have enough blood to gain a task!")) + return + C.blood_volume -= 100 + switch(rand(1, 3)) + if(1,2) + task = "suck [suckamount] units of blood." + if(3) + task = "sacrifice [heartamount] hearts by using them on the altar." + taskheart = TRUE + bloodsuckerdatum.task_memory += "Current Rank Up Task: [task]
" + bloodsuckerdatum.current_task = TRUE + to_chat(user, span_boldnotice("You have gained a new Task! Your task is to [task] Remember to collect it by using the blood altar!")) + +/obj/structure/bloodsucker/bloodaltar/examine(mob/user) + . = ..() + if(taskheart) + . += span_boldnotice("It currently contains [sacrifices] hearts.") + else + return ..() + +/obj/structure/bloodsucker/bloodaltar/attackby(obj/item/H, mob/user, params) + if(!IS_BLOODSUCKER(user) && !IS_VASSAL(user)) + return ..() + if(taskheart) + if(istype(H, /obj/item/organ/heart)) + if(istype(H, /obj/item/organ/heart/gland)) + to_chat(usr, span_warning("This type of organ doesn't have blood to sustain the altar!")) + return ..() + to_chat(usr, span_notice("You feed the heart to the altar!")) + qdel(H) + sacrifices++ + return + return ..() +#undef ALTAR_RANKS_PER_DAY + +/*/obj/structure/bloodsucker/bloodstatue + name = "bloody countenance" + desc = "It looks upsettingly familiar..." +/obj/structure/bloodsucker/bloodportrait + name = "oil portrait" + desc = "A disturbingly familiar face stares back at you. Those reds don't seem to be painted in oil..." +/obj/structure/bloodsucker/bloodbrazier + name = "lit brazier" + desc = "It burns slowly, but doesn't radiate any heat." +/obj/structure/bloodsucker/bloodmirror + name = "faded mirror" + desc = "You get the sense that the foggy reflection looking back at you has an alien intelligence to it."*/ + +/obj/structure/bloodsucker/vassalrack + name = "persuasion rack" + desc = "If this wasn't meant for torture, then someone has some fairly horrifying hobbies." + icon = 'icons/obj/vamp_obj.dmi' + icon_state = "vassalrack" + anchored = FALSE + /// Start dense. Once fixed in place, go non-dense. + density = TRUE + can_buckle = TRUE + buckle_lying = 180 + Ghost_desc = "This is a Vassal rack, which allows Bloodsuckers to thrall crewmembers into loyal minions." + Vamp_desc = "This is the Vassal rack, which allows you to thrall crewmembers into loyal minions in your service.\n\ + Simply click and hold on a victim, and then drag their sprite on the vassal rack. Click on help intent on the vassal rack to unbuckle them.\n\ + To convert into a Vassal, repeatedly click on the persuasion rack while NOT on help intent. The time required scales with the tool in your off hand. This costs Blood to do.\n\ + Once you have Vassals ready, you are able to select a Favorite Vassal;\n\ + Click the Rack as a Vassal is buckled onto it to turn them into your Favorite. This can only be done once, so choose carefully!\n\ + This process costs 150 Blood to do, and will make your Vassal unable to be deconverted, outside of you reaching Final Death." + Vassal_desc = "This is the vassal rack, which allows your master to thrall crewmembers into their minions.\n\ + Aid your master in bringing their victims here and keeping them secure.\n\ + You can secure victims to the vassal rack by click dragging the victim onto the rack while it is secured." + Hunter_desc = "This is the vassal rack, which monsters use to brainwash crewmembers into their loyal slaves.\n\ + They usually ensure that victims are handcuffed, to prevent them from running away.\n\ + Their rituals take time, allowing us to disrupt it." + /// So we can't spam buckle people onto the rack + var/use_lock = FALSE + var/mob/buckled + /// Resets on each new character to be added to the chair. Some effects should lower it... + var/convert_progress = 3 + /// Mindshielded and Antagonists willingly have to accept you as their Master. + var/disloyalty_confirm = FALSE + /// Prevents popup spam. + var/disloyalty_offered = FALSE + +/obj/structure/bloodsucker/vassalrack/deconstruct(disassembled = TRUE) + . = ..() + new /obj/item/stack/sheet/iron(src.loc, 4) + new /obj/item/stack/rods(loc, 4) + qdel(src) + +/obj/structure/bloodsucker/vassalrack/bolt() + . = ..() + density = FALSE + anchored = TRUE + +/obj/structure/bloodsucker/vassalrack/unbolt() + . = ..() + density = TRUE + anchored = FALSE + +/obj/structure/bloodsucker/vassalrack/MouseDrop_T(atom/movable/movable_atom, mob/user) + var/mob/living/living_target = movable_atom + if(!anchored && IS_BLOODSUCKER(user)) + to_chat(user, span_danger("Until this rack is secured in place, it cannot serve its purpose.")) + to_chat(user, span_announce("* Bloodsucker Tip: Examine the Persuasion Rack to understand how it functions!")) + return + // Default checks + if(!isliving(movable_atom) || !living_target.Adjacent(src) || living_target == user || !isliving(user) || use_lock || has_buckled_mobs() || user.incapacitated() || living_target.buckled) + return + // Don't buckle Silicon to it please. + if(issilicon(living_target)) + to_chat(user, span_danger("You realize that Silicon cannot be vassalized, therefore it is useless to buckle them.")) + return + // Good to go - Buckle them! + use_lock = TRUE + if(do_mob(user, living_target, 5 SECONDS)) + attach_victim(living_target, user) + use_lock = FALSE + +/// Attempt Release (Owner vs Non Owner) +/obj/structure/bloodsucker/vassalrack/proc/attach_victim(mob/living/target, mob/living/user) + // Standard Buckle Check + target.forceMove(get_turf(src)) + if(!buckle_mob(target)) + return + user.visible_message( + span_notice("[user] straps [target] into the rack, immobilizing them."), + span_boldnotice("You secure [target] tightly in place. They won't escape you now."), + ) + + playsound(src.loc, 'sound/effects/pop_expl.ogg', 25, 1) + density = TRUE + update_icon() + + // Set up Torture stuff now + convert_progress = 3 + disloyalty_confirm = FALSE + disloyalty_offered = FALSE + +/// Attempt Unbuckle +/obj/structure/bloodsucker/vassalrack/user_unbuckle_mob(mob/living/buckled_mob, mob/user) + if(!IS_BLOODSUCKER(user) || !IS_VASSAL(user)) + if(buckled_mob == user) + buckled_mob.visible_message( + span_danger("[user] tries to release themself from the rack!"), + span_danger("You attempt to release yourself from the rack!"), + span_hear("You hear a squishy wet noise."), + ) + else + buckled_mob.visible_message( + span_danger("[user] tries to pull [buckled_mob] from the rack!"), + span_danger("[user] tries to pull [buckled_mob] from the rack!"), + span_hear("You hear a squishy wet noise."), + ) + // Monster hunters are used to this sort of stuff, they know how they work, which includes breaking others out + var/breakout_timer = IS_MONSTERHUNTER(user) ? 20 SECONDS : 10 SECONDS + if(!do_mob(user, buckled_mob, breakout_timer)) + return + unbuckle_mob(buckled_mob) + . = ..() + +/obj/structure/bloodsucker/vassalrack/unbuckle_mob(mob/living/buckled_mob, force = FALSE, can_fall = TRUE) + . = ..() + if(!.) + return FALSE + src.visible_message(span_danger("[buckled_mob][buckled_mob.stat == DEAD ? "'s corpse" : ""] slides off of the rack.")) + density = FALSE + buckled_mob.Paralyze(3 SECONDS) + update_icon() + use_lock = FALSE // Failsafe + return TRUE + +/obj/structure/bloodsucker/vassalrack/attack_hand(mob/user, list/modifiers) + . = ..() + if(!.) + return FALSE + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + // Is there anyone on the rack & If so, are they being tortured? + if(use_lock || !has_buckled_mobs()) + return FALSE + var/mob/living/carbon/buckled_carbons = pick(buckled_mobs) + var/mob/living/L = user + if(L.combat_mode == TRUE) + if(istype(bloodsuckerdatum)) + unbuckle_mob(buckled_carbons) + return FALSE + else + user_unbuckle_mob(buckled_carbons, user) + return + /// If I'm not a Bloodsucker, try to unbuckle them. + var/datum/antagonist/vassal/vassaldatum = IS_VASSAL(buckled_carbons) + // Are they our Vassal, or Dead? + if(istype(vassaldatum) && vassaldatum.master == bloodsuckerdatum || buckled_carbons.stat >= DEAD) + // Can we assign a Favorite Vassal? + if(istype(vassaldatum) && !bloodsuckerdatum.has_favorite_vassal) + if(buckled_carbons.mind.can_make_bloodsucker(buckled_carbons.mind)) + offer_favorite_vassal(user, buckled_carbons) + use_lock = FALSE + return + + // Not our Vassal, but Alive & We're a Bloodsucker, good to torture! + torture_victim(user, buckled_carbons) + +/** + * Step One: Tick Down Conversion from 3 to 0 + * Step Two: Break mindshielding/antag (on approve) + * Step Three: Blood Ritual + */ + +/obj/structure/bloodsucker/vassalrack/proc/torture_victim(mob/living/user, mob/living/target) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + /// Prep... + use_lock = TRUE + /// Conversion Process + if(convert_progress > 0) + to_chat(user, span_notice("You spill some blood and prepare to initiate [target] into your service.")) + bloodsuckerdatum.AddBloodVolume(-TORTURE_BLOOD_COST) + if(!do_torture(user,target)) + to_chat(user, span_danger("The ritual has been interrupted!")) + else + /// Prevent them from unbuckling themselves as long as we're torturing. + target.Paralyze(1 SECONDS) + convert_progress-- + /// We're done? Let's see if they can be Vassal. + if(convert_progress <= 0) + if(IS_VASSAL(target)) + var/datum/antagonist/vassal/vassaldatum = target.mind.has_antag_datum(/datum/antagonist/vassal) + if(!vassaldatum.master.broke_masquerade) + to_chat(user, span_boldwarning("[target] is under the spell of another Bloodsucker!")) + return + if(RequireDisloyalty(user, target)) + to_chat(user, span_boldwarning("[target] has external loyalties! [target.p_they(TRUE)] will require more persuasion to break [target.p_them()] to your will!")) + else + to_chat(user, span_notice("[target] looks ready for the Dark Communion.")) + /// Otherwise, we're not done, we need to persuade them some more. + else + to_chat(user, span_notice("[target] could use [convert_progress == 1 ? "a little" : "some"] more persuasion.")) + use_lock = FALSE + return + /// Check: Mindshield & Antag + if(!disloyalty_confirm && RequireDisloyalty(user, target)) + if(!do_disloyalty(user,target)) + to_chat(user, span_danger("The ritual has been interrupted!")) + else if(!disloyalty_confirm) + to_chat(user, span_danger("[target] refuses to give into your persuasion. Perhaps a little more?")) + else + to_chat(user, span_notice("[target] looks ready for the Dark Communion.")) + use_lock = FALSE + return + user.visible_message( + span_notice("[user] marks a bloody smear on [target]'s forehead and puts a wrist up to [target.p_their()] mouth!"), + span_notice("You paint a bloody marking across [target]'s forehead, place your wrist to [target.p_their()] mouth, and subject [target.p_them()] to the Dark Communion."), + ) + if(!do_mob(user, src, 5 SECONDS)) + to_chat(user, span_danger("The ritual has been interrupted!")) + use_lock = FALSE + return + if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) + to_chat(user, span_danger("They're mindshielded! Break their mindshield with a candelabrum or surgery before continuing!")) + return + /// Convert to Vassal! + bloodsuckerdatum.AddBloodVolume(-TORTURE_CONVERSION_COST) + if(bloodsuckerdatum && bloodsuckerdatum.attempt_turn_vassal(target)) + bloodsuckerdatum.bloodsucker_level_unspent++ + user.playsound_local(null, 'sound/effects/explosion_distant.ogg', 40, TRUE) + target.playsound_local(null, 'sound/effects/explosion_distant.ogg', 40, TRUE) + target.playsound_local(null, 'sound/effects/singlebeat.ogg', 40, TRUE) + target.Jitter(15) + INVOKE_ASYNC(target, /mob.proc/emote, "laugh") + //remove_victim(target) // Remove on CLICK ONLY! + use_lock = FALSE + +/obj/structure/bloodsucker/vassalrack/proc/do_torture(mob/living/user, mob/living/carbon/target, mult = 1) + /// Fifteen seconds if you aren't using anything. Shorter with weapons and such. + var/torture_time = 15 + var/torture_dmg_brute = 2 + var/torture_dmg_burn = 0 + /// Get Bodypart + var/target_string = "" + var/obj/item/bodypart/selected_bodypart = null + selected_bodypart = pick(target.bodyparts) + if(selected_bodypart) + target_string += selected_bodypart.name + /// Get Weapon + var/obj/item/held_item = user.get_active_held_item() + if(!istype(held_item)) + held_item = user.get_inactive_held_item() + /// Weapon Bonus + if(held_item) + torture_time -= held_item.force / 4 + torture_dmg_brute += held_item.force / 4 + //torture_dmg_burn += I. + if(held_item.sharpness == SHARP_EDGED) + torture_time -= 2 + else if(held_item.sharpness == SHARP_POINTY) + torture_time -= 3 + /// This will hurt your eyes. + else if(held_item.tool_behaviour == TOOL_WELDER) + if(held_item.use_tool(src, user, 0, volume = 5)) + torture_time -= 6 + torture_dmg_burn += 5 + held_item.play_tool_sound(target) + /// Minimum 5 seconds. + torture_time = max(5 SECONDS, torture_time SECONDS) + /// Now run process. + if(!do_mob(user, target, torture_time * mult)) + return FALSE + /// Success? + if(held_item) + playsound(loc, held_item.hitsound, 30, 1, -1) + held_item.play_tool_sound(target) + target.visible_message( + span_danger("[user] performs a ritual, spilling some of [target]'s blood from their [target_string] and shaking them up!"), + span_userdanger("[user] performs a ritual, spilling some blood from your [target_string], shaking you up!"), + ) + INVOKE_ASYNC(target, /mob.proc/emote, "scream") + target.Jitter(5) + target.apply_damages(brute = torture_dmg_brute, burn = torture_dmg_burn, def_zone = (selected_bodypart ? selected_bodypart.body_zone : null)) // take_overall_damage(6,0) + return TRUE + +/// Offer them the oppertunity to join now. +/obj/structure/bloodsucker/vassalrack/proc/do_disloyalty(mob/living/user, mob/living/target) + spawn(10) + /// Are we still torturing? Did we cancel? Are they still here? + if(use_lock && target && target.client) + to_chat(user, span_notice("[target] has been given the opportunity for servitude. You await their decision...")) + var/alert_text = "You are being tortured! Do you want to give in and pledge your undying loyalty to [user]?" + alert_text += "\n\nYou will not lose your current objectives, but they come second to the will of your new master!" + to_chat(target, span_cultlarge("THE HORRIBLE PAIN! WHEN WILL IT END?!")) + var/list/torture_icons = list( + "Accept" = image(icon = 'icons/mob/actions/actions_bloodsucker.dmi', icon_state = "power_recup"), + "Refuse" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "stunbaton_active") + ) + var/torture_response = show_radial_menu(target, src, torture_icons, radius = 36, require_near = TRUE) + switch(torture_response) + if("Accept") + disloyalty_accept(target) + else + disloyalty_refuse(target) + if(!do_torture(user,target, 2)) + return FALSE + + // NOTE: We only remove loyalties when we're CONVERTED! + return TRUE + +/obj/structure/bloodsucker/vassalrack/proc/RequireDisloyalty(mob/living/user, mob/living/target) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = IS_BLOODSUCKER(user) + return bloodsuckerdatum.AmValidAntag(target) + +/obj/structure/bloodsucker/vassalrack/proc/disloyalty_accept(mob/living/target) + // FAILSAFE: Still on the rack? + if(!(locate(target) in buckled_mobs)) + return + // NOTE: You can say YES after torture. It'll apply to next time. + disloyalty_confirm = TRUE + +/obj/structure/bloodsucker/vassalrack/proc/disloyalty_refuse(mob/living/target) + // FAILSAFE: Still on the rack? + if(!(locate(target) in buckled_mobs)) + return + // Failsafe: You already said YES. + if(disloyalty_confirm) + return + to_chat(target, span_notice("You refuse to give in! You will not break!")) + + +/obj/structure/bloodsucker/vassalrack/proc/offer_favorite_vassal(mob/living/carbon/human/user, mob/living/target) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + var/datum/antagonist/vassal/vassaldatum = target.mind.has_antag_datum(/datum/antagonist/vassal) + + switch(input("Would you like to turn this Vassal into your completely loyal Servant? This costs 150 Blood to do. You cannot undo this.") in list("Yes", "No")) + if("Yes") + user.blood_volume -= 150 + bloodsuckerdatum.has_favorite_vassal = TRUE + vassaldatum.make_favorite(user) + else + to_chat(user, span_danger("You decide not to turn [target] into your Favorite Vassal.")) + use_lock = FALSE + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/obj/structure/bloodsucker/candelabrum + name = "candelabrum" + desc = "It burns slowly, but doesn't radiate any heat." + icon = 'icons/obj/vamp_obj.dmi' + icon_state = "candelabrum" + light_color = "#66FFFF"//LIGHT_COLOR_BLUEGREEN // lighting.dm + light_power = 3 + light_range = 0 // to 2 + density = FALSE + can_buckle = TRUE + anchored = FALSE + Ghost_desc = "This is a magical candle which drains at the sanity of non Bloodsuckers and Vassals.\n\ + Vassals can turn the candle on manually, while Bloodsuckers can do it from a distance." + Vamp_desc = "This is a magical candle which drains at the sanity of mortals who are not under your command while it is active.\n\ + You can click on it from any range to turn it on remotely, clicking on it with a mindshielded individual buckled will start to disable their mindshields." + Vassal_desc = "This is a magical candle which drains at the sanity of the fools who havent yet accepted your master, as long as it is active.\n\ + You can turn it on and off by clicking on it while you are next to it." + Hunter_desc = "This is a blue Candelabrum, which causes insanity to those near it while active." + var/lit = FALSE + +/obj/structure/bloodsucker/candelabrum/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/structure/bloodsucker/candelabrum/update_icon() + icon_state = "candelabrum[lit ? "_lit" : ""]" + return ..() + +/obj/structure/bloodsucker/candelabrum/examine(mob/user) + . = ..() + +/obj/structure/bloodsucker/candelabrum/bolt() + . = ..() + anchored = TRUE + density = TRUE + +/obj/structure/bloodsucker/candelabrum/unbolt() + . = ..() + anchored = FALSE + density = FALSE + +/obj/structure/bloodsucker/candelabrum/proc/toggle(mob/user) + lit = !lit + if(lit) + set_light(2, 3, "#66FFFF") + START_PROCESSING(SSobj, src) + else + set_light(0) + STOP_PROCESSING(SSobj, src) + update_icon() + +/obj/structure/bloodsucker/candelabrum/process() + if(!lit) + return + for(var/mob/living/carbon/nearly_people in viewers(7, src)) + /// We dont want Bloodsuckers or Vassals affected by this + if(IS_VASSAL(nearly_people) || IS_BLOODSUCKER(nearly_people)) + continue + nearly_people.hallucination += 5 + if(nearly_people.getStaminaLoss() >= 100) + continue + if(nearly_people.getStaminaLoss() >= 60) + spawn(10) + nearly_people.adjustStaminaLoss(1) // keeps the slowness by constantly updating it + else + nearly_people.adjustStaminaLoss(10) + SEND_SIGNAL(nearly_people, COMSIG_ADD_MOOD_EVENT, "vampcandle", /datum/mood_event/vampcandle) + to_chat(nearly_people, span_warning("You start to feel extremely weak and drained.")) +/* + * # Candelabrum Ventrue Stuff + * + * Ventrue Bloodsuckers can buckle Vassals onto the Candelabrum to "Upgrade" them. + * This is limited to a Single vassal, called 'My Favorite Vassal'. + * + * Most of this is just copied over from Persuasion Rack. + */ + +/obj/structure/bloodsucker/candelabrum/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!.) + return + if(!anchored) + return + // Checks: They're Buckled & Alive. + if(IS_BLOODSUCKER(user)) + if(!has_buckled_mobs()) + toggle() + return + var/mob/living/carbon/target = pick(buckled_mobs) + if(target.stat >= DEAD || user.combat_mode == FALSE) + unbuckle_mob(target) + return + if(user.blood_volume >= 150) + switch(input("Do you wish to spend 150 Blood to deactivate [target]'s mindshield?") in list("Yes", "No")) + if("Yes") + user.blood_volume -= 150 + if(!do_mob(user, target, 60 SECONDS)) + to_chat(user, span_danger("The ritual has been interrupted!")) + return FALSE + remove_loyalties(target) + to_chat(user, span_notice("You deactivated [target]'s mindshield!")) + return + else + to_chat(user, span_danger("You don't have enough Blood to deactivate [target]'s mindshield.")) + return + + if(IS_BLOODSUCKER(user) || IS_VASSAL(user)) + toggle() + +/// Buckling someone in +/obj/structure/bloodsucker/candelabrum/MouseDrop_T(mob/living/target, mob/user) + if(!anchored && IS_BLOODSUCKER(user)) + to_chat(user, span_danger("Until the candelabrum is secured in place, it cannot serve its purpose.")) + return + /// Default checks + if(!target.Adjacent(src) || target == user || !isliving(user) || has_buckled_mobs() || user.incapacitated() || target.buckled) + return + /// Are they mindshielded or a bloodsucker/vassal? + if(!HAS_TRAIT(target, TRAIT_MINDSHIELD)) + return + /// Good to go - Buckle them! + if(do_mob(user, target, 5 SECONDS)) + attach_mob(target, user) + +/obj/structure/bloodsucker/candelabrum/proc/attach_mob(mob/living/target, mob/living/user) + user.visible_message( + span_notice("[user] lifts and buckles [target] onto the candelabrum."), + span_boldnotice("You buckle [target] onto the candelabrum."), + ) + + playsound(src.loc, 'sound/effects/pop_expl.ogg', 25, 1) + target.forceMove(get_turf(src)) + + if(!buckle_mob(target)) + return + update_icon() + +/obj/structure/bloodsucker/candelabrum/proc/remove_loyalties(mob/living/target, mob/living/user) + // Find Mindshield implant & destroy, takes a good while. + if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) + for(var/obj/item/implant/mindshield/L in target) + if(L) + qdel(L) +/// Attempt Unbuckle +/obj/structure/bloodsucker/candelabrum/unbuckle_mob(mob/living/buckled_mob, force = FALSE, can_fall = TRUE) + . = ..() + src.visible_message(span_danger("[buckled_mob][buckled_mob.stat==DEAD?"'s corpse":""] slides off of the candelabrum.")) + update_icon() + +/// Blood Throne - Allows Bloodsuckers to remotely speak with their Vassals. - Code (Mostly) stolen from comfy chairs (armrests) and chairs (layers) +/obj/structure/bloodsucker/bloodthrone + name = "wicked throne" + desc = "Twisted metal shards jut from the arm rests. Very uncomfortable looking. It would take a masochistic sort to sit on this jagged piece of furniture." + icon = 'icons/obj/vamp_obj_64.dmi' + icon_state = "throne" + buckle_lying = 0 + anchored = FALSE + density = TRUE + can_buckle = TRUE + Ghost_desc = "This is a Bloodsucker throne, any Bloodsucker sitting on it can remotely speak to their Vassals by attempting to speak aloud." + Vamp_desc = "This is a Blood throne, sitting on it will allow you to telepathically speak to your vassals by simply speaking." + Vassal_desc = "This is a Blood throne, it allows your Master to telepathically speak to you and others like you." + Hunter_desc = "This is a chair that hurts those that try to buckle themselves onto it, though the Undead have no problem latching on.\n\ + While buckled, Monsters can use this to telepathically communicate with eachother." + var/mutable_appearance/armrest + +// Add rotating and armrest +/obj/structure/bloodsucker/bloodthrone/Initialize() + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE) + armrest = GetArmrest() + armrest.layer = ABOVE_MOB_LAYER + return ..() + +/obj/structure/bloodsucker/bloodthrone/Destroy() + QDEL_NULL(armrest) + return ..() + +/obj/structure/bloodsucker/bloodthrone/bolt() + . = ..() + anchored = TRUE + +/obj/structure/bloodsucker/bloodthrone/unbolt() + . = ..() + anchored = FALSE + +// Armrests +/obj/structure/bloodsucker/bloodthrone/proc/GetArmrest() + return mutable_appearance('icons/obj/vamp_obj_64.dmi', "thronearm") + +/obj/structure/bloodsucker/bloodthrone/proc/update_armrest() + if(has_buckled_mobs()) + add_overlay(armrest) + else + cut_overlay(armrest) + +// Rotating +/obj/structure/bloodsucker/bloodthrone/setDir(newdir) + . = ..() + if(has_buckled_mobs()) + for(var/m in buckled_mobs) + var/mob/living/buckled_mob = m + buckled_mob.setDir(newdir) + + if(has_buckled_mobs() && dir == NORTH) + layer = ABOVE_MOB_LAYER + else + layer = OBJ_LAYER + +// Buckling +/obj/structure/bloodsucker/bloodthrone/buckle_mob(mob/living/user, force = FALSE, check_loc = TRUE) + if(!anchored) + to_chat(user, span_announce("[src] is not bolted to the ground!")) + return + user.visible_message( + span_notice("[user] sits down on [src]."), + span_boldnotice("You sit down onto [src]."), + ) + if(IS_BLOODSUCKER(user)) + RegisterSignal(user, COMSIG_MOB_SAY, .proc/handle_speech) + else + user.Paralyze(6 SECONDS) + to_chat(user, span_cult("The power of the blood throne overwhelms you!")) + user.apply_damage(10, BRUTE) + unbuckle_mob(user) + return + return ..() + +/obj/structure/bloodsucker/bloodthrone/post_buckle_mob(mob/living/target) + . = ..() + update_armrest() + target.pixel_y += 2 + +// Unbuckling +/obj/structure/bloodsucker/bloodthrone/unbuckle_mob(mob/living/user, force = FALSE, can_fall = TRUE) + src.visible_message(span_danger("[user] unbuckles themselves from [src].")) + if(IS_BLOODSUCKER(user)) + UnregisterSignal(user, COMSIG_MOB_SAY) + return ..() + +/obj/structure/bloodsucker/bloodthrone/post_unbuckle_mob(mob/living/target) + target.pixel_y -= 2 + +// The speech itself +/obj/structure/bloodsucker/bloodthrone/proc/handle_speech(datum/source, mob/speech_args) + var/message = speech_args[SPEECH_MESSAGE] + var/mob/living/carbon/human/user = source + var/rendered = span_cultlarge("[user.real_name]: [message]") + user.log_talk(message, LOG_SAY, tag=ROLE_BLOODSUCKER) + for(var/mob/living/carbon/human/vassals in GLOB.player_list) + var/datum/antagonist/vassal/vassaldatum = vassals.mind.has_antag_datum(/datum/antagonist/vassal) + if(vassals == user) // Just so they can hear themselves speak. + to_chat(vassals, rendered) + if(!istype(vassaldatum)) + continue + if(vassaldatum.master.owner == user.mind) + to_chat(vassals, rendered) + + for(var/mob/dead_mob in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(dead_mob, user) + to_chat(dead_mob, "[link] [rendered]") + + speech_args[SPEECH_MESSAGE] = "" diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm new file mode 100644 index 00000000000..fda3d309be1 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm @@ -0,0 +1,430 @@ +/// Runs from COMSIG_LIVING_BIOLOGICAL_LIFE, handles Bloodsucker constant proccesses. +/datum/antagonist/bloodsucker/proc/LifeTick() + + if(!owner) + INVOKE_ASYNC(src, .proc/HandleDeath) + return + // Deduct Blood + if(owner.current.stat == CONSCIOUS && !HAS_TRAIT(owner.current, TRAIT_NODEATH)) + INVOKE_ASYNC(src, .proc/AddBloodVolume, passive_blood_drain) // -.1 currently + if(HandleHealing(1)) + if((COOLDOWN_FINISHED(src, bloodsucker_spam_healing)) && owner.current.blood_volume > 0) + to_chat(owner.current, span_notice("The power of your blood begins knitting your wounds...")) + COOLDOWN_START(src, bloodsucker_spam_healing, BLOODSUCKER_SPAM_HEALING) + // Standard Updates + INVOKE_ASYNC(src, .proc/HandleDeath) + INVOKE_ASYNC(src, .proc/HandleStarving) + INVOKE_ASYNC(src, .proc/HandleTorpor) + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// BLOOD +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/antagonist/bloodsucker/proc/AddBloodVolume(value) + owner.current.blood_volume = clamp(owner.current.blood_volume + value, 0, max_blood_volume) + update_hud() + +/datum/antagonist/bloodsucker/proc/AddHumanityLost(value) + if(humanity_lost >= 500) + to_chat(owner.current, span_warning("You hit the maximum amount of lost Humanity, you are far from Human.")) + return + humanity_lost += value + to_chat(owner.current, span_warning("You feel as if you lost some of your humanity, you will now enter Frenzy at [FRENZY_THRESHOLD_ENTER + (humanity_lost * 10)] Blood.")) + +/// mult: SILENT feed is 1/3 the amount +/datum/antagonist/bloodsucker/proc/HandleFeeding(mob/living/carbon/target, mult=1, power_level) + // Starts at 15 (now 8 since we doubled the Feed time) + var/feed_amount = 15 + (power_level * 2) + var/blood_taken = min(feed_amount, target.blood_volume) * mult + target.blood_volume -= blood_taken + // Simple Animals lose a LOT of blood, and take damage. This is to keep cats, cows, and so forth from giving you insane amounts of blood. + if(!ishuman(target)) + target.blood_volume -= (blood_taken / max(target.mob_size, 0.1)) * 3.5 // max() to prevent divide-by-zero + target.apply_damage_type(blood_taken / 3.5) // Don't do too much damage, or else they die and provide no blood nourishment. + if(target.blood_volume <= 0) + target.blood_volume = 0 + target.death(0) + /////////// + // Shift Body Temp (toward Target's temp, by volume taken) + owner.current.bodytemperature = ((owner.current.blood_volume * owner.current.bodytemperature) + (blood_taken * target.bodytemperature)) / (owner.current.blood_volume + blood_taken) + // our volume * temp, + their volume * temp, / total volume + /////////// + // Reduce Value Quantity + if(target.stat == DEAD) // Penalty for Dead Blood + blood_taken /= 3 + if(!ishuman(target)) // Penalty for Non-Human Blood + blood_taken /= 2 + //if (!iscarbon(target)) // Penalty for Animals (they're junk food) + // Apply to Volume + AddBloodVolume(blood_taken) + // Reagents (NOT Blood!) + if(target.reagents && target.reagents.total_volume) + target.reagents.trans_to(owner.current, INGEST, 1) // Run transfer of 1 unit of reagent from them to me. + owner.current.playsound_local(null, 'sound/effects/singlebeat.ogg', 40, 1) // Play THIS sound for user only. The "null" is where turf would go if a location was needed. Null puts it right in their head. + total_blood_drank += blood_taken + if(frenzied) + frenzy_blood_drank += blood_taken + if(current_task) + task_blood_drank += blood_taken + return blood_taken + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// HEALING + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/// Constantly runs on Bloodsucker's LifeTick, and is increased by being in Torpor/Coffins +/datum/antagonist/bloodsucker/proc/HandleHealing(mult = 1) + var/actual_regen = bloodsucker_regen_rate + additional_regen + // Don't heal if I'm staked or on Masquerade (+ not in a Coffin). Masqueraded Bloodsuckers in a Coffin however, will heal. + if(owner.current.AmStaked() || (HAS_TRAIT(owner.current, TRAIT_MASQUERADE) && !HAS_TRAIT(owner.current, TRAIT_NODEATH))) + return FALSE + owner.current.adjustCloneLoss(-1 * (actual_regen * 4) * mult, 0) + owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (actual_regen * 4) * mult) //adjustBrainLoss(-1 * (actual_regen * 4) * mult, 0) + if(!iscarbon(owner.current)) // Damage Heal: Do I have damage to ANY bodypart? + return + var/mob/living/carbon/user = owner.current + var/costMult = 1 // Coffin makes it cheaper + var/bruteheal = min(user.getBruteLoss_nonProsthetic(), actual_regen) // BRUTE: Always Heal + var/fireheal = 0 // BURN: Heal in Coffin while Fakedeath, or when damage above maxhealth (you can never fully heal fire) + /// Checks if you're in a coffin here, additionally checks for Torpor right below it. + var/amInCoffin = istype(user.loc, /obj/structure/closet/crate/coffin) + if(amInCoffin && HAS_TRAIT(user, TRAIT_NODEATH)) + if(HAS_TRAIT(owner.current, TRAIT_MASQUERADE)) + to_chat(user, span_warning("You will not heal while your Masquerade ability is active.")) + return + fireheal = min(user.getFireLoss_nonProsthetic(), actual_regen) + mult *= 5 // Increase multiplier if we're sleeping in a coffin. + costMult /= 2 // Decrease cost if we're sleeping in a coffin. + user.extinguish_mob() + user.remove_all_embedded_objects() // Remove Embedded! + if(check_limbs(costMult)) + return TRUE + // In Torpor, but not in a Coffin? Heal faster anyways. + else if(HAS_TRAIT(user, TRAIT_NODEATH)) + mult *= 3 + // Heal if Damaged + if((bruteheal + fireheal > 0) && mult != 0) // Just a check? Don't heal/spend, and return. + // We have damage. Let's heal (one time) + user.adjustBruteLoss(-bruteheal * mult, forced=TRUE) // Heal BRUTE / BURN in random portions throughout the body. + user.adjustFireLoss(-fireheal * mult, forced=TRUE) + AddBloodVolume(((bruteheal * -0.5) + (fireheal * -1)) * costMult * mult) // Costs blood to heal + return TRUE + +/datum/antagonist/bloodsucker/proc/check_limbs(costMult = 1) + var/limb_regen_cost = 50 * -costMult + var/mob/living/carbon/user = owner.current + var/list/missing = user.get_missing_limbs() + if(missing.len && user.blood_volume < limb_regen_cost + 5) + return FALSE + for(var/targetLimbZone in missing) // 1) Find ONE Limb and regenerate it. + user.regenerate_limb(targetLimbZone, FALSE) // regenerate_limbs() <--- If you want to EXCLUDE certain parts, do it like this ----> regenerate_limbs(0, list("head")) + AddBloodVolume(limb_regen_cost) + var/obj/item/bodypart/missing_bodypart = user.get_bodypart(targetLimbZone) // 2) Limb returns Damaged + missing_bodypart.brute_dam = 60 + to_chat(user, span_notice("Your flesh knits as it regrows your [missing_bodypart]!")) + playsound(user, 'sound/magic/demon_consume.ogg', 50, TRUE) + return TRUE + +/* + * # Heal Vampire Organs + * + * This is used by Bloodsuckers, these are the steps of this proc: + * Step 1 - Cure husking and Regenerate organs. regenerate_organs() removes their Vampire Heart & Eye augments, which leads us to... + * Step 2 - Repair any (shouldn't be possible) Organ damage, then return their Vampiric Heart & Eye benefits. + * Step 3 - Revive them, clear all wounds, remove any Tumors (If any). + * + * This is called on Bloodsucker's Assign, and when they end Torpor. + */ + +/datum/antagonist/bloodsucker/proc/HealVampireOrgans() + var/mob/living/carbon/bloodsuckeruser = owner.current + + // Step 1 - Fix basic things, husk and organs. + bloodsuckeruser.cure_husk() + bloodsuckeruser.regenerate_organs() + + // Step 2 NOTE: Giving passive organ regeneration will cause Torpor to spam /datum/client_colour/monochrome at the Bloodsucker, permanently making them colorblind! + for(var/all_organs in bloodsuckeruser.internal_organs) + var/obj/item/organ/organ = all_organs + organ.setOrganDamage(0) + var/obj/item/organ/heart/current_heart = bloodsuckeruser.getorganslot(ORGAN_SLOT_HEART) + if(!istype(current_heart, /obj/item/organ/heart/vampheart) && !istype(current_heart, /obj/item/organ/heart/demon) && !istype(current_heart, /obj/item/organ/heart/cursed && !istype(current_heart, /obj/item/organ/heart/nightmare))) + qdel(current_heart) + var/obj/item/organ/heart/vampheart/vampiric_heart = new + vampiric_heart.Insert(owner.current) + vampiric_heart.Stop() + var/obj/item/organ/eyes/current_eyes = bloodsuckeruser.getorganslot(ORGAN_SLOT_EYES) + if(current_eyes) + current_eyes.flash_protect = max(initial(current_eyes.flash_protect) - 1, - 1) + current_eyes.sight_flags = SEE_MOBS + current_eyes.see_in_dark = 8 + current_eyes.lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE + bloodsuckeruser.update_sight() + + // Step 3 + if(bloodsuckeruser.stat == DEAD) + bloodsuckeruser.revive(full_heal = FALSE, admin_revive = FALSE) + for(var/i in bloodsuckeruser.all_wounds) + var/datum/wound/iter_wound = i + iter_wound.remove_wound() + // From [powers/panacea.dm] + var/list/bad_organs = list( + bloodsuckeruser.getorgan(/obj/item/organ/body_egg), + bloodsuckeruser.getorgan(/obj/item/organ/zombie_infection)) + for(var/tumors in bad_organs) + var/obj/item/organ/yucky_organs = tumors + if(!istype(yucky_organs)) + continue + yucky_organs.Remove(bloodsuckeruser) + yucky_organs.forceMove(get_turf(bloodsuckeruser)) + + // Good to go! + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// DEATH + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/// FINAL DEATH +/datum/antagonist/bloodsucker/proc/HandleDeath() + // Not "Alive"? + var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum.my_clan == CLAN_GANGREL) + if(!owner.current || !isliving(owner.current) || isbrain(owner.current) || !get_turf(owner.current)) + FinalDeath() + return + else + if(!owner.current || !iscarbon(owner.current) || isbrain(owner.current) || !get_turf(owner.current)) + FinalDeath() + return + // Fire Damage? (above double health) + if(owner.current.getFireLoss() >= owner.current.maxHealth * 2.5) + FinalDeath() + return + // Staked while "Temp Death" or Asleep + if(owner.current.StakeCanKillMe() && owner.current.AmStaked()) + FinalDeath() + return + // Not organic/living? (Zombie/Skeleton/Plasmaman) + if(!(owner.current.mob_biotypes & MOB_ORGANIC)) + FinalDeath() + return + // Temporary Death? Convert to Torpor. + if(owner.current.stat == DEAD) + var/mob/living/carbon/human/dead_bloodsucker = owner.current + if(!HAS_TRAIT(dead_bloodsucker, TRAIT_NODEATH)) + to_chat(dead_bloodsucker, span_danger("Your immortal body will not yet relinquish your soul to the abyss. You enter Torpor.")) + Check_Begin_Torpor(TRUE) + +/datum/antagonist/bloodsucker/proc/HandleStarving() // I am thirsty for blood! + // Nutrition - The amount of blood is how full we are. + owner.current.set_nutrition(min(owner.current.blood_volume, NUTRITION_LEVEL_FED)) + + // BLOOD_VOLUME_GOOD: [336] - Pale +// handled in bloodsucker_integration.dm + + // BLOOD_VOLUME_EXIT: [250] - Exit Frenzy (If in one) This is high because we want enough to kill the poor soul they feed off of. + if(owner.current.blood_volume >= FRENZY_THRESHOLD_EXIT && frenzied) + owner.current.remove_status_effect(STATUS_EFFECT_FRENZY) + // BLOOD_VOLUME_BAD: [224] - Jitter + if(owner.current.blood_volume < BLOOD_VOLUME_BAD && prob(0.5) && !HAS_TRAIT(owner.current, TRAIT_NODEATH) && !HAS_TRAIT(owner.current, TRAIT_MASQUERADE)) + owner.current.Jitter(3) + // BLOOD_VOLUME_SURVIVE: [122] - Blur Vision + if(owner.current.blood_volume < BLOOD_VOLUME_SURVIVE) + owner.current.blur_eyes(8 - 8 * (owner.current.blood_volume / BLOOD_VOLUME_BAD)) + + // The more blood, the better the Regeneration, get too low blood, and you enter Frenzy. + var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.has_antag_datum(/datum/antagonist/bloodsucker) + if(owner.current.blood_volume < (FRENZY_THRESHOLD_ENTER + (humanity_lost * 10)) && !frenzied) + if(!iscarbon(owner)) + if(bloodsuckerdatum.my_clan == CLAN_GANGREL) + return + qdel(owner.current) + enter_frenzy() + else if(owner.current.blood_volume < BLOOD_VOLUME_BAD) + additional_regen = 0.1 + else if(owner.current.blood_volume < BLOOD_VOLUME_OKAY) + additional_regen = 0.2 + else if(owner.current.blood_volume < BLOOD_VOLUME_NORMAL) + additional_regen = 0.3 + else if(owner.current.blood_volume < BS_BLOOD_VOLUME_MAX_REGEN) + additional_regen = 0.4 + else + additional_regen = 0.5 + +/datum/antagonist/bloodsucker/proc/enter_frenzy() + owner.current.apply_status_effect(STATUS_EFFECT_FRENZY) + +/** + * # Torpor + * + * Torpor is what deals with the Bloodsucker falling asleep, their healing, the effects, ect. + * This is basically what Sol is meant to do to them, but they can also trigger it manually if they wish to heal, as Burn is only healed through Torpor. + * You cannot manually exit Torpor, it is instead entered/exited by: + * + * Torpor is triggered by: + * - Being in a Coffin while Sol is on, dealt with by /HandleTorpor() + * - Entering a Coffin with more than 10 combined Brute/Burn damage, dealt with by /closet/crate/coffin/close() [bloodsucker_coffin.dm] + * - Death, dealt with by /HandleDeath() + * Torpor is ended by: + * - Having less than 10 Brute damage while OUTSIDE of your Coffin while it isnt Sol, dealt with by /HandleTorpor() + * - Having less than 10 Brute & Burn Combined while INSIDE of your Coffin while it isnt Sol, dealt with by /HandleTorpor() + * - Sol being over, dealt with by /sunlight/process() [bloodsucker_daylight.dm] +*/ + +/datum/antagonist/bloodsucker/proc/HandleTorpor() + if(!owner.current) + return + if(istype(owner.current.loc, /obj/structure/closet/crate/coffin)) + if(!HAS_TRAIT(owner.current, TRAIT_NODEATH)) + /// Staked? Dont heal + if(owner.current.AmStaked()) + to_chat(owner.current, span_userdanger("You are staked! Remove the offending weapon from your heart before sleeping.")) + return + /// Otherwise, check if it's Sol, to enter Torpor. + if(clan.bloodsucker_sunlight.amDay) + Check_Begin_Torpor(TRUE) + if(HAS_TRAIT(owner.current, TRAIT_NODEATH)) // Check so I don't go insane. + Check_End_Torpor() + +/datum/antagonist/bloodsucker/proc/Check_Begin_Torpor(SkipChecks = FALSE) + /// Are we entering Torpor via Sol/Death? Then entering it isnt optional! + if(SkipChecks) + Torpor_Begin() + return + var/mob/living/carbon/user = owner.current + var/total_brute = user.getBruteLoss_nonProsthetic() + var/total_burn = user.getFireLoss_nonProsthetic() + var/total_damage = total_brute + total_burn + /// Checks - Not daylight & Has more than 10 Brute/Burn & not already in Torpor + if(!clan.bloodsucker_sunlight.amDay && total_damage >= 10 && !HAS_TRAIT(owner.current, TRAIT_NODEATH)) + Torpor_Begin() + +/datum/antagonist/bloodsucker/proc/Check_End_Torpor() + var/mob/living/carbon/user = owner.current + var/total_brute = user.getBruteLoss_nonProsthetic() + var/total_burn = user.getFireLoss_nonProsthetic() + var/total_damage = total_brute + total_burn + // You are in a Coffin, so instead we'll check TOTAL damage, here. + if(istype(user.loc, /obj/structure/closet/crate/coffin)) + if(!clan.bloodsucker_sunlight.amDay && total_damage <= 10) + Torpor_End() + // You're not in a Coffin? We won't check for low Burn damage + else if(!clan.bloodsucker_sunlight.amDay && total_brute <= 10) + // You're under 10 brute, but over 200 Burn damage? Don't exit Torpor, to prevent spam revival/death. Only way out is healing that Burn. + if(total_burn >= 199) + return + Torpor_End() + +/datum/antagonist/bloodsucker/proc/Torpor_Begin() + to_chat(owner.current, span_notice("You enter the horrible slumber of deathless Torpor. You will heal until you are renewed.")) + /// Force them to go to sleep + REMOVE_TRAIT(owner.current, TRAIT_SLEEPIMMUNE, BLOODSUCKER_TRAIT) + /// Without this, you'll just keep dying while you recover. + ADD_TRAIT(owner.current, TRAIT_NODEATH, BLOODSUCKER_TRAIT) + ADD_TRAIT(owner.current, TRAIT_FAKEDEATH, BLOODSUCKER_TRAIT) + ADD_TRAIT(owner.current, TRAIT_DEATHCOMA, BLOODSUCKER_TRAIT) + ADD_TRAIT(owner.current, TRAIT_RESISTLOWPRESSURE, BLOODSUCKER_TRAIT) + //ADD_TRAIT(owner.current, TRAIT_BRUTEIMMUNE, BLOODSUCKER_TRAIT) + owner.current.Jitter(0) + /// Disable ALL Powers + DisableAllPowers() + +/datum/antagonist/bloodsucker/proc/Torpor_End() + owner.current.grab_ghost() + to_chat(owner.current, span_warning("You have recovered from Torpor.")) + //REMOVE_TRAIT(owner.current, TRAIT_BRUTEIMMUNE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(owner.current, TRAIT_RESISTLOWPRESSURE, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(owner.current, TRAIT_DEATHCOMA, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(owner.current, TRAIT_FAKEDEATH, BLOODSUCKER_TRAIT) + REMOVE_TRAIT(owner.current, TRAIT_NODEATH, BLOODSUCKER_TRAIT) + ADD_TRAIT(owner.current, TRAIT_SLEEPIMMUNE, BLOODSUCKER_TRAIT) + HealVampireOrgans() + +/// Gibs the Bloodsucker, roundremoving them. +/datum/antagonist/bloodsucker/proc/FinalDeath() + FreeAllVassals() + var/dust_timer + // If we have no body, end here. + if(!owner.current || dust_timer) + return + + DisableAllPowers() + if(!iscarbon(owner.current)) + owner.current.gib(TRUE, FALSE, FALSE) + return + // Drop anything in us and play a tune + var/mob/living/carbon/user = owner.current + owner.current.drop_all_held_items() + owner.current.unequip_everything() + user.remove_all_embedded_objects() + playsound(owner.current, 'sound/effects/tendril_destroyed.ogg', 40, TRUE) + // Elders get dusted, Fledglings get gibbed + if(bloodsucker_level >= 4) + owner.current.visible_message( + span_warning("[owner.current]'s skin crackles and dries, their skin and bones withering to dust. A hollow cry whips from what is now a sandy pile of remains."), + span_userdanger("Your soul escapes your withering body as the abyss welcomes you to your Final Death."), + span_hear("You hear a dry, crackling sound.")) + dust_timer = addtimer(CALLBACK(owner.current, /mob/living.proc/dust), 5 SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE) + return + owner.current.visible_message( + span_warning("[owner.current]'s skin bursts forth in a spray of gore and detritus. A horrible cry echoes from what is now a wet pile of decaying meat."), + span_userdanger("Your soul escapes your withering body as the abyss welcomes you to your Final Death."), + span_hear("You hear a wet, bursting sound.")) + owner.current.gib(TRUE, FALSE, FALSE) + + +// Bloodsuckers moodlets // +/datum/mood_event/drankblood + description = "I have fed greedly from that which nourishes me.\n" + mood_change = 10 + timeout = 8 MINUTES + +/datum/mood_event/drankblood_bad + description = "I drank the blood of a lesser creature. Disgusting.\n" + mood_change = -4 + timeout = 3 MINUTES + +/datum/mood_event/drankblood_dead + description = "I drank dead blood. I am better than this.\n" + mood_change = -7 + timeout = 8 MINUTES + +/datum/mood_event/drankblood_synth + description = "I drank synthetic blood. What is wrong with me?\n" + mood_change = -7 + timeout = 8 MINUTES + +/datum/mood_event/drankkilled + description = "I drank from my victim until they died. I feel... less human.\n" + mood_change = -15 + timeout = 10 MINUTES + +/datum/mood_event/madevamp + description = "A soul has been cursed to undeath by my own hand.\n" + mood_change = 15 + timeout = 20 MINUTES + +/datum/mood_event/coffinsleep + description = "I slept in a coffin during the day. I feel whole again.\n" + mood_change = 10 + timeout = 6 MINUTES + +/datum/mood_event/daylight_1 + description = "I slept poorly in a makeshift coffin during the day.\n" + mood_change = -3 + timeout = 6 MINUTES + +/datum/mood_event/daylight_2 + description = "I have been scorched by the unforgiving rays of the sun.\n" + mood_change = -6 + timeout = 6 MINUTES + +///Candelabrum's mood event to non Bloodsucker/Vassals +/datum/mood_event/vampcandle + description = "Something is making your mind feel... loose.\n" + mood_change = -15 + timeout = 5 MINUTES diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_recipes.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_recipes.dm new file mode 100644 index 00000000000..085ffa52a72 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_recipes.dm @@ -0,0 +1,159 @@ +/// From recipes.dm + +/datum/crafting_recipe/blackcoffin + name = "Black Coffin" + result = /obj/structure/closet/crate/coffin/blackcoffin + tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER) + reqs = list( + /obj/item/stack/sheet/cloth = 1, + /obj/item/stack/sheet/mineral/wood = 5, + /obj/item/stack/sheet/iron = 1, + ) + time = 15 SECONDS + category = CAT_PRIMAL + +/datum/crafting_recipe/securecoffin + name = "Secure Coffin" + result = /obj/structure/closet/crate/coffin/securecoffin + tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER) + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/stack/sheet/plasteel = 5, + /obj/item/stack/sheet/iron = 5, + ) + time = 15 SECONDS + category = CAT_PRIMAL + +/datum/crafting_recipe/meatcoffin + name = "Meat Coffin" + result = /obj/structure/closet/crate/coffin/meatcoffin + tool_behaviors = list(TOOL_WELDER, TOOL_WRENCH) + reqs = list( + /obj/item/food/meat/slab = 5, + /obj/item/restraints/handcuffs/cable = 1, + ) + time = 15 SECONDS + category = CAT_PRIMAL + always_available = FALSE //The sacred coffin! + +/datum/crafting_recipe/metalcoffin + name = "Metal Coffin" + result = /obj/structure/closet/crate/coffin/metalcoffin + reqs = list( + /obj/item/stack/sheet/iron = 6, + /obj/item/stack/rods = 2, + ) + time = 10 SECONDS + category = CAT_PRIMAL + +/datum/crafting_recipe/bloodaltar + name = "Blood Altar" + result = /obj/structure/bloodsucker/bloodaltar + tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) + reqs = list( + /obj/item/stack/rods = 5, + /obj/item/stack/sheet/iron = 2, + /obj/item/stack/sheet/plasteel = 5, + /datum/reagent/ash = 30, + ) + time = 13 SECONDS + category = CAT_PRIMAL + always_available = FALSE + +/datum/crafting_recipe/vassalrack + name = "Persuasion Rack" + result = /obj/structure/bloodsucker/vassalrack + tool_behaviors = list(TOOL_WELDER, TOOL_WRENCH) + reqs = list( + /obj/item/stack/sheet/mineral/wood = 3, + /obj/item/stack/sheet/iron = 2, + /obj/item/restraints/handcuffs/cable = 2, + ) + time = 15 SECONDS + category = CAT_PRIMAL + always_available = FALSE + +/datum/crafting_recipe/staketrap + name = "Stake Trap" + result = /obj/item/restraints/legcuffs/beartrap/bloodsucker + tool_paths = list(/obj/item/hatchet) + tool_behaviors = list(TOOL_SCREWDRIVER) + reqs = list( + /obj/item/stake = 2, + /obj/item/reagent_containers/blood = 1, + /obj/item/stack/sheet/mineral/wood = 2, + /obj/item/restraints/handcuffs/cable = 1, + ) + time = 12.5 SECONDS + category = CAT_MISC + always_available = FALSE + +/datum/crafting_recipe/candelabrum + name = "Candelabrum" + result = /obj/structure/bloodsucker/candelabrum + tool_behaviors = list(TOOL_WELDER, TOOL_WRENCH) + reqs = list( + /obj/item/stack/sheet/iron = 3, + /obj/item/stack/rods = 1, + /obj/item/candle = 1, + ) + time = 10 SECONDS + category = CAT_PRIMAL + always_available = FALSE + +/datum/crafting_recipe/bloodthrone + name = "Blood Throne" + result = /obj/structure/bloodsucker/bloodthrone + tool_behaviors = list(TOOL_WRENCH) + reqs = list( + /obj/item/stack/sheet/cloth = 3, + /obj/item/stack/sheet/iron = 5, + /obj/item/stack/sheet/mineral/wood = 1, + ) + time = 5 SECONDS + category = CAT_PRIMAL + always_available = FALSE + +/datum/crafting_recipe/stake + name = "Stake" + result = /obj/item/stake + reqs = list(/obj/item/stack/sheet/mineral/wood = 3) + time = 8 SECONDS + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/woodenducky + name = "Wooden Ducky" + result = /obj/item/stake/ducky + tool_paths = list(/obj/item/hatchet) + reqs = list( + /obj/item/stake = 1, + /obj/item/bikehorn/rubberducky = 1, + ) + time = 6 SECONDS + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + always_available = FALSE + +/datum/crafting_recipe/hardened_stake + name = "Hardened Stake" + result = /obj/item/stake/hardened + tool_behaviors = list(TOOL_WELDER) + reqs = list(/obj/item/stack/rods = 1) + time = 6 SECONDS + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + always_available = FALSE + +/datum/crafting_recipe/silver_stake + name = "Silver Stake" + result = /obj/item/stake/hardened/silver + tool_behaviors = list(TOOL_WELDER) + reqs = list( + /obj/item/stack/sheet/mineral/silver = 1, + /obj/item/stake/hardened = 1, + ) + time = 8 SECONDS + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + always_available = FALSE diff --git a/code/modules/antagonists/bloodsuckers/vassal.dm b/code/modules/antagonists/bloodsuckers/vassal.dm new file mode 100644 index 00000000000..f07f3ea7675 --- /dev/null +++ b/code/modules/antagonists/bloodsuckers/vassal.dm @@ -0,0 +1,188 @@ +#define VASSAL_SCAN_MIN_DISTANCE 5 +#define VASSAL_SCAN_MAX_DISTANCE 500 +/// 2s update time. +#define VASSAL_SCAN_PING_TIME (2 SECONDS) + +/datum/antagonist/vassal + name = "\improper Vassal" + roundend_category = "vassals" + antagpanel_category = "Bloodsucker" + job_rank = ROLE_BLOODSUCKER + show_in_roundend = FALSE + + /// The Master Bloodsucker's antag datum. + var/datum/antagonist/bloodsucker/master + var/datum/game_mode/blooodsucker + /// List of all Purchased Powers, like Bloodsuckers. + var/list/datum/action/powers = list() + /// The favorite vassal gets unique features, and Ventrue can upgrade theirs + var/favorite_vassal = FALSE + /// Bloodsucker levels, but for Vassals. + var/vassal_level + +/datum/antagonist/vassal/antag_panel_data() + return "Master : [master.owner.name]" + +/datum/antagonist/vassal/apply_innate_effects(mob/living/mob_override) + . = ..() + +/datum/antagonist/vassal/on_gain() + /// Enslave them to their Master + if(master) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = master.owner.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum) + bloodsuckerdatum.vassals |= src + owner.enslave_mind_to_creator(master.owner.current) + owner.current.log_message("has been vassalized by [master.owner.current]!", LOG_ATTACK, color="#960000") + /// Give Vassal Pinpointer + owner.current.apply_status_effect(/datum/status_effect/agent_pinpointer/vassal_edition) + /// Give Recuperate Power + BuyPower(new /datum/action/bloodsucker/recuperate) + /// Give Objectives + var/datum/objective/bloodsucker/vassal/vassal_objective = new + vassal_objective.owner = owner + objectives += vassal_objective + /// Give Vampire Language & Hud + owner.current.grant_all_languages(FALSE, FALSE, TRUE) + owner.current.grant_language(/datum/language/vampiric) + update_vassal_icons_added(owner.current) + . = ..() + +/datum/antagonist/vassal/on_removal() + /// Free them from their Master + if(master && master.owner) + master.vassals -= src + owner.enslaved_to = null + /// Remove Pinpointer + owner.current.remove_status_effect(/datum/status_effect/agent_pinpointer/vassal_edition) + /// Remove ALL Traits, as long as its from BLOODSUCKER_TRAIT's source. + for(var/all_status_traits in owner.current.status_traits) + REMOVE_TRAIT(owner.current, all_status_traits, BLOODSUCKER_TRAIT) + /// Remove Recuperate Power + while(powers.len) + var/datum/action/bloodsucker/power = pick(powers) + powers -= power + power.Remove(owner.current) + /// Remove Language & Hud + owner.current.remove_language(/datum/language/vampiric) + update_vassal_icons_removed(owner.current) + return ..() + +/datum/antagonist/vassal/proc/add_objective(datum/objective/added_objective) + objectives += added_objective + +/datum/antagonist/vassal/proc/remove_objectives(datum/objective/removed_objective) + objectives -= removed_objective + +/datum/antagonist/vassal/greet() + . = ..() + to_chat(owner, span_userdanger("You are now the mortal servant of [master.owner.current], a Bloodsucker!")) + to_chat(owner, span_boldannounce("The power of [master.owner.current.p_their()] immortal blood compels you to obey [master.owner.current.p_them()] in all things, even offering your own life to prolong theirs.\n\ + You are not required to obey any other Bloodsucker, for only [master.owner.current] is your master. The laws of Nanotrasen do not apply to you now; only your vampiric master's word must be obeyed.")) + owner.current.playsound_local(null, 'sound/magic/mutate.ogg', 100, FALSE, pressure_affected = FALSE) + antag_memory += "You have been vassalized, becoming the mortal servant of [master.owner.current], a bloodsucking vampire!
" + /// Message told to your Master. + to_chat(master.owner, span_userdanger("[owner.current] has become addicted to your immortal blood. [owner.current.p_they(TRUE)] [owner.current.p_are()] now your undying servant!")) + master.owner.current.playsound_local(null, 'sound/magic/mutate.ogg', 100, FALSE, pressure_affected = FALSE) + +/datum/antagonist/vassal/farewell() + owner.current.visible_message( + span_deconversion_message("[owner.current]'s eyes dart feverishly from side to side, and then stop. [owner.current.p_they(TRUE)] seem[owner.current.p_s()] calm, \ + like [owner.current.p_they()] [owner.current.p_have()] regained some lost part of [owner.current.p_them()]self."), + ) + to_chat(owner, span_deconversion_message("With a snap, you are no longer enslaved to [master.owner]! You breathe in heavily, having regained your free will.")) + owner.current.playsound_local(null, 'sound/magic/mutate.ogg', 100, FALSE, pressure_affected = FALSE) + /// Message told to your (former) Master. + if(master && master.owner) + to_chat(master.owner, span_cultbold("You feel the bond with your vassal [owner.current] has somehow been broken!")) + +/// Called when we are made into the Favorite Vassal +/datum/antagonist/vassal/proc/make_favorite(mob/living/master) + // Default stuff for all + favorite_vassal = TRUE + set_antag_hud(owner.current, "vassal6") + to_chat(master, span_danger("You have turned [owner.current] into your Favorite Vassal! They will no longer be deconverted upon Mindshielding!")) + to_chat(owner, span_notice("As Blood drips over your body, you feel closer to your Master... You are now the Favorite Vassal!")) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = master.mind.has_antag_datum(/datum/antagonist/bloodsucker) + if(bloodsuckerdatum.my_clan == CLAN_GANGREL) + var/obj/effect/proc_holder/spell/targeted/shapeshift/bat/batform = new + owner.current.AddSpell(batform) +/// If we weren't created by a bloodsucker, then we cannot be a vassal (assigned from antag panel) +/datum/antagonist/vassal/can_be_owned(datum/mind/new_owner) + if(!master) + return FALSE + return ..() + +/// Used for Admin removing Vassals. +/datum/mind/proc/remove_vassal() + var/datum/antagonist/vassal/selected_vassal = has_antag_datum(/datum/antagonist/vassal) + if(selected_vassal) + remove_antag_datum(/datum/antagonist/vassal) + +/// When a Bloodsucker gets FinalDeath, all Vassals are freed - This is a Bloodsucker proc, not a Vassal one. +/datum/antagonist/bloodsucker/proc/FreeAllVassals() + for(var/datum/antagonist/vassal/all_vassals in vassals) + // Skip over any Bloodsucker Vassals, they're too far gone to have all their stuff taken away from them + if(all_vassals.owner.has_antag_datum(/datum/antagonist/bloodsucker)) + continue + remove_vassal(all_vassals.owner) + +/// Called by FreeAllVassals() +/datum/antagonist/bloodsucker/proc/remove_vassal(datum/mind/vassal) + vassal.remove_antag_datum(/datum/antagonist/vassal) + +/// Used when your Master teaches you a new Power. +/datum/antagonist/vassal/proc/BuyPower(datum/action/bloodsucker/power) + powers += power + power.Grant(owner.current) + +/datum/antagonist/vassal/proc/LevelUpPowers() + for(var/datum/action/bloodsucker/power in powers) + power.level_current++ + +/** + * # Vassal Pinpointer + * + * Pinpointer that points to their Master's location at all times. + * Unlike the Monster hunter one, this one is permanently active, and has no power needed to activate it. + */ + +/atom/movable/screen/alert/status_effect/agent_pinpointer/vassal_edition + name = "Blood Bond" + desc = "You always know where your master is." + +/datum/status_effect/agent_pinpointer/vassal_edition + id = "agent_pinpointer" + alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer/vassal_edition + minimum_range = VASSAL_SCAN_MIN_DISTANCE + tick_interval = VASSAL_SCAN_PING_TIME + duration = -1 + range_fuzz_factor = 0 + +/datum/status_effect/agent_pinpointer/vassal_edition/on_creation(mob/living/new_owner, ...) + ..() + var/datum/antagonist/vassal/antag_datum = new_owner.mind.has_antag_datum(/datum/antagonist/vassal) + scan_target = antag_datum?.master?.owner?.current + +/datum/status_effect/agent_pinpointer/vassal_edition/scan_for_target() + return + +/datum/status_effect/agent_pinpointer/vassal_edition/Destroy() + if(scan_target) + to_chat(owner, span_notice("You've lost your master's trail.")) + return ..() + +/** + * # HUD + */ +/datum/antagonist/vassal/proc/update_vassal_icons_added(mob/living/vassal, icontype = "vassal") + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_BLOODSUCKER] + hud.join_hud(vassal) + /// Located in icons/mob/hud.dmi + set_antag_hud(vassal, icontype) + /// FULP ADDITION! Check prepare_huds in mob.dm to see why. + +/datum/antagonist/vassal/proc/update_vassal_icons_removed(mob/living/vassal) + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_BLOODSUCKER] + hud.leave_hud(vassal) + set_antag_hud(vassal, null) From 1b6a86c7caf8c36bc4892087237587b4a3923e0a Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Thu, 11 Aug 2022 13:56:00 +0300 Subject: [PATCH 03/23] --- .../monsterhunter/monsterhunter.dm | 156 ++++++++++++++++++ .../antagonists/monsterhunter/monstertrack.dm | 72 ++++++++ code/modules/events/monsterhunter.dm | 96 +++++++++++ code/modules/jobs/job_types/clown.dm | 3 + code/modules/language/vampiric.dm | 20 +++ .../mining/lavaland/necropolis_chests.dm | 3 + code/modules/mob/living/blood.dm | 3 + .../mob/living/carbon/human/examine.dm | 13 ++ .../carbon/human/species_types/podpeople.dm | 3 + code/modules/mob/mob_helpers.dm | 20 +++ code/modules/movespeed/modifiers/mobs.dm | 5 + .../reagents/reagent_containers/blood_pack.dm | 34 ++++ code/modules/surgery/organs/heart.dm | 28 ++++ 13 files changed, 456 insertions(+) create mode 100644 code/modules/antagonists/monsterhunter/monsterhunter.dm create mode 100644 code/modules/antagonists/monsterhunter/monstertrack.dm create mode 100644 code/modules/events/monsterhunter.dm create mode 100644 code/modules/language/vampiric.dm diff --git a/code/modules/antagonists/monsterhunter/monsterhunter.dm b/code/modules/antagonists/monsterhunter/monsterhunter.dm new file mode 100644 index 00000000000..090586a166f --- /dev/null +++ b/code/modules/antagonists/monsterhunter/monsterhunter.dm @@ -0,0 +1,156 @@ +#define HUNTER_SCAN_MIN_DISTANCE 8 +#define HUNTER_SCAN_MAX_DISTANCE 15 +/// 5s update time +#define HUNTER_SCAN_PING_TIME 20 +/// Used for the pinpointer +#define STATUS_EFFECT_HUNTERPINPOINTER /datum/status_effect/agent_pinpointer/hunter_edition + +/datum/antagonist/monsterhunter + name = "\improper Monster Hunter" + roundend_category = "Monster Hunters" + antagpanel_category = "Monster Hunter" + job_rank = ROLE_MONSTERHUNTER + var/list/datum/action/powers = list() + var/datum/martial_art/hunterfu/my_kungfu = new + var/give_objectives = TRUE + var/datum/action/bloodsucker/trackvamp = new/datum/action/bloodsucker/trackvamp() + var/datum/action/bloodsucker/fortitude = new/datum/action/bloodsucker/fortitude/hunter() + +/datum/antagonist/monsterhunter/on_gain() + /// Buffs Monster Hunters + owner.unconvertable = TRUE + ADD_TRAIT(owner.current, TRAIT_NOSOFTCRIT, BLOODSUCKER_TRAIT) + ADD_TRAIT(owner.current, TRAIT_NOCRITDAMAGE, BLOODSUCKER_TRAIT) + /// Give Monster Hunter powers + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_MHUNTER] + trackvamp.Grant(owner.current) + fortitude.Grant(owner.current) + hud.join_hud(owner.current) + set_antag_hud(owner.current, "monsterhunter") + if(give_objectives) + /// Give Hunter Objective + var/datum/objective/bloodsucker/monsterhunter/monsterhunter_objective = new + monsterhunter_objective.owner = owner + objectives += monsterhunter_objective + /// Give Theft Objective + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + objectives += steal_objective + + /// Give Martial Arts + my_kungfu.teach(owner.current, 0) + /// Teach Stake crafting + owner.teach_crafting_recipe(/datum/crafting_recipe/hardened_stake) + owner.teach_crafting_recipe(/datum/crafting_recipe/silver_stake) + . = ..() + +/datum/antagonist/monsterhunter/on_removal() + /// Remove buffs + owner.unconvertable = FALSE + /// Remove ALL Traits, as long as its from BLOODSUCKER_TRAIT's source. + for(var/all_status_traits in owner.current.status_traits) + REMOVE_TRAIT(owner.current, all_status_traits, BLOODSUCKER_TRAIT) + /// Remove Monster Hunter powers + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_MHUNTER] + trackvamp.Remove(owner.current) + fortitude.Remove(owner.current) + hud.leave_hud(owner.current) + set_antag_hud(owner.current, null) + /// Remove Martial Arts + if(my_kungfu) + my_kungfu.remove(owner.current) + to_chat(owner.current, span_userdanger("Your hunt has ended: You enter retirement once again, and are no longer a Monster Hunter.")) + return ..() + +/// Mind version +/datum/mind/proc/make_monsterhunter() + var/datum/antagonist/monsterhunter/monsterhunterdatum = has_antag_datum(/datum/antagonist/monsterhunter) + if(!monsterhunterdatum) + monsterhunterdatum = add_antag_datum(/datum/antagonist/monsterhunter) + special_role = ROLE_MONSTERHUNTER + return monsterhunterdatum + +/datum/mind/proc/remove_monsterhunter() + var/datum/antagonist/monsterhunter/monsterhunterdatum = has_antag_datum(/datum/antagonist/monsterhunter) + if(monsterhunterdatum) + remove_antag_datum(/datum/antagonist/monsterhunter) + special_role = null + +/// Called when using admin tools to give antag status +/datum/antagonist/monsterhunter/admin_add(datum/mind/new_owner, mob/admin) + message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner)] into [name].") + log_admin("[key_name(admin)] made [key_name(new_owner)] into [name].") + new_owner.add_antag_datum(src) + +/// Called when removing antagonist using admin tools +/datum/antagonist/monsterhunter/admin_remove(mob/user) + if(!user) + return + message_admins("[key_name_admin(user)] has removed [name] antagonist status from [key_name_admin(owner)].") + log_admin("[key_name(user)] has removed [name] antagonist status from [key_name(owner)].") + on_removal() + +/datum/antagonist/monsterhunter/proc/add_objective(datum/objective/added_objective) + objectives += added_objective + +/datum/antagonist/monsterhunter/proc/remove_objectives(datum/objective/removed_objective) + objectives -= removed_objective + +/datum/antagonist/monsterhunter/greet() + . = ..() + to_chat(owner.current, span_userdanger("After witnessing recent events on the station, we return to your old profession, we are a Monster Hunter!")) + to_chat(owner.current, span_announce("While we can kill anyone in our way to destroy the monsters lurking around, causing property damage is unacceptable.")) + to_chat(owner.current, span_announce("However, security WILL detain us if they discover our mission.")) + to_chat(owner.current, span_announce("In exchange for our services, it shouldn't matter if a few items are gone missing for our... personal collection.")) + owner.current.playsound_local(null, 'sound/effects/his_grace_ascend.ogg', 100, FALSE, pressure_affected = FALSE) + owner.announce_objectives() + +////////////////////////////////////////////////////////////////////////// +// Monster Hunter Pinpointer +////////////////////////////////////////////////////////////////////////// + +/// TAKEN FROM: /datum/action/changeling/pheromone_receptors // pheromone_receptors.dm for a version of tracking that Changelings have! +/datum/status_effect/agent_pinpointer/hunter_edition + alert_type = /atom/movable/screen/alert/status_effect/agent_pinpointer/hunter_edition + minimum_range = HUNTER_SCAN_MIN_DISTANCE + tick_interval = HUNTER_SCAN_PING_TIME + duration = 10 SECONDS + range_fuzz_factor = 5 //PINPOINTER_EXTRA_RANDOM_RANGE + +/atom/movable/screen/alert/status_effect/agent_pinpointer/hunter_edition + name = "Monster Tracking" + desc = "You always know where the hellspawn are." + +/datum/status_effect/agent_pinpointer/hunter_edition/scan_for_target() + var/turf/my_loc = get_turf(owner) + + var/list/mob/living/carbon/monsters = list() + for(var/mob/living/carbon/all_carbons in GLOB.alive_mob_list) + if(all_carbons != owner && all_carbons.mind) + var/datum/mind/carbon_minds = all_carbons.mind + if(IS_HERETIC(all_carbons) || IS_BLOODSUCKER(all_carbons) || IS_CULTIST(all_carbons) || IS_WIZARD(all_carbons)) + monsters += carbon_minds + if(carbon_minds.has_antag_datum(/datum/antagonist/changeling)) + monsters += carbon_minds + if(carbon_minds.has_antag_datum(/datum/antagonist/ashwalker)) + monsters += carbon_minds + if(carbon_minds.has_antag_datum(/datum/antagonist/wizard/apprentice)) + monsters += carbon_minds + if(istype(monsters)) + var/their_loc = get_turf(all_carbons) + var/distance = get_dist_euclidian(my_loc, their_loc) + if(distance < HUNTER_SCAN_MAX_DISTANCE) + monsters[all_carbons] = (HUNTER_SCAN_MAX_DISTANCE ** 2) - (distance ** 2) + + if(monsters.len) + /// Point at a 'random' monster, biasing heavily towards closer ones. + scan_target = pickweight(monsters) + to_chat(owner, span_warning("You detect signs of monsters to the [dir2text(get_dir(my_loc,get_turf(scan_target)))]!")) + else + scan_target = null + +/datum/status_effect/agent_pinpointer/hunter_edition/Destroy() + if(scan_target) + to_chat(owner, span_notice("You've lost the trail.")) + . = ..() diff --git a/code/modules/antagonists/monsterhunter/monstertrack.dm b/code/modules/antagonists/monsterhunter/monstertrack.dm new file mode 100644 index 00000000000..ab611480ef0 --- /dev/null +++ b/code/modules/antagonists/monsterhunter/monstertrack.dm @@ -0,0 +1,72 @@ +/// From 'Cellular Emporium'... somehow? +/datum/action/bloodsucker/trackvamp + name = "Track Monster" + desc = "Take a moment to look for clues of any nearby monsters.
These creatures are slippery, and often look like the crew." + button_icon = 'icons/mob/actions/actions_bloodsucker.dmi' + icon_icon = 'icons/mob/actions/actions_bloodsucker.dmi' + background_icon_state = "vamp_power_off" + button_icon_state = "power_hunter" + power_flags = NONE + check_flags = BP_CANT_USE_WHILE_INCAPACITATED|BP_CANT_USE_WHILE_UNCONSCIOUS + purchase_flags = NONE + cooldown = 30 SECONDS + bloodcost = 0 + /// Removed, set to TRUE to re-add, either here to be a default function, or in-game through VV for neat Admin stuff -Willard + var/give_pinpointer = FALSE + +/datum/action/bloodsucker/trackvamp/ActivatePower() + . = ..() + /// Return text indicating direction + to_chat(owner, span_notice("You look around, scanning your environment and discerning signs of any filthy, wretched affronts to the natural order.")) + if(!do_after(owner, 6 SECONDS, src)) + return + if(give_pinpointer) + var/mob/living/user = owner + user.apply_status_effect(STATUS_EFFECT_HUNTERPINPOINTER) + display_proximity() + +/datum/action/bloodsucker/trackvamp/proc/display_proximity() + /// Pick target + var/turf/my_loc = get_turf(owner) + var/best_dist = 9999 + var/mob/living/best_vamp + + /// Track ALL living Monsters. + var/list/datum/mind/monsters = list() + for(var/mob/living/carbon/all_carbons in GLOB.alive_mob_list) + if(!all_carbons.mind) + continue + var/datum/mind/carbon_minds = all_carbons.mind + if(IS_HERETIC(all_carbons) || IS_BLOODSUCKER(all_carbons) || IS_CULTIST(all_carbons) || IS_WIZARD(all_carbons)) + monsters += carbon_minds + if(carbon_minds.has_antag_datum(/datum/antagonist/changeling)) + monsters += carbon_minds + if(carbon_minds.has_antag_datum(/datum/antagonist/ashwalker)) + monsters += carbon_minds + if(carbon_minds.has_antag_datum(/datum/antagonist/wizard/apprentice)) + monsters += carbon_minds + + for(var/datum/mind/monster_minds in monsters) + if(!monster_minds.current || monster_minds.current == owner) // || !get_turf(M.current) || !get_turf(owner)) + continue + for(var/antag_datums in monster_minds.antag_datums) + var/datum/antagonist/antag_datum = antag_datums + if(!istype(antag_datum)) + continue + var/their_loc = get_turf(monster_minds.current) + var/distance = get_dist_euclidian(my_loc, their_loc) + /// Found One: Closer than previous/max distance + if(distance < best_dist && distance <= HUNTER_SCAN_MAX_DISTANCE) + best_dist = distance + best_vamp = monster_minds.current + /// Stop searching through my antag datums and go to the next guy + break + + /// Found one! + if(best_vamp) + var/distString = best_dist <= HUNTER_SCAN_MAX_DISTANCE / 2 ? "somewhere closeby!" : "somewhere in the distance." + to_chat(owner, span_warning("You detect signs of monsters [distString]")) + + /// Will yield a "?" + else + to_chat(owner, span_notice("There are no monsters nearby.")) diff --git a/code/modules/events/monsterhunter.dm b/code/modules/events/monsterhunter.dm new file mode 100644 index 00000000000..a5bc775dcac --- /dev/null +++ b/code/modules/events/monsterhunter.dm @@ -0,0 +1,96 @@ +/* + * MONSTER HUNTERS: + * Their job is to hunt Monsters. + * They spawn by default 35 minutes into a Bloodsucker round, + * They also randomly spawn in other rounds, as some unique flavor. + * They can also be used as Admin-only antags during rounds such as; + * - Changeling murderboning rounds + * - Lategame Cult round + * - Ect. + */ + +/datum/round_event_control/bloodsucker_hunters + name = "Spawn Monster Hunter - Bloodsucker" + typepath = /datum/round_event/bloodsucker_hunters + max_occurrences = 1 // We have to see how Bloodsuckers are in game to decide if having more than 1 is beneficial. + weight = 4 + min_players = 10 + earliest_start = 35 MINUTES + alert_observers = FALSE + +/datum/round_event/bloodsucker_hunters + fakeable = FALSE + var/cancel_me = TRUE + +/datum/round_event/bloodsucker_hunters/start() + for(var/mob/living/carbon/human/all_players in GLOB.player_list) + if(IS_BLOODSUCKER(all_players)) + message_admins("BLOODSUCKER NOTICE: Monster Hunters found a valid Bloodsucker.") + cancel_me = FALSE + break + if(cancel_me) + kill() + return + for(var/mob/living/carbon/human/all_players in shuffle(GLOB.player_list)) + if(!all_players.client || !all_players.mind || !(ROLE_MONSTERHUNTER in all_players.client.prefs.be_special)) + continue + if(all_players.stat == DEAD) + continue + if(!SSjob.GetJob(all_players.mind.assigned_role) || (all_players.mind.assigned_role in GLOB.nonhuman_positions)) // Only crewmembers on-station. + continue + if(!SSjob.GetJob(all_players.mind.assigned_role) || (all_players.mind.assigned_role in GLOB.command_positions)) + continue + if(!SSjob.GetJob(all_players.mind.assigned_role) || (all_players.mind.assigned_role in GLOB.security_positions)) + continue + if(IS_BLOODSUCKER(all_players) || IS_VASSAL(all_players) || IS_HERETIC(all_players) || IS_CULTIST(all_players) || IS_WIZARD(all_players) || all_players.mind.has_antag_datum(/datum/antagonist/changeling)) + continue + if(!all_players.getorgan(/obj/item/organ/brain)) + continue + all_players.mind.add_antag_datum(/datum/antagonist/monsterhunter) + message_admins("BLOODSUCKER NOTICE: [all_players] has awoken as a Monster Hunter.") + announce_to_ghosts(all_players) + break + +/datum/round_event_control/monster_hunters + name = "Spawn Monster Hunter" + typepath = /datum/round_event/monster_hunters + max_occurrences = 1 + weight = 4 + min_players = 10 + earliest_start = 25 MINUTES + alert_observers = TRUE + +/datum/round_event/monster_hunters + fakeable = FALSE + var/cancel_me = TRUE + +/datum/round_event/monster_hunters/start() + for(var/mob/living/carbon/human/all_players in GLOB.player_list) + if( IS_CULTIST(all_players) || IS_HERETIC(all_players) || IS_WIZARD(all_players) || all_players.mind.has_antag_datum(/datum/antagonist/changeling)) + message_admins("MONSTERHUNTER NOTICE: Monster Hunters found a valid Monster.") + cancel_me = FALSE + break + if(cancel_me) + kill() + return + for(var/mob/living/carbon/human/all_players in shuffle(GLOB.player_list)) + /// From obsessed + if(!all_players.client || !all_players.mind || !(ROLE_MONSTERHUNTER in all_players.client.prefs.be_special)) + continue + if(all_players.stat == DEAD) + continue + if(!SSjob.GetJob(all_players.mind.assigned_role) || (all_players.mind.assigned_role in GLOB.nonhuman_positions)) // Only crewmembers on-station. + continue + if(!SSjob.GetJob(all_players.mind.assigned_role) || (all_players.mind.assigned_role in GLOB.command_positions)) + continue + if(!SSjob.GetJob(all_players.mind.assigned_role) || (all_players.mind.assigned_role in GLOB.security_positions)) + continue + /// Bobux no IS_CHANGELING + if(IS_HERETIC(all_players) || IS_CULTIST(all_players) || IS_WIZARD(all_players) || all_players.mind.has_antag_datum(/datum/antagonist/changeling)) + continue + if(!all_players.getorgan(/obj/item/organ/brain)) + continue + all_players.mind.add_antag_datum(/datum/antagonist/monsterhunter) + message_admins("MONSTERHUNTER NOTICE: [all_players] has awoken as a Monster Hunter.") + announce_to_ghosts(all_players) + break diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 7f5a2814053..68144e23c42 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -75,6 +75,9 @@ ..() if(visualsOnly) return + + if(H.mind) + H.mind.teach_crafting_recipe(/datum/crafting_recipe/woodenducky) H.fully_replace_character_name(H.real_name, pick(GLOB.clown_names)) //rename the mob AFTER they're equipped so their ID gets updated properly. ADD_TRAIT(H, TRAIT_NAIVE, JOB_TRAIT) diff --git a/code/modules/language/vampiric.dm b/code/modules/language/vampiric.dm new file mode 100644 index 00000000000..36b8ba33ccf --- /dev/null +++ b/code/modules/language/vampiric.dm @@ -0,0 +1,20 @@ +/datum/language/vampiric + name = "Blah-Sucker" + desc = "The native language of the Bloodsucker elders, learned intuitively by Fledglings as they pass from death into immortality." + key = "l" + space_chance = 40 + default_priority = 90 + + flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + syllables = list( + "luk","cha","no","kra","pru","chi","busi","tam","pol","spu","och", + "umf","ora","stu","si","ri","li","ka","red","ani","lup","ala","pro", + "to","siz","nu","pra","ga","ump","ort","a","ya","yach","tu","lit", + "wa","mabo","mati","anta","tat","tana","prol", + "tsa","si","tra","te","ele","fa","inz", + "nza","est","sti","ra","pral","tsu","ago","esch","chi","kys","praz", + "froz","etz","tzil", + "t'","k'","t'","k'","th'","tz'" + ) + + icon_state = "bloodsucker" diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index e44c8dec0f2..6266fb998af 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -232,6 +232,9 @@ return ..() /obj/item/clothing/neck/necklace/memento_mori/proc/memento(mob/living/carbon/human/user) + if(IS_BLOODSUCKER(user)) + to_chat(user, span_warning("The Memento notices your undead soul, and refuses to react..")) + return to_chat(user, span_warning("You feel your life being drained by the pendant...")) if(do_after(user, 40, target = user)) to_chat(user, span_notice("Your lifeforce is now linked to the pendant! You feel like removing it would kill you, and yet you instinctively know that until then, you won't die.")) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 33acf48fef2..d1bf42b141a 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -7,6 +7,9 @@ // Takes care blood loss and regeneration /mob/living/carbon/human/handle_blood(delta_time, times_fired) + if(HAS_TRAIT(src, TRAIT_NOPULSE)) + return + if(NOBLOOD in dna.species.species_traits || HAS_TRAIT(src, TRAIT_NOBLEED) || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) return diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 5a325b60960..58f882bd821 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -16,6 +16,13 @@ . = list("*---------*\nThis is [!obscure_name ? name : "Unknown"]!") + var/vampDesc = ReturnVampExamine(user) // Bloodsuckers edit STARTS + var/vassDesc = ReturnVassalExamine(user) + if(vampDesc != "") + . += vampDesc + if(vassDesc != "") + . += vassDesc // Bloodsucker edit ENDS + var/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) @@ -243,6 +250,12 @@ var/apparent_blood_volume = blood_volume if(skin_tone == "albino") apparent_blood_volume -= 150 // enough to knock you down one tier + + //Bloodsuckers edit + var/bloodDesc = ShowAsPaleExamine(user, apparent_blood_volume) + if(bloodDesc != BLOODSUCKER_HIDE_BLOOD) + msg += bloodDesc + switch(apparent_blood_volume) if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) msg += "[t_He] [t_has] pale skin.\n" diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 6785d1bfb7b..155689d18b1 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -28,6 +28,9 @@ if(H.stat == DEAD) return + if(IS_BLOODSUCKER(H) && HAS_TRAIT(H, TRAIT_NODEATH)) + return + var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing if(isturf(H.loc)) //else, there's considered to be no light var/turf/T = H.loc diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index afb144e0703..7808e1b623a 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -513,3 +513,23 @@ ///Can this mob hold items /mob/proc/can_hold_items(obj/item/I) return length(held_items) + +/mob/living/proc/getBruteLoss_nonProsthetic() + return getBruteLoss() + +/mob/living/proc/getFireLoss_nonProsthetic() + return getFireLoss() + +/mob/living/carbon/getBruteLoss_nonProsthetic() + var/amount = 0 + for(var/obj/item/bodypart/chosen_bodypart in bodyparts) + if(chosen_bodypart.status < BODYPART_ROBOTIC) + amount += chosen_bodypart.brute_dam + return amount + +/mob/living/carbon/getFireLoss_nonProsthetic() + var/amount = 0 + for(var/obj/item/bodypart/chosen_bodypart in bodyparts) + if(chosen_bodypart.status < BODYPART_ROBOTIC) + amount += chosen_bodypart.burn_dam + return amount diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index 4afd7946752..a4643267d19 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -126,3 +126,8 @@ /datum/movespeed_modifier/morph_disguised multiplicative_slowdown = 1 + +/datum/movespeed_modifier/morbin + multiplicative_slowdown = -0.4 + blacklisted_movetypes = FLYING|FLOATING + priority = 100 diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index f698ee6e9cf..f62737af8cd 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -9,6 +9,40 @@ var/labelled = FALSE fill_icon_thresholds = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) +/obj/item/reagent_containers/blood/attack(mob/user, mob/user, def_zone) + if(reagents.total_volume > 0) + if(user != user) + user.visible_message( + span_notice("[user] forces [user] to drink from the [src]."), + span_notice("You put the [src] up to [user]'s mouth."), + ) + if(!do_mob(user, user, 5 SECONDS)) + return + else + if(!do_mob(user, user, 1 SECONDS)) + return + user.visible_message( + span_notice("[user] puts the [src] up to their mouth."), + span_notice("You take a sip from the [src]."), + ) + // Safety: In case you spam clicked the blood bag on yourself, and it is now empty (below will divide by zero) + if(reagents.total_volume <= 0) + return + if(IS_BLOODSUCKER(user)) + var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) + bloodsuckerdatum.AddBloodVolume(5) + var/mob/living/carbon/H = user + SEND_SIGNAL(src, COMSIG_GLASS_DRANK, user, user) + addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, user, 500, TRUE, TRUE, FALSE, user, FALSE, INGEST), 5) + if(H.blood_volume >= bloodsuckerdatum.max_blood_volume) + to_chat(user, span_notice("You are full, and can't consume more blood")) + return + else + SEND_SIGNAL(src, COMSIG_GLASS_DRANK, user, user) + addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, user, 5, TRUE, TRUE, FALSE, user, FALSE, INGEST), 5) + playsound(user.loc, 'sound/items/drink.ogg', rand(10,50), 1) + return ..() + /obj/item/reagent_containers/blood/Initialize() . = ..() if(blood_type != null) diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index fbbdac069b1..1aad22f3d6b 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -178,6 +178,34 @@ priority = 100 //it's an indicator you're dying, so it's very high priority colour = "red" +/obj/item/organ/heart/vampheart + beating = 0 + ///If a heartbeat is being faked. + var/fakingit = FALSE + +/obj/item/organ/heart/vampheart/Restart() + beating = FALSE + return FALSE + +/obj/item/organ/heart/vampheart/Stop() + fakingit = FALSE + return ..() + +/obj/item/organ/heart/vampheart/proc/FakeStart() + fakingit = TRUE // We're pretending to beat, to fool people. + +/// Bloodsuckers don't have a heartbeat at all when stopped (default is "an unstable") +/obj/item/organ/heart/vampheart/HeartStrengthMessage() + if(fakingit) + return "a healthy" + return span_danger("no") + +/// Proc for the default (Non-Bloodsucker) Heart! +/obj/item/organ/heart/proc/HeartStrengthMessage() + if(beating) + return "a healthy" + return span_danger("an unstable") + /obj/item/organ/heart/cybernetic name = "basic cybernetic heart" desc = "A basic electronic device designed to mimic the functions of an organic human heart." From a09ebfff2af84a460944087fccc8b7a1c0c1e445 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:16:40 +0300 Subject: [PATCH 04/23] sounds --- sound/ambience/antag/bloodsuckeralert.ogg | Bin 0 -> 218645 bytes sound/effects/coffin_close.ogg | Bin 0 -> 59363 bytes sound/effects/coffin_open.ogg | Bin 0 -> 71218 bytes sound/effects/griffin_1.ogg | Bin 0 -> 4117 bytes sound/effects/griffin_10.ogg | Bin 0 -> 7282 bytes sound/effects/griffin_2.ogg | Bin 0 -> 4352 bytes sound/effects/griffin_3.ogg | Bin 0 -> 4912 bytes sound/effects/griffin_4.ogg | Bin 0 -> 5274 bytes sound/effects/griffin_5.ogg | Bin 0 -> 5512 bytes sound/effects/griffin_6.ogg | Bin 0 -> 5895 bytes sound/effects/griffin_7.ogg | Bin 0 -> 6307 bytes sound/effects/griffin_8.ogg | Bin 0 -> 6620 bytes sound/effects/griffin_9.ogg | Bin 0 -> 6913 bytes 13 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sound/ambience/antag/bloodsuckeralert.ogg create mode 100644 sound/effects/coffin_close.ogg create mode 100644 sound/effects/coffin_open.ogg create mode 100644 sound/effects/griffin_1.ogg create mode 100644 sound/effects/griffin_10.ogg create mode 100644 sound/effects/griffin_2.ogg create mode 100644 sound/effects/griffin_3.ogg create mode 100644 sound/effects/griffin_4.ogg create mode 100644 sound/effects/griffin_5.ogg create mode 100644 sound/effects/griffin_6.ogg create mode 100644 sound/effects/griffin_7.ogg create mode 100644 sound/effects/griffin_8.ogg create mode 100644 sound/effects/griffin_9.ogg diff --git a/sound/ambience/antag/bloodsuckeralert.ogg b/sound/ambience/antag/bloodsuckeralert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..686f15bb711eae7f062f530453bf9ff42abfc0cc GIT binary patch literal 218645 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�l8GPyI#u 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
  • W_eO@b4Zr#4y}T=C86YD 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 as`5~*RL6Gms#0UyaI+b&xRW&98T$wA*=|Pw literal 0 HcmV?d00001 diff --git a/sound/effects/griffin_1.ogg b/sound/effects/griffin_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..32e1333588d568ca219568ecb5cffd6a2f634469 GIT binary patch literal 4117 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 w!j0W>hK;{W_P8udf~80e?5c zEq@3V@1sUAIatW)U{8NCcL{c+Q~so20-11%g62ZQ`2HM~H$LnD zp~HZrmp$4f9ou7mRf?RfWs>fhWPUZDzSY?D4q4o;2*b$;EO}6aq9dj4j-&a~u?bjz zDX&B>g|sl+K@rnax#NX&HGABj7I@95R))Tjfwe?GNyf$+3rg9=p`RvW&5Z?iP(<`5 zW$Y5nRgLavkc(?lQ@ySgQIgE3l)NpCP0`Uw<^uV4*2boLQ~R-KSuz$IU^ERq(zq5y z-x%4Ih~vu1HbhES3WMVSAY-#7V|nN?B|JbI0C<*a!h6*OMNE>H+17Oy$oNPA*d%eY z8{+Nvlq`BQEP9XF;==m&;c!b-Jcrv+I^OH%H8d?q&zD9uBfKRAH#+kH6l5Y3)n+8` zKgRWVnTt0ym#6QX=DeriuADWvUvlV+#XCMPqiS3S@EDS}_GtXG|m^K1TJVQNX@_Xl-jX6BDrODMW3bm^35q>Vv447>H$k zU`Z5^N!DECoTW*ZQ^pbybx^9{0@;|m_Md!z%me9bB)Ko4{aK!GlfHC2fId$^(yBkB1JU62tetX7nl6RX{! zQT1HAlRL~-RK3*ur1=DS7*Sd+W?@y+=j2uTU@9X}q{qd-w5H!2oey~#y>34myfRO!Fy)wfzaVk>UdYk$;{a&)-*=wPxHhhjBI!8zC9ook7M{Y3Xv z;^=bNzjUhXx{9U%Oq(X;na1XsCXDMQDZ#Q8iUE+~#;9s+u5QA(X_AszYMxo=Rmii>V#sCTHdV%ZH1j<==RGDz(L9IXlEVxrQ@vd|TVM7+^8iR;5U*+wD`9~WoqXj zf=7(Ukx_Dx(Kdl2kmjwZHYE8O=2+29G0apUC0Tk(CO-k|i+-Bs`9d{i09z7IPQV^3 z%}w^y*cp8W`f1Q1@!`N00J@ebI#1j)4pWeEI1W9PMvl>%lp!Zzrm`ql zwW$n>wfPfCXj+g##_Fl0kgd&CvZ43@0?=871l4eATf{*0B*kYDdA_ z>fkwF_4^hr?QjO&_BcBnanK&;oT~py$Dr39_euxX2Th^ck$M!@N9?6ihbXw=RN~Mw z-gRq;Esi*Bk008P<1FC^m%^O;sa{|8ao;U_sRq3iLLZgrO2y-sE$vdRI4Oi)Dsd=< zfImwZT;AJD!S~__gB1K=2*I%q@4OV&ON|~)A-FpdoFzl>%h9f!lnDxc*pcA4-vQcn zhr+TF8+u$H%{3{*2BNgxNi0Ab0?M>z)58C6MLm*_lV?Xtk4i|Z7AKo#Qi|m+6 z9i~9c1m_<($0e#WC*@r~@!ftrXBp?b6b1FJpA&BRMxo-*`{3J_sFd+zx|cd2 z*TT52-P~cAt)R|B(}jWSN>_8dopV&3Q&nS`)Ac!i^<{bf%p(6xe;0-?gXzzzL^H}X z{2Bf(nLZ3gK|0fqQ5MKxmc%mAoy>raN`FS>r}|1_Ls`&Jj{o{Jh{4oos4N~T`!rLZ z=gcfRpXncv2|=whmldDS3<%BiV`ZwcSOF|nDT}4y3hgqci&O9bSpEzy^3K~#wazl)O5Zcn>Z~Mgs|s4F_hbAmmD*6{&Xsyds)dfS)5WZkS?+ZH zXBla>Uh`pP&CaZ3kuw<^9q~P$A_xMo=L+30g}| z)}BHoCt(F4%4LH>axylM4*+ppsBR5pq3`K(qXkB@2Ow(P39@HSz?(`hvrNdUMXcI6 z)6}V}IsTBRT%i?a5vy!=mhoq0b_TM~`bvHME=Eofi#1zcSq3?URi@rh`Dqp+ShF2v z8Y|7L`Z9IMq_fQx&~eBGL$#;hLe;%-VWs&->1_S3U(H&GV=yo#BmxZi_LU@%usU0v z{GOQu6fdA@@+(9kjrkSmiCA-m{A4kxT#rGo)sx0jsyg0B0a67r$YFFI_no``;{Cq| z)BkGY-<~M?@1XweiT@S+{|C$||Fx<9U-T0OiLoS*82XRMG=+jJ&ej~=nh}N6nw0eF zGE+r+KF74mK%qDxLq}r$ch+@4F`D-pOH3zYU9Le)d#3X8#9d!tE@QFR?oBcR=kux^ z0?YPJxwsVXrz0Nwi}|Gxb3fiWFjK$9D&&}%m9b~^cwkmixf z=dw&Av2mCw=%L%Axl=&}d+wBiG%l1RbMu6rxV{TroX8@2>z8c-S?I7LdBd$!mmVvu(zVp0J{gKpXzpz4hRC^j4^iBkPxEOf*HgTJv7j+B(n-b;CZwzTE=FbKGkse|mYw|! zihHvH2rvevRTkL3ol#tIpZ%PR`3G=-Gj6%S0>doc4=zs?9 zB40wcz7!nzp!d*nE$U`FE+Wfqc0Tc{83$i_6ui+Ntuy`%KGdxaA#1wA1FUkSSA&D& zE+kLfFRQZraUYO`bKn&Rl&^F%nwm=dsfCX?VTZqmyO?DOn=A569S6(UjVo%t+BL(7 zyKU5#j%|_>X$A3*OnH6#B5aBfq>9bp*9LH3RxC@8O@0CRrN)9H96WgHgq(hB>@M{g z5`rm_!@G)=6%S8p@dFL#c2E0o)UWVL{dfbZFKl9_g;LJMDbps4?q|8P-sk-h*xB|O zyqHx?ZnoUSt}j7S)lEI}(>ggV(-)h99hTgzEnFNbKd3R{IO#1W8(yT%m8$qvW>eau zm#^pjU_XACQt(7GB8}Ng8+6j7izo^4xyiWiHtdQ>d-X##;LYKtua6EFt(p(?z7!fO zMS!>+-iDvlYMbTWZyViHaPYwHZvuuFRG;lDK)CR`HP;1|!^Yuk`N3`P6GuvX`eOwC z3QN_jdWUKfjl?gm<;TMZ8izreFbJ0f>^Eyi*sF$~U%ppl*eeC`WsS;?iPu`*m8f^$ z-*r(5*5oFd@~g4u;*IZrJzmL8aK;ZwfPtwcc=yZ~hs_P;Q_L+nZkW23!xz>hjUB~? z&p6mtkbQJGKchUbR`<&r;Ur?6mV2Zf=L!8AePj!JfCaw8f$TxRHp>AaiQp_h+m9xc z#fyMxQ2evsMRmbR110+lN9+v9p|h`K$~{kLN>BpV*aApv-p2I(J=PhIzLAdR^%m?= z4kD~pgdIo+xr?)ko6y4|0ofUCTX=*-z3~a-2g~7c35w5cb3STcGfg*m^*umC!!GmJ zS9iSiNy;Ukn`ItJ1&x?ftMRL6WjEM+Jh~tnDiOa!cCr?S;RT5>^j9 z7M2%2@h7@*G^vO^o(1<;Tz9`xM5)cGIH1FIf<*cC3=W+({R~TeG|yp+ta1X)YTXmG zOq?(MKAwuVcEJ&PIF=Bxw~f@es!cajWX_kk9FVh*QUEzk9on-rPFEE z$M21OIa6w8qL$;38+eOaJ0bPZRHs{8OjZ8KPrn{p)99rDg9~@-_J2CB_i@ulyAei| zc}B$OQr@N<)s2kShgK^4%&Xk@l(0Qo>@U*xS<(2)#v`^_;^!``RN$lNk;J0kBW*j? zkk~bwzl6RvM*@4o>Ss~dz8%vN%C^tcCd7FqQ+VqV-teB7ijTUedXK^LI*yfA{MS^8 z6#nx&yovk^o6S3=gn|ejW9t=1J@wyI9LOgu$YnU%oywNZ#Y4L3C$99hA%-aqD?Fss)|zrFz!pv*zT0U6Kg$>p7aF0ug& z)Y0RscOAqEBYUo}G2-k;_AQMa>6XO(EmLQPE57o#@=f}C?e57k*eXQhR-73aTZLP2 zDpmz*JGq!B26(<=Fn-V z-VE8S?6p_?=6i>0}tw;Lb5UfoE`bM`hld8G{`7 z_lF5fr(Z7T)!Vv8DXY#$ew5#?E@8PBKWraVT~xJEk{Gt3e52)ue)aj@Z|T7#%dxUk zJ0;5Yw__1?J%L(s+4M8=rgLSE!UdtXBDGHNMEdzJqaM&$hRX^EKxB|}@j zBmC~KHf9z0@4dKz>1R+q-NlJLu+!pp>BI9;LtkRuFv8@3s*|hca7lHxt|INO0xVDs z+`i0nP7U^E2((g9qG0?N=%jL)cC$mIzr|}`j zdUVaEaZLT@C6#J#t4{*bKKI6QjkawKYJY~~oa;(UKREH;+8}JPr&!`vE>HV|JF-JB z1(rh&T;^2aWnzy;=Q#oEi)~H<(t5h{5}7U2KX0k)>}n%vp&osGBb6qr>GEB)H7Umk zreo_EH~Q^@z`*{~?t!KGhE>yVeuiqvxa~d)EL|OM{A>vUEq!Othfmx~a%(S|Uz}x!T+hH4 z0(OV?ki8|m2~rgT37=ddCl6a(Q*Fp|+tO5mT>KnGuT}1AjhI#umNqyfXG{`E8h*K8 z*JJ#98u2vXQ>T{6LH!SSUx|}tBB0p20$ia)J9nq%)KfudLF)}ymrgUAUIy( zvjaac$@jiI@Y?mYR=s?nj7^1cbluUy_sPb&y+xNu%LgCV1wBD6D$Pqs8&9)ze;mk+ z`As%)c%;bJ@BV0n*0Zd=S9p7?5BQ9teA@-USy%|+`GtIpF@kgEPXu@Gb^pOF%jnvZF zdzUw~ShgKM`@=46XPLe3n4bACRLGauUaTUxda>+mppl z%AoO$Aa?Inw&J(Ef468)=-fwd%mq-Plx>>(7`-+XL-!q;^QdSQrun*T=AT((i`3TF zTAk6R*Ilrv5_iAVwX&aQ_Qu1gluMD3GnXI}G`|17h z#k*_o25;6(NU^tdY7CH@c+S254Ws?C1iEH4A?>kC2-*giU>25_ADn{ywp{4*-3I5; zHkh~Rp$f?Q%nYi7lZ1R`lEaYp^1<_g_nD<@EjQ1PP?!OxVM^)n;$ETOY*EzgzDdLAO+$Eagqm4+T?Bk{_q``P zeRivmT%z>`%BWEb+{;W_zwwuw<6yazU(=O{Cbz_2;UX1Ni-#k_EI=3Ck~Qhhc%qtN zXk~Qut!fpTjy#^9Owa|zBDWUe;xMK4TUqljPfpazJjYa|pDTln z^KTDQ-kNoN2(0W7_`FOPN#kK#?BzY@x=E%%wBiN4mA?x%g0Lx7a)*OufuY-R@!q1+ zz#oyCfA(%x-IQ&s$!fcJLjzAb#3Ttl?N}UWHo*Dp@Tfmp<%jE}liH+mZ07aye#csjVL84&7{2D}#SLM4m^_S8mw+7$pJHKf1`4e|vVL`$xFM_#%=7_;8iL_F9wYsXncM*~Q E0I%fCYybcN literal 0 HcmV?d00001 diff --git a/sound/effects/griffin_2.ogg b/sound/effects/griffin_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4ae4de2595f4bd827acef6194fcb571287f8be5c GIT binary patch literal 4352 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 literal 0 HcmV?d00001 diff --git a/sound/effects/griffin_3.ogg b/sound/effects/griffin_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..28b65b852a675bdf8dcf5882bab6730f5d9f77db GIT binary patch literal 4912 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 literal 0 HcmV?d00001 diff --git a/sound/effects/griffin_4.ogg b/sound/effects/griffin_4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2d6612c7c00eb6efb3a20e66c8698ccab8a551ae GIT binary patch literal 5274 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 literal 0 HcmV?d00001 diff --git a/sound/effects/griffin_5.ogg b/sound/effects/griffin_5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..61258463922015119de35a9c517eb62161e8f1fe GIT binary patch literal 5512 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 literal 0 HcmV?d00001 diff --git a/sound/effects/griffin_6.ogg b/sound/effects/griffin_6.ogg new file mode 100644 index 0000000000000000000000000000000000000000..43520cddf2a753ada7d4ff6840b7e0d1aa6b28c1 GIT binary patch literal 5895 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 R?MQ;rgBiu~Sao&vzX8*!NFx9M literal 0 HcmV?d00001 diff --git a/sound/effects/griffin_7.ogg b/sound/effects/griffin_7.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b3ce436e4e562fb0749990cb585a1eda133fae85 GIT binary patch literal 6307 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 MSB3)kfw1s@04lzr6aWAK literal 0 HcmV?d00001 diff --git a/sound/effects/griffin_9.ogg b/sound/effects/griffin_9.ogg new file mode 100644 index 0000000000000000000000000000000000000000..806c67de2f436820b9365322ca066175bd2f4b87 GIT binary patch literal 6913 zcmd5;7}k>&%&RKIe1Z&-tv+=dlkAbOc=BuO_=F&pG+`#yJUtR#?%WnxY2l|J<~>f8(e_ z+pfV8L3`{^2O`3PeVjMY5tayTO)YIrZOwfMReRjY;E2=yc>j|GBnKMC`}?T8>0xIG z9R?(Qosi~P=q{_PQus72^DLiKtE>0O+f6O*;KdzFQ0(l`vWGPYGF;m67?L*&os15a z@=f8);MSJA2x9swcYNUy?Fd}&QahVQi!LaNo2lAn#K1u{O>ivOOYovDRxMlTvEi$|kFOs1hnn${x7 zn`1jtFr0g`jN#G@A#e-;cw(MpA{RNKj0}+*{9ZL#5tZs|xqX8LQa&62R)o0a zP4U+IO4eN(*4<_fnCPDU7|b#e%jR^1j^BoQjV+3@?nxsWh5aN2HoNfx1f(K!)kZk? z-_!$qR8d!yt0ynulj8zVL2Az@2@yMcCM{2@O-^RxU!zoRt8Dk@~pb7;16V$u?~rw5w7MnNna z15Kg`A7RHq&R?E%KWQof%??TxoyVJUX#e2*tsY2T6UqGvr-~33cMC2_9=Q_yqL6>6 zph+o6__R>T(Sm}T=ov(sQ?n)V&Tq*D08k){qb(HT{~E3+BuM(aKo(`k3aOP8<|k^m zX;i(`Zs!cMl~u3xKWRRL9~LgJ7PGdk>2dWfe>jyLD$?a1Twc>_g}et@8M&c95@a3$ zDZdmGa}M$q1#0%`He_)w*M>TwO-@`Gw&Kl>68_O!@P7Cmrk2 z>p!%N^OlGlS|N_C5Xaf^-fkKG|Ed2L9g>6uHx>9T$URBlms(S~w~m?qO-uyzK$e5d z^HWMkPb;;iYFOUVv92r#qm+q!~(tKaf?(X%Zx(HoC&x5 zfDme66s?$RgTMOBno3P*jiY!S%QPqJ8YkNt zC+lq(d(8jTbZxtJY$3(&f}#$ve6By8Kq&0mH8Bitgx|{1QdX$(RN%RpI;_RFEiOkp zU-*#tYQXOhseC>xK~S4qd)S*hef{sH)*-=@5dlx;BMY(O$eHMIYtf95J|lCyZN$;Ts*JZYRte9ZV0jgmOp55lj!Rn@AiaV1_bq zgDY5%?U4=`+>jG?@BoIrjO|~JcIzejelf&+v*{)pbrbx1h&T@-7Q15Om|@FK_wOd+ z2GjkqXZ-tDbh`=IZj66F0oxzx?^1_#TaNA~#*d`?d%5_#Nk(E<;yu{u69nv#i@(bO zXK2@h9Y5Af^v*K0$3V!~H#%4sBG$_V%kI_fPU9f=J7L`-A!MveFY%2I2YGNm)+K|3 z?2;RU%f^l1phjuy04~baGgP3p8j*;-L@xqeZMoY96f%Ph?P1yH1(3XAl$N0 zxZ2j;gY(Ub9&!utI+Hvmso$_TUP7z5O;;B#(%956H``pbTF*$L&#uy-rP^TQ{n`4Z zpY@d*1)qL2hO{?U4%BMBt3RpH5FyhZI@_i-TklXyyx?_KsA-8n#GVVlwk#6~<45%_ zwn3(aaZJ0l%{Wg%or|Og12>ee=KHzjtGZ>VCQ_%F`9Vy2VKB8MI49Vh5=fy2(-=q! zT_czh?4A=qp%i6NgDCV+3bibeifpHbv@wDyj89Ak?h!p~Fh6)>8AhRMJYtj%(m%~G z3*D$C=W>EWav-P;W_szloRFxTAX<(pjTS^5j)2 z1g>$LN^8rQ%A!HYGgos$H;_XHXu%W?^6uMIwRSpgwSKmZags(0gOF!AmkevKUudJv zZwR5tm^)y9Zf z`l1j3k`Vw1XyyrvOEbj46(}ntc_(QJTt~k~@#i_Tp{5XiuT2CL(qEzk6w*>5T3VX+ z6e2AZEdb5jHz}m0p+k8A5Z8n9R$ngiz8=S0U?e91;>KMeeddP@Fnld@Agz|rYUeC6 zrmp4(LzeP@DAW=feRh`en=(5C>1Tt&WbUElm(XalOa>h?3XQJ*i1BF_n$Tw3=o+hy zG$vggQt51CC3GAz!C-CpJ1D!?FRV7+ET3iW`Prx?d=v&o1x0`{@BXsn2(-?2*Ps_x z0KpANntTdza8o`7athi?;a-{;l&(ji*XjvVDODZ6BLJ=fDdaG+kn_&nc=7(%!Q$U- z{L2$1{~gr7Jn_GR|9`-o{_j=wf00iJq$Eawl&HUXrUm3=Ne))X=Il7Q)}*9whovgg z=OwCH26Dv-88RFlyt}Rq^3lS#Xj~Q^?S2hn+Ba2LDDLqJbs3Gmc7Ku*I$v1r97@-n za(6G)WoP4GJ*?gyN{6a&e7hDjKy{zwU&S9U7}e1OB)Psy{YJ}9*AstpX)dXI9F}P~ zIteueJ#=S0XDOiI#90#Hrp1zYPMnZaHg=)H2`{3*QEcv@I0oolTDIMZfrJbbJ(}p z)CSd=_$j!rWOPGtpz z!6+0~xnSo`N@?W-){Bn5(dk8~M11*V8xr`*#|NMB3mo zhDH);<4cSuDqw>IIA3BMMqiI*F3p_^a&m~MgbPF|2}ucQNm+S$Lh24lIXU^L_~-~S zF=>aCG(zG0#j~eLXJX@EFqjSYz?+fFbJA%Yl!~{Xq79Q{h}gT=2E!AOUQW$(*`|uX zW@5PYa;nEJSC33Hh0-*~L`7ywQ}wo*md7n~@`2wMVNO%mEe@u+mUG!0*p~Q^67!nU z$tyqX|F!d{PG{;(KYx?=+(+4BI`T7QO`q?UZW;6vToAiSm{Cd4*hdhPV-r1NPL59n1k z-yeVop?sc71LZ57l!k_~U}EtTcJ$$IG47VRLRN}gQ^&vxdh@DUpmxoW@ZA<-Q`-(n ziOizwPb|0tdoJ0R2uDziIkH!)fPbPdjUOXT}FLN)kJ($$ZnR%(-%vAVwacHGbtr;dj>4 z$LU4SG%saRyGi}7nq(0rL0(T8uf4_{mondcR}C3B-0t?JqW1r98DzlxG!gzB>WJkqoZSG1iy$*C-P=Ymh zil+ap@49gF+n-NY3zFTigA$-`YMG~V=CkwGM-@}lZTX(4x~9YD*CkC|#D-2eJ5=HW zbl5-QywSD~D(ZP6aCKTA#|O^54Yp4&pOa$m;GcZ;z(h4(LUuc|Fz0! zgDg<+byjf;a!4d3FS}(Mm!PO0HhKJD1y544;!B78kJ{HPvW(t*3(?SU%=!7n3u||R za53N(-8;3Y9(8i<`q~-UO-|lV&Wnb*a`)bN_s7i5Rht`MFvB4~-C<52f8EkW$j6d- zLbj3A{eAo|YI7>i$QYe4Q9ga6L*W*Su#6}3Y?jCxJJhn)D_P6j?c%Rv z8CdJLE?g|6D_D*+P8HUTIaK>$q&s4(a5Dcr12|WZCI5a5|H}LKwnaCqNo@s7vGtec zH2DuU_8Q9@3eLO3BAiKwwg8p^Oj!x+zsysdGsfnFD@Vwa_+@|_Dp{~*>*NIkaD>C_fel{fnl)a76izZ_z8{%+lYPv`VMZu#gqOo_9~zBIC2 zxFuh8Go|^lt;&9@DzANIEbk_#3#9$FBwqUXr5!fdx$~=)*f?@5uH@Hn%WgF|dfom{ z!7q)mz{!7YQ53d+*R+JP!wau)J$tElD&N8OTV_1noeHi0696?kMI<5NAkvOCmWHe`V~a%}Cc zvsiI#*A*5@ob|-1slF}C26v!o>eNu>7rtiR$zb2TUAacv1xcKYGXrC(a1u@>joXkd zd?E$b%T?aUb8>6tu!en2KsFhqK0Gvyxph-P))%l+(>2Vm-w^wC$p2izd}|{AYT{Jt z_RiCy77d$R44EQpU6O^7=mvbJpPuxL!@Ss=43ky$wM%vd2N6@N=~axC)9zi2)Lkx} zeum*9J9g{%)*i^tZB6LfB{6&`^$W{;-8n}r)7WOoo;$$zDO^8=q?jXfC>+W+gZ8Vs zPKuwr);2$1ZhvMz)eNIo*nu*4Q)P=Yn9cR8w{N{$b|ZHjRRvpkZS!vI1rBdiKnGRZ z+xVjmsYu^S{`JAh%$hM+!J+6{2gI|HQ#=XlF55_xJ>sy@VPSCBnj2IuAKDVp_K4>M zJe{=p7+99e<<2=S|73cHpe@f&-joYog2&jERjYv2_ejvJ^z(Z8WlDR+=cW%4zsjS8 z^P-BZ{`}IH_9|+x{TZ~_KF9fzrsof99q>0+bS4#Dt5gmJUOrS@&n4rstJshz7$tK^ zV6<9LHi92!7v6D-R})qMcEd#Lg)4kpYqxM&Oh!|U?i|(Uf5F3QV-ya|80GVPdz`!+ z{(7a5>EIEktU4e2QGTbogpDqC$SJJ4q-wJyE_zeNW}6Sa>hs-8S*IgxM(HPaOVAIr zqJ`_aLbc@b$fx8j=IAa$MNxmmY8~e-R4|W8tbx^e6e>s-7m!e<{F+a<7>@?Q>kUUd z1)p+3IpEFC!B;aCcMCeAvno#q@VV^!o1mV2et9+kOBIj1ZC1#S9j2(E*_`Ke1 z&MgYoy|9TIWK=!f!A>;TZGF4^@wvFc&xxKWA$&;Hi8U)8Np+TD30kIvJjJ4HJM?u0I0JbwPy=sVfFk00j?Aos6YuSeqQ7>PO8im4)%x&`?BHwul}Llj z>?*8G;*t15S73Lc#g$)LUvFL_r)m1fAL=@LS|YR%PreLDWy)&0e-mv^%{PJRIJhK@ zES=}?I}q*_T7J*CYI@*Dl$MO=-Xp-q!{z3Wrby7#bLL#k#Qjvy){^tYMF!AILYqYqE077pxIK=-V+KnI7p*nu%lL4gAIvcPibHPAtd@L0cGaH^>u+(!?frbMIBEFS^{WTM znN@clJMGGQtGQKufTn!;sM~v7MPHRp?V78v*dQIz`E8>A#yh!pbM>;@mpo}P1hU+) zlK|q9`MP_9X2j(qj>ot%EI{Bfp{*|f$Ppf~S5^gcZ%RvE#;hx^|KVzM`ntlRGaoR& z=Xbg9t;bs}rhKT3eWhu9-I3z=X{H6;B^M)B4nD05dxrR`G%q1-I!)92Zjh7k3vcfH zM3J}G>&ZBw&p--v_s2_v;g8_m$R;S7OL;ya#3IfBQE6j&{;!T8=lI>D2@e8d0k}4gv3qSm&+HCP2wFE z-m9x@%V+c8Zppr=xsQIR^Po~G&!XTda(ya+95^`VUD+%|3UuGfH?z(Xsb$vMp3)}Q zowu$M_xht_^#IrG&Bt+RM;@gJr!4VZn@cRYBkr2!BXlNqT-tL-eWni2uEU?T^R9AV(n69|yU?PM%!mokh!jZ4P)F;WwA&i zxaY2lNGnTPca6e+sn7fNcaZ@sVj%}Vnk}c;;+m>d#`n70Ec%P*dD#Li&8yy>w|k=U zz#};(U-7>5xpdJRfklhV+NDpP_Pw7jqR)=w?hnp?bFo`Mw~^TcudCeH&zmpaayj>y v*y|RSd*Q>)saM>+Z1$Y^@Yy9+CH Date: Thu, 11 Aug 2022 14:24:32 +0300 Subject: [PATCH 05/23] more sounds --- sound/effects/lunge_warn.ogg | Bin 0 -> 73076 bytes sound/effects/owl_1.ogg | Bin 0 -> 4208 bytes sound/effects/owl_10.ogg | Bin 0 -> 7811 bytes sound/effects/owl_2.ogg | Bin 0 -> 4615 bytes sound/effects/owl_3.ogg | Bin 0 -> 5030 bytes sound/effects/owl_5.ogg | Bin 0 -> 5796 bytes sound/effects/owl_6.ogg | Bin 0 -> 6211 bytes sound/effects/owl_7.ogg | Bin 0 -> 6591 bytes sound/effects/owl_8.ogg | Bin 0 -> 7037 bytes sound/effects/owl_9.ogg | Bin 0 -> 7381 bytes sound/voice/lizard/hiss.ogg | Bin 0 -> 24754 bytes 11 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 sound/effects/lunge_warn.ogg create mode 100644 sound/effects/owl_1.ogg create mode 100644 sound/effects/owl_10.ogg create mode 100644 sound/effects/owl_2.ogg create mode 100644 sound/effects/owl_3.ogg create mode 100644 sound/effects/owl_5.ogg create mode 100644 sound/effects/owl_6.ogg create mode 100644 sound/effects/owl_7.ogg create mode 100644 sound/effects/owl_8.ogg create mode 100644 sound/effects/owl_9.ogg create mode 100644 sound/voice/lizard/hiss.ogg diff --git a/sound/effects/lunge_warn.ogg b/sound/effects/lunge_warn.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0feec43228b178402fcb1e199434253316485369 GIT binary patch literal 73076 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

    8|UMo*98JZ(xkh=rgE0w`c$G3q^Zd!JMY)^pKc_ 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 z�{(Zn&cUisXI+<*0|$cCX3Xkr{J0P5yF_1o2dv*xVKG`jPcMFSX$Dlv#?x*DZl? zhwqu4xcnSl+$^0)o7CGXL+JF|kHI~xuet&Jq%(^DyaYZ07U_BS&6uF2eYWP@5*$pF zIyEJEM5ljN;g+vJ0BCW|ulH51>=AC^+#KdM%-V1C6)WbpPg5*23-69FoG9mO zN;jvu-6N_Qdeg{UD4?wK?anh(2s$(l1% ziFAhXiv6WO(8kOy3Cixq=L0qVzP(%5_+wL&Uzcg%ux>nyDm&q?>1Q>yY6873EURAo z zlsV(vguVbJVa@SvgckQ_bB^dclH5e$Z2vS~C{@kTN7dzKH4?t+4>5`808{?iT%%#^3u-9J8g51@Nl&!q-yNO#1zFS z;_MF_L1j9+GUxp};AaG@`$Bzx z!7N0#8z&#QSU~jd{kc+Sl@BAB{3+rCm?Z0?LenvstvGC&tKHo@eH`nfWw)qs5`GAW zd(UT~sbJ&2z6g!ER2Q-u+4Svz+cU_DetLVn%(A+Lfu2;~AhZ%#Itl|lX$#CJU5Rq1 znIJ?=mY1Umgi;Z#`g1)I!zdqu$@jCkY44`NkU6o<%0M1~>agEnhWdr^H6urEM ztL!8sl00_8bjyzaTHqXLu3)4d|7jynKEeUL*L3acu)NsJLt#2fJKg(cN0RXaG~9t# zT|o#GLj9MmJn2pF#1K@*O&Zz|`5gS@+Ns-?JSIR(6OSyNrZ!HP13|1*;Xg(JNVOA} zH^M|yzTU0D4!k{=T9}zjL2)kxd*y3c0RNC55GgFZ`7UWZkbjWrYZg4iAFpHM06??) z-GKSIaAtG@rC+aHa1QyLS#&$G-E*wA&(02cm(*eJahN)8Pu(H};(K<_9m-c*=X}iT zbN2TOOTQ_=NPS?`S#r7cy{v|y*^tnv?!yd0QcZ9=q$TXi4Zv^%VmDR&z0QRQ0II#y z>Hy1SF>1*ZY>un~^KXl6n-9GIE%BN~0kC1*($Tq`Ca0c}sgCZNNk5B<#uTuug1J#(XXvLH9*SL#(YLi{^CVa`e0>k6@c5)eb2oK8>lB zkB-!vEf*U|{FKNk1^Lac2?sj}+YD-)a%3$)O$&?@9tlI}Y+>U&Yl0&JZU)4J|DCpi zoMI+k;c{OE&#jr)cHD{3F+Vu5s%C%;vHAO)!+T(|d&vnC&=lf>X*n-?HdK&8gFJ+i zz8ss@#QY5vVtUy&gU94jugo}zRJLu66R7cW{ADFePqLg!VzdL5;b{G5@IhcbS9zaS z0h6&h##dCtJNSzlrw>IecW!npmac6aJzZ@rMLOcyU`}wWEwfgK%(SzuQcxZlnb5uB zWAR*BEFgQC4ETL+@ZfNCtaQ)FfnBr~-@8&hv~jAB=zZNQXVHVoJG3XTKVzoA*$;0d zl^WdaJ~-4>QQYKR`RG3rQ}LWC&#kt@;TqlC-muqq&!W*~XnCZEh&f?>^u+(3{kxyK%~&xft%12W=0Y3ACdC$VWQcE zT^^_p^+Nl-y}hk}R>~;`YOa-0+e5dBv7BGRSYsL8Mjl> b?;5-d&U@1Az5q(w5Pjm?o(>#CzYO_5@T>9{ literal 0 HcmV?d00001 diff --git a/sound/effects/owl_1.ogg b/sound/effects/owl_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3d41497d44b43341c3b910f56181c84b16c3217e GIT binary patch literal 4208 zcmd5NX zF<{7)7#Ti7kPD<30d43)ih>%fLL*WQpbC!Ur?Pp72o=$`IwR~^{lAQgMOOZ; zAuCZ}bmOy1<@(?M^4sQbxr*ZjrjyutSw6A(nb;h5>V7jimW=iH_4D`j_uYlX#d34m zdHF0JE0>Q)pi$PVOScl=*$>cB5GE}Fzo&-!HRXg0PwKa)Cbf!kqDkaTB%R|q#kUZ~ z71?c{cVR{7P4VyIt!t=aD%&MZf^g`)qlGu>K-T+M=0CTIsXAqT%1A3@*J4w=WQFEC+B+3&ntMh2_9#8 zgTY1xuRK4)FAL}?c#g#x_*Jg<+I)C6jK~HF&BaIeV1S;yb3U9CGzMhOohkyyX8>^9 z=H|&xO9v9Xf+7%NQ}B;(JmT5bzLZXzct$*trSDRV2uq~5?c zD?YaKY*99p`|G?f-tr$ph^gb^?T{zF*U<0Sw|6@3jp-UqN^AezsK{RTbuzoXYm9<# z0;h~O`%egt$JQlX621pPE^|{U@^$$0brxoKf=MJVLT~aSqWFLB*Lk5)(g-r>ozX*g zqhmMHMyr{OG1k-~_wXA9Q%i#TOM=<)lEZWv>%a9?(}5*IG|_g|kS0vpEk9%3nRki5 znu!Gu?2B_9IO-mi?|!q&n|vl<@5Rus^r11&BjTK5^a+uP{K%=!$Vq9;I6r2RPosA+ z>D}DPF>Z>Cdw;3$H(jvVY$6GQ9+AXKQn`{Oo(-;YN7cKvLXZm*O}O&LVDT)e%AG7z zl56Ma4H+C&=5hGEg;^yGQ9&9`{t&Nvh;MjEXn2#-z)EgVan!i88k1K2uey&pz$Fkg zT@MG+}R7 zLQGe}-i@?a+P`XnG5UZQ;MnaT>!7~WQ(w+u-L`L^n@0De&(!+uaO*ngW>r}=?f2To z;#&U(`}}F*EV_6LaN6ro1h9M%dmYWYL5ONO<47=`=Sw#kU7N(zO#Hy7sbAr$C#Y?w zcw%Z)d!sbfduM@^da7j*M2m$h_<4)K_N|~e2om{`@JgrD3PQ8uoeI41Q(mdxyem&k zFxK&@o<;?KALSYb44V}^YKTWQZy&{@9>fP^1Ac4khb0?PVG2kXUKJYqeL$QvAl4}| zp3jU6V2*zuI{G|1p0;}=ffi5WPA1Ukvd}vLyY&gQI{~y&Fa&ppERr_L)e8g$K5a_I zH7qe1&INHa?o?2w1zd)J$y|z#m&J@%v-AS4 zp_;{fk2SdzsOK~FG}a`aIa$C;yu_q07U~5h_p4bci7Yy%fVot{7_Xk=Gp7<+iEr%( zvyAbQnK8lPn$TDpKxW&b-AOU!u_$OTa9G{JDUMd7JiQVSGW!44-v>yyQMTml-S@ z5fmP-=FTLs=!Bw~B-zwbH48u`aVIhR>CUAo%jf163uoUKFkNz|jJLE4_SYAbD?0rs zH?5{{ik^}3o_Gcma^=}<3;fwxwU>Rf_u4B@O@kL#dNmbl(+UiRo`(JlrrsZ3_I7wT zK6%m48S3x2*X{RBZ?5;1JlCOYlg`i78`mxPAmx3#t3U7s%wrkM>x%;ZY*cWO4je5C zIob`nuzEKy3t=z{I_-X_fTdsMc)o^>%Ife$dd6*+tdG}~q4eBS4wMx3G>k#_8d~d_cUy{I|qijJ@Atk z8m>tTcEW{KJI}%#1X<&4(EbP56@n}`)~LWXa^$cVqqbR&AkUvr0dViLDp)5o*1!Py z@rl}OGcxBM%$6g_JI|^-ht%AaUXxCf3&S}8*@SE|XQ+2U2Y+Wa(7X-JPJ?D)NYl1r zHW1kc>@%d{{_bMViZ)CBYFC~H&CV4q*wungeWVp`Ga^>9GUB*>z%n9)uyUB*4! z&6)wqmspHN!FaVGWxQ~9oHaGC)jS>2w6DOeFS@^5>CZE%pV>hWCJ%yaee3O=HfbE8 zGH@$Y9Io)QJw?4uu&IyJ5scXM+u^ou)wc+?Zqh0slS=)KSZNj27I4XH-K0`#wlxGf z1%rEQq7Hu{7>O2?Fad&!XOnDM@BL(ZB{L#Q+jj3#>MoLH>FE+9P;LVEy*yn|OF?_BeX_kR-7Kb!c6D_Z_HsDHTP{{;VUpj`dWUG@L5 z&kmB5=RuO=zeXkr1X)EK1wW`LM*GcU(uT=6eCjR2peqQ)Iad*y%HDZN2Vzutm&&c- zQIk&srCmm)(uwgE;S(zL8_IJw8{n_e3V{&q9;JAYK)#shg*=kUQ^M?EY0d*hd zRq?r^Qq03O_0o4C=+H-&P?*r6^-YD- zDQjmWIY9{`bd}XnZ;Qgk;inzKb#c2Kh|z?Rn$&%qT^r*i1oSz+qYEc|@}U1(aC>7R zY@ZbxgT*ZqZOi;X5nFZ(y{3fL(N|}`$#ovpXBi=ifFz&Rk$Nr*eJl?Q4=`h2HNn9%r5@AIM88wi#V0(*B9#?n4?O^BRR?X`CU5Py+;?Mm;=!Y5phN`C8Cr&* z;J1ZkW%HiiKED0|LBS!RfBQ}o3Wa8^FhGSu^Ou;_C+p232>B926dfl{JJ`CqZP{G< zNm1$ZyEa#nUfOo#h$EM@6ASPCVP&f5QqROwpMoB%fY?B2g|)%`>8_eBp1nu*OhpVG zQ-;5Mw0UjTi(Z$rxlnYX>FSSnD*L7%AN{k>PacIfKMmebdo}<_@1f&s4qs;}O#_$#+= zLw#0?#i5wM_VssFs^pwy53&`h{R`^QwGG2fF6rC9i2ULC$khG=FB7gFa*o!gboVp5 z>_;WHj3=#&Mqjsy{&D(J21l8>hOzu@=@E-Dt5duWCLgys+idv#eUIyXa^c($U3aJ# zvZ5{aK?hBP=VxO+tlb^q>1nsLVfjPJgQBey5T}Yp;zL4rhQi5b`zs%Ny<462fI0pvO&%Mq`tiC8Q zq*u6C`KIf%A-lz8jI-&>s?&EbwKKMMY_q>{ysR{?5i6+>wKvB0%6F8NfAmMAU1i@d zmfxi0_q97dx2RC=Xj_N6%yfESg~~m-=7A%j2B*6s3GqE(c=p^nh@G?NqwPP7JvI+i zNX4F?t-rYOy-~{(G1Yow{)K1viW04#eoM;uHb{2+==Poj5OJ zZ}NssyLx>sw^B+8sGrXdbUdAt@X4Z`4|^^5t$*~1735BK9LfA6XQjuqvt{Aup93Es z{mE)ud-&v{egL&l`OstFAphy@c*EZJ8SxSI%MRk}E?%Y6H}j1bLbF8!JMj0Nx2%u% zDq_XV{3T~v*mdsmLz{zdJfq-VE2!PFp!l%po14QfX>|s#^|)g)PmYe;LEG_PfqXeM literal 0 HcmV?d00001 diff --git a/sound/effects/owl_10.ogg b/sound/effects/owl_10.ogg new file mode 100644 index 0000000000000000000000000000000000000000..97f45d433788668ddd603260a53c8b054e84aaea GIT binary patch literal 7811 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 literal 0 HcmV?d00001 diff --git a/sound/effects/owl_3.ogg b/sound/effects/owl_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7c8524e933df8d0cc520d842d4b5f5deb555072b GIT binary patch literal 5030 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 CE3usb literal 0 HcmV?d00001 diff --git a/sound/effects/owl_5.ogg b/sound/effects/owl_5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1210b05ac39a053c7d653d7051964a8a8d959a58 GIT binary patch literal 5796 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 literal 0 HcmV?d00001 diff --git a/sound/effects/owl_7.ogg b/sound/effects/owl_7.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fc330687a1104dd83a68729c78bf354741596372 GIT binary patch literal 6591 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 LszUr|XXX7DkK`_B literal 0 HcmV?d00001 diff --git a/sound/voice/lizard/hiss.ogg b/sound/voice/lizard/hiss.ogg new file mode 100644 index 0000000000000000000000000000000000000000..457dea6dba9f2ef6a2f1c4ee008e92322c01364b GIT binary patch literal 24754 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 E4hJ`b;Q#;t literal 0 HcmV?d00001 From dce7b3a0b16b4290ffc7bc80b7d8d86a140dc5da Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:31:26 +0300 Subject: [PATCH 06/23] --- tgstation.dme | 34 ++++++++++++ .../tgui/interfaces/KindredArchives.js | 55 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 tgui/packages/tgui/interfaces/KindredArchives.js diff --git a/tgstation.dme b/tgstation.dme index b5767329e1a..1b2e0a6b80b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -34,6 +34,7 @@ #include "code\__DEFINES\art.dm" #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" +#include "code\__DEFINES\bloodsuckers.dm" #include "code\__DEFINES\bitfields.dm" #include "code\__DEFINES\blackmarket.dm" #include "code\__DEFINES\blob_defines.dm" @@ -791,6 +792,7 @@ #include "code\datums\martial\_martial.dm" #include "code\datums\martial\boxing.dm" #include "code\datums\martial\cqc.dm" +#include "code\datums\martial\hunterfu.dm" #include "code\datums\martial\krav_maga.dm" #include "code\datums\martial\mushpunch.dm" #include "code\datums\martial\plasma_fist.dm" @@ -1714,6 +1716,34 @@ #include "code\modules\antagonists\blob\structures\node.dm" #include "code\modules\antagonists\blob\structures\resource.dm" #include "code\modules\antagonists\blob\structures\shield.dm" +#include "code\modules\antagonists\bloodsuckers\bloodsucker_daylight.dm" +#include "code\modules\antagonists\bloodsuckers\bloodsucker_flaws.dm" +#include "code\modules\antagonists\bloodsuckers\bloodsucker_frenzy.dm" +#include "code\modules\antagonists\bloodsuckers\bloodsucker_integration.dm" +#include "code\modules\antagonists\bloodsuckers\bloodsucker_objectives.dm" +#include "code\modules\antagonists\bloodsuckers\bloodsuckers.dm" +#include "code\modules\antagonists\bloodsuckers\bloodsuckers_objects.dm" +#include "code\modules\antagonists\bloodsuckers\vassal.dm" +#include "code\modules\antagonists\bloodsuckers\powers\_powers.dm" +#include "code\modules\antagonists\bloodsuckers\powers\cloak.dm" +#include "code\modules\antagonists\bloodsuckers\powers\distress.dm" +#include "code\modules\antagonists\bloodsuckers\powers\feed.dm" +#include "code\modules\antagonists\bloodsuckers\powers\fortitude.dm" +#include "code\modules\antagonists\bloodsuckers\powers\gangrel.dm" +#include "code\modules\antagonists\bloodsuckers\powers\gohome.dm" +#include "code\modules\antagonists\bloodsuckers\powers\masquerade.dm" +#include "code\modules\antagonists\bloodsuckers\powers\recuperate.dm" +#include "code\modules\antagonists\bloodsuckers\powers\veil.dm" +#include "code\modules\antagonists\bloodsuckers\powers\targeted\_powers_targeted.dm" +#include "code\modules\antagonists\bloodsuckers\powers\targeted\brawn.dm" +#include "code\modules\antagonists\bloodsuckers\powers\targeted\haste.dm" +#include "code\modules\antagonists\bloodsuckers\powers\targeted\lunge.dm" +#include "code\modules\antagonists\bloodsuckers\powers\targeted\mesmerize.dm" +#include "code\modules\antagonists\bloodsuckers\powers\targeted\trespass.dm" +#include "code\modules\antagonists\bloodsuckers\structures\bloodsucker_coffin.dm" +#include "code\modules\antagonists\bloodsuckers\structures\bloodsucker_crypt.dm" +#include "code\modules\antagonists\bloodsuckers\structures\bloodsucker_life.dm" +#include "code\modules\antagonists\bloodsuckers\structures\bloodsucker_recipes.dm" #include "code\modules\antagonists\brainwashing\brainwashing.dm" #include "code\modules\antagonists\brother\brother.dm" #include "code\modules\antagonists\changeling\cellular_emporium.dm" @@ -1822,6 +1852,8 @@ #include "code\modules\antagonists\magic_servant\servant.dm" #include "code\modules\antagonists\malf_ai\datum_malf_ai.dm" #include "code\modules\antagonists\monkey\monkey.dm" +#include "code\modules\antagonists\monsterhunter\monsterhunter.dm" +#include "code\modules\antagonists\monsterhunter\monstertrack.dm" #include "code\modules\antagonists\morph\morph.dm" #include "code\modules\antagonists\morph\morph_antag.dm" #include "code\modules\antagonists\nightmare\nightmare.dm" @@ -2208,6 +2240,7 @@ #include "code\modules\events\meateor_wave.dm" #include "code\modules\events\meteor_wave.dm" #include "code\modules\events\mice_migration.dm" +#include "code\modules\events\monsterhunter.dm" #include "code\modules\events\nightmare.dm" #include "code\modules\events\operative.dm" #include "code\modules\events\pirates.dm" @@ -2532,6 +2565,7 @@ #include "code\modules\language\slime.dm" #include "code\modules\language\swarmer.dm" #include "code\modules\language\sylvan.dm" +#include "code\modules\language\vampiric.dm" #include "code\modules\language\terrum.dm" #include "code\modules\language\uncommon.dm" #include "code\modules\language\voltaic.dm" diff --git a/tgui/packages/tgui/interfaces/KindredArchives.js b/tgui/packages/tgui/interfaces/KindredArchives.js new file mode 100644 index 00000000000..3675ec9e812 --- /dev/null +++ b/tgui/packages/tgui/interfaces/KindredArchives.js @@ -0,0 +1,55 @@ +import { useBackend } from '../backend'; +import { Button, LabeledList, Section } from '../components'; +import { Window } from '../layouts'; + +export const KindredArchives = (props, context) => { + const { act, data } = useBackend(context); + return ( + + +

    + {data.name} + + +
    + + + ); +}; From 03e87dd89942a7516e30d435e08bc182a8708b71 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Sun, 14 Aug 2022 10:37:30 +0300 Subject: [PATCH 07/23] icons --- icons/misc/language.dmi | Bin 6211 -> 6436 bytes icons/mob/hud.dmi | Bin 14933 -> 16230 bytes icons/obj/guns/projectiles.dmi | Bin 130680 -> 131035 bytes icons/obj/shields.dmi | Bin 4600 -> 6159 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 2c4da48352bd1e4344f035246812748e736f272f..2a93c4afad6e90fee5b35e43a018ae3c5393a835 100644 GIT binary patch literal 6436 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 literal 6211 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

    omgZCMbI|TruqWDC zv*{&(n3UHUbW1)k`)QZLTBmSM(*nq~kOxqMKe~|#Py9ri>iopDPQYQkzN?9o=#qTk zqMU^S;Ip$;j7-ajXlt}7EZuTlzn~clzVh2yM)G2Xw3U5hfg|h9PUrH}^|OV#es-7V z0FCGp7dDa?E0NLEYJ5{)R4s(0Ex`9;z9+RLNSs`l^9>%7#?|^Jt(<0M z*?lmRcTFeB==cUgSEGXh%Qh_$S3f^Sk6!(_THi$9-aWbc`7z2iEs5#V`|NC$RT+X>~_0_c?)M7qQJ6EOT^so-T^@6iO z0&~a0_DxHK=rx1=pvT?CkwCEjSZJhrkmLjD%c;iDPTuNiY5lq7+Y|WbUk>3pTf@VTireMbGC+XL8CJX0V`N#WE?lOe?)lpHtzJ`E-MY0)E*uNd z#l^*;zuvT1hZ>=(s%WYD6`V_e{B$@{1-IWEYV_M<)SY~h)a-l3yMOqg`(CiTRt$H$ zm6H}O)LCVk$qQF!M#6<;c={UhZtc=pt^Od z@|vOi8nLS{9ElRKkZJWVYSI4F4*);VqP?L?oDJ-8aGT-34EKHxqHA-iVaLFxrlu~v zP-hVnVP-V7z+n%J&(z9_0`Z1NylogLC%WSHbXY3T(}e$_3PK;@pxkX=%m8T z`))^%1dxCI+3JITnBFH&j0d{*Ryruq=%API<%gV95~?NSmU3N(^ug{-Wsh)Rq$_C;!!ShZ?ZSer;~9iS+hA_4pY%KsH} z*UmsEFdBIhRwSBLWmIHm6ekH<^uY%m+GJg)NR&{35viT-77M}#k;=+SmM&ciXs#TM z+^%%ZmmCg$WFqk;hawmD`QKm8{IS( zmo;Mb>ec#(@RGw3vRT=5z@S!GdI8c5zfN!W!#@LQwv`@;>)L5dNHRgXrd6PbrClNt zaj_^hoSQ}@kHAvy)GKg2IanzK)HXuDUNE5nB{kpthmO&1CnCBn8)HS{^_Wb!ZnH7} hS4oAg&bCCu{{jU|>kLO{%}W3P002ovPDHLkV1kCHLxKPR diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 08c63adc04fac88434c61a6bd902ab5aa44735db..57c03bc5dac4e7f71c57f61009899a0e48065fd3 100644 GIT binary patch literal 16230 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 UJp`M14}gErM`{ld4~+f)3(rdhe*gdg literal 14933 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 D^pZYs diff --git a/icons/obj/guns/projectiles.dmi b/icons/obj/guns/projectiles.dmi index 5d8c77780aa6d2264337801b9c3ff9cda0d75ece..e4a45d0f4379c6fc445319a7c938fba46d6be748 100644 GIT binary patch delta 15954 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 a5)QtK=)sZ9MqS_mfWj+PnGz{|pZ^DTf&rZX delta 15597 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 literal 4600 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 Date: Sun, 14 Aug 2022 10:42:37 +0300 Subject: [PATCH 08/23] more --- icons/mob/actions/actions_bloodsucker.dmi | Bin 0 -> 20484 bytes .../mob/actions/actions_gangrel_bloodsucker.dmi | Bin 0 -> 5503 bytes .../actions/actions_lasombra_bloodsucker.dmi | Bin 0 -> 2980 bytes .../mob/actions/actions_tremere_bloodsucker.dmi | Bin 0 -> 5371 bytes icons/mob/bloodsucker_mobs.dmi | Bin 0 -> 2242 bytes icons/mob/inhands/antag/bs_leftinhand.dmi | Bin 0 -> 6900 bytes icons/mob/inhands/antag/bs_rightinhand.dmi | Bin 0 -> 6996 bytes icons/mob/vampiric.dmi | Bin 0 -> 722 bytes icons/obj/stakes.dmi | Bin 0 -> 942 bytes icons/obj/vamp_obj.dmi | Bin 0 -> 17218 bytes icons/obj/vamp_obj_64.dmi | Bin 0 -> 1109 bytes 11 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/mob/actions/actions_bloodsucker.dmi create mode 100644 icons/mob/actions/actions_gangrel_bloodsucker.dmi create mode 100644 icons/mob/actions/actions_lasombra_bloodsucker.dmi create mode 100644 icons/mob/actions/actions_tremere_bloodsucker.dmi create mode 100644 icons/mob/bloodsucker_mobs.dmi create mode 100644 icons/mob/inhands/antag/bs_leftinhand.dmi create mode 100644 icons/mob/inhands/antag/bs_rightinhand.dmi create mode 100644 icons/mob/vampiric.dmi create mode 100644 icons/obj/stakes.dmi create mode 100644 icons/obj/vamp_obj.dmi create mode 100644 icons/obj/vamp_obj_64.dmi diff --git a/icons/mob/actions/actions_bloodsucker.dmi b/icons/mob/actions/actions_bloodsucker.dmi new file mode 100644 index 0000000000000000000000000000000000000000..901589214ea27d40a9cf85be020b3aa2eb79f734 GIT binary patch literal 20484 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 V=o{ZQTfzVU002ovPDHLkV1o8DS*QR2 literal 0 HcmV?d00001 diff --git a/icons/mob/actions/actions_gangrel_bloodsucker.dmi b/icons/mob/actions/actions_gangrel_bloodsucker.dmi new file mode 100644 index 0000000000000000000000000000000000000000..aef8d3b6f05feb225789575426b0cfab3c047d75 GIT binary patch literal 5503 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 R#@X5p80*9IKIkB${sT|{r_TTY literal 0 HcmV?d00001 diff --git a/icons/mob/actions/actions_tremere_bloodsucker.dmi b/icons/mob/actions/actions_tremere_bloodsucker.dmi new file mode 100644 index 0000000000000000000000000000000000000000..057b17bbe103d2053b2fdf2a701ec73818365061 GIT binary patch literal 5371 zcmb7IcQo8j*Z;1%mgvGyumn+mTJ*MhjS?Y6bopV4DAC)l-h=2Oh@M0zI=gy=DA6O> z5G^`ctX=E%Jm);;ywCgJ`^RTy?zwa4Gk5NsJNHbysj==22s;D-fE)UHT4vWh@?QW` zT(^Cy_9NF_Tafu_>WEbz6(dw6$U3R;1TmaHSYI|C{^wBav?U@j7?6a}467 zZi7D;>n3u=4!Cbo$~k8Uu91Q<8A&#l_i(HduLR0 zau74vcAO2XURQHX{Y15>GJbT*p_Ra^{`Bb^4za8D#kt3Xrv>viQusG-G&GMr0v+&m zINgZmW?2P}u=`Kv1P?AZ=;F03;nws0nIc)Vio=NwmbXjoyDp4*qTvdjzs&^{4+$R2 zpfrV#zV;7hLs{lb3B1~8!?Zwi7h$OC;N)nIV!ZC)C{qG2n-j*8cza}U^lEvM3^+zR zE>M=+W@7JqWu~uGsA`pTfC7AWsFC-dz^(@TqB6km8%qOuZf9zgPJyi{g&4{Y`AMSe z4v3dqTy!00`{npup%=u&k@?nb=Pj<<0fzV{%d-|<=+)hE)HBXUb1aeVx;}Fq`P=)e zgEP>d;fP?VodBLN+FP4@!B~OZFF~6lxoeFcw_e*WIpTM86((}kMp2}=FW7~lnNV-` z5-URYkKjs!q)|7F?n+lSK%dHp!p)Ix7&=*3@J@v9Pg&Cdq-t#Er!nIvZ*{peS-DDw z(r3W9qVuP$vPYP~T3UA>TJwWPtyg1D2#G|jVQ0=pTG%h-zC1fM0#;Sfg0VGQFAbgaev0~i$D{E5oCtY3^e}om$x1}}> zX6a7_xOE@rug7c_oM!YB_v#<}@d8$-2cik0jSk2V!h^8@Lnj1J*a)dsmZ-qD@4Z9f zwmNIW#&^=<{jx|vNnTfb9DO_;QduB)5p*72(8zI4T(ZTu(ZLeL$jrcg2e3Sgg3qtl zwQg4rwmv^yed#D|^)9!kfIA!URUpsq)cu;MVmEN#DYDMZ;$~;G;K^V=;-y3p38i5uF3fg9^n_9DPpnu+p zrw&<5D|}*urtNr2oF8D#?mygGXq?51u!%;9&i^Q8I$h!J$LI*64>B%s=b?5KkcA7OPrg5{=NOhqK2klZpJVh1R?``Oa z0r`pLM!LY>-d^OxuA3Pygb{5sEQyh$rMn6<#{YZRs@H~G6y!gA+zpkv!hAy=?Kz|z zeWqj2$zDn)yX##zvI|M=ygh{gC9LO2TFjbdk_{%n7J8|sk}7e~_Uwq!I~#66zokWo z+>KLgc!uK+;{^vNuUQLle1ay$q1v`1I|*y{sJAPONWF?9!}AfL2lDjb32y!{st0Rc zood#tUnFe6FBKkJ#u)DKA95cV zFY-k5!<0&qtknY_p3iXn*(~+P`Vo7?NmJ7RT{E}o7Mw(HEMI9zlIH$-xD%N;ul|7a zw`b)Ft~N9}TFS^HWgv-Xovn_shoL%!c_LO)?vy8a{aG$7!@H9*$}OQ_v+2^507_mv zH5u8Ea|Gh`cED7=G7nni*?^>@syjEGby~l$pLCirroNuZbLvROtpAoE)ktL|u`iJ0 zFDQB^tYryi>SWDg$k}mM8`DrNd z0V&_>9j-W$8OJoVMfLl;Hu#lmXsKk78YBG-H^jK~%K<3A8KDsbkY8WO=?P{U5=@#Y zQ{p5uZMtkV)=*#1pf@ijbx>Pz;<2@n8JKrf8;g{``>}V6gdzxE`E6>W?`2w7n5$-+ z3Uca{F1jHAz{;~?d`wb4(XRJxfrh?v6}?%B2EOisgaO6Zda3Jlu%^%g4_0D|221D2fa=$R=O$At3{qA;gHvAUtFTajHSo z-|n@V7=$poGI}{#SfpvB{@&rOtk9>9{5ZjF`hpJAbgB979v4tLXNaQD|1DW;CqAg$ zO4(CZ&nA9bKf<@o@+4;TqE$u1Cb@`i>znjzHJTFEKfI|n9_pZsMN)b9t9~qC1Jws{ zVzE}NCUr12ZbAO^HL4K3jfWPK;$);?H|3_j$2aZ<>6#k2GE$k5JI>PobHy`g4vx% z?F^KA?x9kU8Ri1%(qtqd;1I<$El9ve;ZfvgmxV~leQTB!-f)#3?qqZZ5yTz|qKHCI zEhet)@CuRrVnBX}Jd~xgdokesotX6e_$1q%Q!Q^X`?Ns5M+oBxrsamKnN|!O0?wl^ zpE?|MI-WmCGI*ajFd3eXrm9X+KvScsF8->lQBUX<0bTFUcoAl=q9)y*ew{hS@`p2g z@`jJduwl@*-eD+>t_$kmoU}e5 zSz7}gA9)~_9uvL3hv_-XhHdv?LF|`xEz=RKx7@& z+pmty)@=6+5 zD~pJRfL+4z4^{NM2T%D)Syj#=n1;ib8aKk!SR~i~gNzPRWi)b?FqlyrIb2idg0dXX55u zVBw%pm}faF-*`cpQmg>=LCC`Q?9GhJ)Uj2e{_6*C^Z3yDZ*tv|4%~RP_~F1)So9+U zF%{nkVT=lm1s?e^Xojn8mwn=^^<7kd-0PViaumBC-1ss)wBCYO}kvE<#J zI~9Pz2G!}bj7Dora4cr?Fn#yBeiF6BngFAFde>z{pAk=vlM|4PM41;9eFUR`(ojUc zLB7j%#W*99wVL_O>PKo+S*d{miBu!l!In0eTKyh)RfFvTKge1@shYX|idb85zKFte zATuduuOC|tLYV>6gER5|!c2`aMgfDI^0Ix@x^cNTG}3cG`cyV`n|)?e z2hRMEv z8{tuHX94`$DoeCwjMFF~M`ded$b($_i%eeO0pZWR4Y?dVmRTpQIFseif)wHo$yL#G z9sXdHzS8{xDo9L;r5PQmJi;WHZ>FC&?!;Wv{A}}%6Z0D4XPW>-;%2M?6Mh|hKJZBx zdc&xP9FH?fy{KRXsnBz1h3o*}Cq3ngxrRTZQS_H) z6T4za*$_mKfY*Pvl>FOBOWp1uT+kxfh|gx(@-Uy5D|u>&_Q|i0vU{Sr)Eu-h(}zUw zMVJ|pM+F%w3fc-<(-vzFc!hn!GPo>qXFLU{`#@GxOONu#F~!>sfHs*B_vt2@og$T6 zPAYt0h(cdS-J8#$^$1LZ$P){!?<=)36c#bm38Bvt?E17(y}RB1uLlCrAh6sR&#YHm zW2j`gF@))b^z?fOxNf(@BlG#i+Og6QY&TO)hO?eki$#sa_2SK=Q-11QNTmKNcj~7C6%PB<1!DjL+u+ z3TENL)OM&>}~y-EsL`5%x~s%9&WMC zfb6C7=mup=h^{f+Y=ix>qAcf+UYiI}S%g@)Rn0W8yUL9;vxw{Z23_SUSWT|dvF*`4Nhr!#XZwPe@7b2tQKrtZ zd1U)1KzPaI_JZaa8V(d(#a0Xw3h#Q~f?{4;k)mmFN`9Y5Q8pGF`ycNBUqFWpLvSpvh<})RhE|5GVzFQ>>QZfO|LA8h!9qo_VA&l`-0qR z4vznE&JDP2ssLyeO6aQnkp-H*f00lyF!G3Ti6ZS5)MpgWyk-Jji1D9IMxO^F>uL10 z$?L9RD~CSZ8=|kf9tSMYFJt@tw5+=5<_q?V}YY*y?GSECiE$AmprHV;&(47 z?6j`l*(J*`SNb9+S3l4BC;m~;pE|Sr)r0MzU{UoI`x-2_$Bb9K)J;=N=kmEEeo`9P zO|CXOaO%&r)hCeuJ6N}8p||)*W)8dRRf8NuUGfIMh}?zk=IEUQI)^Rx%kB2J@)Kif zrAJC`oyGZRj0Y3?luAhKX0KWBSLd6Z6y*+ZT3D;06=A%Z*Y90sFYMP8`o~bWUlgg1 ztG9(j|F1*7<&aJHo%xxcv3HXRY4O0j~aIaesy`>U=$}Kp2#Y- z{;Y8lk_dZm4y;+@SRq$|A^|U#+Q^@pCmni)gdgT%yC{5je89}aCml|5OTI~M`AiD z#Uz6MVV%^Ql7y8TK7z32B|1|Z8YQq#FgBXXpR=e}vK0987JAV8gqefnUjv5_(+ScH zCD`)7c~Q~7RSqE%<-aD(epPf#p^qJ=13@?ZWenq+j;DvNXKBMFTtPmn#|8glNvwCg qw*$ObE4=b#jS%Lj0sb3TbVj3<{gU^YR<3_D0ex*_tr`uxi2niNaC`&+ literal 0 HcmV?d00001 diff --git a/icons/mob/bloodsucker_mobs.dmi b/icons/mob/bloodsucker_mobs.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ac3de343fd91a07de0ca2e3175954f57d0f64a68 GIT binary patch literal 2242 zcmV;z2tD_SP)C0001KP)t-s00015 zYkfvgVReX{G&)F|t+$b)tBt3%--#w`eUDRRfJs_zUvh<5XnTK>qhDx+zrVkKm!orq zl-{(A?!%f>Vsj=72lS7zJrN2@Bn|eNh|m`njc#LkRY*lzWH1yEkfg5v|Nj600P|`b z_W%F@0d!JMQvg8b*k%9#0E&84Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP130yh`78ENths!kf0xAAcXuF5cFe! zOjMLWD2fRK2(jG?5eA6+F#%GkG(sR!rDQAxI6f+b3FCfDuTtBmZD<-0|7ojKWSWvE zp_F(E13atkRy~IS@B$Gb1@Bz~kZ#GJ`T;V4Ok_d{e4)=XKQ<=M1o)hwd*(L)LXZSV zpMnJPaga}63D^k%{C5W;&s={(1PGXrexiH?S_>u7eDaKdri9i$9|8yfAps=4djN<4 z)o~q=z83(;2mkORBKQF_RZ#YKB#wztqL>nZ#>NDv@c9`h8P}T7!#wL=ljU`cfZfm& z*r6Hfr#Lw;XgEu$5-tE{mzIDsub9UX;KvU$66>dd6dOg6GJ*Mm{YHJ%%W#=1(iRfG z0?X?!_kHq2!C+6*xi|07ox&`bAoujK0bQAizGQyF7hC01#Q8 zkNOONd8b~8zyK2h1F(alP$~?dR8e40IrixjAn0-d35p`!%aYo}m;z1!3S=a&MMeWy zDbR}NfH8$AiZDP?;H_@ZaRx?G$OR3S;R?VTLGmVmD{;6&8vxUwCjeS2GwT#3aELq% zkmKN@?>ThbKw<7EoClfb7{Zqhy66Z1Ob;nAhm-yGpgSB9_gnUg%^g6V8$gM-vFdJt1GVy?m;y4L z?!`gsB>*iCVxMa6(%*!yU;rScN2(-A!EPNt;SU9N)L?e9!B5wM&96edf{gCO94mn$ zxl12=;J+K79O7@C*z;3g*E)W}IR`K=a^g2zJbkB?CBu)5xYN+mGm$e?)GzoKvFr$3 z_!5-?_@#9E_Jh%FwFJ=ZQ}a|o(k%ukg&&~Q=Bb!I`2}c(768Hh#V96VQWE?uh|iYDxQt#1CEojF9nrkTNgJAb}J|0yqkP7O`td{;~{Y z8R%&+ngD)i!Ki=}qyY%cB5w5L&x3wd_#a0n1W*J4Hf9U*KU9+)X`k0{47rQqxC}s1 z0bgQDjwDohfRR2136G02z;h7NKOBz-{GAc>?$tlCG|+p1@NhgV-2<=3Lu8$<_Mf+^ z`a3Zn2Y6c?Jr+{UKHTT$(W}@Mk~a)MF76+Qsp{TehY0KXt!bLD0y^L7P;b<&DWa+B z5I|%6O<)MrM+*~BZw?9bH*A53su?T*SVsv4{rUK2-W&jHGCP0M`y0nU1^D?MxPbco zryrm?olcb*!01yz*VyS-bN}pi>jB=w0PkJ^k~*KNwnFrp#()2bU$ChoAf;awHr0dS z7iyXiO#FTTtH14F{d0S%dcgPh>e8N>pab}Yf7*5&pl!Kn03a62|NH6#xc;{L+w>$w z0Nj%_#04Dl_?Ipq=ARIFH`6MrZ}pG)$B6kdxk=!GekbA^{L^2n@9@)Z*SQz`pY0!h zY^^%`sDHEIUi6#i?brYd{^hdcp=AjRd^%vY)jnlwdA^qCWMP7TxIDiVU{an30q!r) ztpP$0Y`6N!?k>-b*DcRyPpwXQJ{#fVhh@<+*c2V^_yFl;?DD_5lffABrNg)eJ{O{UMc8p4*31)%1Me zhVtAwAR+i!^*f%C@T2UkJh$|_I2I^ptE#V6$;+%e6dT%kxM0*YcbLhL?}|*YbR|)mB?=wbfQzZMD_@AGT0B zJYK(v7Eg~>uc~1E{&?w%&IrRN6c5%X(cjm)Zoh{B6K_tcTR!CbasZn69)JmArvMKE z=#Cz~4WOO^H1UIszph`s`2oI&pn4niCjeg~&s%_%fNxp`eFEseW`3>yA1#_-&h*Be Qga7~l07*qoM6N<$f+EisEC2ui literal 0 HcmV?d00001 diff --git a/icons/mob/inhands/antag/bs_leftinhand.dmi b/icons/mob/inhands/antag/bs_leftinhand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c57e08f43bb5fd9bd1efd16b75760c2c2917545c GIT binary patch literal 6900 zcmchcc|25M+sDtCG4_UJCtE3zeakioC0RqZkSy7S7>OBML&#Plp`>hO4I|4;_Kc;) zzAuHyGHI-1yhqRTd7k&r_kBK}_x&xzBZ7_xJk!?uj=wzQn@F%Lo7fi@{}G za{z#VKY_LAtJiw*ox;gFO6v0RZ(pHd*ahiwvu-*Zv8KulaE% zjJ(Qc*{-mav0nHEFL&0I#Ua|f8aRbIvrCg>J(ui@S&AXjOBVzd~%`-2SyTjcG zrb^#0eeow>000lkKv&xW^?Wtw&TanToKC#jcn-6rt?OGmakn!k1ZJ(Dp$=8DpDEGV zaNV&yX3O|eMfL>N&~EHKcRGdb`3No~*!i4Pd))VX&pj%s6}PTYI>`vbKNeLF3_V&t zD5N1C8~)Tbsq%e&ts~zmvnSYXJ$Y2wR-(2b)NksSX45oXi*5H(Q`UC&b~rxNZ!0{o z#+C)9y%hgtm0gHFKP&}cjp_Ig2NyA5*deThJhqMh(p}Q*pw;OmHXyJILgZ`v(YCM=9vcrdl*mX8D+^-ycex7Gwz^& z#v!MMcHi%c;4iXT_nTau_Bb>uAHv)0%5^Vj|GD>?kuWc9-%SdF1*ezNuPdH;$+vo~ zbaHA)(Pvv_a2ao>(IiBZKRjMd#8j!JE;k-6CmHWAUad686B%ND(DZPLym0%Psk8hD zONL9q>~6NhJ0!6xlnXiyH@t?bE^!^!p z`kYI)cRQ#xQe zLX`c)L(=6@h2w-$*}YV#-SJ8OsMkB3YQGJv&^9k|*TD&u!6q#2R$k@qbj z=IQplNpMdcd$9Eo39CeLurRHP+Wt^2l?}tp%-PqBsk*58ABg?B4=J0Di6!?T04t|C z2IiX|Z9D2cYicI>wl3F@>y{x#iBI)h@T;Kc(L;Cle2Uz!vbNR~4UV zppf+#Vt>qj!1#HFt;uSe2l)FjM1>QrEC#OprgE+i=Ukql1DlnT^NZ2shptWoK^2GW zfxC9Cav0-2@$a0!_Ii7|r9<`B0&a6)X57G=g+P($#f3C zf7|T!XHNw~JLLfBwwN{!0Lau5J$bNN0qorWVG7ssmvt!p(E;Up^(I;lWA+WgI+-aE zYiVI3fc4?@Z^gwkIb<%i=a6jAE00sRQ$1@G!P`gB$E8kNUU881WzVWm0+;d9TeOCG zW+a`?ZhsArq}E65EA`pePi#W2aSTnF7*pPt`uy56O01ox8}ZqKL?-Y^w`EHUL~~?j z&OV0%7@MN)j_KU+Fj+hNu}(ReMUvybl}ZL=*vlDAId`e!52-UX%udq>+w+n8`CMAf z)Imnob|IDsa?ZMVI^0d$JuD<0Ow~22x_3239IY7<>`sgl@tO@YSM8MKDRqqX;gng8 z{hA@|ST-2&&4GSg(&=pkhv5uYw}l|YH~iPU-89vX@?$!&z-r-1Yk%$0#5KO*J-aE@ z(e>m?#6D80PIDW7IQk)AXS9srJ3mlp{?Wd3eWdCIeS`mE+cXF50*%$p%XxqcE`q%@ z>V}FU1T~|{j+k(tt41K7S*6~oAJ|34zuhu!LA}dp_-q{LzA_Ba%?W1xQZ*x#zfFtM zF9bsz!m=Xb|Jv3kJaZ`Ca1Puby!vs5tX%k2e+Hucx^+<67(d}%a`^p&QjWLkWO>TC zWB6mMN*uY;M8u!VrA8SM9Vd1;@>avHb^3|Us9-JeW?s`VJKD_gJ=2>H*gD9hG*9>j z7eX^G(h!}Drj(l$T1qb0`OOb?YJ!(Ss|8~%tFTRfA-`K~a&wRFfkg+a=b=cY8vEokqN7(77w6(`|3GIIx#e=>E%vof+?IpgZvsCV^fhKJ0Gj! zqN=je4~D{drKmueX16t@&^ve2TIc&iV$V6vwlm=eX}J>Z$n2_mc}(D-=StB}Ct2(0 zA9~Fjr_1TBiMS=b96{jNg3sF%RyCVg!Ajv|x?#AO+l;tPcKa;b$E1B1Jm_9xB;WX8_%TM^gVev`AnUz2!i;uWL z@Cf^fnIe5l^p1f-h1xW>-O0#P2sM+XCRS4$2X^wv zi}QJfw2~t+v;;6cia97HZosXP)vq~-xorBxJw9VS^p3{wRbh^sd5CQ=8janwIP6CNWGAXdBclHL7A3t0Vl3rmm`>w}U%JWdZl`dZ<~YGSoG zU-ilnZap832UFPtxVFk^rS25Ug{#vMiY?ZxA6;HyQ5>YqUcc$`4Dxo1Q0ANMipekH zL=Val2G(*%_wE8_DR4H8rv)U=r=HXev~HZCbzhqx^>_w*e+AL0n%VTk;M`$vFg#O_ z;!} z1SG=|M79f47^0SV|3isfd|x1wGE06iS1zS94R_&FTGM%de&8`uFsxM`j|#q)f^6h< z-F!}$aOhm|04zr~A^}02%`;QG!^<_^FlI1S}vB-pyxbj_2n@rj4k|qEQ^t zhgWLG?tvZUQ`G}E8T5{?bu@H^gr>P@x5iL(iz1OW`RrUq>J>_Te*lBoi_zFAFB5{c z?ta6{9KsRq@7Q4Dy4U*Zh6xWC53UPXuxm%vH2%oNsJ5e731;6uzUR7tbl_mc$UZtG^t9NrS%1&>FYST~oD z1bx>Tb7-GdB;JhC0biOtxvPl^Mb<{~DhgOgLb(n?6W{wWORszVK=@_HTEkpgRFS3S zd?1DEdVtY824;%X$u3}#R_Ou92g58q+3G0gh#yZLrRK$7G`ApQLk`5IK6RBY3MkC% z^$uLMPD?ulz54Jkd(O&@&^OV6XyWRnKKoKg%kD6heCd>g4CMVKj8N!q4s}ChG3zwb zkevQSy0T%|DMsy25_4Z_cT2kHg<96`3vyO+#;fm5de?F4gGC8^_|0BMx4=d(7)8fMcS?V5YbDj2eBUfT6GAYUaY~5h43yCrKrXy73gsmGIG)@_gdmqpBR{6fTbWemMezLO}<-;pjT5b6v6B5K)HTRp%e?8%$sXt}Uc|+$V*_7$??|a+D$V@U_S&Fk zCqxu_!sCaZwH|qZWZ~9gxrxQk#DY+~N}0W6bcV#3z^p_B^vupv zd%D#VcAztT6+A6$%YU%z6r~X^M~c*=-OcX^Jal=Kxt71nfd!t=?62-0+iozp z*z!A~Tz^!3kpz2C0m_323<9!~x3xa{=E;e}DamX#sLJ(swa32uG;-mx*BH7cy!tFl z->v4#Y+|S57(cGR_ssC{t{*VFt~~YwG=F2XZDE2(G`Rt6-MZYcBd91~{}?CUCH&3c zG<6~nFa)NU>=U2$y$Pe4lJRvGqb(2Oh(Z8Z*_czb7{>wvXZRNuLp>dGazq(rl zGHp@>I#@#}vEN@g^JIFgN3L6(3;7j0UA(70ez9~JfoBx`b|dn711?QM9%}KIM0yjE zF@05m>)S^S?hAD_T1#Ej-ou3Pv>vF0ZpPqX5p_eS>|5kO0dF;7lm6dmG%WPzz#K#?6kW7WL8LIedJ1C-};asM>q{kmsrSL&r7~l>vSGEwRfkQ zf3e7!(vS`b{wR=HKVuyk4-MrL&0w=r5dbwn2JSltJD+aRuOm@M(oMNK0%I+e_Ohnb zr9+lafc;o&R;`n`PpaxK`uPIfnj;b7aR+Dzi$B=9ULCQVw7U^jj&*TzTHenfzw@0b z0z}q;He(%Lo);T8K7jO;-j~7uzOui-e|xKy@#S)R{&z}Rr{;1C!%o;kFePCa0;w~Qy zn2&7mfUBIu+5QtLgtBq4V-ht_m&a)X(!+)3m2}s81tX3pp)~B3K%1@OMexYQCNi^{ zN>fW*F~tmkTIxR~X|W`>XaRvtxb4!{A{ZfSy%HZ^)hnlEW|446E8U|&&FB2pLPIzS zm3oh7v8rTNe_kicME!%W_6FH1O}F-_#9iK+(h1#u#JrJBE*_78uDFy(&&Mok84>U`E9n=4M z$h2rac3&Bda@Mv-ABr1_#wc^5#zR&OLJ7t*W`kl9mkLRdcG@e>ei3B*`eUa+SrKgiV*RiZa)MQe*0sOpU6ys>+0uRfuAxOIut zpOf?SX{Uqw)BT=?>$Z7^zlGH|M+zZ8pr5*gMOg{}qLdpH?vW$RH)&Wvee!SR?xynY zCAcfV^28arw2U===a8>{wQ#dRK)YjU=)85|{e?=C`AtX7nEuAF*W{6eMRT4m>Yvy% zfk|}uw6Mcy{)|bJm$wgXF2iCnAOb|pilVHiYU-sIqjWH-f2w=%XbCRtRwuPwc4P?M zryY8R%3DE?%7Cl&rS;keHNW%Q2uoWHk)9@!cj@i&keFnppY+~Ae0$($L?_tfd3x#& zQ`{vR@>;NmTuw8euLqz^jc@4f_qVwEy8}J6t{_JLWeP6&)=G|q-cPFn<0km`KxXcf zna$NOVer7Fa?jGEltm;cIA$B!^^!DmJpjGelAhh+H^1~o&LgO=cjxP;&H8O*+_P%R zL0)h_&+QH-*(1v!Gfdi7u=fi4xOGmvR7TG5(+zz5;7N3LcAaR~npTxl4(R|9aP+YG z`lNJ@dLEyOg0Ka4WAd6uISl+-Xq@^4oGr;TTHr8`4lErk+uU&xQu-_#!w}nTWgA?Z$nx@x*vSToBAs zHD#H8Qlm$Zsx{RS=h~*!cgctjbfnPouwu}gg09-8&}IEb(6rEV(e-z`r%& zf^3@k8Pi_DDJ3S%b=}|B^U_+Usxi_{=bW)=4}l6UG-tHpV~U8=`B&dL#&b!|oI~Jd z7c922OTHMf?FXRfSnM|kv(KKsM>l)(nFgGHbMYpv7$_XmuERDHhrbBsHl3)swk#Yh zRqO(Upm1~{RH?x#ZR*Bk5q6|LMFZ6hBFkin<*%n%ml9!z2@Cv-8kvW5-Shkg?+Y|` Rz`wBo13hEiG99O={{nJ$-cy3#>9N2DlCr3%OcNFp7j3L?FT8W5#Q5s?;} zpmao<5Q=n2qy-7d-8|>3jTF9QGoOorF> zZU6uTJOmc#Xh6HA-DCm2wT4;S2kE<*2ALQ-l3jm?{v8kUKqUG3QSC=JZwjEy~ zIGgWC7zI>U3Dq1;-%K)iW{uxg3-YgJ_Ef>)`3D7dj!Q#zY&ioj3jR1K7BWq_VUje0 ziW+cW&?PG4?R3V|wK{wQnIGN|Isq7NNbpvvF%&O+&`NLa*tnkO;-dC!zKf>xWUbi@ zZtFAjt)Xc}K*QBWZPK^1KA5?}C3~yCF^~Pa?NIST=1mx~)*ioiceQ?7V|fT#Tbt(0 zTI0K(^n@oK0C+78^|Y-+^S29-UVN)Ly=`iF1yD;z_ji@-B~1FFe8%T@1(VA^E(>iI zHeHTAWVmn<&&r-_{86kUn~FF8$LdX=UTeh;y4A4!k1nUI*TlGYZdB`;ci(HuRO!3$ zJh)i#HSOp6V9Ams{r7S?+h2bQ!gsx1pO!f9wdBqn9i!|Gv*sU$6ds)p?vZ{R<%zR1 zxNsYoekf=K;#@9~ZpYLiqJ5QGDPL{@X(~E2MwPXR^UecXT4H62)*za?0E2C$+MVaIWLs zm5Zaaf(<_C0~K;NXq-Q@ z_Wt99`1`+))g%vEQ~!{=>Pa3eR+*nU8crhp?(M^5TaSGg4^{=Z z%BF}4ycBO@9v7|?i0ypOG|@KFcCY@==0wKOyhFN;bKT~TL9$;n18y;IS4E;_b-t!?ZNsZ69sxw6Myp^#7N ztOn%%56w7T`+D83jppc|%s{)usMHUw{orT)uz3|usFD%|j%YP+PW<)WxqTp_^gXYD zJ}pORj-Pep-gnuvpHj!AJubNgNEG>1G%=RVbLk%|xQ+PJ;qb|MJ|Yy>{MMPL;Greg zCx)pSuPdxx-Gj2F_lq9`373X?ulT;4u(If9{*(UQ?wHVHYLUn&gy5{AsoEB%SbWqn z9kudQLE`p^93=}=)kMioai%-tou0+OlC)4ILhFQnar1*)GVH>stifmJJp5IR9%{7% z|F+$ydmOQ11GEu;UBUO9_xmt=8jg+Sx;%ffCQ>_S=oG1xS>qKBap8U=-vUETvBXgKgD4zBGv{X%ghZ>v536BIMydZ_?+ z@a!H0C`@#qRjV^I{FBvi`J>M>A#Rh&Ex$Bsn7_i4GJpB2mpl@_QX6J=- zq7QZy!ZP@|VYG@Ptn+jVYC81o66l1nYem$+%`2P$A^B7QD8Pa9`KqOhP>&Mh;h)15 z6JjH$oy!3%uXy-OmMu1e-DA?HAEhFKjH?c-_Ga^B%uxLoQqxZ-S{Vme$g zsWc`sR4pv|JT^z?!Ua8{y9#k}QmDPk*v|ANDy4T8DuH~fPK*vwwGKcwuR`3sl!*oh zY1R|%+H|$Kzo3tYm*xO^c+Nc1C$>K089NUE>`$%Z!UrVS#;YmZkHLs4FR7SKl#eD;CqkE9) zPt*R+?Ulv#q$W=AG_?R|fHqc{H(68EG6uIuaq+;FHhwFZ7@dGEPXOt7@JND;tpZ^mOxC3490JalsV>Q1v$?~C2fvcDON7k_b? zW!GEaSHgE0cTLsgZ-`&~$$Vq_o|PR0__Q$e#(Y|!8N17sFhdXoG^1rHUhX;5d<)J3 z_AwalWx7Rf&S9ABZ|QI6b19pSW1|HlWaGPg=R1+a?p4e0<~>f0o5c}V+YVCE_{O$R zl*g-egd=COjETC8AWRXF4ZiMXnEboE*(s!h3xYQ??7`VVJSNFwK4UQ1cd|yx`H+Z} zolhf5hq}c5hY$6_AnYb{&9QmTD%s7!Pv4~!k#?Aal22KjKc4I~3;tMuC%DsEDKuzt~@qz%4Ig z9-Mp@Chc~RmVE=lo-^A-y;Tf+O~(Jmkc+{m#}7hSMTN2kkoP|FwcKzm_Hr+tf#wH%!XU53A z`u|96_Z@&A5?QW}fkN=kq^z7L`tr z4st%>KdLb@UK`MNnx$4CBVDFSo~Mh-gN zT49vc6XN2dov_*Ia=S}E*1&aQ01WfFIY?((A7M>2oxd2e-?VhL`^fg<=Di73R9(jr zc#Ao$jDdDMY>lP>uomnP2qxYWgOF(@L%KQ{`pvGc)s6L0^Jv?BgzqOlT{^}ooMK}o zp|26@3!g9+1k7ZGc~|2|4(e(7>uUZo0rKPaih8Zau($YfHN!cfmF4*Jn)cwZzYI4C(rRA3fxmLV{%1?^ z_(FMSzD;($f#J93^HF{}E*lbH+=q-J9K+@7V=ObP!-q}*B8|(`#vcr2WN-e17lss8 z$>nIdRhbM%rUi6=-WR|onT*2bMfIt(rFF)rGY4|!*=eK6%6L>cOSmjYza zt`j3%e%{bz9R?$i{6BwT{`zr1Pl=GgtSVDpQ?E-yH{8?a74DM``M%wO&KEWle8k!Q zgkxOAsEJnVk~%mk`0%ixZuE5r63%V*%Bsv#;-uNR@#;>ts)DZkPf|WDpL3vczI{)~ zQqv-o?<4^Sq5R;&4;ptM%TT5xF;mbkiI)fp92#Y3PD^zPlC%nxw#2_sWgtLo$BOhO z-o;Dssiy2z>igAH#`+$4GD&YR^n%dBr>be-ieY65)3LlAf&2(!V(aAzY z)bm=M*Xvg(rXrpMc}4Rq2(lugSsd_wFQC;WF`if$buI2iED)2SV-0_12?sq@vOf3O zD3@d878S^QnyjKA{ZaWDq=&zs&}dBaqgtP7gXd1PUAte*({j<}RDLj(%9YLuHRZ3B z{EkPguw%aPpnSI-G9_= zmzTPZj~B#5?K>QK@VMlsbC54ZLoE!5rW&!AK)wr*<0$07n`Z<{BnCBNgui@%DY@b! zw0XaZ*P#wu>p9mgw~%Ia^ErgMRPXnf=CX7SWDXBNZ3^N9NjUhz%`4=pV{NN3VcqN8 zv$|2L6+-M4^1N%wy`H>N0zW_d~n1zLi;g+ettq z6$TGcEfY@Uzp$PtEkl!~NJ@5^FvRepsnS)p>hq+W&C4ekPspsmtd0>fle1top`-ba1LNYnXZ|{}_L^9lXGZHxX4+HekdGc2vQfry3e-ec47mtMn#sRC z!5mF_OZ;N#WY>v6E7We`0#HKj%d+311?a;i?F=rXQO#rphVP>ECZ*L zUxLlI>e3pP+j>>{0ny^$%POpuxJIlsxekJK(*w1*y9jkBK5dxfio0*&2euR|i(`^vnCk5;I&YzA`B`7g;QIGK!EEnvxL!B5MuY1g zrvf$9{3qM47w0rGNjN|*<;D+faaP^hfJCcGx6}E+e!1B{JT9{(Nl1D7%gr%HWp1;JjuKK|vJYbPO)j5wI) z>VQGx{+Pi}S&Fh@#ldi`96T3KF|6J;@<)TS5_#_RXDI}xnbMYV(1J{}ZQ7QNQwr|nbv`z|8&0zl9=0E!9U{Tg=DtYG7 z3c)YAxrl~+=kmz`)QmdBWl`^jE1f()pJ_J<_kJ5T|86jTBzm()XN@)#h9WaX$}*QN z6BFguy$*GmFVOZA?8w4&_imMO*_TzacnF#uU2dbS6)^(v}-{dpmlbmWU2Vb z5$_-cEu9eKOt!=Fhq<1A9RQ9H6ntuRd${w zEa9$$Q;}TB{SdK*p9_xGDQzlm<^ua);kkM{EcqCnAD)xDO=w+>eyowLauP9ph#MS; z2WuIV83A#phYe4mNWxjkv6A_^iSjQqRmGL!H)n-at|#hEp>V+4L z&7Cg3r^PLO%z;`=5MU*jK5RY1GMl(-+uGd#$+*7Ia$+LWxG{TjcOvx!KYX?YtEo&k z%G-^f+4{^}prrCzLJ0hLRUbxUf7D+w6xpU6%z;Aogk517q+6vZO*n&CWc%v?Z!LTYlb6- zY4mzpG^e<}BE=}%LBPFR@NATaNSa&>fj(%7Q?*EcOME{*cSlbhV2J7ccSY_eBupOm>i< z1Deqtx#W*7R%wKzCf#+ItVid`)`v{_;xcp2^Iw1^W_RL@DCK>7H@{kun}@7Fmlwax z+w8<(H`1M<)Yc?isdz_Ve^b;sF`v|N!N}1=e^GE?+@>cAOeMTN0^@M3CWL3|I=e+T zlG9$4l!>QZ+xeF+gr%+xY&Bpvsx!<&Aptu?5GUXgVikClqQeX}n!_tRPzp=33R*lC z?xn(wg(Ju62)}Gl+f-18Vrll!2#MaH`fwf~J~j?dxFaGZEBPpX&i`*w+z6 zeHw8}kPZCgU|J5hDfE9j5j738FF;Y0a-+$>%oMyPB9J2GC{LNmLk{T!COH7h^?xMm zy6r@seinkLL@@W@A>qK@!k7CY@P7a@-=I;BN81N`hYDz|!Tcy;9Yrx~mme;^yoYr( z86)4lGo@GbP`ZEd^`r>h((a$4H|J}^hm+40LX}JXiI2dR2P)==#l+aYR+ujleHFz zSpV7(Uo;_n=3AR5wOM+ju`(89KX^@oNiSo-00rA$m~pG@5nq?wA6$IVz_u8%A;KW8;lq{&Cj?`dnWg;7zo|I@+=?9Xn{uu!e?r3Jn+f&V*CDL8-Q!E5281s()DyU5i z7YBX%4KA_uAC1%_6}9J%1y#b7@n6u996CWSU%5W*r}o|kV-bibs`n+Bm+rhprmC@n zP`^~OW%;AB_GX&QW0XKw9|@Djc0H_B^6V$FxC&syT+J~x4R!Zf2h1UcIBB6F*;I;`n*b%BoSH9!dCH{5nd5Iw3oL9w(7+RI2p` z5m8i-^*nN{HZYjD!~CWqODW*_cz$3 zn@~z-RekPCP}UX?nce0VO=^1Y%4YVQWGA9*WGPZ1U?83AaV9?e?Z`5f)d+RWeZK$D tp^WL@XlOz2^Tb_<{r5A4GxLiKp`GHotr18ca`w>7P~S|iQpY9gzX16;B}4!K literal 0 HcmV?d00001 diff --git a/icons/mob/vampiric.dmi b/icons/mob/vampiric.dmi new file mode 100644 index 0000000000000000000000000000000000000000..1cf92d5c97a7cf5a75ba5f09bd19af492f7f90fe GIT binary patch literal 722 zcmV;@0xkWCP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex7wuvIWLl;joY$>g`NEMAD=Lm};D^-fPO@UI*0ajvr`vzNDpzSgzm@UGv0~i9> zuuXo+;x`uazIp!VA*RzQr<977t>lnjx3|K1UtgS&Qd+IGaK3FZ|GD$WDAEl8l^k-h z{xFV}9T~$Bv0N5!+;sSaIfQr=*Aoso+`}bmf5J@TR$QYh&$mQjG!MC@orSEe7+q5wU zmSm#F7=tkeA!^uGI60AJ$a0pXqfQ)nXtPA&^@ zy4~*ta1hXc@b(5chgv70uOvxqQ4|aY1L3@{G)+5oXJ-hvNhyU=s!QFY0me!x*1K>v zfXQTX-#5hG07;VA*=%Ngh(2D!havPdR!Zf-N)XdDJsUt?6a`8t2hxl72Jm*B_t}9D z2T_tFJO9t;^LeK^(0LNZaop+mM-8Gr^$G9^@ZSOc0`403H@7u0Z~y=R07*qoM6N<$ Eg1`SsmjD0& literal 0 HcmV?d00001 diff --git a/icons/obj/stakes.dmi b/icons/obj/stakes.dmi new file mode 100644 index 0000000000000000000000000000000000000000..37fd61c1488761b2ddb74da31d39b859891527a5 GIT binary patch literal 942 zcmV;f15x~mP)fFD zZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w z;*!LYR3K9+r8GIaQi+Q*C9|j)$T#HTOe;#vO@*-Gs><{8QwS=`NGwW8%}XV$usAaZ z=uDz4b#ip}4hLWhK?&5N~7L@zAp%VSBeIva&v}z9i=5Hhh)f zm)rQeCu~rbW|P5FU0cXE+xXN}HF^N%Z!#cPRR+v`TcQ)NLo;vK}Bkk;Q10Pyj=uz}W(aE&A0KCnJD=R=4mAo2@mEnJ_PM+Xb9Y2o{q zo@ZrcWqm-o#C&5o-6!}cS-c0ochG>7%NB$EzG;v_*O~V`z(M3U&29&>S?2@Fb`SM~ z%->ZgzI)Rem`7nYnlr6gU+Y<$6*|2iSJy6`hky17@X#DJPQxtTyUr#coXT^ z;5bda$mi^a`hjcNA+bZlbh%8^H;GTMAGqKX{h;Wl%lGm8Ls}nTKVW_cxF29XJ>n z2=j|6^8fyR-T}D3IN}3X5WkqNuaFP>3-jXv;QW5OiG2Qz!2QL=BS`fRsDIFJ63YE1 zD=X`N>7lv&8TaUj6?3<{9 literal 0 HcmV?d00001 diff --git a/icons/obj/vamp_obj.dmi b/icons/obj/vamp_obj.dmi new file mode 100644 index 0000000000000000000000000000000000000000..647a984e22c8473902875fb7e143e2356ffd3dba GIT binary patch literal 17218 zcmYIwbwE@>*Y{nzLsB{up zx%9SD+p%GGLs*B@8uAg7e#WW&(=-Fv44yrRs<)XP)vXWqC_%P0A zncAod#M2dPFUcygtXB-+bRGcod6_2tv6grMpaGO*rL;Y>j{ST*wWohyi!`ZNI%h1Q zNWVx7jeJ|Q6r0CRRZPf!eCr*0Mj6XYQ%{9|i2YL%xrwC8vrH$ZJ~Hs_)=P|I4?_0( zYAwuXkR$}`&=-k#&gz!QLl(&cz5z%2b~7urH$y8a^E@dQZKFJ+M}rIZ%V}39s|Iau zxBIVOzs}2lYInXx@fe7#6>eJOlNB(d^MgEKe;E{L{A`cQ_e=rzZJm*fYvC&TCr->Y zg>ajvi(l1CZCS@;1=PY#a$_4_3C$21dOH+jA84Czw6JmxETyIC1P?GB72$|zWtN5g zJPnA$rOds}dIDQJyczeLzQs-T!}clTXsiB|c|UTfy=79BwJC9-{&$pEBra@n$s@k$ z^X6*3K5O(fL4QMF{K%kdhK0QQvco;bbA2AqeQ9*(mDY$H!tK%K*#hAJ+q)M_0xksG zOgg_jR|-#%-w@OKX;*v0X9BuB4>uck*At-aHAW8Yc5c*q4TFB8UDW@sf6{yUiP47Q zM)NN4{w5&L#nm``aGtH%BsVdEl}My2;0g7+uU`*r-poo6c4&)}_v>4%0|Bv!o%+-3 zw~t>EsHM-FBs$!iQgx5&j9$rsC;8i(5!#!mfi0FJuC)?nezs6t+3o>VLAx3IU$jn0 z-bVc64t-cf zeXm>ey(bTWyP<&Dp^TFo9I7ewUrF1Gz46GvUP_AB{%NMr!CaHJ@k$0;`}UMG5liy7Uy@1XLimj{mGc(h5JHdx-py?v;~uU7V}#A09#i=ENV< zbNfy6_LHBRbpDorL4dsPWl<-(bixR9e*~U9sbiOQEO6An-ESnfAp?qv&uP7nJQP+7 zQ(w^~ZimvEm;}0TCJJkSqN}T?C|Qh++UG1@B0Mk1>y=m(vw*qsx=y`+dPnYBd-86d zU+|~sqyEiL*WC|sA(J*}(N7f_Jj=i0C}T#|b5Yjn-JgH^#yjj(`yAjbtHysxl~i5j z2j`0aI-EW=r}&GHgct!3m+;HXxwx1t`GD@+lhv{mMrHQ{sZAUz{72+2$NxPf#5SD9 z_>XbgaNj1=TLmlz6#BNV73s8_wtCtkxU4V0NhkFD-+-|bS{A8aHX7$u0+0n(B7?~t zyTNfA5+tr~lX#D~wnYCu^!M*;Agl576w&0fOYt_{?-OUQ-)4?pKcdJX5dN{(qAKIWEW$JBv`ib2f-_R@$)z#54TTm5%h6>o6TM#aJ(tA5Qb8hT>P0CCSg%-*~ zW##=h72-PE78gvLPQ_I+MW3fIs_&pXfo(MLQDUw>MCqA)iBv|V>X=UEbN$^W-2nV_ z`{`*4Wlc6=e?KW%$~AZU_4_NNEi2@gB;9xT(CRPcOiZZ7T;_@32wyL~^+vPu`{Jni zF#h%X(3d%!?mNt9eS5zO0ZfdWqM1) zkO~fE*`A!-_7A6k77v%VA{nsO<>78NBcn{T>QYsu$2JPgjm=)9rl#%z$OuyP9H9`s+6)Y~mag!HB0`}3 zc19rb z;gD_uU(#L)=95vgL|pPAC*#=x>lxpY7OTp z4Sy#`;s6_zYJjA!myqe$8>eSnH3ivOUvUpJc+z>jxX;!j{F?vRco1*EO>o*p?Ma8a z!q;-m3CkKU71I)qrB0&e98aTC)gUkzAnJ{qJ3prZdNJD#npg}Ng8DtrE-@G zWT8O4*=DGBf7R+c5&YN9=vSat@ze1E?;Q2H6Um zxDo*_?`h8#?D`FAkaR_{&#EnX4u&l)e6lzIYrg~yqyq_fSfyzcAvH#|bdWfSI(Roh^xxNk)xm%U z6CNi1O8=4lsr;yOkHBjC^c)&Jy&9dk*#iqJt5ef&BhA$@(4{mQ)Sv(wAN50q#3ZEN zK)=#7q!LP;vMG0u7?vzeMoSNEp!cL@r3SkvY%`eIS+O~_w6nZXwpPK21JI}JFD790 zT>&-aSOlVUNNYp|R&Bq3V6Ofh?D}@R=odfS_T+E)ecJ$4e;r~7y|&PQK5_ZCC5De; zKKS}|JvnV6WGHw$)Ik>YSX`r6tu7#JLQRlytJ zZ)2UGNX_{n3OTDgu5_xEHwLT;o}ko#-UC%z`);Ql zL2iWLdQX69M`u*%^_DZayDz}Rf$;1W`b z#(<=P=SrE#mU5!G9{SH`m0=n?I4VS!lq!bmDIG+xrQgvWE|-H7{gKzGRBp%l+oYMS z5&;ml`@xyR+nmN=W~5J-bH%o*|0VJ(AWCLIS(Rr>p~6@}pEG?xsi|e`A3bZ|PB-T+ zNh~!B!H%LgRZ+ohAvfOCP0Ni;)RQJIzo~g!W%Av>FItEc3dx$C^j_yB%B|}6YJY>< z`m(>ERGWMaTVN?LIM@kTqgM;)Ohv#qk?IiCe(OX%l83A)jHrM?*5(bDWwxk8cqtr@ zhZR3OI4IMr;b5Glj!Rv<7*$W-_wcA5a4?Cw5%z%t0H_9#4O%3{vPB>{lVN&o#hDF% z#x%3Ud~{rWzqvIgg-YY;dKQ%j_Eu80^_XSIe!(2xsf--M@x6Nq ztc~nXLV)3`EA2q=%a!*bd$Odk=?~TC&!3q;+P6k!{U|C5{mGBg{U_|EMS1aIHoyC9 zhx$||`y`?!C!)v9sie5L)Bc*6i87v%myfSw{S)(!PGpZ?1!4p5YmaqJ%zx90h4n(# zu4w5CcfNfB(UEo{R%sa+g`#Bzt#;kBT{%>3nD-qGw6qFp_1I31j`W)2_8e~F+4XAI zahW+J!mh}vx*Ap=xl%g~vDVTzEF<-6En6msH`nT%uoKnZVN48fcJ4&a!lpM#B5?tY zg}KJYnwn&*?`NwFdm62d6{Ip$pW=|$;}(+(GoR`$Q&8gUf=v`dHnpelm? z800WRCIIrr>{n0%XHB%Ry5F#vJ*d6>i5N~`|C^+J7?SLGh)9ILTAiGnyeTF0zB^iE z-BsEeesG~YjU0vdjYjh*))pEiMWYxj*_j%aocv5UQ^1;|6a_nk2$PsC@$KqLy`64* zf?2Mxx!o9NA}vGR_Fx*STWdOv44q_|7hnI7IwEDr!z1c5z44)32@~F7pVQw=hlZV- z15Nt0*JWt0xs9EixB!|-0-1ITZV15tae+6FXWg{zDF}%!9u9{~DkWuRl5t`Kb@fo6 zEtPEH&#zYf?~nf$GZ1!~RW~a2F4kHlSZ791`=_h55woe+nN_VmNp>bPC@;x+I`_yW z(xjiF0A}XqmI@AHLPrUb|j&M8zutly*}7dLmW+xnn6-&*fR;{?FLq z*Vpb?&$&Y}7`ZfC-~1ZfmL}nOM}co*U+&mK!#Y$^@ygpF|E)HgWZ6(!z%lRmWv+j- zqvVIq4*w@a%5s?DD-t8iFjU2u1PTIja^*Av0)p}Rm*RF`3o5M5GB}0z6Jb?mDSYbe@zZA^5gvv zfw4v{?)xk(EN49=CS$qa^Hx?R2{1j{C?c@|_cA}}ewN_7L0|JfpJTz9xQZ-C&K{0U z*vqsUM>v#_?>~PDq~bC~@nc=zQ)A&ZjNjVXKaF_&p+C$r@r5Eg`rV#y&$W8-B(UZI zJ>09^=wX1cDKBHew|Nm(ZIFt4N1Fy(b|KjFm_i6B+(LY-k*uV*(WE?#?$UIAHgNIqJEVp-avqq4vz;+We@anO1T z&tFS>whZ?n=`iJdO||=Jt_%j6%-G!CFeWu6oColdUaESJxXr=JTDYh`E+jH4iE|lc z4xEK~&Kh|@4}!$iUw_Yz8Fno~jVx5Y3&JCPcH}xg{-Nlw$cSwMIv*;n;r%4jQp6-# zs@{*``Q%(NI}iO#4jdf#crGf*Tk-f!-|>|qoOM6ktWy(I$enWN6i)TlE2#R14H~`< zD-C^GJAa$Js}I{@)buY?QI`cNqz#*zBD@QLnjt4AHwwuPTk?QnF#WX%?aGiq0qj>= zp98wQALJBaaq@+1<3EO8>f~&jl_R4Jvk#maq`q!^(91ooW0#O)=7Vz5}=Pq=8yV>RCI2gf~Z3KU>J)Ise-p=(uw|8^HYxIv+T;{M0?A zJ%Yh)V#siVd&a(!7~_uh{+chA`wor6L)63Zw#_gmAduk5q$3pwicuae@}iCTSTPtBJ@G2#So-Fl1k_gECA^ zPFK1?ms6PWyD2%Ffzb5SsvU%~SyO5#$(#EG!enG*5P?@Ah>~t@d~i3jcv)Zm;6Ez? zHF0*hyx%;VKCehPnN?YnekjtZ?AVb$fmtl^r;%G-->xi2-fkOQKAQ3U@wH&cX?zmD zEbiX8_?>lO)-NX_)|W;F^?F=3>(QVMuuC9sGp?eT9sU}kgAOqgNHFnBe74|rv6FX{ z?KcN1wcdY>l}?mSIJl@tc5Y#DY+*tzreM}EC5(Wn?b$XNsC78hB5`oIueP?fsizw8 z`Nf5%uI}kC{YVgd5Iry3tnN``xQG0y%Jmxwm-UnYK*ZGC;CySWb>~v)UEVXkHGJ?j1Paxc*hT7Y;OfY|3~#-M<4G3x2dUzo_>8Ddter zvp=@5S-ipGW0jjQh8DS24q$vC%Uw5a9jaC$V`arel%ZYeDA_E-67#9g${c^_p~N$bw@X9>e|9qD zuAFV4IehBD(Z?;s=SVlJJREd9ojgRwC-Ll4QPQ&4%PAxP;3#qN4hy1ztY+VRD;-?~ zDsFvfIU>s0m9zucPUQMD;0B+XwPM03K$eF0<}%u0G%_Zr9!%1Vv_4Pwa*<@x(0X>0 z#lqS&cTrt!n6_PBPP@0acCITYhphGHt6YMkot=#Q^;5?a8%50Opgx|Em(Yj67cf# zzZqq8s(Qh|P*7M%Fg*NIQE?67H{oy&>utWs&FQ4I%cr-IPj^oEKwjB6OXiobv4RgJ zSaKiIR9)MC)+){Tzr*~+Are;G+AzX6>gP-i+7=S?L3aZ(UYlUMxU$vBXNi(%P9U8Z|f1F_K6QLt)H-xGDXJAP46do zdHZYeIB-{V>+$$3;NMJ+-&`WWI?EA&gm31D9zf|HT6BdrXwxmXYG0ufI6qfR%6q}M zlV9-%)hEY5sfS77Q()y@>N%oeO7Q#^pkFfcGELnT;SxZT)rQ&duu(|^9ZMspnYVz?)UsLu0l-l{#|p%G1K0NwiI zM>%_YijSovh-Gb%JXIV;IF1p?h4+H+B>Y5T^6sVW$E&*E8fXWhUK>i4heA5D*l8kE z_qdK3x=!PM{@Gt zCoUVj8SpkkCdkI;7j9BOYcY~mxt*skk=S+A{i#gZ@L?iEFh=P*871rvR@eswNt8v(Fw)$w!`v#+@f8)zLhmItA1z*wF zT1$@LtY=b!8?})0lhwI-^p+CACdVhPrPP_A7r&|Y_9Wf1JXaMMZk|RPsFpJSN{o7_ z8@Dfxeo_m?@RZZ1Ek)glS1SJm_;aAb zI43nL5a~C*ZsiO;KR*hN0tp3<2$9Jk98{w-3|B0lt3fYm)h?# ziCKb0bYo8}ZlU-2o|Ca$mOp9D@M=CW7Xw#Hbmj8)#({UXsv!xldZEbt>ePI+-~%Th znYoTP=975?i9~D^&erqgEsMRKdZXU4z4Ld|4B>-Rv6)NLrp>~^f$aow18IAMBy?U8 zH$_XmXWFFldDz*Y`iV*Z=*klw2s_)+wb6Xc3bO7|0oOS4gn*p8Os3$`o0DQ=RY}p! zv;{-!Gf%xjSb9Q-#PAGEBId{c|Thc9qfr7 zU9ajg<)lmbY05SCaE&9J*wE0R!yA|Q6vKf7K>-Bg3=$^m`n-tDEBpY!TDR69kV!ar zp_gN9vo*Ses)@+)*f&HVG0hin1=GM_^5EpKGFQ=K!T!n`%zcx$8U66~t^2oN&fg-5 z{w8sT*dAW5-UOjppPKcwpS2w47nvYN3*=V@{!nSJ-$^WbCvs;?*i3Ci=$_x3%O~bi zuDuRFv9Pi#Y-sp`AL8LER2@4opd`MbtfcmB<}_~Ah00CGbAEmvwpW<&X{|jd@Ae%f zk9C)~@-pN_vFff{FXM551z~7nTSEgelX^~f5F)DU7LV&>lM9pQG6oh3B1h}Q`RA3K zrOu69!kO|`R6Bt`L6{`3#;~vgdri#o5}#%zo`}|*{1u@kzr4t`E5T$$x&KbkV`swW zAHNPF(EunN?brQ>AiV+;j24i z9WeLNyp8I3EHrAvWc0>X+C zfEIQ(wUZDH3zU=V!Ovj5c(}Q-zNod1WTvB{t|~2^%gz-EuK3kppvlRCt2(^G-!c@7 zm6`)13nOR}mb>kFO&I&P@P6JcIi4anBPr-S=Ch(QPkzAxw_Zg-f!QxcY3wA~Ze+Ai zbOZe=r~rkCd+;lQM7MJj|LWv4`Nmg|XYBX)pIuwLPxG7bzDA$4u&~hJpcg9P^n)%HBpSKYZD_{G-8d^n@jv)UNNJ;K zU`Yopb9HU#rf-o7?W1t>La#WOqvMN+#f7wkF?R>ckj>ejL-2{dhQsHMrJ?Af)8M)e zybc}6PflEsc>yi$DVR3De_7Cpu(KO4xgS+o7E;tyhCHmwp1kk)$E#q}JJ0-8)^2zu z$b?L1oK)dF%d0yM3jrBs8y1ZN{TDeJ0l|&t;mCncceK^+kLBd}LhBg4n9bun8Jr?5 zXc<{+8JsF&l~7y?|26~*xjtdecq*~*mv0=t7_N4yw9*TNkPs2IDDfb!)oYusoDC>P7c*FvD zu7m{l%8Qq_y!-h=L)vDhgKiAj)89vSjL!TCPku{&7GGHy~XGS<8yE zeT6*(*fF#l=2D^fe^n%5VFgTvn^=Z!;A`*J6%W6ig7WWy)dxf>gN_Ecpm`TN>z@U%&1v1VySgjubzErx;A}CA;)DBzyUh`BZCBqxgfWdeelf z;UI5+VLBqTqu2DLC`m_Q0QD6(pu9Tp4~w3oknfCSYAS6BouklB2 zR#yuN&PmiLMr&+jT`7T8f+B9_$62RX?x)H zYiyqwwYVs$jZgu0&J`KiJ&^~3ZQEfN`}RW4^e zo|Y724P@Lufd&8QF%Oc#wG9$`Dtg6Y8}xRA$!&G$M0;pz*EEY3d5$uFsBVMG&qU%NUzuI;-VCJrc@-99D)jG9ZqT$*`eZxQ%u8ZjT4|@7Bn6B46__1l(=zb zn%3q&XKW-j$o&`!bH;rYVCtGC=$W#7H_|8Ui%y(*EmQK%C{i9CZr@N+EKp~i!~|&# zPxVnHd624+WGV8)4Kd4SP$g^I^MAD$sIzFmswIsz%3S^map32El0|&COCa;ch3BD~ zW`luPd!#;keLMNt@?ZrqIO{d1dW5|bx*F}e$PQp7Fk8689gR~A2-c3ca zHyKv*xyU)eY@!juZ(+Lqb?s?+BM+5lp45o?ru8{b7*_Rcm~d2u$|JljaRiHd-I`$9 zFELmC(GM~DjXYK(V;3u2U33exDS?q3^z6C-RHNJnx zV>|+?5!go@vb4%za(Mj+1Ww<>6la1U{Wa~j((%YT!GeJ%9LY7D9iCEAfl+I4eU6t^ z@g!V|A91ypuo_G;$kEwc{N1K+U)DP0)O zlQK3T=LfLPjwUnzlxuGi9&p_@?m2mmH_b zySn~N0akp;I>OCr9UO(&nxVJnW$)n7o55q{`P&q2?t^>wF*ZG+F%5pTG`*O9f3x1W zreJ6G@~bUd2itWw$3tbKGYa@G#4_|89GW#I7zG;YzdQTZKj*xdX zo-t-Fg1NAkr5|k)PcZdKhZ%tAeud!y-=F`JvJCtC(WK#8)pftUO>)KTg< zpP4t(VkD0xZRwMVNdrwVDR5x5?PxN5Kw?AtYbj*K9mN6AjzIO4Pe2(BR>^SY0e!qp zIU*N@xG(8!{42?QW5?M_OQ{EL9(tK6=i5yZVrqT(Jsf%O3f=WL2yoc{u&nDMOzbx< zj4Lk&fw9)*_X}x#Yn8j zD90;BBZXF9i3E}t3Rn)2g0FjsB5g0p)uPdSV%W@wn6AHIF7phu#rAJmxx1nG2FUNj#e89$>}1alH;i`G zpV|$0*S)$u5uhp1aD@b_Ldtf91eEVTD#zTCiwh2F=={IY;AXU4p_LM#tcmc2x;T9SF;aXR{VRVk#-w*fZF)_r;!zPh-wvdAbw%KsgNbWb zLX;L`5b)u*@pF`hD@vy&aSf4YM%joE)XJB;bk8Dq_iZZiVONQEesqQn@K+*lMW!o$PII1D^8)#HlP&)eDg5i`&044cPU2o=x}DU^6L z-Q=|%!^7AE5@}utAZDQfj^s2!RjTS3otxe9L}&@I@Hn*p^oc}HjfWRWGlfS$MUcy3 z2DklWGe(1I28GBx3uXm;xdV!B`K%+6JZlS-y1U;Xn`KB$z{z++$u;q*HDpZn()rsY z6GezsHxonyv{h6qJ0!qrmX^jw()d^O%a)2&h=HU03TgPnF+G%jRZ5{h`YQF?nNhuN zfhw!foWOmnVPhnjU`n6sBlIYSG1&BW!gu{~Ud51B_{N4AAqmOm-_IO-3HFGA57bAJ zYHIPltLiX5$Tec38IIQgN9!50ql7-wJ>TPFS0#ECb>Nf$py+Qjud?nO;ciSCXCmgW z8iu?UNMs+e+O(q-NN)|Mz&?>9-jpRI5MD*-CkAFXx( zAd~zcQRH0y=q>;(u9fM}hbo}9(Q%X}qvhL5D#beRoz)NRDZWOm`&SA_EZRuHn1cR; z|0I08AK8zKEX8y1snojrw#J}*u@Se${b$$whM%>*&+a#_RF~vk8{?on7 zoEa*5XKT*JVhaD5K!>>(hsQ!$__gQ_t2|7yphNyNyi;`Q^N`0* z{vswH4Kj_btzaC_!q}G^S0dxNcaCX=Ki|eA{-X~T7nMS!r+qkx*QOc!8Q{|@lzOCJ zY3E>gph>c`HE0{%r4<~uIB#Pbx(s{xHpFD>4q=u;BXUig)Je%`3Cl=-s2A|a)Z$A| zSNS73vsGm#g2*oDyYf@#3FW)9t(sX2YM%F<%cR1*X}^wd*_Am1#<|CZqk5^m{Cg0F z;#H;Dg-VT2qqwZi5|wYho-gC6mmro8}$zg zkR^NBDE$r&TV9d+HA$CPn4K2X-_*k$(o6ju?DBF%rLV+z&U8li-F&D|FXhNrot^Zx$tiqMLrw zdsHx=EJJ3Tm1F}$!{c1vH%Qn8xl~8P4teT%j2&O4>2QkVURHwkW(a~6k6Eh zWC1W(NDhHKi?p?1r_4C%GJaKisKQ?aRLnAYvujM21}Y4kI0^4hz9G4tWnj zNwSrmgLX+}ja@>!qMwzO7z0Ywo;Zmx9Wjnc5Lw<2=4ZeD{8D=g@wa%1Z zAR%p}*N6DbzkzvW7Ul_x>tW>jXO+Rvxyy||c*Z|TSaa6A?b-azvP;1tBCv8!gE*0d zdUzaDa@jjg;_(x5cqD0z zLAicXZ_^&PCyNQ$zQ20F1SftuU`iISbz2|hRfuNBp|}@@*cuPis5id)LagBc;q||| z<%7uM7jgGbCX7mXe@AEks3Url{B#%9R`;4Mu$P(&^t+l!3TcfbLSxFh$vXcu6swJ~ zojD@ez2r}wrVTu4eRc;qjvJ4}^Q50#)5L_~&Ic?;1eP$FI37SPdNE1BkwtOS+)Hij z&n~D;C}ppxQcBBD_#ex#hu}=X?8(}Csg?Zo-P(gFa#c5HVe|vkV+hZjO-*~PCSiP! zisyswoml_>IRuJ+=sd4~oJ2Cb21zh+v(^Sq7VzTstqtmt`hRakBP(tc%7H~xy%LEq zqG^a1blm?|&0@25`9j6wwh}zNrKhCU*u*vQl^lmzulf?q!|Z?m#@|N8o4-$R^_2um z|DcfhFOMCBx$JuWM~_0Bk*6k`xbJ->*X!)H*l!WJ#J~1dLKTv84ca@%{+DcZWI?_E zl4E0{5o2Z0KxF4JCUi94bTTh=adAHEd9$o4=+jIH`pxb)9+mA9EM(PB?X~G{yTWaK zjt0NcE=~eoI~xebnQT(4z+1=hLjG?YD+sE&Z^Pr?QxuxZXIRDe)XebYO$e&;ziYY3 zV|yw|Ya}7Ps}Zok5Wau3Wwo78w0-LO#khIY*4B-^nkl+>V)FU_?mk&waAt`;>azU# zbU`ihsN0-tDASnxRE@XXW-TL1PK^zakyXAn7Gy|{Optd_B&8lUktyw^et_HWU<$M) zwn(hDS;&ZrL4kzPVyGQFX^Z4zBoiste+A$K%yOmj${PIC@s?!XRUD%9qJJw+PNfHm z7nP??T?TF%^S|wO!EF-%74&_5V0-(2J4~w!WJ7WG4MD@Qs zKjnEj`TzSuw!$Y*#bS{tei;jDw2-x1T^?0+lmC z5R4$_6P*EnwnpTm;8p?0Er$UG1DEV$o;VeQh+l9v(s^{9M~NZvNWPiwf;GG=s{ zEBbrxX_n{FLywY-Sahcc)e%-VSLcvVJsQqxDFdM+y*hGzvrHCI4gnsgLKZ;P;_=?e z$v;Kw?(MtzQDLn~4hs7}6E%4#OY`Q88Gr*C+1zphR}(%CFJs23VFS0z-!dXqBRA2r zmN|N#hN3^8tg1gjj4Pj5X(lmhXZFD%&C`XjLDyeY;@oL(vw5AO-=X$c^{SG)x&g(;cX~4lfoP$APtr*cW2frD z$IyWa@;IeBq&k{3ECsQ`%_Nfy{a$P}@*2 zSg1Cq6MQN9o|BZ&1wT~U`f+49nls#f2}H#9K2ZH5Z$F;w*I)DUp)5z&IAEQ%^=Vc9 z@2*|~YM?py0lx}5juw&pmC(QAKdOMbnyond^C<~CU!Y3(L-fgoH?%oKOE%d=cTSd) z^EC`Yb9m6_VD$ctB+i6lPH94r5POEM1yWJZ^n@i*y}z_F>`+&t-5hrmWe~qq`JIW= z*_u=jH9d&Xzoc+P;0(Y0SHc>Di>n`>2@4DwYjiF1>0D^}rx&OIr=svlTfB{ben8LmfI=Q%O`}=p#>{MQ_B*oyGNm?h;&+CaX zskv~x-)(|FL&e(Kdac3D9c3C@^|hxKl(xG#pCs6Nd*DOm_(fu(Rrj-raXipJN<%OD z@X^X|k}MuUFH|A|D#(0SQ%6Q|+pO~yjTHV7XsV|$Q#_@|F8a+pR(t9AV`dJQ{%ur2 z{K25Pmi>bhIb9Eq3jT%-TXQ>&L8Im0{zAc0zP_Svoq%tjn#lryiO~xI+)wAEf0DFE zslpIjkF)IGF@a^EV(lb#U{$h$oNv3Npfg|ieKXHh);}WXvBx`yem#9FStflRQTM}! zw&_|CO5H>jQkKT8DdreGT6^Bd;Z7BBHKz2&axb1*Y>UcLEo9pEThFK@W##9!*-HOF zBK4u5f$nMakmFdR+4Mk*URaUd&noW*0;EaoIO{yHW*jU^? z*Er;(QcB+~0!>Bp^nB|y;An8<-m{3|uL6hhhTE?`|J;rATON1>b@|Tzfo^zp;h^pJ zP_CPuVe{1T<%smndXf`lREEa)=||e?;Qe3Ji+8`_#@>G<$D`oJUk5@(PR`sm=2RHH zhdq{@6mk~;<=3xW!Mz(A8l3S0i2M-zg7h|-zo^n#Y31q`T?@#rLfUSQ9!JbbDw+RVnC%8nSJ7m>8Em#D-yeSPHKG4qI)z~a| zeMXV>eT!ucj2e0M^?X|!F@zHPPA*6}1?7q!Je?eufzQ@oHc_qLC&X;l^wp}5Zhxbf zCU787CLke+pdw*PHC>g!m&f=&r41&SiMdg~SXWn8F1-J2jCucvjUE)^EbD4^9L(0=bY}+9 zPo&~H62@DYA47=p2jBVk_cKcxWX^6bEc~4odx&}ySsIPYOj6|VLE^gNels9T<6Hmp zk8rcyU(`Oc*r647hd3c*C*^NVLrS))xTeI=sUcV$Q67biO; zI%Ms%xkAB|@OlE*v&E;j%Pv09m~V1GquG}7BFbU;5o%fzw9T}fo z-OP`7e(g8i-#zAfAG`$q^bG462^fCA{;7$oNdzX1ES%tbv>wchkKJc;U9};$h!myk z0~UR#+8AZ1#7A9GUr6xSXYn0M-BvBUJ327lq72^p=ywc-6SG6t!Q|3?(EV)TWQP~j z){d27Qs-^<>7?6Gc1z+7*7mj7Qj13k%MB&=XaEh}7J@}j8n|w^*J}Yly$D_&A2}rX zzU6DbS0c70k?}B$sY5@(`t7V~jr2zxZWZvV#}Y zrD$b*l}?(NQc1k3pJEUJZt%caur$e=9d0mwK!JX zC3&RPBEtw3k5~%lUmN-U!@#1rM9OA-41A2F&wL0#DcXQ=p0Tgs#IzzB_fb(k)V5!k z-rmRPLCJ4gIv{$K#3pnJp(cg14C+SQ8!`BoOp4u1kd}g+u}%dnu;P!n%IpjZBF^QQ z(5Oda`SLO(C=2!p#5CFoxP9)e$S+VVzpq8b@`9lIkD?3_gbaHiSxPiGNZYq@VZmU@ z?*=0keubDNW)vNFxZ?z8K@PwtmimT}ipBenwUHWDGX|gWLD9~=MD51IV2UN3O3&3o zFWA1tMJi>KG^VdE!S}zr6pHSBjgB7&UDtz#EzG}Q;H|!v%b%OSW18=Cz%0%eCCd#6 zh_FS_{vk*_3|$X~!tQD<1(rS`W~q&Q;~>=Zx-B#1s8#>%T5x-NqY&DI@C+@R^fewf zbUk#IqqWbJou=AaI!P$|F|62igo@juycJFeZW<_5?Ea4g?>-}!L-254i7&OBIuthcmx3s)4^*Wut3) z+Nd}B>7LM@@l9JCZeMUV-j|0cRV-!E;YY@B3@ar@2fA6(8_OKP%~?&2AW;v@9doCjr8dTJH;H1pAY9qXRftT7Kil7k@ zQHNf=lrpg@p<+YJ0D3H+ePI=E>NMw})4xs=3VXvKf5?m8)Kr-CRm8w`wIuf>rTh&J zW#*4P#9haOen|}x@l{i~?)zXAa#Bs$sI;1Cx43bGmE0G1@Glg4|NSpOnsQMWB(EG> zE}n3{VARO;3bh9=VY#WIwwR< z4)?V&xs*X>hJ&&)PnY$j_^3cbCB}E-avk44pu0or7dAs6@(D(dh0R3Ki|=ZZk#gzr z3ZzY{Z694#Q)hv0YV7d-1U>axB#2RRMdxoCkzP-vz5I$eOLgVHIHe;xE;8Bbgo%lL*9WAz$ zaf&RGoE=T!{|)E^rmH#&f<6kiXd5JHI7prI{JUO1@87?+f+NqRc{p}5bT%{z%2)F} zG`l3-JbR(#9zG6Dj-zhZ*dOI&=qysSyYJAbB^KbT-uVAV!ADRPpI8{wl6C9nzcz3Q x)KTHQM`*$imWggVx_4b{%BcLu%=uqFc*?djhrTUo2A++<;OXk;vd$@?2>@s8aS#9i literal 0 HcmV?d00001 diff --git a/icons/obj/vamp_obj_64.dmi b/icons/obj/vamp_obj_64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4367da28b32b8e74f93adcfea4d20a6b7c7cca37 GIT binary patch literal 1109 zcmV-b1giUqP)bB>(^b0d!JM zQvg8b*k%9#0Caj(Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1i4QC_gV%iHkEOv#1!Pi;FX@ zC^0t`#5P1%mROXFOQo`ctDg(l1poprClvZq%31&b16D~yK~!jg?U=uAA~6ugja`F+ z(xqD2cM3re5sxkqM7BsC;U3}MAQVdt1y?5(NfoG)JV8PS^_?Qpo)F5m2hVU`7XMjx zb4J%(;}42__Ri1tjM+$okdu>>lao_gxxJ*vo?$$cDQp^2OHL;Ir)hCryvP zWCOk$JM&I26B|nU(`>*uV-0kAX`Xb;x3d9tGeDf#`^e)SWW__nh$!x#6cdw_>Y&5! zm4{Nohovj|w})~;u&2x7Arb^N>2dHqxJm;K#jxb&_8URaJ5g5wvqrzu2)-^-;w0?zx#)!BO}w@8Q&%Q=L#nmhu8;aeDnB=$Am_s@MF^btT1M7+*& zfrNf-VPrj=uih3iiv$YitEF$g_)&hfdPSxd1(fuQg=q_gt$CDxMNUpmPEJlvPEJlv zPEP+MOaH(sTmQfgu=EeCvh@$_vh@#k1bo~-u*lv&u*up#u*%Xuu*u#(uxW?>fmPQ2 b!T-}AaD_*nX)b$H00000NkvXXu0mjf=H29G literal 0 HcmV?d00001 From e78974df185db6eda8aba8c8611b658bbff90deb Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Sun, 14 Aug 2022 12:27:00 +0300 Subject: [PATCH 09/23] fixes --- .../antagonists/bloodsuckers/bloodsucker_objectives.dm | 4 ++-- code/modules/antagonists/monsterhunter/monsterhunter.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm b/code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm index 3b10ef2485f..f9952af289e 100644 --- a/code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm +++ b/code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm @@ -153,7 +153,7 @@ // PDA Assigned else if(bloodsucker_vassals.owner.current && ishuman(bloodsucker_vassals.owner.current)) var/mob/living/carbon/human/vassal_users = bloodsucker_vassals.owner.current - var/obj/item/card/id/id_cards = vassal_users.wear_id ? vassal_users.wear_id.GetID() : null + var/obj/item/card/id/id_cards = vassal_users.get_idcard(TRUE) if(id_cards && (id_cards.assignment in valid_jobs) && !(id_cards.assignment in counted_roles)) //to_chat(owner, span_userdanger("PROTEGE OBJECTIVE: (GET ID)")) this_role = id_cards.assignment @@ -198,7 +198,7 @@ if(!owner.current) return FALSE - var/list/all_items = owner.current.GetAllContents() + var/list/all_items = owner.current.get_all_contents() var/heart_count = 0 for(var/obj/item/organ/heart/current_hearts in all_items) if(current_hearts.organ_flags & ORGAN_SYNTHETIC) // No robo-hearts allowed diff --git a/code/modules/antagonists/monsterhunter/monsterhunter.dm b/code/modules/antagonists/monsterhunter/monsterhunter.dm index 090586a166f..903a57e4989 100644 --- a/code/modules/antagonists/monsterhunter/monsterhunter.dm +++ b/code/modules/antagonists/monsterhunter/monsterhunter.dm @@ -145,7 +145,7 @@ if(monsters.len) /// Point at a 'random' monster, biasing heavily towards closer ones. - scan_target = pickweight(monsters) + scan_target = pick(monsters) to_chat(owner, span_warning("You detect signs of monsters to the [dir2text(get_dir(my_loc,get_turf(scan_target)))]!")) else scan_target = null From 6c11eec66e2bd5f051dd7b0aedcd093850efb143 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Sun, 14 Aug 2022 21:58:10 +0300 Subject: [PATCH 10/23] Update bloodsuckers.dm --- code/__DEFINES/bloodsuckers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/bloodsuckers.dm b/code/__DEFINES/bloodsuckers.dm index dd59e5aa81b..2a80e5705c0 100644 --- a/code/__DEFINES/bloodsuckers.dm +++ b/code/__DEFINES/bloodsuckers.dm @@ -1,4 +1,4 @@ -/** +/** * Bloodsucker defines */ #define IS_BLOODSUCKER(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/bloodsucker)) From f6af1b729446795fc42cd4a2c11a2244d819f505 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Tue, 16 Aug 2022 10:20:54 +0300 Subject: [PATCH 11/23] E --- .../bloodsuckers/structures/bloodsucker_coffin.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm index b4b26a30889..6550ec97a7f 100644 --- a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_coffin.dm @@ -201,12 +201,20 @@ . = ..() if(!.) return FALSE + + INVOKE_ASYNC(src, .proc/handle_sucker, user) //Invoked async so it wouldn't fuck up skittish element(fuck skittish element) + +/obj/structure/closet/crate/coffin/proc/handle_sucker(mob/living/user) // Only the User can put themself into Torpor. If already in it, you'll start to heal. if(user in src) var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(/datum/antagonist/bloodsucker) if(!bloodsuckerdatum) return FALSE - LockMe(user) + if(!bloodsuckerdatum.coffin && !resident) + switch(input("Do you wish to claim this as your coffin? [get_area(src)] will be your lair, and you will learn to craft new structures.","Claim Lair") in list("Yes", "No")) + if("Yes") + ClaimCoffin(user) + LockMe(user) bloodsuckerdatum.SpendRank() /// You're in a Coffin, everything else is done, you're likely here to heal. Let's offer them the oppertunity to do so. bloodsuckerdatum.Check_Begin_Torpor() From 7eb69deee30a0182cb59a150646f641d92b1e339 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Wed, 17 Aug 2022 14:34:58 +0300 Subject: [PATCH 12/23] fixes intent related thingies --- .../antagonists/bloodsuckers/structures/bloodsucker_crypt.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm index 4c52ab98b9c..14fee745843 100644 --- a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm @@ -335,7 +335,7 @@ return FALSE var/mob/living/carbon/buckled_carbons = pick(buckled_mobs) var/mob/living/L = user - if(L.combat_mode == TRUE) + if(!L.istate.harm) if(istype(bloodsuckerdatum)) unbuckle_mob(buckled_carbons) return FALSE @@ -624,7 +624,7 @@ toggle() return var/mob/living/carbon/target = pick(buckled_mobs) - if(target.stat >= DEAD || user.combat_mode == FALSE) + if(target.stat >= DEAD || !istate.harm) unbuckle_mob(target) return if(user.blood_volume >= 150) From 3ba5282d59294faa54f5fec3ceaad47a93eb9a2e Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Wed, 17 Aug 2022 14:37:17 +0300 Subject: [PATCH 13/23] --- .../antagonists/bloodsuckers/structures/bloodsucker_crypt.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm index 14fee745843..b16340c2537 100644 --- a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_crypt.dm @@ -624,7 +624,7 @@ toggle() return var/mob/living/carbon/target = pick(buckled_mobs) - if(target.stat >= DEAD || !istate.harm) + if(target.stat >= DEAD || !user.istate.harm) unbuckle_mob(target) return if(user.blood_volume >= 150) From 92ac75421a9aa2c43c778a6370505756fe9fd0e2 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Wed, 17 Aug 2022 15:19:12 +0300 Subject: [PATCH 14/23] fixes dudes being qdeleted by frenzy --- .../bloodsuckers/structures/bloodsucker_life.dm | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm index fda3d309be1..6c54976156c 100644 --- a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm @@ -237,12 +237,9 @@ owner.current.blur_eyes(8 - 8 * (owner.current.blood_volume / BLOOD_VOLUME_BAD)) // The more blood, the better the Regeneration, get too low blood, and you enter Frenzy. - var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.has_antag_datum(/datum/antagonist/bloodsucker) if(owner.current.blood_volume < (FRENZY_THRESHOLD_ENTER + (humanity_lost * 10)) && !frenzied) - if(!iscarbon(owner)) - if(bloodsuckerdatum.my_clan == CLAN_GANGREL) - return - qdel(owner.current) + if(!iscarbon(owner.current)) + return enter_frenzy() else if(owner.current.blood_volume < BLOOD_VOLUME_BAD) additional_regen = 0.1 From 7913109a9def86c0510da57f3107fb891c614504 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Fri, 19 Aug 2022 18:16:56 +0300 Subject: [PATCH 15/23] fixes pale description on bloodsuckers --- .../mob/living/carbon/human/examine.dm | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 0407762683d..6c3673ba8dd 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -251,18 +251,14 @@ if(skin_tone == "albino") apparent_blood_volume -= 150 // enough to knock you down one tier - //Bloodsuckers edit - var/bloodDesc = ShowAsPaleExamine(user, apparent_blood_volume) - if(bloodDesc != BLOODSUCKER_HIDE_BLOOD) - msg += bloodDesc - - switch(apparent_blood_volume) - if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) - msg += "[t_He] [t_has] pale skin.\n" - if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY) - msg += "[t_He] look[p_s()] like pale death.\n" - if(-INFINITY to BLOOD_VOLUME_BAD) - msg += "[span_deadsay("[t_He] resemble[p_s()] a crushed, empty juice pouch.")]\n" + if(!HAS_TRAIT(src, TRAIT_MASQUERADE)) + switch(apparent_blood_volume) + if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) + msg += "[t_He] [t_has] pale skin.\n" + if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY) + msg += "[t_He] look[p_s()] like pale death.\n" + if(-INFINITY to BLOOD_VOLUME_BAD) + msg += "[span_deadsay("[t_He] resemble[p_s()] a crushed, empty juice pouch.")]\n" if(is_bleeding()) var/list/obj/item/bodypart/bleeding_limbs = list() From c578d8e5d16265ff2c50f3d48a0a92ac33c573ce Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Fri, 19 Aug 2022 18:51:05 +0300 Subject: [PATCH 16/23] role prefs --- code/__DEFINES/role_preferences.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index ef5acbad4dd..038cacaf453 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -111,6 +111,8 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_FAMILIES = 0, ROLE_HERETIC = 0, ROLE_BLOODSUCKER = 0, + ROLE_VAMPIRICACCIDENT = 0, + ROLE_BLOODSUCKERBREAKOUT = 0, ROLE_MONSTERHUNTER = 0, )) From dd99e6e65e3712bcf0cdd5a99b13dc27b1517aed Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Fri, 19 Aug 2022 20:07:33 +0300 Subject: [PATCH 17/23] veil name fix --- code/modules/antagonists/bloodsuckers/powers/veil.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/antagonists/bloodsuckers/powers/veil.dm b/code/modules/antagonists/bloodsuckers/powers/veil.dm index 8726f232255..d856e7e82a8 100644 --- a/code/modules/antagonists/bloodsuckers/powers/veil.dm +++ b/code/modules/antagonists/bloodsuckers/powers/veil.dm @@ -26,6 +26,7 @@ var/prev_socks var/prev_disfigured var/list/prev_features // For lizards and such + var/prev_real_name /datum/action/bloodsucker/veil/ActivatePower() . = ..() @@ -47,7 +48,7 @@ user.name = user.name_override user.SetSpecialVoice(user.name_override) to_chat(owner, span_warning("You mystify the air around your person. Your identity is now altered.")) - + user.prev_real_name = user.real_name // Store Prev Appearance prev_gender = user.gender prev_skin_tone = user.skin_tone @@ -84,6 +85,7 @@ // Revert Identity user.UnsetSpecialVoice() user.name_override = null + user.real_name = prev_real_name user.name = user.real_name // Revert Appearance From 6ccf2745c3c90be2b5ca324623f75782b21c0fb2 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Fri, 19 Aug 2022 20:27:11 +0300 Subject: [PATCH 18/23] pog --- code/modules/antagonists/bloodsuckers/powers/veil.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/bloodsuckers/powers/veil.dm b/code/modules/antagonists/bloodsuckers/powers/veil.dm index d856e7e82a8..85b7b8067d9 100644 --- a/code/modules/antagonists/bloodsuckers/powers/veil.dm +++ b/code/modules/antagonists/bloodsuckers/powers/veil.dm @@ -48,7 +48,7 @@ user.name = user.name_override user.SetSpecialVoice(user.name_override) to_chat(owner, span_warning("You mystify the air around your person. Your identity is now altered.")) - user.prev_real_name = user.real_name + prev_real_name = user.real_name // Store Prev Appearance prev_gender = user.gender prev_skin_tone = user.skin_tone From 7c0cd2654434067a8863e58c8a3ba11ab04a1758 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Fri, 19 Aug 2022 20:59:36 +0300 Subject: [PATCH 19/23] veil fix again --- .../antagonists/bloodsuckers/powers/veil.dm | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/code/modules/antagonists/bloodsuckers/powers/veil.dm b/code/modules/antagonists/bloodsuckers/powers/veil.dm index 85b7b8067d9..75b61c6627c 100644 --- a/code/modules/antagonists/bloodsuckers/powers/veil.dm +++ b/code/modules/antagonists/bloodsuckers/powers/veil.dm @@ -22,11 +22,8 @@ var/prev_hair_color var/prev_facial_hair_color var/prev_underwear - var/prev_undershirt - var/prev_socks var/prev_disfigured var/list/prev_features // For lizards and such - var/prev_real_name /datum/action/bloodsucker/veil/ActivatePower() . = ..() @@ -48,7 +45,6 @@ user.name = user.name_override user.SetSpecialVoice(user.name_override) to_chat(owner, span_warning("You mystify the air around your person. Your identity is now altered.")) - prev_real_name = user.real_name // Store Prev Appearance prev_gender = user.gender prev_skin_tone = user.skin_tone @@ -57,14 +53,19 @@ prev_hair_color = user.hair_color prev_facial_hair_color = user.facial_hair_color prev_underwear = user.underwear - prev_undershirt = user.undershirt - prev_socks = user.socks // prev_eye_color prev_disfigured = HAS_TRAIT(user, TRAIT_DISFIGURED) // I was disfigured! //prev_disabilities = user.disabilities prev_features = user.dna.features - // Change Appearance - randomize_human(user) + // Change + user.gender = pick(MALE, FEMALE) + user.skin_tone = random_skin_tone() + user.hairstyle = random_hairstyle(user.gender) + user.facial_hairstyle = random_facial_hairstyle(user.gender) + user.hair_color = random_short_color() + user.facial_hair_color = user.hair_color + user.underwear = random_underwear(user.gender) + //user.eye_color = random_eye_color() if(prev_disfigured) REMOVE_TRAIT(user, TRAIT_DISFIGURED, null) @@ -85,7 +86,6 @@ // Revert Identity user.UnsetSpecialVoice() user.name_override = null - user.real_name = prev_real_name user.name = user.real_name // Revert Appearance @@ -96,8 +96,6 @@ user.hair_color = prev_hair_color user.facial_hair_color = prev_facial_hair_color user.underwear = prev_underwear - user.undershirt = prev_undershirt - user.socks = prev_socks //user.disabilities = prev_disabilities // Restore HUSK, CLUMSY, etc. if(prev_disfigured) From b6487aeb6e0fcb2199f83859ea4a7f59a66f01ab Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Fri, 19 Aug 2022 21:39:38 +0300 Subject: [PATCH 20/23] buff --- .../antagonists/bloodsuckers/structures/bloodsucker_life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm index 6c54976156c..317f351913d 100644 --- a/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsuckers/structures/bloodsucker_life.dm @@ -201,7 +201,7 @@ FinalDeath() return // Fire Damage? (above double health) - if(owner.current.getFireLoss() >= owner.current.maxHealth * 2.5) + if(owner.current.getFireLoss() >= owner.current.maxHealth * 3) FinalDeath() return // Staked while "Temp Death" or Asleep From 5d5de1978a9e9a8e74e660b85203c8ce0d49cc7c Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Mon, 22 Aug 2022 17:05:50 +0300 Subject: [PATCH 21/23] bloodsuckers can hijack + 45 second night --- code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm | 4 ++-- code/modules/antagonists/bloodsuckers/bloodsuckers.dm | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm b/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm index 59106c57902..05e98068a67 100644 --- a/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm +++ b/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm @@ -1,5 +1,5 @@ -/// 1 minute -#define TIME_BLOODSUCKER_DAY 60 +/// 45 seconds +#define TIME_BLOODSUCKER_DAY 45 /// 10 minutes #define TIME_BLOODSUCKER_NIGHT 600 /// 1.5 minutes diff --git a/code/modules/antagonists/bloodsuckers/bloodsuckers.dm b/code/modules/antagonists/bloodsuckers/bloodsuckers.dm index 24f97943542..ed196801c91 100644 --- a/code/modules/antagonists/bloodsuckers/bloodsuckers.dm +++ b/code/modules/antagonists/bloodsuckers/bloodsuckers.dm @@ -6,6 +6,7 @@ job_rank = ROLE_BLOODSUCKER show_name_in_check_antagonists = TRUE can_coexist_with_others = FALSE + hijack_speed = 0.5 // TIMERS // ///Timer between alerts for Burn messages From 7f7700144ca63e1d18251de48305a51d427ca97c Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Mon, 22 Aug 2022 17:15:32 +0300 Subject: [PATCH 22/23] --- code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm b/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm index 05e98068a67..dd21c26ab26 100644 --- a/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm +++ b/code/modules/antagonists/bloodsuckers/bloodsucker_daylight.dm @@ -1,5 +1,5 @@ /// 45 seconds -#define TIME_BLOODSUCKER_DAY 45 +#define TIME_BLOODSUCKER_DAY 45 /// 10 minutes #define TIME_BLOODSUCKER_NIGHT 600 /// 1.5 minutes From 5d3b0151988609e864aac99a5c6f35fc555773b0 Mon Sep 17 00:00:00 2001 From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com> Date: Mon, 29 Aug 2022 07:41:08 +0300 Subject: [PATCH 23/23] Update bloodsuckers.dm --- code/__DEFINES/bloodsuckers.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/bloodsuckers.dm b/code/__DEFINES/bloodsuckers.dm index 2a80e5705c0..dd59e5aa81b 100644 --- a/code/__DEFINES/bloodsuckers.dm +++ b/code/__DEFINES/bloodsuckers.dm @@ -1,4 +1,4 @@ -/** +/** * Bloodsucker defines */ #define IS_BLOODSUCKER(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/bloodsucker))